diff options
author | Sandro <sandro.jaeckel@gmail.com> | 2021-02-03 18:11:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-03 18:11:58 +0100 |
commit | 0829a518621f95aea784e8fd68c42d497a9a8946 (patch) | |
tree | c4c3ddc719d45277b0e3ba3a399c1de8ae2d00f6 /pkgs/os-specific/darwin | |
parent | 7cbec40a09533dd9c525d6ab94dddfe77768101a (diff) | |
parent | 5f1d105505909c9cb529e67656741daf681c19ef (diff) | |
download | nixpkgs-0829a518621f95aea784e8fd68c42d497a9a8946.tar nixpkgs-0829a518621f95aea784e8fd68c42d497a9a8946.tar.gz nixpkgs-0829a518621f95aea784e8fd68c42d497a9a8946.tar.bz2 nixpkgs-0829a518621f95aea784e8fd68c42d497a9a8946.tar.lz nixpkgs-0829a518621f95aea784e8fd68c42d497a9a8946.tar.xz nixpkgs-0829a518621f95aea784e8fd68c42d497a9a8946.tar.zst nixpkgs-0829a518621f95aea784e8fd68c42d497a9a8946.zip |
Merge pull request #109626 from holymonson/darwin-impure-cmds
darwin: add impure-cmds
Diffstat (limited to 'pkgs/os-specific/darwin')
-rw-r--r-- | pkgs/os-specific/darwin/impure-cmds/default.nix | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/pkgs/os-specific/darwin/impure-cmds/default.nix b/pkgs/os-specific/darwin/impure-cmds/default.nix new file mode 100644 index 00000000000..51e345f048b --- /dev/null +++ b/pkgs/os-specific/darwin/impure-cmds/default.nix @@ -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 |