unixtools: refactor for less redundancy

This commit is contained in:
Patrick Hilhorst 2018-05-07 19:44:56 +02:00
parent 7499e4a5b9
commit 4b93f21ced
No known key found for this signature in database
GPG Key ID: 589BB0A8DAFEF2B2

View File

@ -11,7 +11,6 @@
# input, not "procps" which requires Linux. # input, not "procps" which requires Linux.
let let
singleBinary = cmd: providers: let singleBinary = cmd: providers: let
provider = "${lib.getBin providers.${hostPlatform.parsed.kernel.name}}/bin/${cmd}"; provider = "${lib.getBin providers.${hostPlatform.parsed.kernel.name}}/bin/${cmd}";
in runCommand cmd { in runCommand cmd {
@ -27,8 +26,6 @@ let
ln -s "${provider}" "$out/bin/${cmd}" ln -s "${provider}" "$out/bin/${cmd}"
''; '';
in rec {
# more is unavailable in darwin # more is unavailable in darwin
# just use less # just use less
more_compat = runCommand "more" {} '' more_compat = runCommand "more" {} ''
@ -36,117 +33,114 @@ in rec {
ln -s ${pkgs.less}/bin/less $out/bin/more ln -s ${pkgs.less}/bin/less $out/bin/more
''; '';
bins = lib.mapAttrs singleBinary {
# singular binaries # singular binaries
arp = singleBinary "arp" { arp = {
linux = pkgs.nettools; linux = pkgs.nettools;
darwin = pkgs.darwin.network_cmds; darwin = pkgs.darwin.network_cmds;
}; };
col = singleBinary "col" { col = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.darwin.text_cmds; darwin = pkgs.darwin.text_cmds;
}; };
eject = singleBinary "eject" { eject = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
}; };
getopt = singleBinary "getopt" { getopt = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.getopt; darwin = pkgs.getopt;
}; };
fdisk = singleBinary "fdisk" { fdisk = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.darwin.diskdev_cmds; darwin = pkgs.darwin.diskdev_cmds;
}; };
fsck = singleBinary "fsck" { fsck = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.darwin.diskdev_cmds; darwin = pkgs.darwin.diskdev_cmds;
}; };
hexdump = singleBinary "hexdump" { hexdump = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.darwin.shell_cmds; darwin = pkgs.darwin.shell_cmds;
}; };
hostname = singleBinary "hostname" { hostname = {
linux = pkgs.nettools; linux = pkgs.nettools;
darwin = pkgs.darwin.shell_cmds; darwin = pkgs.darwin.shell_cmds;
}; };
ifconfig = singleBinary "ifconfig" { ifconfig = {
linux = pkgs.nettools; linux = pkgs.nettools;
darwin = pkgs.darwin.network_cmds; darwin = pkgs.darwin.network_cmds;
}; };
logger = singleBinary "logger" { logger = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
}; };
more = singleBinary "more" { more = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = more_compat; darwin = more_compat;
}; };
mount = singleBinary "mount" { mount = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.darwin.diskdev_cmds; darwin = pkgs.darwin.diskdev_cmds;
}; };
netstat = singleBinary "netstat" { netstat = {
linux = pkgs.nettools; linux = pkgs.nettools;
darwin = pkgs.darwin.network_cmds; darwin = pkgs.darwin.network_cmds;
}; };
ping = singleBinary "ping" { ping = {
linux = pkgs.iputils; linux = pkgs.iputils;
darwin = pkgs.darwin.network_cmds; darwin = pkgs.darwin.network_cmds;
}; };
ps = singleBinary "ps" { ps = {
linux = pkgs.procps; linux = pkgs.procps;
darwin = pkgs.darwin.ps; darwin = pkgs.darwin.ps;
}; };
quota = singleBinary "quota" { quota = {
linux = pkgs.linuxquota; linux = pkgs.linuxquota;
darwin = pkgs.darwin.diskdev_cmds; darwin = pkgs.darwin.diskdev_cmds;
}; };
route = singleBinary "route" { route = {
linux = pkgs.nettools; linux = pkgs.nettools;
darwin = pkgs.darwin.network_cmds; darwin = pkgs.darwin.network_cmds;
}; };
script = singleBinary "script" { script = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.darwin.shell_cmds; darwin = pkgs.darwin.shell_cmds;
}; };
sysctl = singleBinary "sysctl" { sysctl = {
linux = pkgs.procps; linux = pkgs.procps;
darwin = pkgs.darwin.system_cmds; darwin = pkgs.darwin.system_cmds;
}; };
top = singleBinary "top" { top = {
linux = pkgs.procps; linux = pkgs.procps;
darwin = pkgs.darwin.top; darwin = pkgs.darwin.top;
}; };
umount = singleBinary "umount" { umount = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.darwin.diskdev_cmds; darwin = pkgs.darwin.diskdev_cmds;
}; };
whereis = singleBinary "whereis" { whereis = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.darwin.shell_cmds; darwin = pkgs.darwin.shell_cmds;
}; };
wall = singleBinary "wall" { wall = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
}; };
write = singleBinary "write" { write = {
linux = pkgs.utillinux; linux = pkgs.utillinux;
darwin = pkgs.darwin.basic_cmds; darwin = pkgs.darwin.basic_cmds;
}; };
};
makeCompat = name': value: buildEnv {
name = name' + "-compat";
paths = value;
};
# Compatibility derivations # Compatibility derivations
# Provided for old usage of these commands. # Provided for old usage of these commands.
compat = with bins; lib.mapAttrs makeCompat {
procps = buildEnv { procps = [ ps sysctl top ];
name = "procps-compat"; utillinux = [ fsck fdisk getopt hexdump mount
paths = [ ps sysctl top ];
};
utillinux = buildEnv {
name = "utillinux-compat";
paths = [ fsck fdisk getopt hexdump mount
script umount whereis write col ]; script umount whereis write col ];
nettools = [ arp hostname ifconfig netstat route ];
}; };
in bins // compat
nettools = buildEnv {
name = "nettools-compat";
paths = [ arp hostname ifconfig netstat route ];
};
}