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:
parent
2fbc36f3d8
commit
5f1d105505
34
pkgs/os-specific/darwin/impure-cmds/default.nix
Normal file
34
pkgs/os-specific/darwin/impure-cmds/default.nix
Normal file
@ -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
|
@ -7901,7 +7901,7 @@ in
|
|||||||
|
|
||||||
subsurface = libsForQt514.callPackage ../applications/misc/subsurface { };
|
subsurface = libsForQt514.callPackage ../applications/misc/subsurface { };
|
||||||
|
|
||||||
sudo = callPackage ../tools/security/sudo { };
|
sudo = if stdenv.isDarwin then darwin.sudo else callPackage ../tools/security/sudo { };
|
||||||
|
|
||||||
suidChroot = callPackage ../tools/system/suid-chroot { };
|
suidChroot = callPackage ../tools/system/suid-chroot { };
|
||||||
|
|
||||||
|
@ -4,9 +4,11 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
apple-source-releases = callPackage ../os-specific/darwin/apple-source-releases { };
|
apple-source-releases = callPackage ../os-specific/darwin/apple-source-releases { };
|
||||||
|
|
||||||
|
impure-cmds = callPackage ../os-specific/darwin/impure-cmds { };
|
||||||
in
|
in
|
||||||
|
|
||||||
(apple-source-releases // {
|
(impure-cmds // apple-source-releases // {
|
||||||
|
|
||||||
callPackage = newScope (darwin.apple_sdk.frameworks // darwin);
|
callPackage = newScope (darwin.apple_sdk.frameworks // darwin);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user