| { pkgs, ... }: |
| let |
| createUser = { username, realname, founder = false, sudo = false, ... }: { |
| description = realname; |
| extraGroups = ( |
| (if founder then [ "founder" ] else [ ]) ++ |
| (if founder || sudo then [ "wheel" ] else [ ]) |
| ); |
| isNormalUser = true; |
| openssh.authorizedKeys.keyFiles = [ "./sshKeys/${username}" ]; |
| }; |
| |
| users = { |
| "coded" = { realname = "Sam"; founder = true; }; |
| "minion" = { realname = "Skyler"; founder = true; }; |
| "pineapplefan" = { realname = "Ash"; founder = true; }; |
| "eek" = { realname = "Nexus"; sudo = true; }; |
| }; |
| in |
| { |
| users = { |
| mutableUsers = false; |
| motd = '' |
| Welcome to Clicks! Please make sure to follow all guidelines for using the server, which you can find by typing |
| `guidelines` in your terminal. In particular, please remember to use this server as minimally as possible (e.g. |
| by keeping as much of your work as is possible stateless and by using your personal |
| "${builtins.readFile ./texts/MOTD}" |
| ''; |
| defaultUserShell = pkgs.zsh; |
| users = builtins.mapAttrs (name: value: createUser { username = name; } // value) users; |
| groups = { }; |
| }; |
| } |