summary refs log tree commit diff
path: root/pkgs/top-level/unix-tools.nix
diff options
context:
space:
mode:
authorPatrick Hilhorst <git@hilhorst.be>2018-05-07 19:44:56 +0200
committerPatrick Hilhorst <git@hilhorst.be>2018-05-07 20:13:55 +0200
commit4b93f21ced4f648de11a92e2d8c5d9bdfc39d086 (patch)
treea238c8d9a7f6bcd05c31f6030df9df9241b5e783 /pkgs/top-level/unix-tools.nix
parent7499e4a5b917227696b7292ae1bd728d6b1978b0 (diff)
downloadnixlib-4b93f21ced4f648de11a92e2d8c5d9bdfc39d086.tar
nixlib-4b93f21ced4f648de11a92e2d8c5d9bdfc39d086.tar.gz
nixlib-4b93f21ced4f648de11a92e2d8c5d9bdfc39d086.tar.bz2
nixlib-4b93f21ced4f648de11a92e2d8c5d9bdfc39d086.tar.lz
nixlib-4b93f21ced4f648de11a92e2d8c5d9bdfc39d086.tar.xz
nixlib-4b93f21ced4f648de11a92e2d8c5d9bdfc39d086.tar.zst
nixlib-4b93f21ced4f648de11a92e2d8c5d9bdfc39d086.zip
unixtools: refactor for less redundancy
Diffstat (limited to 'pkgs/top-level/unix-tools.nix')
-rw-r--r--pkgs/top-level/unix-tools.nix216
1 files changed, 105 insertions, 111 deletions
diff --git a/pkgs/top-level/unix-tools.nix b/pkgs/top-level/unix-tools.nix
index 26adcda8ee17..6d6e2b2f2516 100644
--- a/pkgs/top-level/unix-tools.nix
+++ b/pkgs/top-level/unix-tools.nix
@@ -11,7 +11,6 @@
 # input, not "procps" which requires Linux.
 
 let
-
   singleBinary = cmd: providers: let
       provider = "${lib.getBin providers.${hostPlatform.parsed.kernel.name}}/bin/${cmd}";
     in runCommand cmd {
@@ -27,8 +26,6 @@ let
       ln -s "${provider}" "$out/bin/${cmd}"
     '';
 
-in rec {
-
   # more is unavailable in darwin
   # just use less
   more_compat = runCommand "more" {} ''
@@ -36,117 +33,114 @@ in rec {
     ln -s ${pkgs.less}/bin/less $out/bin/more
   '';
 
-  # singular binaries
-  arp = singleBinary "arp" {
-    linux = pkgs.nettools;
-    darwin = pkgs.darwin.network_cmds;
-  };
-  col = singleBinary "col" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.darwin.text_cmds;
-  };
-  eject = singleBinary "eject" {
-    linux = pkgs.utillinux;
-  };
-  getopt = singleBinary "getopt" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.getopt;
-  };
-  fdisk = singleBinary "fdisk" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.darwin.diskdev_cmds;
-  };
-  fsck = singleBinary "fsck" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.darwin.diskdev_cmds;
-  };
-  hexdump = singleBinary "hexdump" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.darwin.shell_cmds;
-  };
-  hostname = singleBinary "hostname" {
-    linux = pkgs.nettools;
-    darwin = pkgs.darwin.shell_cmds;
-  };
-  ifconfig = singleBinary "ifconfig" {
-    linux = pkgs.nettools;
-    darwin = pkgs.darwin.network_cmds;
-  };
-  logger = singleBinary "logger" {
-    linux = pkgs.utillinux;
-  };
-  more = singleBinary "more" {
-    linux = pkgs.utillinux;
-    darwin = more_compat;
-  };
-  mount = singleBinary "mount" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.darwin.diskdev_cmds;
-  };
-  netstat = singleBinary "netstat" {
-    linux = pkgs.nettools;
-    darwin = pkgs.darwin.network_cmds;
-  };
-  ping = singleBinary "ping" {
-    linux = pkgs.iputils;
-    darwin = pkgs.darwin.network_cmds;
+  bins = lib.mapAttrs singleBinary {
+    # singular binaries
+    arp = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    col = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.darwin.text_cmds;
+    };
+    eject = {
+      linux = pkgs.utillinux;
+    };
+    getopt = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.getopt;
+    };
+    fdisk = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    fsck = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    hexdump = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.darwin.shell_cmds;
+    };
+    hostname = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.shell_cmds;
+    };
+    ifconfig = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    logger = {
+      linux = pkgs.utillinux;
+    };
+    more = {
+      linux = pkgs.utillinux;
+      darwin = more_compat;
+    };
+    mount = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    netstat = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    ping = {
+      linux = pkgs.iputils;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    ps = {
+      linux = pkgs.procps;
+      darwin = pkgs.darwin.ps;
+    };
+    quota = {
+      linux = pkgs.linuxquota;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    route = {
+      linux = pkgs.nettools;
+      darwin = pkgs.darwin.network_cmds;
+    };
+    script = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.darwin.shell_cmds;
+    };
+    sysctl = {
+      linux = pkgs.procps;
+      darwin = pkgs.darwin.system_cmds;
+    };
+    top = {
+      linux = pkgs.procps;
+      darwin = pkgs.darwin.top;
+    };
+    umount = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.darwin.diskdev_cmds;
+    };
+    whereis = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.darwin.shell_cmds;
+    };
+    wall = {
+      linux = pkgs.utillinux;
+    };
+    write = {
+      linux = pkgs.utillinux;
+      darwin = pkgs.darwin.basic_cmds;
+    };
   };
-  ps = singleBinary "ps" {
-    linux = pkgs.procps;
-    darwin = pkgs.darwin.ps;
-  };
-  quota = singleBinary "quota" {
-    linux = pkgs.linuxquota;
-    darwin = pkgs.darwin.diskdev_cmds;
-  };
-  route = singleBinary "route" {
-    linux = pkgs.nettools;
-    darwin = pkgs.darwin.network_cmds;
-  };
-  script = singleBinary "script" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.darwin.shell_cmds;
-  };
-  sysctl = singleBinary "sysctl" {
-    linux = pkgs.procps;
-    darwin = pkgs.darwin.system_cmds;
-  };
-  top = singleBinary "top" {
-    linux = pkgs.procps;
-    darwin = pkgs.darwin.top;
-  };
-  umount = singleBinary "umount" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.darwin.diskdev_cmds;
-  };
-  whereis = singleBinary "whereis" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.darwin.shell_cmds;
-  };
-  wall = singleBinary "wall" {
-    linux = pkgs.utillinux;
-  };
-  write = singleBinary "write" {
-    linux = pkgs.utillinux;
-    darwin = pkgs.darwin.basic_cmds;
+
+  makeCompat = name': value: buildEnv {
+      name = name' + "-compat";
+      paths = value;
   };
 
   # Compatibility derivations
   # Provided for old usage of these commands.
-
-  procps = buildEnv {
-    name = "procps-compat";
-    paths = [ ps sysctl top ];
-  };
-
-  utillinux = buildEnv {
-    name = "utillinux-compat";
-    paths = [ fsck fdisk getopt hexdump mount
-              script umount whereis write col ];
-  };
-
-  nettools = buildEnv {
-    name = "nettools-compat";
-    paths = [ arp hostname ifconfig netstat route ];
+  compat = with bins; lib.mapAttrs makeCompat {
+    procps = [ ps sysctl top ];
+    utillinux = [ fsck fdisk getopt hexdump mount
+                  script umount whereis write col ];
+    nettools = [ arp hostname ifconfig netstat route ];
   };
-}
+in bins // compat