feat: add users/{user}/nixos.nix support

This commit is contained in:
2026-02-21 03:17:29 +01:00
parent cc96675ea3
commit 127e451678
3 changed files with 42 additions and 1 deletions

View File

@@ -15,8 +15,14 @@ let
hostHWConfig = ../hosts/${name}/hardware-configuration.nix; hostHWConfig = ../hosts/${name}/hardware-configuration.nix;
hasHWConfig = builtins.pathExists hostHWConfig; hasHWConfig = builtins.pathExists hostHWConfig;
# Load NixOS-level user config (account, groups, SSH keys)
userNixosConfigs = map (user: ../users/${user}/nixos.nix) (
builtins.filter (user: builtins.pathExists ../users/${user}/nixos.nix) users
);
# Load home-manager user config
userHMConfigs = nixpkgs.lib.genAttrs users ( userHMConfigs = nixpkgs.lib.genAttrs users (
user: import ../users/${user}/home-manager.nix { inherit inputs; } user: import ../users/${user}/home-manager.nix
); );
in in
@@ -31,11 +37,13 @@ nixpkgs.lib.nixosSystem {
hostConfig hostConfig
] ]
++ nixpkgs.lib.optional hasHWConfig hostHWConfig ++ nixpkgs.lib.optional hasHWConfig hostHWConfig
++ userNixosConfigs
++ [ ++ [
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.users = userHMConfigs; home-manager.users = userHMConfigs;
home-manager.extraSpecialArgs = { inherit inputs; }; home-manager.extraSpecialArgs = { inherit inputs; };
} }

6
users/matej/keys.nix Normal file
View File

@@ -0,0 +1,6 @@
{
sshAuthorizedKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICQGLdINKzs+sEy62Pefng0bcedgU396+OryFgeH99/c janezicmatej"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDk00+Km03epQXQs+xEwwH3zcurACzkEH+kDOPBw6RQe openpgp:0xB095D449"
];
}

27
users/matej/nixos.nix Normal file
View File

@@ -0,0 +1,27 @@
{
lib,
config,
pkgs,
...
}:
let
keys = import ./keys.nix;
in
{
users.users.matej = {
uid = 1000;
isNormalUser = true;
home = "/home/matej";
shell = pkgs.zsh;
extraGroups = [
"wheel"
"docker"
];
openssh.authorizedKeys.keys = keys.sshAuthorizedKeys;
};
users.groups.matej = {
gid = 1000;
members = [ "matej" ];
};
}