nixpkgs/pkgs/by-name/su/sudo/package.nix
aleksana 571c71e6f7 treewide: migrate packages to pkgs/by-name, take 1
We are migrating packages that meet below requirements:

1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration

The tool is here: https://github.com/Aleksanaa/by-name-migrate.
2024-11-09 20:04:51 +08:00

101 lines
2.8 KiB
Nix

{ lib
, stdenv
, fetchpatch
, fetchurl
, buildPackages
, coreutils
, pam
, groff
, sssd
, nixosTests
, sendmailPath ? "/run/wrappers/bin/sendmail"
, withInsults ? false
, withSssd ? false
}:
stdenv.mkDerivation (finalAttrs: {
pname = "sudo";
# be sure to check if nixos/modules/security/sudo.nix needs updating when bumping
# e.g. links to man pages, value constraints etc.
version = "1.9.16";
__structuredAttrs = true;
src = fetchurl {
url = "https://www.sudo.ws/dist/sudo-${finalAttrs.version}.tar.gz";
hash = "sha256-wNhNeX8GtzL8Vz0LeYroMSjCvDMFIFfwW1YOxry/oD0=";
};
prePatch = ''
# do not set sticky bit in nix store
substituteInPlace src/Makefile.in --replace 04755 0755
'';
patches = [
# Fix for https://github.com/NixOS/nixpkgs/issues/354544
(fetchpatch {
url = "https://www.sudo.ws/repos/sudo/raw-rev/71e3f5a288e1ac21151b1b9577f0fe3745671cf7";
hash = "sha256-L4AF1ee+qW9QKLrUzL5+hC5EznNC9k7sNeVGNBAJ6S4=";
})
];
configureFlags = [
"--with-env-editor"
"--with-editor=/run/current-system/sw/bin/nano"
"--with-rundir=/run/sudo"
"--with-vardir=/var/db/sudo"
"--with-logpath=/var/log/sudo.log"
"--with-iologdir=/var/log/sudo-io"
"--with-sendmail=${sendmailPath}"
"--enable-tmpfiles.d=no"
"--with-passprompt=[sudo] password for %p: " # intentional trailing space
] ++ lib.optionals withInsults [
"--with-insults"
"--with-all-insults"
] ++ lib.optionals withSssd [
"--with-sssd"
"--with-sssd-lib=${sssd}/lib"
];
postConfigure =
''
cat >> pathnames.h <<'EOF'
#undef _PATH_MV
#define _PATH_MV "${coreutils}/bin/mv"
EOF
makeFlags="install_uid=$(id -u) install_gid=$(id -g)"
installFlags="sudoers_uid=$(id -u) sudoers_gid=$(id -g) sysconfdir=$out/etc rundir=$TMPDIR/dummy vardir=$TMPDIR/dummy DESTDIR=/"
'';
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [ groff ];
buildInputs = [ pam ];
enableParallelBuilding = true;
doCheck = false; # needs root
postInstall = ''
rm $out/share/doc/sudo/ChangeLog
'';
passthru.tests = { inherit (nixosTests) sudo; };
meta = with lib; {
description = "Command to run commands as root";
longDescription =
''
Sudo (su "do") allows a system administrator to delegate
authority to give certain users (or groups of users) the ability
to run some (or all) commands as root or another user while
providing an audit trail of the commands and their arguments.
'';
homepage = "https://www.sudo.ws/";
# From https://www.sudo.ws/about/license/
license = with licenses; [ sudo bsd2 bsd3 zlib ];
maintainers = with maintainers; [ rhendric ];
platforms = platforms.linux ++ platforms.freebsd;
mainProgram = "sudo";
};
})