On darwin, there are some commands neither opensource nor able to build in nixpkgs. We have no choice but to use those system-shipped impure ones.wip/yesman
parent
2fbc36f3d8
commit
5f1d105505
@ -0,0 +1,34 @@ |
||||
{ lib, runCommandLocal }: |
||||
|
||||
# On darwin, there are some commands neither opensource nor able to build in nixpkgs. |
||||
# We have no choice but to use those system-shipped impure ones. |
||||
|
||||
let |
||||
commands = { |
||||
ditto = "/usr/bin/ditto"; # ditto is not opensource |
||||
sudo = "/usr/bin/sudo"; # sudo must be owned by uid 0 and have the setuid bit set |
||||
}; |
||||
|
||||
mkImpureDrv = name: path: |
||||
runCommandLocal "${name}-impure-darwin" { |
||||
__impureHostDeps = [ path ]; |
||||
|
||||
meta = { |
||||
platforms = lib.platforms.darwin; |
||||
}; |
||||
} '' |
||||
if ! [ -x ${path} ]; then |
||||
echo Cannot find command ${path} |
||||
exit 1 |
||||
fi |
||||
|
||||
mkdir -p $out/bin |
||||
ln -s ${path} $out/bin |
||||
|
||||
manpage="/usr/share/man/man1/${name}.1" |
||||
if [ -f $manpage ]; then |
||||
mkdir -p $out/share/man/man1 |
||||
ln -s $manpage $out/share/man/man1 |
||||
fi |
||||
''; |
||||
in lib.mapAttrs mkImpureDrv commands |
Loading…
Reference in new issue