diff options
author | zimbatm <zimbatm@zimbatm.com> | 2016-06-19 23:36:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-19 23:36:45 +0100 |
commit | 31c158ad453547993095b9425a60697738fdac5d (patch) | |
tree | 6b7239b1cab6571b745050a5e4ccd70045037f52 /nixos/modules/config | |
parent | b0f8416c5c0e5345897832ae0cce139ed85c7fdb (diff) | |
parent | 2974b6f4c8224ab1097e9386d6b3a0d570f95531 (diff) | |
download | nixlib-31c158ad453547993095b9425a60697738fdac5d.tar nixlib-31c158ad453547993095b9425a60697738fdac5d.tar.gz nixlib-31c158ad453547993095b9425a60697738fdac5d.tar.bz2 nixlib-31c158ad453547993095b9425a60697738fdac5d.tar.lz nixlib-31c158ad453547993095b9425a60697738fdac5d.tar.xz nixlib-31c158ad453547993095b9425a60697738fdac5d.tar.zst nixlib-31c158ad453547993095b9425a60697738fdac5d.zip |
Merge pull request #16189 from zimbatm/usershell-config
User shell config
Diffstat (limited to 'nixos/modules/config')
-rw-r--r-- | nixos/modules/config/shells-environment.nix | 8 | ||||
-rw-r--r-- | nixos/modules/config/users-groups.nix | 25 |
2 files changed, 22 insertions, 11 deletions
diff --git a/nixos/modules/config/shells-environment.nix b/nixos/modules/config/shells-environment.nix index 9642981803bf..f458bc39adaa 100644 --- a/nixos/modules/config/shells-environment.nix +++ b/nixos/modules/config/shells-environment.nix @@ -1,7 +1,7 @@ # This module defines a global environment configuration and # a common configuration for all shells. -{ config, lib, pkgs, ... }: +{ config, lib, utils, pkgs, ... }: with lib; @@ -135,13 +135,13 @@ in environment.shells = mkOption { default = []; - example = [ "/run/current-system/sw/bin/zsh" ]; + example = literalExample "[ pkgs.bashInteractive pkgs.zsh ]"; description = '' A list of permissible login shells for user accounts. No need to mention <literal>/bin/sh</literal> here, it is placed into this list implicitly. ''; - type = types.listOf types.path; + type = types.listOf (types.either types.shellPackage types.path); }; }; @@ -158,7 +158,7 @@ in environment.etc."shells".text = '' - ${concatStringsSep "\n" cfg.shells} + ${concatStringsSep "\n" (map utils.toShellPath cfg.shells)} /bin/sh ''; diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix index 8231907d7999..277a4264137b 100644 --- a/nixos/modules/config/users-groups.nix +++ b/nixos/modules/config/users-groups.nix @@ -1,9 +1,8 @@ -{ config, lib, pkgs, ... }: +{ config, lib, utils, pkgs, ... }: with lib; let - ids = config.ids; cfg = config.users; @@ -103,7 +102,7 @@ let }; home = mkOption { - type = types.str; + type = types.path; default = "/var/empty"; description = "The user's home directory."; }; @@ -118,8 +117,10 @@ let }; shell = mkOption { - type = types.str; - default = "/run/current-system/sw/bin/nologin"; + type = types.either types.shellPackage types.path; + default = pkgs.nologin; + defaultText = "pkgs.nologin"; + example = literalExample "pkgs.bashInteractive"; description = "The path to the user's shell."; }; @@ -359,11 +360,12 @@ let spec = pkgs.writeText "users-groups.json" (builtins.toJSON { inherit (cfg) mutableUsers; - users = mapAttrsToList (n: u: + users = mapAttrsToList (_: u: { inherit (u) - name uid group description home shell createHome isSystemUser + name uid group description home createHome isSystemUser password passwordFile hashedPassword initialPassword initialHashedPassword; + shell = utils.toShellPath u.shell; }) cfg.users; groups = mapAttrsToList (n: g: { inherit (g) name gid; @@ -373,6 +375,12 @@ let }) cfg.groups; }); + systemShells = + let + shells = mapAttrsToList (_: u: u.shell) cfg.users; + in + filter types.shellPackage.check shells; + in { ###### interface @@ -477,6 +485,9 @@ in { }; }; + # Install all the user shells + environment.systemPackages = systemShells; + users.groups = { root.gid = ids.gids.root; wheel.gid = ids.gids.wheel; |