All checks were successful
Check flake syntax / flake-check (push) Successful in 4m13s
98 lines
2.7 KiB
Nix
98 lines
2.7 KiB
Nix
{config, lib, pkgs, inputs, ...}:
|
|
let
|
|
cfg = config.malobeo.users;
|
|
sshKeys = import ( inputs.self + /machines/ssh_keys.nix);
|
|
inherit (config.networking) hostName;
|
|
in
|
|
{
|
|
options.malobeo.users = {
|
|
malobeo = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "enable malobeo user, defaults to on, ";
|
|
};
|
|
admin = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "enable admin user, defaults to on to prevent lockouts, passwordless sudo access";
|
|
};
|
|
backup = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = "enable backup user, ";
|
|
};
|
|
};
|
|
config = lib.mkMerge [
|
|
(lib.mkIf cfg.malobeo {
|
|
users.users.malobeo = {
|
|
isNormalUser = true;
|
|
description = "malobeo user, password and ssh access, no root";
|
|
extraGroups = [ "pipewire" "pulse-access" "scanner" "lp" ];
|
|
openssh.authorizedKeys.keys = sshKeys.admins;
|
|
hashedPassword = "$y$j9T$39oJwpbFDeETiyi9TjZ/2.$olUdnIIABp5TQSOzoysuEsomn2XPyzwVlM91ZsEkIz1";
|
|
};
|
|
environment.systemPackages = with pkgs; [];
|
|
})
|
|
(lib.mkIf cfg.admin {
|
|
users.users.admin = {
|
|
isNormalUser = true;
|
|
description = "admin user, passwordless sudo access, only ssh";
|
|
hashedPassword = null;
|
|
openssh.authorizedKeys.keys = sshKeys.admins;
|
|
extraGroups = [ "networkmanager" ];
|
|
};
|
|
environment.systemPackages = with pkgs; [];
|
|
nix.settings.trusted-users = [ "admin" ];
|
|
security.sudo.extraRules = [
|
|
{
|
|
users = [ "admin" ];
|
|
commands = [
|
|
{
|
|
command = "ALL";
|
|
options = [ "NOPASSWD" ];
|
|
}
|
|
];
|
|
}
|
|
];
|
|
})
|
|
(lib.mkIf cfg.backup {
|
|
users.users.backup = {
|
|
isNormalUser = true;
|
|
hashedPassword = null;
|
|
openssh.authorizedKeys.keys = sshKeys.backup;
|
|
description = "backup user for pull style backups, can only use zfs commands";
|
|
};
|
|
environment.systemPackages = with pkgs; [];
|
|
security.sudo.extraRules = [
|
|
{
|
|
users = [ "backup" ];
|
|
commands = [
|
|
{
|
|
command = "${pkgs.zfs}/bin/zfs";
|
|
options = [ "NOPASSWD" ];
|
|
}
|
|
];
|
|
}
|
|
];
|
|
})
|
|
{
|
|
users.mutableUsers = false;
|
|
services.openssh.hostKeys = [
|
|
{
|
|
path = "/etc/ssh/${hostName}";
|
|
type = "ssh-ed25519";
|
|
}
|
|
];
|
|
sops.age.sshKeyPaths = [ "/etc/ssh/${hostName}" ];
|
|
environment.systemPackages = with pkgs; [
|
|
nix-output-monitor
|
|
vim
|
|
htop
|
|
wget
|
|
git
|
|
pciutils
|
|
];
|
|
}
|
|
];
|
|
}
|