nixpkgs/pkgs/os-specific/linux/shadow/default.nix
Marc Weber 788e760b51 experimental/shadow
For /etc/skel/* files put file contents into user directories rather than
"symlinks". This way users can edit their .bashrc files.

This small patch works fine with the multi-shell-support topic branch found on
my github page which rewrites .bashrc and similar files to source /etc/ files.
Thus users can opt-out or set options - still following system updates.

Signed-off-by: Marc Weber <marco-oweber@gmx.de>
2013-04-11 16:24:11 +02:00

60 lines
2 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ stdenv, fetchurl, pam ? null, glibcCross ? null }:
let
glibc =
if stdenv ? cross
then glibcCross
else assert stdenv ? glibc; stdenv.glibc;
dots_in_usernames = fetchurl {
url = http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/sys-apps/shadow/files/shadow-4.1.3-dots-in-usernames.patch;
sha256 = "1fj3rg6x3jppm5jvi9y7fhd2djbi4nc5pgwisw00xlh4qapgz692";
};
in
stdenv.mkDerivation rec {
name = "shadow-4.1.5.1";
src = fetchurl {
url = "http://pkg-shadow.alioth.debian.org/releases/${name}.tar.bz2";
sha256 = "1yvqx57vzih0jdy3grir8vfbkxp0cl0myql37bnmi2yn90vk6cma";
};
buildInputs = stdenv.lib.optional (pam != null && stdenv.isLinux) pam;
patches = [ ./keep-path.patch dots_in_usernames
/* nixos managed /etc[/skel] files are symlinks pointing to /etc/static[/skel]
* thus useradd will create symlinks ~/.bashrc. This patch fixes it: If a file
* should be copied to user's home directory and it points to /etc/static
* the target of the symbolic link is copied instead.
* This is only one way to fix it. The alternative would be making nixos
* create files in /etc/skel and keep some state around so that it knows
* which files it put there so that it can remove them itself. This more
* complicated approach would pay off if multiple apps woulb be using
* /etc/skel
*/
./etc-copy-etc-satic-target.patch
];
# 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";
preBuild = assert glibc != null;
''
substituteInPlace lib/nscd.c --replace /usr/sbin/nscd ${glibc}/sbin/nscd
'';
# Don't install groups, since coreutils already provides it.
postInstall =
''
rm $out/bin/groups $out/share/man/man1/groups.*
'';
meta = {
homepage = http://pkg-shadow.alioth.debian.org/;
description = "Suite containing authentication-related tools such as passwd and su";
};
}