-
Notifications
You must be signed in to change notification settings - Fork 0
/
lib.nix
41 lines (38 loc) · 1 KB
/
lib.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
{ pkgs ? import <nixpkgs> { }, ... }:
{
wrap =
{ package
, wrapArgs ? ""
, executable ? package.pname
}:
pkgs.symlinkJoin {
name = package.name;
paths = [ package ];
postBuild = ''
mv $out/bin/${executable}{,-nowrap}
cat << _EOF > $out/bin/${executable}
exec ${./wrap.sh} ${wrapArgs} ${package}/bin/${executable} "\$@"
_EOF
chmod a+x $out/bin/${executable}
'';
};
# wrap = prog:
# prog.overrideAttrs (oldAttrs:
# let
# name = prog.pname;
# in
# {
# # TODO: why do we need to use postInstall? why is installPhase $out wrong?
# postInstall = oldAttrs.postInstall or "" + ''
# mv $out/bin/${name} $out/bin/${name}-nowrap
# cat << _EOF > $out/bin/${name}
# #! ${super.runtimeShell} -e
# exec ${./wrap.sh} \
# -- \
# ${name}-nowrap "\$@"
# _EOF
# chmod 0755 $out/bin/${name}
# '';
# });
#
}