nixpkgs/pkgs/os-specific/linux/util-linux/default.nix
Alyssa Ross 5a963f1d97 util-linux: replace "minimal" opt with more outputs
The "minimal" argument just removed some files to reduce package
size.  Now that we have multiple output derivations in Nixpkgs (we
didn't when "minimal" was added), we can just throw more outputs at
this problem and get the same effect, with the advantage that those
files are actually there, available for download without a rebuild, if
they're ever needed.

I've tested that with this change, there's no difference in the
closure size of util-linuxMinimal.bin.

We have to set SYSCONFSTATICDIR to stop $bin/bin/agetty looking in
$out for issue or issue.d.  SYSCONFSTATICDIR is supposed to be for
configuration that comes with a package, but it's currently only used
for finding an issue, and util-linux doesn't come with any issue
files, so I'm not really sure what the point is...
2021-10-11 15:15:14 +00:00

78 lines
2.7 KiB
Nix

{ lib, stdenv, fetchurl, pkg-config, zlib, shadow, libcap_ng
, ncurses ? null, pam, systemd ? null
, nlsSupport ? true
}:
stdenv.mkDerivation rec {
pname = "util-linux";
version = "2.36.2";
src = fetchurl {
url = "mirror://kernel/linux/utils/util-linux/v${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0psc0asjp1rmfx1j7468zfnk9nphlphybw2n8dcl74v8v2lnnlgp";
};
patches = [
./rtcwake-search-PATH-for-shutdown.patch
];
outputs = [ "bin" "dev" "out" "lib" "man" ];
postPatch = ''
patchShebangs tests/run.sh
substituteInPlace include/pathnames.h \
--replace "/bin/login" "${shadow}/bin/login"
substituteInPlace sys-utils/eject.c \
--replace "/bin/umount" "$bin/bin/umount"
'';
# !!! It would be better to obtain the path to the mount helpers
# (/sbin/mount.*) through an environment variable, but that's
# somewhat risky because we have to consider that mount can setuid
# root...
configureFlags = [
"--localstatedir=/var"
"--enable-write"
"--enable-last"
"--enable-mesg"
"--disable-use-tty-group"
"--enable-fs-paths-default=/run/wrappers/bin:/run/current-system/sw/bin:/sbin"
"--disable-makeinstall-setuid" "--disable-makeinstall-chown"
"--disable-su" # provided by shadow
(lib.enableFeature nlsSupport "nls")
(lib.withFeature (ncurses != null) "ncursesw")
(lib.withFeature (systemd != null) "systemd")
(lib.withFeatureAs (systemd != null)
"systemdsystemunitdir" "${placeholder "bin"}/lib/systemd/system/")
"SYSCONFSTATICDIR=${placeholder "lib"}/lib"
] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
"scanf_cv_type_modifier=ms"
;
makeFlags = [
"usrbin_execdir=${placeholder "bin"}/bin"
"usrlib_execdir=${placeholder "lib"}/lib"
"usrsbin_execdir=${placeholder "bin"}/sbin"
];
nativeBuildInputs = [ pkg-config ];
buildInputs =
[ zlib pam libcap_ng ]
++ lib.filter (p: p != null) [ ncurses systemd ];
doCheck = false; # "For development purpose only. Don't execute on production system!"
enableParallelBuilding = true;
meta = with lib; {
homepage = "https://www.kernel.org/pub/linux/utils/util-linux/";
description = "A set of system utilities for Linux";
changelog = "https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v${lib.versions.majorMinor version}/v${version}-ReleaseNotes";
# https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/tree/README.licensing
license = with licenses; [ gpl2Only gpl2Plus gpl3Plus lgpl21Plus bsd3 bsdOriginalUC publicDomain ];
platforms = platforms.linux;
priority = 6; # lower priority than coreutils ("kill") and shadow ("login" etc.) packages
};
}