* Move the configuration of the pwdutils (passwd, useradd etc.) to
modules/programs/pwdutils. * Renamed config.system.shell to config.users.defaultUserShell and updated the description to make clear it has to be a non-store path. svn path=/nixos/branches/modular-nixos/; revision=15761
This commit is contained in:
parent
dfe03fc7f9
commit
ec55562ec3
@ -72,26 +72,6 @@ let
|
|||||||
target = "hosts";
|
target = "hosts";
|
||||||
}
|
}
|
||||||
|
|
||||||
{ # Configuration for pwdutils (login, passwd, useradd, etc.).
|
|
||||||
# You cannot login without it!
|
|
||||||
source = ./login.defs;
|
|
||||||
target = "login.defs";
|
|
||||||
}
|
|
||||||
|
|
||||||
{ # Configuration for passwd and friends (e.g., hash algorithm
|
|
||||||
# for /etc/passwd).
|
|
||||||
source = ./default/passwd;
|
|
||||||
target = "default/passwd";
|
|
||||||
}
|
|
||||||
|
|
||||||
{ # Configuration for useradd.
|
|
||||||
source = pkgs.substituteAll {
|
|
||||||
src = ./default/useradd;
|
|
||||||
defaultShell = config.system.shell;
|
|
||||||
};
|
|
||||||
target = "default/useradd";
|
|
||||||
}
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# A bunch of PAM configuration files for various programs.
|
# A bunch of PAM configuration files for various programs.
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
GROUP=100
|
|
||||||
HOME=/home
|
|
||||||
SHELL=@defaultShell@
|
|
@ -42,7 +42,6 @@ in
|
|||||||
###### implementation
|
###### implementation
|
||||||
let
|
let
|
||||||
ids = import ../../system/ids.nix;
|
ids = import ../../system/ids.nix;
|
||||||
defaultShell = config.system.shell;
|
|
||||||
|
|
||||||
# User accounts to be created/updated by NixOS.
|
# User accounts to be created/updated by NixOS.
|
||||||
users =
|
users =
|
||||||
@ -53,7 +52,7 @@ let
|
|||||||
uid = ids.uids.root;
|
uid = ids.uids.root;
|
||||||
description = "System administrator";
|
description = "System administrator";
|
||||||
home = "/root";
|
home = "/root";
|
||||||
shell = defaultShell;
|
shell = config.users.defaultUserShell;
|
||||||
group = "root";
|
group = "root";
|
||||||
}
|
}
|
||||||
{ name = "nobody";
|
{ name = "nobody";
|
||||||
@ -78,7 +77,7 @@ let
|
|||||||
, group ? "nogroup"
|
, group ? "nogroup"
|
||||||
, extraGroups ? []
|
, extraGroups ? []
|
||||||
, home ? "/var/empty"
|
, home ? "/var/empty"
|
||||||
, shell ? (if useDefaultShell then defaultShell else "/noshell")
|
, shell ? (if useDefaultShell then config.users.defaultUserShell else "/noshell")
|
||||||
, createHome ? false
|
, createHome ? false
|
||||||
, useDefaultShell ? false
|
, useDefaultShell ? false
|
||||||
}:
|
}:
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
./installer/grub/grub.nix
|
./installer/grub/grub.nix
|
||||||
./legacy.nix
|
./legacy.nix
|
||||||
./programs/bash/bash.nix
|
./programs/bash/bash.nix
|
||||||
|
./programs/pwdutils/pwdutils.nix
|
||||||
./programs/ssh.nix
|
./programs/ssh.nix
|
||||||
./programs/ssmtp.nix
|
./programs/ssmtp.nix
|
||||||
./security/setuid-wrappers.nix
|
./security/setuid-wrappers.nix
|
||||||
|
50
modules/programs/pwdutils/pwdutils.nix
Normal file
50
modules/programs/pwdutils/pwdutils.nix
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# Configuration for the pwdutils suite of tools: passwd, useradd, etc.
|
||||||
|
|
||||||
|
{config, pkgs, ...}:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
users.defaultUserShell = pkgs.lib.mkOption {
|
||||||
|
default = "/var/run/current-system/sw/bin/bash";
|
||||||
|
description = ''
|
||||||
|
This option defined the default shell assigned to user
|
||||||
|
accounts. This must not be a store path, since the path is
|
||||||
|
used outside the store (in particular in /etc/passwd).
|
||||||
|
Rather, it should be the path of a symlink that points to the
|
||||||
|
actual shell in the Nix store.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
require = [options];
|
||||||
|
|
||||||
|
environment.etc =
|
||||||
|
[ { # /etc/login.defs: global configuration for pwdutils. You
|
||||||
|
# cannot login without it!
|
||||||
|
source = ./login.defs;
|
||||||
|
target = "login.defs";
|
||||||
|
}
|
||||||
|
|
||||||
|
{ # /etc/default/passwd: configuration for passwd and friends
|
||||||
|
# (e.g., hash algorithm for /etc/passwd).
|
||||||
|
source = ./passwd.conf;
|
||||||
|
target = "default/passwd";
|
||||||
|
}
|
||||||
|
|
||||||
|
{ # /etc/default/useradd: configuration for useradd.
|
||||||
|
source = pkgs.writeText "useradd"
|
||||||
|
''
|
||||||
|
GROUP=100
|
||||||
|
HOME=/home
|
||||||
|
SHELL=${config.users.defaultUserShell}
|
||||||
|
'';
|
||||||
|
target = "default/useradd";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
@ -106,7 +106,7 @@ let
|
|||||||
touch /etc/shadow; chmod 0600 /etc/shadow
|
touch /etc/shadow; chmod 0600 /etc/shadow
|
||||||
# Can't use useradd, since it complains that it doesn't know us
|
# Can't use useradd, since it complains that it doesn't know us
|
||||||
# (bootstrap problem!).
|
# (bootstrap problem!).
|
||||||
echo "root:x:0:0:System administrator:$rootHome:${config.system.shell}" >> /etc/passwd
|
echo "root:x:0:0:System administrator:$rootHome:${config.users.defaultUserShell}" >> /etc/passwd
|
||||||
echo "root::::::::" >> /etc/shadow
|
echo "root::::::::" >> /etc/shadow
|
||||||
echo | passwd --stdin root
|
echo | passwd --stdin root
|
||||||
fi
|
fi
|
||||||
|
@ -15,18 +15,6 @@ let
|
|||||||
Attribute set of derivations used to setup the system.
|
Attribute set of derivations used to setup the system.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
shell = mkOption {
|
|
||||||
default = "/var/run/current-system/sw/bin/bash";
|
|
||||||
description = ''
|
|
||||||
This option defines the path to the Bash shell. It should
|
|
||||||
generally not be overriden.
|
|
||||||
'';
|
|
||||||
merge = list:
|
|
||||||
assert list != [] && builtins.tail list == [];
|
|
||||||
builtins.head list;
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
Loading…
Reference in New Issue
Block a user