1
Fork 0
satellite/hosts/nixos/common/users/adrielus.nix

61 lines
1.8 KiB
Nix

{ pkgs, outputs, config, ... }:
let
# Record containing all the hosts
hosts = outputs.nixosConfigurations;
# Function from hostname to relative path to public ssh key
idKey = host: ../../${host}/id_ed25519.pub;
in
{
# Password file stored through agenix
age.secrets.adrielusPassword.file = ./adrielus_password.age;
# Temporary stuff until I package my keyboard script
users.groups.uinput = { };
services.udev.extraRules =
''
# Access to /dev/uinput
KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"
'';
users = {
# Configure users through nix only
mutableUsers = false;
# Create an user named adrielus
users.adrielus = {
# Make fish the default shell
shell = pkgs.fish;
# File containing my password, managed by agenix
passwordFile = config.age.secrets.adrielusPassword.path;
# Add user to the following groups
extraGroups = [
"wheel" # access to sudo
"network" # for wireless stuff
"networkmanager" # I assume this let's me access network stuff?
"lp" # Allows me to use printers
"docker" # Allows me to use docker (?)
"audio" # Allows me to use audio devices
"video" # Allows me to use a webcam
"uinput" # I think this let's me write to virtual devices
"input" # Does this let me use evdev (?)
# TODO: find out why I added these here a long time ago
"sound"
"tty"
];
# Adds me to some default groups, and creates the home dir
isNormalUser = true;
openssh.authorizedKeys.keyFiles =
builtins.attrValues # attrsetof path -> path[]
(builtins.mapAttrs # ... -> attrsetof host -> attrsetof path
(name: _: idKey name) # string -> host -> path
hosts);
};
};
}