-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
85 lines (74 loc) · 2.15 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
{
description = "git-push-formatted";
inputs.nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs =
{ self
, nixpkgs
, nixpkgs-unstable
, flake-utils
}: flake-utils.lib.eachSystem [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ] (system:
let
pkgs-unstable = import nixpkgs-unstable {
inherit system;
};
pkgs = import nixpkgs {
inherit system;
overlays = [
(self: super: with self; {
nushell = pkgs-unstable.nushell;
gum = pkgs-unstable.gum.overrideAttrs (old: {
patches = (o.patches or [ ]) ++ [
./resources/patches/gum-output-on-error.patch
];
});
})
];
};
nuShell = "${pkgs.nushell}/bin/nu";
writeNuScript = name: contents: pkgs.writeScriptBin name ''
#! ${nuShell}
${contents}
'';
lib = pkgs.lib;
maybeLocalSsh = if pkgs.stdenv.isLinux then pkgs.openssh else
(pkgs.runCommandLocal "ssh-link" { } ''
mkdir -p $out/bin
ln -s /usr/bin/ssh $out/bin/ssh
'');
git-push-formatted = pkgs.symlinkJoin {
name = "git-push-formatted";
nativeBuildInputs = [ pkgs.makeWrapper ];
paths = [
pkgs.gitAndTools.git-absorb
(writeNuScript "git-push-formatted" (builtins.readFile ./git-push-formatted.nu))
];
postBuild =
let
path = with pkgs; lib.makeBinPath [
git
gitAndTools.git-absorb
nodejs-16_x
bash # Seems that prettier requires this
maybeLocalSsh
gum
];
in
''
if test -e $out/bin/git-push-formatted; then
wrapProgram $out/bin/git-push-formatted \
--set PATH "${path}"
fi
'';
};
in
{
packages =
rec {
default = git-push-formatted;
inherit git-push-formatted;
};
}
);
}