darwin: add impure-cmds
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.
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user