summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorene <ene@sils.li>2023-01-19 14:02:04 +0100
committerene <ene@sils.li>2023-01-19 14:02:04 +0100
commit211ab56adf2dd91732feb0c75332321206e0d499 (patch)
tree6b595097bc5a92138f04d696b00cfec68998ae3e
parentMerge pull request 'Feat: Added /boot as persistent subvolume' (#10) from ser... (diff)
downloadnixos-server-211ab56adf2dd91732feb0c75332321206e0d499.tar.gz
nixos-server-211ab56adf2dd91732feb0c75332321206e0d499.zip
Feat: User configuration, with secure passwords
The passwords will be stored in a specific password file, which because it
isn't part of this repository is secure.

Refs: #9
Diffstat (limited to '')
-rw-r--r--configuration.nix6
-rw-r--r--users.nix64
2 files changed, 66 insertions, 4 deletions
diff --git a/configuration.nix b/configuration.nix
index 600201d..baf982a 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -3,7 +3,9 @@
     ./hardware-configuration.nix
     ./packages.nix
     ./networking.nix # network configuration that just works
+    ./users.nix
     ./services/minecraft.nix
+
   ];
 
   boot.cleanTmpDir = true;
@@ -17,10 +19,6 @@
     passwordAuthentication = false;
     extraConfig = "PrintMotd yes\n"; # this could be done with pam
   };
-  users.users.root.openssh.authorizedKeys.keys = [
-    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGBFuTNNn71Rhfnop2cdz3r/RhWWlCePnSBOhTBbu2ME soispha"
-    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG63gxw8JePmrC8Fni0pLV4TnPBhCPmSV9FYEdva+6s7 sils"
-  ];
 
   system.stateVersion = "22.11";
 }
diff --git a/users.nix b/users.nix
new file mode 100644
index 0000000..dcf06e8
--- /dev/null
+++ b/users.nix
@@ -0,0 +1,64 @@
+{
+  cfg,
+  lib,
+  pkgs,
+  list,
+  ...
+}: {
+  users.mutableUsers = false;
+  users.defaultUserShell = pkgs.zsh;
+
+  # Persisting user passwords
+  fileSystems."/srv".neededForBoot = true;
+
+  users.users = {
+    root = {
+      passwordFile = "/srv/users/root/password";
+      #uid = 0;
+      #hashedPassword = null; # to lock root
+    };
+
+    sils = {
+      name = "sils";
+      isNormalUser = true;
+      home = "/srv/users/sils/home";
+      passwordFile = "/srv/users/sils/password";
+      uid = 1000;
+      extraGroups = [
+        "wheel"
+      ];
+      openssh.authorizedKeys.keys = [
+        "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG63gxw8JePmrC8Fni0pLV4TnPBhCPmSV9FYEdva+6s7 sils"
+      ];
+    };
+
+    soispha = {
+      name = "soispha";
+      isNormalUser = true;
+      home = "/srv/users/soispha/home";
+      passwordFile = "/srv/users/soispha/password";
+      uid = 1001;
+      extraGroups = [
+        "wheel"
+      ];
+      openssh.authorizedKeys.keys = [
+        "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGBFuTNNn71Rhfnop2cdz3r/RhWWlCePnSBOhTBbu2ME soispha"
+      ];
+    };
+
+    nightingale = {
+      name = "nightingale";
+      isNormalUser = true;
+      home = "/srv/users/nightingale/home";
+      passwordFile = "/srv/users/nightingale/password";
+      uid = 1002;
+      extraGroups = [
+        "wheel"
+      ];
+      openssh.authorizedKeys.keys = [
+      ];
+    };
+  };
+}
+# vim: ts=2
+