61 lines
1.8 KiB
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);
|
|
};
|
|
};
|
|
}
|