From eb0b0131ceacce1b1d1cbecc1f27fd747a9b507e Mon Sep 17 00:00:00 2001 From: Linus Heckemann Date: Mon, 22 May 2023 19:55:07 +0200 Subject: [PATCH] util-linux: split mount, login and swap utils into their own outputs --- pkgs/os-specific/linux/systemd/default.nix | 11 ++++++----- pkgs/os-specific/linux/util-linux/default.nix | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix index fd5ca2df5a94..fada9f6ab4a5 100644 --- a/pkgs/os-specific/linux/systemd/default.nix +++ b/pkgs/os-specific/linux/systemd/default.nix @@ -508,9 +508,10 @@ stdenv.mkDerivation (finalAttrs: { "-Dsysvinit-path=" "-Dsysvrcnd-path=" - "-Dsulogin-path=${util-linux}/bin/sulogin" - "-Dmount-path=${util-linux}/bin/mount" - "-Dumount-path=${util-linux}/bin/umount" + "-Dsulogin-path=${util-linux.login}/bin/sulogin" + "-Dnologin-path=${util-linux.login}/bin/nologin" + "-Dmount-path=${util-linux.mount}/bin/mount" + "-Dumount-path=${util-linux.mount}/bin/umount" "-Dcreate-log-dirs=false" # Use cgroupsv2. This is already the upstream default, but better be explicit. @@ -561,8 +562,8 @@ stdenv.mkDerivation (finalAttrs: { "man/systemd-makefs@.service.xml" ]; } - { search = "/sbin/swapon"; replacement = "${lib.getBin util-linux}/sbin/swapon"; where = [ "src/core/swap.c" "src/basic/unit-def.h" ]; } - { search = "/sbin/swapoff"; replacement = "${lib.getBin util-linux}/sbin/swapoff"; where = [ "src/core/swap.c" ]; } + { search = "/sbin/swapon"; replacement = "${util-linux.swap}/sbin/swapon"; where = [ "src/core/swap.c" "src/basic/unit-def.h" ]; } + { search = "/sbin/swapoff"; replacement = "${util-linux.swap}/sbin/swapoff"; where = [ "src/core/swap.c" ]; } { search = "/bin/echo"; replacement = "${coreutils}/bin/echo"; diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix index 7b4ef6ed0143..2d70294c01d6 100644 --- a/pkgs/os-specific/linux/util-linux/default.nix +++ b/pkgs/os-specific/linux/util-linux/default.nix @@ -50,7 +50,12 @@ stdenv.mkDerivation rec { }) ]; - outputs = [ "bin" "dev" "out" "lib" "man" ]; + # We separate some of the utilities into their own outputs. This + # allows putting together smaller systems depending on only part of + # the greater util-linux toolset. + # Compatibility is maintained by symlinking the binaries from the + # smaller outputs in the bin output. + outputs = [ "bin" "dev" "out" "lib" "man" "mount" "login" "swap" ]; separateDebugInfo = true; postPatch = '' @@ -106,6 +111,18 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; postInstall = '' + moveToOutput bin/mount "$mount" + moveToOutput bin/umount "$mount" + ln -svf "$mount/bin/"* $bin/bin/ + + moveToOutput sbin/nologin "$login" + moveToOutput sbin/sulogin "$login" + ln -svf "$login/bin/"* $bin/bin/ + + moveToOutput sbin/swapon "$swap" + moveToOutput sbin/swapoff "$swap" + ln -svf "$swap/bin/"* $bin/bin/ + installShellCompletion --bash bash-completion/* '';