move user and additional module handling into flake.nix

This commit is contained in:
Vinzenz Schroeter 2025-09-15 19:01:30 +02:00
parent 87062e05c4
commit 8fc672bfcf
15 changed files with 275 additions and 280 deletions

103
flake.nix
View file

@ -63,23 +63,66 @@
}: }:
let let
devices = { devices = {
vinzenz-lpt2 = "x86_64-linux"; vinzenz-lpt2 = {
vinzenz-pc2 = "x86_64-linux"; system = "x86_64-linux";
ronja-pc = "x86_64-linux"; additional-modules = [
hetzner-vpn2 = "aarch64-linux"; self.nixosModules.user-vinzenz
forgejo-runner-1 = "aarch64-linux";
self.nixosModules.gnome
self.nixosModules.wine-gaming
self.nixosModules.steam
self.nixosModules.printing
self.nixosModules.podman
self.nixosModules.vinzenz-desktop-settings
self.nixosModules.intel-graphics
];
home-manager-users = {
inherit (self.homeConfigurations) vinzenz;
};
};
vinzenz-pc2 = {
system = "x86_64-linux";
additional-modules = [
self.nixosModules.user-vinzenz
self.nixosModules.user-ronja
self.nixosModules.gnome
self.nixosModules.wine-gaming
self.nixosModules.steam
self.nixosModules.printing
self.nixosModules.podman
self.nixosModules.vinzenz-desktop-settings
self.nixosModules.amd-graphics
];
home-manager-users = {
inherit (self.homeConfigurations) vinzenz ronja;
};
};
ronja-pc = {
system = "x86_64-linux";
additional-modules = [
self.nixosModules.user-ronja
self.nixosModules.gnome
self.nixosModules.steam
self.nixosModules.wine-gaming
self.nixosModules.vinzenz-desktop-settings
];
home-manager-users = {
inherit (self.homeConfigurations) ronja;
};
};
hetzner-vpn2 = {
system = "aarch64-linux";
};
forgejo-runner-1 = {
system = "aarch64-linux";
additional-modules = [ self.nixosModules.podman ];
};
}; };
homeDevices = [
"vinzenz-lpt2"
"vinzenz-pc2"
"ronja-pc"
];
lib = nixpkgs.lib; lib = nixpkgs.lib;
forDevice = f: lib.mapAttrs f devices; forDevice = f: lib.mapAttrs (device: value: f (value // { inherit device; })) devices;
supported-systems = [ supported-systems = lib.attrsets.mapAttrsToList (k: v: v.system) devices;
"x86_64-linux"
"aarch64-linux"
];
forAllSystems = forAllSystems =
f: f:
lib.genAttrs supported-systems ( lib.genAttrs supported-systems (
@ -101,20 +144,21 @@
}; };
nixosConfigurations = forDevice ( nixosConfigurations = forDevice (
device: system: {
device,
system,
home-manager-users ? { },
additional-modules ? [ ],
}:
let let
commonSpecialArgs = { specialArgs = {
inherit device; inherit device;
vinzenzHomeModules = self.homeModules; vinzenzHomeModules = self.homeModules;
vinzenzLib = self.lib; vinzenzLib = self.lib;
}; };
in in
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
inherit system; inherit system specialArgs;
specialArgs = commonSpecialArgs // {
vinzenzNixosModules = self.nixosModules;
vinzenzHomeConfigurations = self.homeConfigurations;
};
modules = [ modules = [
{ {
networking.hostName = device; networking.hostName = device;
@ -134,6 +178,7 @@
nix.settings.experimental-features = [ nix.settings.experimental-features = [
"nix-command" "nix-command"
"flakes" "flakes"
"repl-flake"
]; ];
documentation = { documentation = {
@ -144,6 +189,7 @@
./nixosConfigurations/${device} ./nixosConfigurations/${device}
self.nixosModules.default
self.nixosModules.lix-is-nix self.nixosModules.lix-is-nix
self.nixosModules.globalinstalls self.nixosModules.globalinstalls
self.nixosModules.autoupdate self.nixosModules.autoupdate
@ -155,10 +201,10 @@
zerforschen-plus.nixosModules.default zerforschen-plus.nixosModules.default
] ]
++ (nixpkgs.lib.optionals (builtins.elem device homeDevices) [ ++ (nixpkgs.lib.optionals (home-manager-users != { }) [
{ {
home-manager = { home-manager = {
extraSpecialArgs = commonSpecialArgs; extraSpecialArgs = specialArgs;
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
}; };
@ -174,6 +220,8 @@
self.homeModules.nano self.homeModules.nano
self.homeModules.gnome-extensions self.homeModules.gnome-extensions
]; ];
home-manager.users = home-manager-users;
} }
self.nixosModules.pkgs-unstable self.nixosModules.pkgs-unstable
@ -190,7 +238,8 @@
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
servicepoint-simulator.nixosModules.default servicepoint-simulator.nixosModules.default
servicepoint-cli.nixosModules.default servicepoint-cli.nixosModules.default
]); ])
++ additional-modules;
} }
); );
@ -214,6 +263,10 @@
pkgs-vscode-extensions = { pkgs-vscode-extensions = {
nixpkgs.overlays = [ nix-vscode-extensions.overlays.default ]; nixpkgs.overlays = [ nix-vscode-extensions.overlays.default ];
}; };
# required modules to use other modules, should not do anything on their own
default = {
imports = [ self.nixosModules.allowed-unfree-list ];
};
}; };
homeModules = self.lib.importDir ./homeModules; homeModules = self.lib.importDir ./homeModules;

View file

@ -1,60 +0,0 @@
{ config, pkgs, ... }:
{
config = {
home.packages = with pkgs; [
## Apps
telegram-desktop
kdiff3
];
programs = {
home-manager.enable = true;
zsh = {
history = {
size = 10000;
path = "${config.xdg.dataHome}/zsh/history";
expireDuplicatesFirst = true;
};
oh-my-zsh = {
enable = true;
theme = "agnoster";
plugins = [
"git"
"sudo"
"systemadmin"
];
};
shellAliases = {
myos-update = ''echo "Enter sudo password" && sudo nixos-rebuild boot --flake git+https://git.berlin.ccc.de/vinzenz/nixos-configuration.git --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
myos-apply = ''echo "Enter sudo password" && sudo nixos-rebuild switch --flake .# --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
};
};
git = {
userName = "Ronja Spiegelberg";
userEmail = "ronja.spiegelberg@gmail.com";
extraConfig = {
pull.ff = "only";
merge.tool = "kdiff3";
};
};
chromium = {
enable = true;
extensions = [
{
# ublock origin
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
}
{
id = "dcpihecpambacapedldabdbpakmachpb";
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/updates.xml";
}
];
};
};
};
}

View file

@ -1,25 +1,61 @@
{ pkgs, ... }: { config, pkgs, ... }:
{ {
imports = [ ./vscode.nix ];
config = { config = {
# Define user account home.packages = with pkgs; [
users.users.ronja = { ## Apps
isNormalUser = true; telegram-desktop
name = "ronja"; kdiff3
description = "Ronja";
home = "/home/ronja";
extraGroups = [
"networkmanager"
"wheel"
"games"
"podman"
"openvscode-server"
];
shell = pkgs.zsh;
};
home-manager.users.ronja.imports = [
./configuration.nix
./vscode.nix
]; ];
programs = {
home-manager.enable = true;
zsh = {
history = {
size = 10000;
path = "${config.xdg.dataHome}/zsh/history";
expireDuplicatesFirst = true;
};
oh-my-zsh = {
enable = true;
theme = "agnoster";
plugins = [
"git"
"sudo"
"systemadmin"
];
};
shellAliases = {
myos-update = ''echo "Enter sudo password" && sudo nixos-rebuild boot --flake git+https://git.berlin.ccc.de/vinzenz/nixos-configuration.git --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
myos-apply = ''echo "Enter sudo password" && sudo nixos-rebuild switch --flake .# --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
};
};
git = {
userName = "Ronja Spiegelberg";
userEmail = "ronja.spiegelberg@gmail.com";
extraConfig = {
pull.ff = "only";
merge.tool = "kdiff3";
};
};
chromium = {
enable = true;
extensions = [
{
# ublock origin
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
}
{
id = "dcpihecpambacapedldabdbpakmachpb";
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/updates.xml";
}
];
};
};
}; };
} }

View file

@ -1,51 +1,15 @@
{ pkgs, ... }:
{ {
config = { imports = [
users.users.vinzenz = { ./configuration.nix
isNormalUser = true; ./editorconfig.nix
name = "vinzenz"; ./fuzzel.nix
description = "Vinzenz"; ./git.nix
home = "/home/vinzenz"; ./gnome.nix
extraGroups = [ #./niri.nix
"networkmanager" ./ssh.nix
"wheel" ./swaylock.nix
"games" ./vscode.nix
"dialout" ./waybar.nix
"podman" ./zsh.nix
"nginx" ];
"adbusers"
"kvm"
"input"
"video"
];
shell = pkgs.zsh;
autoSubUidGidRange = true;
};
nix.settings.trusted-users = [ "vinzenz" ];
home-manager.users.vinzenz.imports = [
./configuration.nix
./editorconfig.nix
./fuzzel.nix
./git.nix
./gnome.nix
#./niri.nix
./ssh.nix
./swaylock.nix
./vscode.nix
./waybar.nix
./zsh.nix
];
allowedUnfreePackages = [
"rider"
"pycharm-professional"
"jetbrains-toolbox"
"anydesk"
"vscode-extension-ms-dotnettools-csharp"
];
};
} }

View file

@ -1,10 +1,7 @@
{ vinzenzNixosModules, ... }:
{ {
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware.nix ./hardware.nix
vinzenzNixosModules.podman
./forgejo-runner.nix ./forgejo-runner.nix
]; ];
} }

View file

@ -1,14 +1,6 @@
{ vinzenzNixosModules, vinzenzHomeConfigurations, ... }:
{ {
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware.nix ./hardware.nix
vinzenzNixosModules.gnome
vinzenzNixosModules.steam
vinzenzNixosModules.wine-gaming
vinzenzNixosModules.vinzenz-desktop-settings
vinzenzHomeConfigurations.ronja
]; ];
} }

View file

@ -1,17 +1,6 @@
{ vinzenzNixosModules, vinzenzHomeConfigurations, ... }:
{ {
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware.nix ./hardware.nix
vinzenzNixosModules.gnome
vinzenzNixosModules.wine-gaming
vinzenzNixosModules.steam
vinzenzNixosModules.printing
vinzenzNixosModules.podman
vinzenzNixosModules.vinzenz-desktop-settings
vinzenzHomeConfigurations.vinzenz
vinzenzHomeConfigurations.ronja
]; ];
} }

View file

@ -1,64 +1,56 @@
{ pkgs, lib, ... }:
{ {
vinzenzNixosModules, # intel cpu
pkgs, boot.kernelModules = [
lib, "kvm-intel"
... "xe"
}: ];
{
imports = [ vinzenzNixosModules.intel-graphics ];
config = {
# intel cpu
boot.kernelModules = [
"kvm-intel"
"xe"
];
networking = { networking = {
networkmanager.enable = true; networkmanager.enable = true;
useDHCP = lib.mkDefault true; useDHCP = lib.mkDefault true;
}; };
boot = { boot = {
kernelPackages = pkgs.linuxPackages_zen; kernelPackages = pkgs.linuxPackages_zen;
supportedFilesystems = [ "btrfs" ];
initrd = {
supportedFilesystems = [ "btrfs" ]; supportedFilesystems = [ "btrfs" ];
initrd = { availableKernelModules = [
supportedFilesystems = [ "btrfs" ]; "xhci_pci"
availableKernelModules = [ "thunderbolt"
"xhci_pci" "nvme"
"thunderbolt" ];
"nvme" luks.devices = {
]; "luks-2c654ff2-3c42-48d3-a1e3-9545679afaa3" = {
luks.devices = { device = "/dev/disk/by-uuid/2c654ff2-3c42-48d3-a1e3-9545679afaa3";
"luks-2c654ff2-3c42-48d3-a1e3-9545679afaa3" = {
device = "/dev/disk/by-uuid/2c654ff2-3c42-48d3-a1e3-9545679afaa3";
};
}; };
}; };
}; };
};
fileSystems = { fileSystems = {
"/" = { "/" = {
device = "/dev/disk/by-uuid/e4dad0c8-26a1-45e9-bbd9-48565eb6574e"; device = "/dev/disk/by-uuid/e4dad0c8-26a1-45e9-bbd9-48565eb6574e";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@" ]; options = [ "subvol=@" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/E2B7-2BC1";
fsType = "vfat";
};
}; };
swapDevices = [ "/boot" = {
{ device = "/dev/disk/by-uuid/E2B7-2BC1";
device = "/var/lib/swapfile"; fsType = "vfat";
size = 32 * 1024; };
}
];
services.thermald.enable = true;
services.hardware.bolt.enable = true; # thunderbolt security
hardware.bluetooth.enable = true;
}; };
swapDevices = [
{
device = "/var/lib/swapfile";
size = 32 * 1024;
}
];
services.thermald.enable = true;
services.hardware.bolt.enable = true; # thunderbolt security
hardware.bluetooth.enable = true;
} }

View file

@ -1,19 +1,8 @@
{ vinzenzNixosModules, vinzenzHomeConfigurations, ... }:
{ {
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware.nix ./hardware.nix
./vscode-server.nix ./vscode-server.nix
./hass.nix ./hass.nix
vinzenzNixosModules.gnome
vinzenzNixosModules.wine-gaming
vinzenzNixosModules.steam
vinzenzNixosModules.printing
vinzenzNixosModules.podman
vinzenzNixosModules.vinzenz-desktop-settings
vinzenzHomeConfigurations.vinzenz
vinzenzHomeConfigurations.ronja
]; ];
} }

View file

@ -1,38 +1,30 @@
{ pkgs, lib, ... }:
{ {
vinzenzNixosModules, # amd cpu
pkgs, boot.kernelModules = [ "kvm-amd" ];
lib,
...
}:
{
imports = [ vinzenzNixosModules.amd-graphics ];
config = {
# amd cpu
boot.kernelModules = [ "kvm-amd" ];
boot = { boot = {
initrd.availableKernelModules = [ initrd.availableKernelModules = [
"nvme" "nvme"
"xhci_pci" "xhci_pci"
"ahci" "ahci"
"usbhid" "usbhid"
"sd_mod" "sd_mod"
]; # "usb_storage" ]; # "usb_storage"
kernelPackages = pkgs.linuxPackages_zen; kernelPackages = pkgs.linuxPackages_zen;
supportedFilesystems = [ "btrfs" ]; supportedFilesystems = [ "btrfs" ];
initrd.supportedFilesystems = [ "btrfs" ]; initrd.supportedFilesystems = [ "btrfs" ];
loader.efi.efiSysMountPoint = "/boot"; loader.efi.efiSysMountPoint = "/boot";
};
fileSystems = import ./fstab.nix;
swapDevices = [ ];
networking = {
networkmanager.enable = true;
useDHCP = lib.mkDefault true;
interfaces.eno1.wakeOnLan.enable = true;
};
hardware.bluetooth.enable = true;
}; };
fileSystems = import ./fstab.nix;
swapDevices = [ ];
networking = {
networkmanager.enable = true;
useDHCP = lib.mkDefault true;
interfaces.eno1.wakeOnLan.enable = true;
};
hardware.bluetooth.enable = true;
} }

View file

@ -9,7 +9,9 @@
config = { config = {
nixpkgs.config = { nixpkgs.config = {
# https://github.com/NixOS/nixpkgs/issues/197325#issuecomment-1579420085 # https://github.com/NixOS/nixpkgs/issues/197325#issuecomment-1579420085
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) config.allowedUnfreePackages; allowUnfreePredicate = lib.mkDefault (
pkg: builtins.elem (lib.getName pkg) config.allowedUnfreePackages
);
}; };
}; };
} }

View file

@ -1,7 +1,5 @@
{ pkgs, vinzenzNixosModules, ... }: { pkgs, ... }:
{ {
imports = [ vinzenzNixosModules.allowed-unfree-list ];
config = { config = {
hardware.graphics = { hardware.graphics = {
extraPackages = with pkgs; [ extraPackages = with pkgs; [

View file

@ -1,7 +1,4 @@
{ vinzenzNixosModules, ... }:
{ {
imports = [ vinzenzNixosModules.allowed-unfree-list ];
hardware.steam-hardware.enable = true; hardware.steam-hardware.enable = true;
programs = { programs = {

View file

@ -0,0 +1,19 @@
{ pkgs, ... }:
{
users.users.ronja = {
isNormalUser = true;
name = "ronja";
description = "Ronja";
home = "/home/ronja";
extraGroups = [
"networkmanager"
"wheel"
"games"
"podman"
"openvscode-server"
];
shell = pkgs.zsh;
};
nix.settings.trusted-users = [ "ronja" ];
}

View file

@ -0,0 +1,35 @@
{ pkgs, ... }:
{
users.users.vinzenz = {
isNormalUser = true;
name = "vinzenz";
description = "Vinzenz";
home = "/home/vinzenz";
extraGroups = [
"networkmanager"
"wheel"
"games"
"dialout"
"podman"
"nginx"
"adbusers"
"kvm"
"input"
"video"
];
shell = pkgs.zsh;
autoSubUidGidRange = true;
};
nix.settings.trusted-users = [ "vinzenz" ];
allowedUnfreePackages = [
"rider"
"pycharm-professional"
"jetbrains-toolbox"
"anydesk"
"vscode-extension-ms-dotnettools-csharp"
];
}