infra/modules/nixos/community-builder/users.nix
2023-09-09 19:25:01 +00:00

80 lines
1.6 KiB
Nix

{ pkgs, ... }:
let
inherit (pkgs) lib;
users = {
# 1. Generate an SSH key for your root account and add the public
# key to a file matching your name in ./keys/
#
# 2. Copy / paste this in order, alphabetically:
#
# youruser.keys = ./keys/youruser;
#
"0x4A6F".keys = ./keys/0x4A6F;
a-kenji.keys = ./keys/a-kenji;
bobby285271.keys = ./keys/bobby285271;
ckie.keys = ./keys/ckie;
fgaz.keys = ./keys/fgaz;
flokli.keys = ./keys/flokli;
hexchen.keys = ./keys/hexchen;
janik.keys = ./keys/janik;
jtojnar.keys = ./keys/jtojnar;
lewo.keys = ./keys/lewo;
lily.keys = ./keys/lily;
raitobezarius.keys = ./keys/raitobezarius;
networkexception.keys = ./keys/networkexception;
schmittlauch.keys = ./keys/schmittlauch;
matthiasbeyer = {
trusted = false;
keys = ./keys/matthiasbeyer;
};
stephank.keys = ./keys/stephank;
winter.keys = ./keys/winter;
};
ifAttr = key: default: result: opts:
if (opts ? "${key}") && opts."${key}"
then result
else default;
maybeTrusted = ifAttr "trusted" [ ] [ "trusted" ];
maybeWheel = ifAttr "sudo" [ ] [ "wheel" ];
userGroups = opts:
(maybeTrusted opts) ++
(maybeWheel opts);
descToUser = name: opts:
{
isNormalUser = true;
extraGroups = userGroups opts;
createHome = true;
home = "/home/${name}";
hashedPassword = opts.password or null;
openssh.authorizedKeys.keyFiles = [
opts.keys
];
};
in
{
users = {
mutableUsers = false;
users = lib.mapAttrs descToUser users;
};
}