refactor: import nixosModules unconditionally, add enable options
This commit is contained in:
parent
c2d4ce78de
commit
850d673035
38 changed files with 959 additions and 761 deletions
102
flake.nix
102
flake.nix
|
|
@ -9,7 +9,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
#keep-sorted start block=yes
|
#keep-sorted start block=yes
|
||||||
|
|
||||||
flake-parts = {
|
flake-parts = {
|
||||||
url = "github:hercules-ci/flake-parts";
|
url = "github:hercules-ci/flake-parts";
|
||||||
#inputs.nixpkgs.follows = "nixpkgs";
|
#inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
@ -103,8 +102,8 @@
|
||||||
niri,
|
niri,
|
||||||
nix-vscode-extensions,
|
nix-vscode-extensions,
|
||||||
nixos-generators,
|
nixos-generators,
|
||||||
nixos-raspberrypi,
|
|
||||||
nixpkgs-unstable,
|
nixpkgs-unstable,
|
||||||
|
nova-shell,
|
||||||
servicepoint-cli,
|
servicepoint-cli,
|
||||||
servicepoint-simulator,
|
servicepoint-simulator,
|
||||||
servicepoint-tanks,
|
servicepoint-tanks,
|
||||||
|
|
@ -157,26 +156,26 @@
|
||||||
|
|
||||||
nixosModules = (importModuleDir ./nixosModules) // {
|
nixosModules = (importModuleDir ./nixosModules) // {
|
||||||
niri =
|
niri =
|
||||||
{ pkgs, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
imports = [ niri.nixosModules.niri ];
|
imports = [ niri.nixosModules.niri ];
|
||||||
nixpkgs.overlays = [ niri.overlays.niri ];
|
|
||||||
|
|
||||||
|
options.my.niri.enable = lib.mkEnableOption "niri wayland compositor";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.niri.enable {
|
||||||
|
nixpkgs.overlays = [ niri.overlays.niri ];
|
||||||
programs.niri = {
|
programs.niri = {
|
||||||
enable = true;
|
enable = true;
|
||||||
#package = pkgs.niri-stable;
|
#package = pkgs.niri-stable;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
pkgs-unstable = {
|
pkgs-unstable = {
|
||||||
nixpkgs.overlays = [ self.overlays.unstable-packages ];
|
nixpkgs.overlays = [ self.overlays.unstable-packages ];
|
||||||
};
|
};
|
||||||
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 = importModuleDir ./homeModules;
|
homeModules = importModuleDir ./homeModules;
|
||||||
|
|
@ -201,18 +200,87 @@
|
||||||
nixosSystem {
|
nixosSystem {
|
||||||
inherit specialArgs;
|
inherit specialArgs;
|
||||||
modules = [
|
modules = [
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./nixosConfigurations/${device}
|
./nixosConfigurations/${device}
|
||||||
self.nixosModules.global-settings
|
self.nixosModules.default
|
||||||
]
|
|
||||||
++ (lib.optionals (home-manager-users != { }) [
|
|
||||||
self.nixosModules.global-settings-desktop
|
|
||||||
]);
|
|
||||||
|
|
||||||
nixpkgs = {
|
# keep-sorted start
|
||||||
hostPlatform = lib.mkDefault system;
|
home-manager.nixosModules.home-manager
|
||||||
|
lanzaboote.nixosModules.lanzaboote
|
||||||
|
nova-shell.nixosModules.default
|
||||||
|
self.nixosModules.niri
|
||||||
|
self.nixosModules.pkgs-vscode-extensions
|
||||||
|
servicepoint-cli.nixosModules.default
|
||||||
|
servicepoint-simulator.nixosModules.default
|
||||||
|
servicepoint-tanks.nixosModules.default
|
||||||
|
stylix.nixosModules.stylix
|
||||||
|
zerforschen-plus.nixosModules.default
|
||||||
|
# keep-sorted end
|
||||||
|
|
||||||
|
# Base config (replaces global-settings.nix)
|
||||||
|
{
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault system;
|
||||||
|
networking.hostName = device;
|
||||||
|
system = {
|
||||||
|
stateVersion = "22.11";
|
||||||
|
autoUpgrade.flake = "git+https://git.berlin.ccc.de/vinzenz/nixos-configuration.git";
|
||||||
};
|
};
|
||||||
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
documentation = {
|
||||||
|
info.enable = false;
|
||||||
|
doc.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
my.autoupdate.enable = true;
|
||||||
|
my.distributedBuilds.enable = true;
|
||||||
|
my.extraCaches.enable = true;
|
||||||
|
my.globalinstalls.enable = true;
|
||||||
|
my.lixIsNix.enable = true;
|
||||||
|
my.openssh.enable = true;
|
||||||
|
my.prometheusNode.enable = true;
|
||||||
|
my.systemdBoot.enable = true;
|
||||||
|
my.tailscale.enable = true;
|
||||||
|
}
|
||||||
|
]
|
||||||
|
++ lib.optionals (home-manager-users != { }) [
|
||||||
|
# Desktop config (replaces global-settings-desktop.nix)
|
||||||
|
{
|
||||||
|
home-manager = {
|
||||||
|
extraSpecialArgs = specialArgs;
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
users = home-manager-users;
|
||||||
|
sharedModules = [
|
||||||
|
{ home.stateVersion = "22.11"; }
|
||||||
|
# keep-sorted start
|
||||||
|
self.homeModules.git
|
||||||
|
self.homeModules.gnome-extensions
|
||||||
|
self.homeModules.nano
|
||||||
|
self.homeModules.templates
|
||||||
|
self.homeModules.zsh-basics
|
||||||
|
# keep-sorted end
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
# on desktops, keep the device useable interactively during expensive builds
|
||||||
|
nix = {
|
||||||
|
daemonCPUSchedPolicy = "idle";
|
||||||
|
daemonIOSchedClass = "idle";
|
||||||
|
};
|
||||||
|
|
||||||
|
my.enDe.enable = true;
|
||||||
|
my.firmwareUpdates.enable = true;
|
||||||
|
my.gnome.enable = true;
|
||||||
|
my.kdeconnect.enable = true;
|
||||||
|
my.modernDesktop.enable = true;
|
||||||
|
my.niri.enable = true;
|
||||||
|
my.nixLd.enable = true;
|
||||||
|
my.quietBoot.enable = true;
|
||||||
|
my.stylix.enable = true;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
{ self, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports = [ self.nixosModules.pxvirt-guest ];
|
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
my.pxvirtGuest.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
{ self, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
./forgejo-runner.nix
|
./forgejo-runner.nix
|
||||||
self.nixosModules.podman
|
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
my.podman.enable = true;
|
||||||
|
|
||||||
# uncomment for build check on non arm system (requires --impure)
|
# uncomment for build check on non arm system (requires --impure)
|
||||||
# nixpkgs.buildPlatform = builtins.currentSystem;
|
# nixpkgs.buildPlatform = builtins.currentSystem;
|
||||||
services.tailscale.useRoutingFeatures = "both";
|
services.tailscale.useRoutingFeatures = "both";
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,17 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
self.nixosModules.user-muede
|
|
||||||
self.nixosModules.gnome
|
|
||||||
self.nixosModules.wine-gaming
|
|
||||||
self.nixosModules.steam
|
|
||||||
self.nixosModules.podman
|
|
||||||
self.nixosModules.muede-desktop-settings
|
|
||||||
self.nixosModules.intel-graphics
|
|
||||||
self.nixosModules.secure-boot
|
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
my.users.muede.enable = true;
|
||||||
|
my.wineGaming.enable = true;
|
||||||
|
my.steam.enable = true;
|
||||||
|
my.podman.enable = true;
|
||||||
|
my.muedeDesktopSettings.enable = true;
|
||||||
|
my.intelGraphics.enable = true;
|
||||||
|
my.secureBoot.enable = true;
|
||||||
|
|
||||||
nix.settings.extra-platforms = [
|
nix.settings.extra-platforms = [
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
"i686-linux"
|
"i686-linux"
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,20 @@
|
||||||
{ pkgs, self, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
# ./vscode-server.nix
|
# ./vscode-server.nix
|
||||||
# ./hass.nix
|
# ./hass.nix
|
||||||
|
|
||||||
self.nixosModules.user-muede
|
|
||||||
self.nixosModules.gnome
|
|
||||||
self.nixosModules.wine-gaming
|
|
||||||
self.nixosModules.steam
|
|
||||||
self.nixosModules.podman
|
|
||||||
self.nixosModules.muede-desktop-settings
|
|
||||||
self.nixosModules.amd-graphics
|
|
||||||
self.nixosModules.secure-boot
|
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
my.users.muede.enable = true;
|
||||||
|
my.wineGaming.enable = true;
|
||||||
|
my.steam.enable = true;
|
||||||
|
my.podman.enable = true;
|
||||||
|
my.muedeDesktopSettings.enable = true;
|
||||||
|
my.amdGraphics.enable = true;
|
||||||
|
my.secureBoot.enable = true;
|
||||||
|
|
||||||
nix.settings.extra-platforms = [
|
nix.settings.extra-platforms = [
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
"i686-linux"
|
"i686-linux"
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,15 @@
|
||||||
{
|
{ pkgs, ... }:
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
self,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
self.nixosModules.user-ronja
|
|
||||||
self.nixosModules.gnome
|
|
||||||
self.nixosModules.steam
|
|
||||||
self.nixosModules.wine-gaming
|
|
||||||
self.nixosModules.muede-desktop-settings
|
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
my.users.ronja.enable = true;
|
||||||
|
my.steam.enable = true;
|
||||||
|
my.wineGaming.enable = true;
|
||||||
|
my.muedeDesktopSettings.enable = true;
|
||||||
|
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
services.xserver.xkb = {
|
services.xserver.xkb = {
|
||||||
layout = "de";
|
layout = "de";
|
||||||
|
|
@ -24,8 +19,6 @@
|
||||||
# Configure console keymap
|
# Configure console keymap
|
||||||
console.keyMap = "de";
|
console.keyMap = "de";
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
# wget
|
# wget
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.amdGraphics.enable = lib.mkEnableOption "AMD graphics drivers";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.amdGraphics.enable {
|
||||||
boot.kernelModules = [ "amdgpu" ];
|
boot.kernelModules = [ "amdgpu" ];
|
||||||
services.xserver.videoDrivers = [ "amdgpu" ];
|
services.xserver.videoDrivers = [ "amdgpu" ];
|
||||||
|
|
||||||
|
|
@ -12,4 +20,5 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [ nvtopPackages.amd ];
|
environment.systemPackages = with pkgs; [ nvtopPackages.amd ];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.autoupdate.enable = lib.mkEnableOption "automatic Nix GC and system upgrades";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.autoupdate.enable {
|
||||||
nix = {
|
nix = {
|
||||||
optimise.automatic = true;
|
optimise.automatic = true;
|
||||||
gc = {
|
gc = {
|
||||||
|
|
@ -13,4 +17,5 @@
|
||||||
dates = "daily";
|
dates = "daily";
|
||||||
# do not forget to set `flake` when using this module!
|
# do not forget to set `flake` when using this module!
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
37
nixosModules/default.nix
Normal file
37
nixosModules/default.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# keep-sorted start
|
||||||
|
./allowed-unfree-list.nix
|
||||||
|
./amd-graphics.nix
|
||||||
|
./autoupdate.nix
|
||||||
|
./distributed-builds.nix
|
||||||
|
./en-de.nix
|
||||||
|
./extra-caches.nix
|
||||||
|
./firmware-updates.nix
|
||||||
|
./globalinstalls.nix
|
||||||
|
./gnome.nix
|
||||||
|
./intel-graphics.nix
|
||||||
|
./kdeconnect.nix
|
||||||
|
./latex.nix
|
||||||
|
./lix-is-nix.nix
|
||||||
|
./modern-desktop.nix
|
||||||
|
./muede-desktop-settings.nix
|
||||||
|
./nix-ld.nix
|
||||||
|
./openssh.nix
|
||||||
|
./podman.nix
|
||||||
|
./printing.nix
|
||||||
|
./prometheus-node.nix
|
||||||
|
./pxvirt-guest.nix
|
||||||
|
./quiet-boot.nix
|
||||||
|
./secure-boot.nix
|
||||||
|
./steam.nix
|
||||||
|
./stylix.nix
|
||||||
|
./systemd-boot.nix
|
||||||
|
./tailscale.nix
|
||||||
|
./user-muede.nix
|
||||||
|
./user-ronja.nix
|
||||||
|
./wine-gaming.nix
|
||||||
|
# keep-sorted end
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -32,43 +32,57 @@ let
|
||||||
# distributedBuilds.hostPublicKey = "ssh-ed25519 AAAA..."; # from: ssh-keyscan -t ed25519 <hostname>
|
# distributedBuilds.hostPublicKey = "ssh-ed25519 AAAA..."; # from: ssh-keyscan -t ed25519 <hostname>
|
||||||
# All machines automatically discover and use it after the next rebuild.
|
# All machines automatically discover and use it after the next rebuild.
|
||||||
|
|
||||||
buildServerDevices = lib.filterAttrs (_: v: (v.distributedBuilds or { }).isBuilder or false) devices;
|
buildServerDevices = lib.filterAttrs (
|
||||||
|
_: v: (v.distributedBuilds or { }).isBuilder or false
|
||||||
|
) devices;
|
||||||
|
|
||||||
knownHosts = lib.pipe buildServerDevices [
|
knownHosts = lib.pipe buildServerDevices [
|
||||||
(lib.filterAttrs (_: v: v.distributedBuilds ? hostPublicKey))
|
(lib.filterAttrs (_: v: v.distributedBuilds ? hostPublicKey))
|
||||||
(lib.mapAttrs (hostName: v: {
|
(lib.mapAttrs (
|
||||||
|
_: v: {
|
||||||
publicKey = v.distributedBuilds.hostPublicKey;
|
publicKey = v.distributedBuilds.hostPublicKey;
|
||||||
}))
|
}
|
||||||
|
))
|
||||||
];
|
];
|
||||||
|
|
||||||
buildMachineList = lib.mapAttrsToList (hostName: v: {
|
buildMachineList = lib.mapAttrsToList (
|
||||||
|
hostName: v:
|
||||||
|
{
|
||||||
inherit hostName;
|
inherit hostName;
|
||||||
systems = [ v.system ];
|
systems = [ v.system ];
|
||||||
sshUser = buildUser;
|
sshUser = buildUser;
|
||||||
sshKey = sshKeyPath;
|
sshKey = sshKeyPath;
|
||||||
protocol = "ssh-ng";
|
protocol = "ssh-ng";
|
||||||
} // lib.optionalAttrs (v.distributedBuilds ? speedFactor) {
|
}
|
||||||
|
// lib.optionalAttrs (v.distributedBuilds ? speedFactor) {
|
||||||
speedFactor = v.distributedBuilds.speedFactor;
|
speedFactor = v.distributedBuilds.speedFactor;
|
||||||
} // {
|
}
|
||||||
|
// {
|
||||||
supportedFeatures = [
|
supportedFeatures = [
|
||||||
"nixos-test"
|
"nixos-test"
|
||||||
"big-parallel"
|
"big-parallel"
|
||||||
"kvm"
|
"kvm"
|
||||||
"benchmark"
|
"benchmark"
|
||||||
];
|
];
|
||||||
}) buildServerDevices;
|
}
|
||||||
|
) buildServerDevices;
|
||||||
|
|
||||||
remoteMachines = builtins.filter (m: m.hostName != config.networking.hostName) buildMachineList;
|
remoteMachines = builtins.filter (m: m.hostName != config.networking.hostName) buildMachineList;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Dedicated user for receiving distributed build connections
|
options.my.distributedBuilds.enable = lib.mkEnableOption "distributed Nix builds";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.distributedBuilds.enable {
|
||||||
programs.ssh.knownHosts = knownHosts;
|
programs.ssh.knownHosts = knownHosts;
|
||||||
|
|
||||||
|
# Dedicated user for receiving distributed build connections
|
||||||
users.users.${buildUser} = {
|
users.users.${buildUser} = {
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
group = buildUser;
|
group = buildUser;
|
||||||
useDefaultShell = true;
|
useDefaultShell = true;
|
||||||
openssh.authorizedKeys.keys = map (k: ''command="nix daemon --stdio",restrict ${k}'') authorizedPublicKeys;
|
openssh.authorizedKeys.keys = map (
|
||||||
|
k: ''command="nix daemon --stdio",restrict ${k}''
|
||||||
|
) authorizedPublicKeys;
|
||||||
};
|
};
|
||||||
users.groups.${buildUser} = { };
|
users.groups.${buildUser} = { };
|
||||||
|
|
||||||
|
|
@ -90,4 +104,5 @@ in
|
||||||
MemoryMax = "90%";
|
MemoryMax = "90%";
|
||||||
OOMScoreAdjust = 500;
|
OOMScoreAdjust = 500;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.enDe.enable = lib.mkEnableOption "English/German locale and language packs";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.enDe.enable {
|
||||||
i18n = {
|
i18n = {
|
||||||
defaultLocale = "en_US.UTF-8";
|
defaultLocale = "en_US.UTF-8";
|
||||||
extraLocales = [
|
extraLocales = [
|
||||||
|
|
@ -28,4 +36,5 @@
|
||||||
pkgs.hunspellDicts.de-de
|
pkgs.hunspellDicts.de-de
|
||||||
pkgs.hunspellDicts.en-us
|
pkgs.hunspellDicts.en-us
|
||||||
];
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.extraCaches.enable = lib.mkEnableOption "extra Nix binary caches";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.extraCaches.enable {
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
substituters = [
|
substituters = [
|
||||||
# keep-sorted start
|
# keep-sorted start
|
||||||
|
|
@ -19,4 +23,5 @@
|
||||||
# keep-sorted end
|
# keep-sorted end
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.firmwareUpdates.enable = lib.mkEnableOption "firmware updates and microcode";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.firmwareUpdates.enable {
|
||||||
hardware = {
|
hardware = {
|
||||||
enableRedistributableFirmware = true;
|
enableRedistributableFirmware = true;
|
||||||
cpu = {
|
cpu = {
|
||||||
|
|
@ -8,4 +12,5 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
services.fwupd.enable = true;
|
services.fwupd.enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
{
|
|
||||||
home-manager-users,
|
|
||||||
self,
|
|
||||||
home-manager,
|
|
||||||
servicepoint-cli,
|
|
||||||
servicepoint-simulator,
|
|
||||||
servicepoint-tanks,
|
|
||||||
stylix,
|
|
||||||
specialArgs,
|
|
||||||
nova-shell,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
# keep-sorted start
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
nova-shell.nixosModules.default
|
|
||||||
self.nixosModules.en-de
|
|
||||||
self.nixosModules.firmware-updates
|
|
||||||
self.nixosModules.gnome
|
|
||||||
self.nixosModules.kdeconnect
|
|
||||||
self.nixosModules.modern-desktop
|
|
||||||
self.nixosModules.niri
|
|
||||||
self.nixosModules.nix-ld
|
|
||||||
self.nixosModules.pkgs-vscode-extensions
|
|
||||||
self.nixosModules.quiet-boot
|
|
||||||
self.nixosModules.stylix
|
|
||||||
servicepoint-cli.nixosModules.default
|
|
||||||
servicepoint-simulator.nixosModules.default
|
|
||||||
servicepoint-tanks.nixosModules.default
|
|
||||||
stylix.nixosModules.stylix
|
|
||||||
# keep-sorted end
|
|
||||||
];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
home-manager = {
|
|
||||||
extraSpecialArgs = specialArgs;
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
users = home-manager-users;
|
|
||||||
sharedModules = [
|
|
||||||
{ home.stateVersion = "22.11"; }
|
|
||||||
# keep-sorted start
|
|
||||||
self.homeModules.git
|
|
||||||
self.homeModules.gnome-extensions
|
|
||||||
self.homeModules.nano
|
|
||||||
self.homeModules.templates
|
|
||||||
self.homeModules.zsh-basics
|
|
||||||
# keep-sorted end
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
|
|
||||||
# on desktops, keep the device useable interactively during expensive builds
|
|
||||||
nix = {
|
|
||||||
daemonCPUSchedPolicy = "idle";
|
|
||||||
daemonIOSchedClass = "idle";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
{
|
|
||||||
device,
|
|
||||||
self,
|
|
||||||
lanzaboote,
|
|
||||||
zerforschen-plus,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
# keep-sorted start
|
|
||||||
lanzaboote.nixosModules.lanzaboote
|
|
||||||
self.nixosModules.allowed-unfree-list
|
|
||||||
self.nixosModules.autoupdate
|
|
||||||
self.nixosModules.default
|
|
||||||
self.nixosModules.distributed-builds
|
|
||||||
self.nixosModules.extra-caches
|
|
||||||
self.nixosModules.globalinstalls
|
|
||||||
self.nixosModules.lix-is-nix
|
|
||||||
self.nixosModules.openssh
|
|
||||||
self.nixosModules.prometheus-node
|
|
||||||
self.nixosModules.systemd-boot
|
|
||||||
self.nixosModules.tailscale
|
|
||||||
zerforschen-plus.nixosModules.default
|
|
||||||
# keep-sorted end
|
|
||||||
];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
networking.hostName = device;
|
|
||||||
system = {
|
|
||||||
stateVersion = "22.11";
|
|
||||||
autoUpgrade.flake = "git+https://git.berlin.ccc.de/vinzenz/nixos-configuration.git";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
|
|
||||||
documentation = {
|
|
||||||
info.enable = false; # info pages and the info command
|
|
||||||
doc.enable = false; # documentation distributed in packages' /share/doc
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.globalinstalls.enable = lib.mkEnableOption "global system packages and tools";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.globalinstalls.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
ncdu
|
ncdu
|
||||||
glances
|
glances
|
||||||
|
|
@ -27,4 +35,5 @@
|
||||||
helper = oauth
|
helper = oauth
|
||||||
credentialStore = cache
|
credentialStore = cache
|
||||||
'';
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,17 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
options.muede = {
|
options = {
|
||||||
keep-gnome-default-apps = lib.mkEnableOption "keep gnome default apps";
|
my.gnome.enable = lib.mkEnableOption "GNOME desktop environment";
|
||||||
|
muede.keep-gnome-default-apps = lib.mkEnableOption "keep gnome default apps";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkMerge [
|
config = lib.mkIf config.my.gnome.enable (
|
||||||
|
lib.mkMerge [
|
||||||
{
|
{
|
||||||
services = {
|
services = {
|
||||||
xserver.excludePackages = [ pkgs.xterm ];
|
xserver.excludePackages = [ pkgs.xterm ];
|
||||||
|
|
@ -58,5 +60,6 @@
|
||||||
baobab # disk usage
|
baobab # disk usage
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
];
|
]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
config = {
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.intelGraphics.enable = lib.mkEnableOption "Intel graphics drivers";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.intelGraphics.enable {
|
||||||
hardware.graphics = {
|
hardware.graphics = {
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
intel-media-driver
|
intel-media-driver
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,10 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
config = lib.mkMerge [
|
options.my.kdeconnect.enable = lib.mkEnableOption "KDE Connect / GSConnect";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.kdeconnect.enable (
|
||||||
|
lib.mkMerge [
|
||||||
{
|
{
|
||||||
networking.firewall =
|
networking.firewall =
|
||||||
let
|
let
|
||||||
|
|
@ -49,5 +52,6 @@
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
];
|
]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
config = {
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.latex.enable = lib.mkEnableOption "LaTeX (texliveFull + TeXstudio)";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.latex.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
fontconfig
|
fontconfig
|
||||||
texliveFull
|
texliveFull
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.lixIsNix.enable = lib.mkEnableOption "Lix as the Nix implementation";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.lixIsNix.enable {
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
inherit (prev.lixPackageSets.stable)
|
inherit (prev.lixPackageSets.stable)
|
||||||
|
|
@ -12,4 +20,5 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
nix.package = pkgs.lixPackageSets.latest.lix;
|
nix.package = pkgs.lixPackageSets.latest.lix;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.modernDesktop.enable = lib.mkEnableOption "modern desktop base (pipewire, flatpak, earlyoom)";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.modernDesktop.enable {
|
||||||
services = {
|
services = {
|
||||||
xserver.enable = true;
|
xserver.enable = true;
|
||||||
libinput.enable = true;
|
libinput.enable = true;
|
||||||
|
|
@ -44,4 +48,5 @@
|
||||||
allowReboot = false;
|
allowReboot = false;
|
||||||
operation = "boot";
|
operation = "boot";
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.muedeDesktopSettings.enable = lib.mkEnableOption "muede desktop settings (Firefox, Logitech, RDP)";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.muedeDesktopSettings.enable {
|
||||||
programs.firefox.enable = true;
|
programs.firefox.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
|
@ -18,4 +26,5 @@
|
||||||
# RDP connections
|
# RDP connections
|
||||||
services.gnome.gnome-remote-desktop.enable = true;
|
services.gnome.gnome-remote-desktop.enable = true;
|
||||||
networking.firewall.allowedTCPPorts = [ 3389 ];
|
networking.firewall.allowedTCPPorts = [ 3389 ];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.nixLd.enable = lib.mkEnableOption "nix-ld for running unpatched dynamic binaries";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.nixLd.enable {
|
||||||
programs.nix-ld = {
|
programs.nix-ld = {
|
||||||
enable = true;
|
enable = true;
|
||||||
libraries = with pkgs; [
|
libraries = with pkgs; [
|
||||||
|
|
@ -20,4 +28,5 @@
|
||||||
icu
|
icu
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.openssh.enable = lib.mkEnableOption "OpenSSH server";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.openssh.enable {
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
|
|
@ -8,4 +12,5 @@
|
||||||
KbdInteractiveAuthentication = false;
|
KbdInteractiveAuthentication = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.podman.enable = lib.mkEnableOption "Podman container runtime";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.podman.enable {
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
containers.enable = true;
|
containers.enable = true;
|
||||||
podman = {
|
podman = {
|
||||||
|
|
@ -8,4 +12,5 @@
|
||||||
autoPrune.enable = true;
|
autoPrune.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.printing.enable = lib.mkEnableOption "printing (CUPS + Avahi)";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.printing.enable {
|
||||||
services = {
|
services = {
|
||||||
# Enable CUPS to print documents.
|
# Enable CUPS to print documents.
|
||||||
printing.enable = true;
|
printing.enable = true;
|
||||||
|
|
@ -9,4 +13,5 @@
|
||||||
openFirewall = true; # opens the firewall for UDP port 5353
|
openFirewall = true; # opens the firewall for UDP port 5353
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.prometheusNode.enable = lib.mkEnableOption "Prometheus node exporter";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.prometheusNode.enable {
|
||||||
services.prometheus.exporters = {
|
services.prometheus.exporters = {
|
||||||
node = {
|
node = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -17,4 +21,5 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,16 @@
|
||||||
{ modulesPath, lib, ... }:
|
|
||||||
{
|
{
|
||||||
|
modulesPath,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
# Import unconditionally — the module only defines options, activating nothing by default.
|
||||||
imports = [ (modulesPath + "/virtualisation/proxmox-lxc.nix") ];
|
imports = [ (modulesPath + "/virtualisation/proxmox-lxc.nix") ];
|
||||||
|
|
||||||
config = {
|
options.my.pxvirtGuest.enable = lib.mkEnableOption "Proxmox LXC guest configuration";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.pxvirtGuest.enable {
|
||||||
# TODO is this needed?
|
# TODO is this needed?
|
||||||
# nix.settings.sandbox = false;
|
# nix.settings.sandbox = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.quietBoot.enable = lib.mkEnableOption "quiet boot with Plymouth splash";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.quietBoot.enable {
|
||||||
boot = {
|
boot = {
|
||||||
kernelParams = [
|
kernelParams = [
|
||||||
"quiet"
|
"quiet"
|
||||||
|
|
@ -22,4 +30,5 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,17 @@
|
||||||
{ pkgs, lib, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.secureBoot.enable = lib.mkEnableOption "Secure Boot via lanzaboote";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.secureBoot.enable {
|
||||||
# https://github.com/nix-community/lanzaboote/blob/70be03ab23d0988224e152f5b52e2fbf44a6d8ee/docs/QUICK_START.md
|
# https://github.com/nix-community/lanzaboote/blob/70be03ab23d0988224e152f5b52e2fbf44a6d8ee/docs/QUICK_START.md
|
||||||
# To enroll:
|
# To enroll:
|
||||||
# 1. sudo sbctl create-keys
|
# 1. sudo sbctl create-keys
|
||||||
# 2. import this module, rebuild
|
# 2. enable this module, rebuild
|
||||||
# 3. Put Secure Boot in Setup mode
|
# 3. Put Secure Boot in Setup mode
|
||||||
# 4. sudo sbctl verify
|
# 4. sudo sbctl verify
|
||||||
# 5. sudo sbctl enroll-keys --microsoft
|
# 5. sudo sbctl enroll-keys --microsoft
|
||||||
|
|
@ -25,4 +33,5 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
pkiBundle = "/var/lib/sbctl";
|
pkiBundle = "/var/lib/sbctl";
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.steam.enable = lib.mkEnableOption "Steam gaming platform";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.steam.enable {
|
||||||
hardware.steam-hardware.enable = true;
|
hardware.steam-hardware.enable = true;
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
|
|
@ -42,4 +46,5 @@
|
||||||
"steam-run"
|
"steam-run"
|
||||||
"steam-unwrapped"
|
"steam-unwrapped"
|
||||||
];
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, config, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.stylix.enable = lib.mkEnableOption "Stylix theming (Catppuccin Mocha)";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.stylix.enable {
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||||
|
|
@ -83,4 +91,5 @@
|
||||||
package = pkgs.adwaita-icon-theme;
|
package = pkgs.adwaita-icon-theme;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.systemdBoot.enable = lib.mkEnableOption "systemd-boot bootloader";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.systemdBoot.enable {
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
timeout = 3;
|
timeout = 3;
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
|
|
@ -8,4 +12,5 @@
|
||||||
consoleMode = "max";
|
consoleMode = "max";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,13 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
|
options.my.tailscale.enable = lib.mkEnableOption "Tailscale VPN";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.tailscale.enable {
|
||||||
services.tailscale = {
|
services.tailscale = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall.checkReversePath = "loose";
|
networking.firewall.checkReversePath = "loose";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.users.muede.enable = lib.mkEnableOption "muede user account";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.users.muede.enable {
|
||||||
users.users.muede = {
|
users.users.muede = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
uid = 1000;
|
uid = 1000;
|
||||||
|
|
@ -34,4 +42,5 @@
|
||||||
|
|
||||||
"claude-code"
|
"claude-code"
|
||||||
];
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.users.ronja.enable = lib.mkEnableOption "ronja user account";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.users.ronja.enable {
|
||||||
users.users.ronja = {
|
users.users.ronja = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
name = "ronja";
|
name = "ronja";
|
||||||
|
|
@ -16,4 +24,5 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.settings.trusted-users = [ "ronja" ];
|
nix.settings.trusted-users = [ "ronja" ];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
options.my.wineGaming.enable = lib.mkEnableOption "Wine gaming (DXVK, MangoHud, xpadneo)";
|
||||||
|
|
||||||
|
config = lib.mkIf config.my.wineGaming.enable {
|
||||||
hardware = {
|
hardware = {
|
||||||
graphics = {
|
graphics = {
|
||||||
enable32Bit = true;
|
enable32Bit = true;
|
||||||
|
|
@ -19,4 +27,5 @@
|
||||||
vulkan-tools
|
vulkan-tools
|
||||||
mesa-demos
|
mesa-demos
|
||||||
];
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue