From 28ab3acb58b0e5a5ffa932c9c6eb19db05a6c334 Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Sat, 5 Apr 2014 13:41:23 -0500 Subject: [PATCH] su: Make the su package a provider of only the su binary Additionally, provide su with the base system and remove su from the util-linux package as it is now provided by shadow. --- nixos/modules/config/system-path.nix | 1 + pkgs/os-specific/linux/shadow/default.nix | 8 +++++++- pkgs/os-specific/linux/util-linux/default.nix | 4 ++++ pkgs/top-level/all-packages.nix | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix index 2f61947c3bcc..1913e17f929d 100644 --- a/nixos/modules/config/system-path.nix +++ b/nixos/modules/config/system-path.nix @@ -46,6 +46,7 @@ let pkgs.rsync pkgs.strace pkgs.sysvtools + pkgs.su pkgs.time pkgs.usbutils pkgs.utillinux diff --git a/pkgs/os-specific/linux/shadow/default.nix b/pkgs/os-specific/linux/shadow/default.nix index 1055fccd8aa3..9d024ae3109c 100644 --- a/pkgs/os-specific/linux/shadow/default.nix +++ b/pkgs/os-specific/linux/shadow/default.nix @@ -26,6 +26,8 @@ stdenv.mkDerivation rec { patches = [ ./keep-path.patch dots_in_usernames ]; + outputs = [ "out" "su" ]; + # Assume System V `setpgrp (void)', which is the default on GNU variants # (`AC_FUNC_SETPGRP' is not cross-compilation capable.) preConfigure = "export ac_cv_func_setpgrp_void=yes"; @@ -35,10 +37,14 @@ stdenv.mkDerivation rec { substituteInPlace lib/nscd.c --replace /usr/sbin/nscd ${glibc}/sbin/nscd ''; - # Don't install ‘groups’, since coreutils already provides it. postInstall = '' + # Don't install ‘groups’, since coreutils already provides it. rm $out/bin/groups $out/share/man/man1/groups.* + + # Move the su binary into the su package + mkdir -p $su/bin + mv $out/bin/su $su/bin ''; meta = { diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix index 3f676d37dd87..ec43ee1e64f4 100644 --- a/pkgs/os-specific/linux/util-linux/default.nix +++ b/pkgs/os-specific/linux/util-linux/default.nix @@ -36,6 +36,10 @@ stdenv.mkDerivation rec { ++ stdenv.lib.optional (ncurses != null) ncurses ++ stdenv.lib.optional (perl != null) perl; + postInstall = '' + rm $out/bin/su # su should be supplied by the su package (shadow) + ''; + enableParallelBuilding = true; meta = { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1daa2eba8a5b..da971258d50b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1995,7 +1995,7 @@ let stunnel = callPackage ../tools/networking/stunnel { }; - su = shadow; + su = shadow.su; surfraw = callPackage ../tools/networking/surfraw { };