summary refs log tree commit diff
path: root/system/users-groups.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2007-11-16 13:26:34 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2007-11-16 13:26:34 +0000
commitb8806478701ded66fa5a6151f6aaf2140dafb024 (patch)
tree2bbd7d9965544dc6add622938f9c77918484bce8 /system/users-groups.nix
parentbb08b8ff484ffa4e49b8b385924dc56f3ff660fa (diff)
downloadnixpkgs-b8806478701ded66fa5a6151f6aaf2140dafb024.tar
nixpkgs-b8806478701ded66fa5a6151f6aaf2140dafb024.tar.gz
nixpkgs-b8806478701ded66fa5a6151f6aaf2140dafb024.tar.bz2
nixpkgs-b8806478701ded66fa5a6151f6aaf2140dafb024.tar.lz
nixpkgs-b8806478701ded66fa5a6151f6aaf2140dafb024.tar.xz
nixpkgs-b8806478701ded66fa5a6151f6aaf2140dafb024.tar.zst
nixpkgs-b8806478701ded66fa5a6151f6aaf2140dafb024.zip
* Options users.extraUsers and users.extraGroups to specify additional
  users and groups that the system should create automatically.

svn path=/nixos/trunk/; revision=9705
Diffstat (limited to 'system/users-groups.nix')
-rw-r--r--system/users-groups.nix24
1 files changed, 13 insertions, 11 deletions
diff --git a/system/users-groups.nix b/system/users-groups.nix
index b156ac5591e..9235fe11c18 100644
--- a/system/users-groups.nix
+++ b/system/users-groups.nix
@@ -1,11 +1,11 @@
-{pkgs, upstartJobs, defaultShell}:
+{pkgs, config, upstartJobs, defaultShell}:
 
 let ids = import ./ids.nix; in
 
 rec {
 
-  # System user accounts.
-  systemUsers =
+  # User accounts to be created/updated by NixOS.
+  users =
     let
       jobUsers = pkgs.lib.concatLists (map (job: job.users) upstartJobs.jobs);
       
@@ -40,15 +40,17 @@ rec {
         , group ? "nogroup"
         , extraGroups ? []
         , home ? "/var/empty"
-        , shell ? "/noshell"
+        , shell ? (if useDefaultShell then defaultShell else "/noshell")
+        , createHome ? false
+        , useDefaultShell ? false
         }:
-        { inherit name description uid group extraGroups home shell; };
+        { inherit name description uid group extraGroups home shell createHome; };
 
-    in map addAttrs (defaultUsers ++ jobUsers ++ nixBuildUsers);
+    in map addAttrs (defaultUsers ++ jobUsers ++ nixBuildUsers ++ config.users.extraUsers);
 
 
-  # System groups.
-  systemGroups =
+  # Groups to be created/updated by NixOS.
+  groups =
     let
       jobGroups = pkgs.lib.concatLists (map (job: job.groups) upstartJobs.jobs);
 
@@ -75,12 +77,12 @@ rec {
         { name, gid ? "" }:
         { inherit name gid; };
 
-    in map addAttrs (defaultGroups ++ jobGroups);
+    in map addAttrs (defaultGroups ++ jobGroups ++ config.users.extraGroups);
 
 
   # Awful hackery necessary to pass the users/groups to the activation script.
   createUsersGroups = ../helpers/create-users-groups.sh;
-  usersList = pkgs.writeText "users" (pkgs.lib.concatStrings (map (u: "${u.name}\n${u.description}\n${toString u.uid}\n${u.group}\n${toString u.extraGroups}\n${u.home}\n${u.shell}\n") systemUsers));
-  groupsList = pkgs.writeText "groups" (pkgs.lib.concatStrings (map (g: "${g.name}\n${toString g.gid}\n") systemGroups));
+  usersList = pkgs.writeText "users" (pkgs.lib.concatStrings (map (u: "${u.name}\n${u.description}\n${toString u.uid}\n${u.group}\n${toString u.extraGroups}\n${u.home}\n${u.shell}\n${toString u.createHome}\n") users));
+  groupsList = pkgs.writeText "groups" (pkgs.lib.concatStrings (map (g: "${g.name}\n${toString g.gid}\n") groups));
     
 }