about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/generators.nix49
-rw-r--r--pkgs/applications/networking/syncthing-gtk/default.nix7
-rw-r--r--pkgs/development/tools/xcbuild/default.nix6
-rw-r--r--pkgs/development/tools/xcbuild/platform.nix34
-rw-r--r--pkgs/development/tools/xcbuild/sdk.nix22
-rw-r--r--pkgs/development/tools/xcbuild/toolchain.nix158
-rw-r--r--pkgs/development/tools/xcbuild/wrapper.nix31
-rw-r--r--pkgs/servers/http/myserver/default.nix4
-rw-r--r--pkgs/tools/misc/xfstests/default.nix9
-rw-r--r--pkgs/top-level/all-packages.nix5
-rw-r--r--pkgs/top-level/unix-tools.nix4
11 files changed, 156 insertions, 173 deletions
diff --git a/lib/generators.nix b/lib/generators.nix
index c09384c00f572..073bb6982e14a 100644
--- a/lib/generators.nix
+++ b/lib/generators.nix
@@ -173,6 +173,53 @@ rec {
                        fna);
       in if fna == {}    then "<λ>"
                          else "<λ:{${showFnas}}>"
-    else abort "toPretty: should never happen (v = ${v})";
+    else abort "generators.toPretty: should never happen (v = ${v})";
+
+  # PLIST handling
+  toPlist = {}: v: let
+    expr = ind: x: with builtins;
+      if isNull x then "" else
+      if isBool x then bool ind x else
+      if isInt x then int ind x else
+      if isString x then str ind x else
+      if isList x then list ind x else
+      if isAttrs x then attrs ind x else
+      abort "generators.toPlist: should never happen (v = ${v})";
+
+    literal = ind: x: ind + x;
+
+    bool = ind: x: literal ind  (if x then "<true/>" else "<false/>");
+    int = ind: x: literal ind "<integer>${toString x}</integer>";
+    str = ind: x: literal ind "<string>${x}</string>";
+    key = ind: x: literal ind "<key>${x}</key>";
+
+    indent = ind: expr "\t${ind}";
+
+    item = ind: libStr.concatMapStringsSep "\n" (indent ind);
+
+    list = ind: x: libStr.concatStringsSep "\n" [
+      (literal ind "<array>")
+      (item ind x)
+      (literal ind "</array>")
+    ];
+
+    attrs = ind: x: libStr.concatStringsSep "\n" [
+      (literal ind "<dict>")
+      (attr ind x)
+      (literal ind "</dict>")
+    ];
+
+    attr = let attrFilter = name: value: name != "_module" && value != null;
+    in ind: x: libStr.concatStringsSep "\n" (lib.flatten (lib.mapAttrsToList
+      (name: value: lib.optional (attrFilter name value) [
+      (key "\t${ind}" name)
+      (expr "\t${ind}" value)
+    ]) x));
+
+  in ''<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+${expr "" v}
+</plist>'';
 
 }
diff --git a/pkgs/applications/networking/syncthing-gtk/default.nix b/pkgs/applications/networking/syncthing-gtk/default.nix
index be574acc8c75b..9d720bee05e7a 100644
--- a/pkgs/applications/networking/syncthing-gtk/default.nix
+++ b/pkgs/applications/networking/syncthing-gtk/default.nix
@@ -1,4 +1,7 @@
-{ stdenv, fetchFromGitHub, fetchpatch, libnotify, librsvg, darwin, psmisc, gtk3, libappindicator-gtk3, substituteAll, syncthing, wrapGAppsHook, gnome3, buildPythonApplication, dateutil, pyinotify, pygobject3, bcrypt, gobjectIntrospection }:
+{ stdenv, fetchFromGitHub, fetchpatch, libnotify, librsvg, killall
+, gtk3, libappindicator-gtk3, substituteAll, syncthing, wrapGAppsHook
+, gnome3, buildPythonApplication, dateutil, pyinotify, pygobject3
+, bcrypt, gobjectIntrospection }:
 
 buildPythonApplication rec {
   version = "0.9.4";
@@ -35,7 +38,7 @@ buildPythonApplication rec {
     })
     (substituteAll {
       src = ./paths.patch;
-      killall = "${if stdenv.isDarwin then darwin.shell_cmds else psmisc}/bin/killall";
+      killall = "${killall}/bin/killall";
       syncthing = "${syncthing}/bin/syncthing";
     })
   ];
diff --git a/pkgs/development/tools/xcbuild/default.nix b/pkgs/development/tools/xcbuild/default.nix
index b7b14128048be..3f7b21be005d5 100644
--- a/pkgs/development/tools/xcbuild/default.nix
+++ b/pkgs/development/tools/xcbuild/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, cmake, fetchFromGitHub, zlib, libxml2, libpng, CoreServices, CoreGraphics, ImageIO, ninja }:
+{ stdenv, cmake, fetchFromGitHub, zlib, libxml2, libpng
+, CoreServices, CoreGraphics, ImageIO, ninja }:
 
 let
   googletest = fetchFromGitHub {
@@ -17,7 +18,8 @@ let
 in stdenv.mkDerivation rec {
   name    = "xcbuild-${version}";
 
-  # Once a version is released that includes https://github.com/facebook/xcbuild/commit/183c087a6484ceaae860c6f7300caf50aea0d710,
+  # Once a version is released that includes
+  # https://github.com/facebook/xcbuild/commit/183c087a6484ceaae860c6f7300caf50aea0d710,
   # we can stop doing this -pre thing.
   version = "0.1.2-pre";
 
diff --git a/pkgs/development/tools/xcbuild/platform.nix b/pkgs/development/tools/xcbuild/platform.nix
index a36c4f4bf8064..bb91df474aae9 100644
--- a/pkgs/development/tools/xcbuild/platform.nix
+++ b/pkgs/development/tools/xcbuild/platform.nix
@@ -1,7 +1,9 @@
-{ stdenv, sdk, writeText, platformName, xcbuild }:
+{ runCommand, lib, sdk, platformName, writeText }:
 
 let
 
+  inherit (lib.generators) toPlist;
+
   Info = {
     CFBundleIdentifier = platformName;
     Type = "Platform";
@@ -283,24 +285,14 @@ let
 
 in
 
-stdenv.mkDerivation {
-  name = "MacOSX.platform";
-  buildInputs = [ xcbuild ];
-  buildCommand = ''
-    mkdir -p $out/
-    cd $out/
-
-    plutil -convert xml1 -o Info.plist ${writeText "Info.plist" (builtins.toJSON Info)}
-    plutil -convert xml1 -o version.plist ${writeText "version.plist" (builtins.toJSON Version)}
-
-    mkdir -p $out/Developer/Library/Xcode/Specifications/
-    cd $out/Developer/Library/Xcode/Specifications/
-    plutil -convert xml1 -o Architectures.xcspec ${writeText "Architectures.xcspec" (builtins.toJSON Architectures)}
-    plutil -convert xml1 -o PackageTypes.xcspec ${writeText "PackageTypes.xcspec" (builtins.toJSON PackageTypes)}
-    plutil -convert xml1 -o ProductTypes.xcspec ${writeText "ProductTypes.xcspec" (builtins.toJSON ProductTypes)}
+runCommand "MacOSX.platform" {} ''
+  install -D ${writeText "Info.plist" (toPlist {} Info)} $out/Info.plist
+  install -D ${writeText "version.plist" (toPlist {} Version)} $out/version.plist
+  install -D ${writeText "Architectures.xcspec" (toPlist {} Architectures)} $out/Developer/Library/Xcode/Specifications/Architectures.xcspec
+  install -D ${writeText "PackageTypes.xcspec" (toPlist {} PackageTypes)} $out/Developer/Library/Xcode/Specifications/PackageTypes.xcspec
+  install -D ${writeText "ProductTypes.xcspec" (toPlist {} ProductTypes)} $out/Developer/Library/Xcode/Specifications/ProductTypes.xcspec
 
-    mkdir -p $out/Developer/SDKs/
-    cd $out/Developer/SDKs/
-    cp -r ${sdk} ${sdk.name}
-  '';
-}
+  mkdir -p $out/Developer/SDKs/
+  cd $out/Developer/SDKs/
+  cp -r ${sdk} ${sdk.name}
+''
diff --git a/pkgs/development/tools/xcbuild/sdk.nix b/pkgs/development/tools/xcbuild/sdk.nix
index 87bbedd57880b..c97d17d739baf 100644
--- a/pkgs/development/tools/xcbuild/sdk.nix
+++ b/pkgs/development/tools/xcbuild/sdk.nix
@@ -1,6 +1,8 @@
-{ stdenv, writeText, toolchainName, sdkName, xcbuild }:
+{ runCommand, lib, toolchainName, sdkName, writeText }:
 
 let
+  inherit (lib.generators) toPlist;
+
   # TODO: expose MACOSX_DEPLOYMENT_TARGET in nix so we can use it here.
   version = "10.10";
 
@@ -19,17 +21,9 @@ let
   };
 in
 
-stdenv.mkDerivation {
-  name = "MacOSX${version}.sdk";
+runCommand "MacOSX${version}.sdk" {
   inherit version;
-
-  buildInputs = [ xcbuild ];
-
-  buildCommand = ''
-    mkdir -p $out/
-    plutil -convert xml1 -o $out/SDKSettings.plist ${writeText "SDKSettings.json" (builtins.toJSON SDKSettings)}
-
-    mkdir -p $out/System/Library/CoreServices/
-    plutil -convert xml1 -o $out/System/Library/CoreServices/SystemVersion.plist ${writeText "SystemVersion.plist" (builtins.toJSON SystemVersion)}
-  '';
-}
+} ''
+  install -D ${writeText "SDKSettings.plist" (toPlist {} SDKSettings)} $out/SDKSettings.plist
+  install -D ${writeText "SystemVersion.plist" (toPlist {} SystemVersion)} $out/System/Library/CoreServices/SystemVersion.plist
+''
diff --git a/pkgs/development/tools/xcbuild/toolchain.nix b/pkgs/development/tools/xcbuild/toolchain.nix
index 9e34360909f9b..51bc5d60bcfea 100644
--- a/pkgs/development/tools/xcbuild/toolchain.nix
+++ b/pkgs/development/tools/xcbuild/toolchain.nix
@@ -1,16 +1,18 @@
-{stdenv, writeText, toolchainName, xcbuild, fetchurl
-, llvm, cctools, gcc, bootstrap_cmds, binutils
-, yacc, flex, m4, unifdef, gperf, indent, ctags, makeWrapper
-, xib2nib}:
+{ runCommand, toolchainName, fetchurl, makeWrapper, stdenv
+, buildPackages, lib, writeText }:
 
 let
 
+  inherit (lib) getBin optionalString;
+  inherit (lib.generators) toPlist;
+
   ToolchainInfo = {
     Identifier = toolchainName;
   };
 
-  # We could pull this out of developer_cmds but it adds an annoying loop if we want to bootstrap and
-  # this is just a tiny script so I'm not going to bother
+  # We could pull this out of developer_cmds but it adds an annoying
+  # loop if we want to bootstrap and this is just a tiny script so I'm
+  # not going to bother.
   mkdep-darwin-src = fetchurl {
     url        = "https://opensource.apple.com/source/developer_cmds/developer_cmds-63/mkdep/mkdep.sh";
     sha256     = "0n4wpqfslfjs5zbys5yri8pfi2awyhlmknsf6laa5jzqbzq9x541";
@@ -18,106 +20,44 @@ let
   };
 in
 
-stdenv.mkDerivation {
-  name = "nixpkgs.xctoolchain";
-  buildInputs = [ xcbuild makeWrapper ];
-
-  ## cctools should build on Linux but it doesn't currently
-
-  buildCommand = ''
-    mkdir -p $out
-    plutil -convert xml1 -o $out/ToolchainInfo.plist ${writeText "ToolchainInfo.plist" (builtins.toJSON ToolchainInfo)}
-
-    mkdir -p $out/usr/include
-    mkdir -p $out/usr/lib
-    mkdir -p $out/usr/libexec
-    mkdir -p $out/usr/share
-
-    mkdir -p $out/usr/bin
-    cd $out/usr/bin
-    ln -s ${stdenv.cc}/bin/cpp
-    ln -s ${stdenv.cc}/bin/c++
-    ln -s ${stdenv.cc}/bin/cc
-    ln -s c++ clang++
-    ln -s cc clang
-
-    ln -s ${llvm}/bin/llvm-cov
-    ln -s ${llvm}/bin/llvm-dsymutil
-    ln -s ${llvm}/bin/llvm-dwarfdump
-    ln -s ${llvm}/bin/llvm-nm
-    ln -s ${llvm}/bin/llvm-objdump
-    ln -s ${llvm}/bin/llvm-otool
-    ln -s ${llvm}/bin/llvm-profdata
-    ln -s ${llvm}/bin/llvm-size
-
-    ln -s ${yacc}/bin/yacc
-    ln -s ${yacc}/bin/bison
-    ln -s ${flex}/bin/flex
-    ln -s ${flex}/bin/flex++
-
-    ln -s flex lex
-
-    ln -s ${m4}/bin/m4
-    ln -s m4 gm4
-
-    ln -s ${unifdef}/bin/unifdef
-    ln -s ${unifdef}/bin/unifdefall
-
-    ln -s ${gperf}/bin/gperf
-    ln -s ${indent}/bin/indent
-    ln -s ${ctags}/bin/ctags
-  '' + stdenv.lib.optionalString stdenv.isDarwin ''
-    ln -s ${bootstrap_cmds}/bin/mig
-    ln -s ${binutils}/bin/lipo
-
-    ln -s ${cctools}/bin/ar
-    ln -s ${cctools}/bin/as
-    ln -s ${cctools}/bin/nm
-    ln -s ${cctools}/bin/nmedit
-    ln -s ${cctools}/bin/ld
-    ln -s ${cctools}/bin/libtool
-    ln -s ${cctools}/bin/strings
-    ln -s ${cctools}/bin/strip
-    ln -s ${cctools}/bin/install_name_tool
-    ln -s ${cctools}/bin/bitcode_strip
-    ln -s ${cctools}/bin/codesign_allocate
-    ln -s ${cctools}/bin/dsymutil
-    ln -s ${cctools}/bin/dyldinfo
-    ln -s ${cctools}/bin/otool
-    ln -s ${cctools}/bin/unwinddump
-    ln -s ${cctools}/bin/size
-    ln -s ${cctools}/bin/segedit
-    ln -s ${cctools}/bin/pagestuff
-    ln -s ${cctools}/bin/ranlib
-    ln -s ${cctools}/bin/redo_prebinding
-
-    ln -s ${xib2nib}/bin/ibtool
-  '' +
-    # No point including the entire gcc closure if we don't already have it
-    (if stdenv.cc.isClang then ''
-      ln -s ${stdenv.cc.cc.llvm}/bin/llvm-cov gcov
-      ln -s ${mkdep-darwin-src}               mkdep
-    '' else ''
-      ln -s ${gcc}/bin/gcov
-      ln -s ${gcc}/bin/mkdep
-    '');
-}
-
-# other commands in /bin/
-#   asa
-#   cmpdylib (in cctools)
-#   ctf_insert (in cctools)
-#   dwarfdump
-#   lorder
-#   rebase
-#   rpcgen (in developer_cmds)
-#   what
-
-
-# swift: see #11463
-#   swift
-#   swift-compress
-#   swift-demangle
-#   swift-stdlib-tool
-#   swift-update
-#   swiftc
+runCommand "nixpkgs.xctoolchain" {
+  nativeBuildInputs = [ makeWrapper ];
+} (''
+  mkdir -p $out
+  install -D ${writeText "ToolchainInfo.plist" (toPlist {} ToolchainInfo)} $out/ToolchainInfo.plist
+
+  mkdir -p $out/usr/include
+  mkdir -p $out/usr/lib
+  mkdir -p $out/usr/libexec
+  mkdir -p $out/usr/share
+  mkdir -p $out/usr/bin
+
+  for bin in ${getBin stdenv.cc}/bin/*; do
+    ln -s $bin $out/usr/bin
+  done
+
+  for bin in ${getBin stdenv.cc.bintools.bintools}/bin/*; do
+    if ! [ -e "$out/usr/bin/$(basename $bin)" ]; then
+      ln -s $bin $out/usr/bin
+    fi
+  done
+
+  ln -s ${buildPackages.yacc}/bin/yacc $out/usr/bin/yacc
+  ln -s ${buildPackages.yacc}/bin/bison $out/usr/bin/bison
+  ln -s ${buildPackages.flex}/bin/flex $out/usr/bin/flex
+  ln -s ${buildPackages.flex}/bin/flex++ $out/usr/bin/flex++
+  ln -s $out/bin/flex $out/usr/bin/lex
+
+  ln -s ${buildPackages.m4}/bin/m4 $out/usr/bin/m4
+  ln -s $out/usr/bin/m4 $out/usr/bin/gm4
+
+  ln -s ${buildPackages.unifdef}/bin/unifdef $out/usr/bin/unifdef
+  ln -s ${buildPackages.unifdef}/bin/unifdefall $out/usr/bin/unifdefall
+
+  ln -s ${buildPackages.gperf}/bin/gperf $out/usr/bin/gperf
+  ln -s ${buildPackages.indent}/bin/indent $out/usr/bin/indent
+  ln -s ${buildPackages.ctags}/bin/ctags $out/usr/bin/ctags
+'' + optionalString stdenv.isDarwin ''
+  ln -s ${buildPackages.darwin.bootstrap_cmds}/bin/mig $out/usr/bin
+  ln -s ${mkdep-darwin-src} $out/usr/bin/mkdep
+'')
diff --git a/pkgs/development/tools/xcbuild/wrapper.nix b/pkgs/development/tools/xcbuild/wrapper.nix
index 06c48ec0a73f9..cfa855e23cd81 100644
--- a/pkgs/development/tools/xcbuild/wrapper.nix
+++ b/pkgs/development/tools/xcbuild/wrapper.nix
@@ -1,5 +1,5 @@
-{ stdenv, callPackage, makeWrapper, writeText, CoreServices, ImageIO, CoreGraphics
-, cctools, bootstrap_cmds, binutils}:
+{ stdenv, buildPackages, makeWrapper, writeText, runCommand
+, CoreServices, ImageIO, CoreGraphics }:
 
 let
 
@@ -7,20 +7,20 @@ let
   platformName = "com.apple.platform.macosx";
   sdkName = "macosx10.10";
 
-  xcbuild = callPackage ./default.nix {
+  xcbuild = buildPackages.callPackage ./default.nix {
     inherit CoreServices ImageIO CoreGraphics;
   };
 
-  toolchain = callPackage ./toolchain.nix {
-    inherit cctools bootstrap_cmds toolchainName xcbuild binutils stdenv;
+  toolchain = buildPackages.callPackage ./toolchain.nix {
+    inherit toolchainName;
   };
 
-  sdk = callPackage ./sdk.nix {
-    inherit toolchainName sdkName xcbuild;
+  sdk = buildPackages.callPackage ./sdk.nix {
+    inherit toolchainName sdkName;
   };
 
-  platform = callPackage ./platform.nix {
-    inherit sdk platformName xcbuild;
+  platform = buildPackages.callPackage ./platform.nix {
+    inherit sdk platformName;
   };
 
   xcconfig = writeText "nix.xcconfig" ''
@@ -32,7 +32,7 @@ in
 stdenv.mkDerivation {
   name = "xcbuild-wrapper-${xcbuild.version}";
 
-  buildInputs = [ xcbuild makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   setupHook = ./setup-hook.sh;
 
@@ -40,22 +40,21 @@ stdenv.mkDerivation {
 
   installPhase = ''
     mkdir -p $out/bin
-    cd $out/bin/
 
     for file in ${xcbuild}/bin/*; do
-      ln -s $file
+      ln -s $file $out/bin
     done
 
-    mkdir $out/usr
+    mkdir -p $out/usr
     ln -s $out/bin $out/usr/bin
 
-    mkdir -p $out/Library/Xcode/
+    mkdir -p $out/Library/Xcode
     ln -s ${xcbuild}/Library/Xcode/Specifications $out/Library/Xcode/Specifications
 
-    mkdir -p $out/Platforms/
+    mkdir -p $out/Platforms
     ln -s ${platform} $out/Platforms/nixpkgs.platform
 
-    mkdir -p $out/Toolchains/
+    mkdir -p $out/Toolchains
     ln -s ${toolchain} $out/Toolchains/nixpkgs.xctoolchain
 
     wrapProgram $out/bin/xcodebuild \
diff --git a/pkgs/servers/http/myserver/default.nix b/pkgs/servers/http/myserver/default.nix
index fa3b57a0b22e8..a18ac202a4a20 100644
--- a/pkgs/servers/http/myserver/default.nix
+++ b/pkgs/servers/http/myserver/default.nix
@@ -1,5 +1,5 @@
 { lib, fetchurl, stdenv, libgcrypt, libevent, libidn, gnutls
-, libxml2, zlib, guile, texinfo, cppunit, psmisc }:
+, libxml2, zlib, guile, texinfo, cppunit, killall }:
 
 let version = "0.11"; in
 
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
 
   # On GNU/Linux the `test_suite' process sometimes stays around, so
   # forcefully terminate it.
-  postCheck = lib.optionalString stdenv.isLinux "${psmisc}/bin/killall test_suite || true";
+  postCheck = "${killall}/bin/killall test_suite || true";
 
   meta = {
     description = "GNU MyServer, a powerful and easy to configure web server";
diff --git a/pkgs/tools/misc/xfstests/default.nix b/pkgs/tools/misc/xfstests/default.nix
index e6c67ddb9bb8f..80a728747fefb 100644
--- a/pkgs/tools/misc/xfstests/default.nix
+++ b/pkgs/tools/misc/xfstests/default.nix
@@ -1,5 +1,6 @@
-{ stdenv, acl, attr, autoconf, automake, bash, bc, coreutils, e2fsprogs, fetchgit, fio, gawk, keyutils
-, lib, libaio, libcap, libtool, libuuid, libxfs, lvm2, openssl, perl, procps, psmisc, quota, su
+{ stdenv, acl, attr, autoconf, automake, bash, bc, coreutils, e2fsprogs
+, fetchgit, fio, gawk, keyutils, killall, lib, libaio, libcap, libtool
+, libuuid, libxfs, lvm2, openssl, perl, procps, quota, su
 , time, utillinux, which, writeScript, xfsprogs }:
 
 stdenv.mkDerivation {
@@ -90,7 +91,9 @@ stdenv.mkDerivation {
       ln -s @out@/lib/xfstests/$f $f
     done
 
-    export PATH=${lib.makeBinPath [acl attr bc e2fsprogs fio gawk keyutils libcap lvm2 perl procps psmisc quota utillinux which xfsprogs]}:$PATH
+    export PATH=${lib.makeBinPath [acl attr bc e2fsprogs fio gawk keyutils
+                                   libcap lvm2 perl procps killall quota
+                                   utillinux which xfsprogs]}:$PATH
     exec ./check "$@"
   '';
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index b05ab4926050d..015ad74a93485 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8576,8 +8576,7 @@ with pkgs;
 
   xcbuild  = callPackage ../development/tools/xcbuild/wrapper.nix {
     inherit (darwin.apple_sdk.frameworks) CoreServices CoreGraphics ImageIO;
-    inherit (darwin) cctools bootstrap_cmds binutils;
-    stdenv = clangStdenv;
+    stdenv = buildPackages.clangStdenv;
   };
 
   xmlindent = callPackage ../development/web/xmlindent {};
@@ -21742,7 +21741,7 @@ with pkgs;
   unixtools = recurseIntoAttrs (callPackages ./unix-tools.nix { });
   inherit (unixtools) hexdump ps logger eject umount
                       mount wall hostname more sysctl getconf
-                      getent locale;
+                      getent locale killall;
 
   fts = if hostPlatform.isMusl then netbsd.fts else null;
 
diff --git a/pkgs/top-level/unix-tools.nix b/pkgs/top-level/unix-tools.nix
index c1bd46ad68dc4..a46d2897f4ed8 100644
--- a/pkgs/top-level/unix-tools.nix
+++ b/pkgs/top-level/unix-tools.nix
@@ -81,6 +81,10 @@ let
       linux = pkgs.nettools;
       darwin = pkgs.darwin.network_cmds;
     };
+    killall = {
+      linux = pkgs.psmisc;
+      darwin = pkgs.darwin.shell_cmds;
+    };
     locale = {
       linux = pkgs.glibc;
       darwin = pkgs.netbsd.locale;