summaryrefslogtreecommitdiff
path: root/archetypes/users
diff options
context:
space:
mode:
Diffstat (limited to 'archetypes/users')
-rw-r--r--archetypes/users/primary.nix37
1 files changed, 37 insertions, 0 deletions
diff --git a/archetypes/users/primary.nix b/archetypes/users/primary.nix
new file mode 100644
index 0000000..a29c3b8
--- /dev/null
+++ b/archetypes/users/primary.nix
@@ -0,0 +1,37 @@
+{ lib, config, pkgs, userDetails, ... }: let
+ cfg = config._archetypes.users.primary;
+in {
+ options._archetypes.users.primary = {
+ enable = lib.mkEnableOption "create primary user";
+ autologin.enable = lib.mkEnableOption "enables getty automatic login";
+ };
+
+ config = lib.mkIf cfg.enable {
+ # Enable zsh
+ programs.zsh.enable = true;
+
+ # Setup normal user
+ users.users.${userDetails.username} = {
+ home = userDetails.home;
+ description = userDetails.fullname;
+ isNormalUser = true;
+ shell = pkgs.zsh;
+ extraGroups = [
+ "nixbld"
+ "video"
+ "wheel"
+ ] ++ lib.optionals config.hardware.i2c.enable [
+ "i2c"
+ ] ++ lib.optionals config.virtualisation.libvirtd.enable [
+ "libvirtd"
+ ] ++ lib.optionals config.virtualisation.docker.enable [
+ "docker"
+ ];
+ };
+
+ # Configure automatic login with getty
+ services.getty = lib.mkIf cfg.autologin.enable {
+ autologinUser = userDetails.username;
+ };
+ };
+}