Compare commits
No commits in common. "c2aa932494fbab644471b96089b88bcc3113b5df" and "c2d4ce78de05fc554e767cc9ee9050832944246a" have entirely different histories.
c2aa932494
...
c2d4ce78de
45 changed files with 834 additions and 1072 deletions
76
flake.nix
76
flake.nix
|
|
@ -9,6 +9,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
#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";
|
||||||
|
|
@ -96,18 +97,28 @@
|
||||||
inputs@{
|
inputs@{
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
home-manager,
|
||||||
# keep-sorted start
|
# keep-sorted start
|
||||||
|
lanzaboote,
|
||||||
niri,
|
niri,
|
||||||
nix-vscode-extensions,
|
nix-vscode-extensions,
|
||||||
|
nixos-generators,
|
||||||
|
nixos-raspberrypi,
|
||||||
nixpkgs-unstable,
|
nixpkgs-unstable,
|
||||||
|
servicepoint-cli,
|
||||||
|
servicepoint-simulator,
|
||||||
|
servicepoint-tanks,
|
||||||
|
stylix,
|
||||||
treefmt-nix,
|
treefmt-nix,
|
||||||
|
zerforschen-plus,
|
||||||
# keep-sorted end
|
# keep-sorted end
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
|
devices = import ./devices.nix { inherit self; };
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
nixosConfigurations = import ./nixosConfigurations.nix { inherit inputs lib; };
|
forDevice = f: lib.mapAttrs (device: value: f (value // { inherit device; })) devices;
|
||||||
supported-systems = lib.unique (lib.mapAttrsToList (_: v: v.pkgs.system) nixosConfigurations);
|
supported-systems = lib.attrsets.mapAttrsToList (k: v: v.system) devices;
|
||||||
treefmt-config = {
|
treefmt-config = {
|
||||||
projectRootFile = "flake.nix";
|
projectRootFile = "flake.nix";
|
||||||
programs = {
|
programs = {
|
||||||
|
|
@ -136,17 +147,37 @@
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
overlays = {
|
overlays = {
|
||||||
unstable = final: prev: {
|
unstable-packages = final: prev: {
|
||||||
unstable = import nixpkgs-unstable {
|
unstable = import nixpkgs-unstable {
|
||||||
localSystem = prev.stdenv.hostPlatform;
|
localSystem = prev.stdenv.hostPlatform;
|
||||||
inherit (prev) config;
|
inherit (prev) config;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
vscodeExtensions = nix-vscode-extensions.overlays.default;
|
|
||||||
niri = niri.overlays.niri;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosModules = importModuleDir ./nixosModules;
|
nixosModules = (importModuleDir ./nixosModules) // {
|
||||||
|
niri =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [ niri.nixosModules.niri ];
|
||||||
|
nixpkgs.overlays = [ niri.overlays.niri ];
|
||||||
|
|
||||||
|
programs.niri = {
|
||||||
|
enable = true;
|
||||||
|
#package = pkgs.niri-stable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pkgs-unstable = {
|
||||||
|
nixpkgs.overlays = [ self.overlays.unstable-packages ];
|
||||||
|
};
|
||||||
|
pkgs-vscode-extensions = {
|
||||||
|
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;
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
|
|
@ -154,7 +185,38 @@
|
||||||
ronja = ./homeConfigurations/ronja;
|
ronja = ./homeConfigurations/ronja;
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit nixosConfigurations;
|
nixosConfigurations = forDevice (
|
||||||
|
{
|
||||||
|
device,
|
||||||
|
system,
|
||||||
|
home-manager-users ? { },
|
||||||
|
nixosSystem ? nixpkgs.lib.nixosSystem,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
specialArgs = inputs // {
|
||||||
|
inherit device home-manager-users devices;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
nixosSystem {
|
||||||
|
inherit specialArgs;
|
||||||
|
modules = [
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./nixosConfigurations/${device}
|
||||||
|
self.nixosModules.global-settings
|
||||||
|
]
|
||||||
|
++ (lib.optionals (home-manager-users != { }) [
|
||||||
|
self.nixosModules.global-settings-desktop
|
||||||
|
]);
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
hostPlatform = lib.mkDefault system;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
formatter = forAllSystems ({ treefmt-eval, ... }: treefmt-eval.config.build.wrapper);
|
formatter = forAllSystems ({ treefmt-eval, ... }: treefmt-eval.config.build.wrapper);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, self, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# keep-sorted start
|
# keep-sorted start
|
||||||
|
|
|
||||||
6
homeModules/git.nix
Normal file
6
homeModules/git.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
settings.init.defaultBranch = "main";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,127 +0,0 @@
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
devices = import ./devices.nix { inherit (inputs) self; };
|
|
||||||
inherit (inputs)
|
|
||||||
self
|
|
||||||
home-manager
|
|
||||||
lanzaboote
|
|
||||||
nova-shell
|
|
||||||
servicepoint-cli
|
|
||||||
servicepoint-simulator
|
|
||||||
servicepoint-tanks
|
|
||||||
stylix
|
|
||||||
zerforschen-plus
|
|
||||||
;
|
|
||||||
forDevice = f: lib.mapAttrs (device: value: f (value // { inherit device; })) devices;
|
|
||||||
in
|
|
||||||
forDevice (
|
|
||||||
{
|
|
||||||
device,
|
|
||||||
system,
|
|
||||||
home-manager-users ? { },
|
|
||||||
nixosSystem ? inputs.nixpkgs.lib.nixosSystem,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
specialArgs = inputs // {
|
|
||||||
inherit device home-manager-users devices;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = [
|
|
||||||
./nixosConfigurations/${device}
|
|
||||||
self.nixosModules.default
|
|
||||||
|
|
||||||
# keep-sorted start
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
lanzaboote.nixosModules.lanzaboote
|
|
||||||
nova-shell.nixosModules.default
|
|
||||||
servicepoint-cli.nixosModules.default
|
|
||||||
servicepoint-simulator.nixosModules.default
|
|
||||||
servicepoint-tanks.nixosModules.default
|
|
||||||
stylix.nixosModules.stylix
|
|
||||||
zerforschen-plus.nixosModules.default
|
|
||||||
# keep-sorted end
|
|
||||||
|
|
||||||
# Base config
|
|
||||||
{
|
|
||||||
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 = {
|
|
||||||
# keep-sorted start
|
|
||||||
autoupdate.enable = true;
|
|
||||||
distributedBuilds.enable = true;
|
|
||||||
extraCaches.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
globalinstalls.enable = true;
|
|
||||||
lixIsNix.enable = true;
|
|
||||||
openssh.enable = true;
|
|
||||||
overlays.unstable.enable = true;
|
|
||||||
overlays.vscodeExtensions.enable = true;
|
|
||||||
# prometheusNode.enable = true;
|
|
||||||
systemdBoot.enable = true;
|
|
||||||
tailscale.enable = true;
|
|
||||||
# keep-sorted end
|
|
||||||
};
|
|
||||||
}
|
|
||||||
]
|
|
||||||
++ lib.optionals (home-manager-users != { }) [
|
|
||||||
# Desktop config
|
|
||||||
{
|
|
||||||
home-manager = {
|
|
||||||
extraSpecialArgs = specialArgs;
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
users = home-manager-users;
|
|
||||||
sharedModules = [
|
|
||||||
{ home.stateVersion = "22.11"; }
|
|
||||||
# keep-sorted start
|
|
||||||
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 = {
|
|
||||||
# keep-sorted start
|
|
||||||
enDe.enable = true;
|
|
||||||
firmwareUpdates.enable = true;
|
|
||||||
gnome.enable = true;
|
|
||||||
kdeconnect.enable = true;
|
|
||||||
modernDesktop.enable = true;
|
|
||||||
nixLd.enable = true;
|
|
||||||
quietBoot.enable = true;
|
|
||||||
stylix.enable = true;
|
|
||||||
# keep-sorted end
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
@ -10,9 +10,11 @@
|
||||||
# No one got time for xz compression.
|
# No one got time for xz compression.
|
||||||
#isoImage.squashfsCompression = "zstd";
|
#isoImage.squashfsCompression = "zstd";
|
||||||
|
|
||||||
boot.loader.raspberry-pi.bootloader = "kernel";
|
boot.loader = {
|
||||||
|
raspberry-pi.bootloader = "kernel";
|
||||||
my.systemdBoot.enable = lib.mkForce false;
|
systemd-boot.enable = lib.mkForce false;
|
||||||
|
#generic-extlinux-compatible.enable = lib.mkForce false;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
self,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
||||||
my.overlays.unstable.enable = true;
|
nixpkgs.overlays = [ self.overlays.unstable-packages ];
|
||||||
allowedUnfreePackages = [ "claude-code" ];
|
allowedUnfreePackages = [ "claude-code" ];
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,8 @@
|
||||||
{ modulesPath, ... }:
|
{ self, ... }:
|
||||||
{
|
{
|
||||||
imports = [ (modulesPath + "/virtualisation/proxmox-lxc.nix") ];
|
imports = [ self.nixosModules.pxvirt-guest ];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
my.pxvirtGuest.enable = true;
|
|
||||||
|
|
||||||
proxmoxLXC = {
|
|
||||||
manageNetwork = false;
|
|
||||||
privileged = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
{ ... }:
|
{ 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,20 +1,21 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, self, ... }:
|
||||||
{
|
{
|
||||||
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,15 +1,20 @@
|
||||||
{ 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";
|
||||||
|
|
@ -19,6 +24,8 @@
|
||||||
# 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,13 +1,5 @@
|
||||||
|
{ 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" ];
|
||||||
|
|
||||||
|
|
@ -20,5 +12,4 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [ nvtopPackages.amd ];
|
environment.systemPackages = with pkgs; [ nvtopPackages.amd ];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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 = {
|
||||||
|
|
@ -17,5 +13,4 @@
|
||||||
dates = "daily";
|
dates = "daily";
|
||||||
# do not forget to set `flake` when using this module!
|
# do not forget to set `flake` when using this module!
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
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
|
|
||||||
./git.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
|
|
||||||
./nixpkgs-overlays.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,57 +32,43 @@ 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 (
|
buildServerDevices = lib.filterAttrs (_: v: (v.distributedBuilds or { }).isBuilder or false) devices;
|
||||||
_: 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 (
|
(lib.mapAttrs (hostName: v: {
|
||||||
_: v: {
|
|
||||||
publicKey = v.distributedBuilds.hostPublicKey;
|
publicKey = v.distributedBuilds.hostPublicKey;
|
||||||
}
|
}))
|
||||||
))
|
|
||||||
];
|
];
|
||||||
|
|
||||||
buildMachineList = lib.mapAttrsToList (
|
buildMachineList = lib.mapAttrsToList (hostName: v: {
|
||||||
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
|
||||||
{
|
{
|
||||||
options.my.distributedBuilds.enable = lib.mkEnableOption "distributed Nix builds";
|
# Dedicated user for receiving distributed build connections
|
||||||
|
|
||||||
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 (
|
openssh.authorizedKeys.keys = map (k: ''command="nix daemon --stdio",restrict ${k}'') authorizedPublicKeys;
|
||||||
k: ''command="nix daemon --stdio",restrict ${k}''
|
|
||||||
) authorizedPublicKeys;
|
|
||||||
};
|
};
|
||||||
users.groups.${buildUser} = { };
|
users.groups.${buildUser} = { };
|
||||||
|
|
||||||
|
|
@ -104,5 +90,4 @@ in
|
||||||
MemoryMax = "90%";
|
MemoryMax = "90%";
|
||||||
OOMScoreAdjust = 500;
|
OOMScoreAdjust = 500;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,5 @@
|
||||||
|
{ 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 = [
|
||||||
|
|
@ -36,5 +28,4 @@
|
||||||
pkgs.hunspellDicts.de-de
|
pkgs.hunspellDicts.de-de
|
||||||
pkgs.hunspellDicts.en-us
|
pkgs.hunspellDicts.en-us
|
||||||
];
|
];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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
|
||||||
|
|
@ -23,5 +19,4 @@
|
||||||
# keep-sorted end
|
# keep-sorted end
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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 = {
|
||||||
|
|
@ -12,5 +8,4 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
services.fwupd.enable = true;
|
services.fwupd.enable = true;
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
options.my.git.enable = lib.mkEnableOption "git with credential helper";
|
|
||||||
|
|
||||||
config = lib.mkIf config.my.git.enable {
|
|
||||||
environment.systemPackages = [ pkgs.git-credential-oauth ];
|
|
||||||
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
config = {
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
credential = {
|
|
||||||
helper = "oauth";
|
|
||||||
credentialStore = "cache";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
61
nixosModules/global-settings-desktop.nix
Normal file
61
nixosModules/global-settings-desktop.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
44
nixosModules/global-settings.nix
Normal file
44
nixosModules/global-settings.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
{
|
||||||
|
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,13 +1,5 @@
|
||||||
|
{ 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
|
||||||
|
|
@ -16,16 +8,23 @@
|
||||||
screen
|
screen
|
||||||
tldr
|
tldr
|
||||||
nix-output-monitor
|
nix-output-monitor
|
||||||
|
git-credential-oauth
|
||||||
];
|
];
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
htop.enable = true;
|
htop.enable = true;
|
||||||
iotop.enable = true;
|
iotop.enable = true;
|
||||||
|
git.enable = true;
|
||||||
nano = {
|
nano = {
|
||||||
enable = true;
|
enable = true;
|
||||||
syntaxHighlight = true;
|
syntaxHighlight = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
environment.etc."gitconfig".text = ''
|
||||||
|
[credential]
|
||||||
|
helper = oauth
|
||||||
|
credentialStore = cache
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,15 @@
|
||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
options = {
|
options.muede = {
|
||||||
my.gnome.enable = lib.mkEnableOption "GNOME desktop environment";
|
keep-gnome-default-apps = lib.mkEnableOption "keep gnome default apps";
|
||||||
muede.keep-gnome-default-apps = lib.mkEnableOption "keep gnome default apps";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.my.gnome.enable (
|
config = lib.mkMerge [
|
||||||
lib.mkMerge [
|
|
||||||
{
|
{
|
||||||
services = {
|
services = {
|
||||||
xserver.excludePackages = [ pkgs.xterm ];
|
xserver.excludePackages = [ pkgs.xterm ];
|
||||||
|
|
@ -60,6 +58,5 @@
|
||||||
baobab # disk usage
|
baobab # disk usage
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
]
|
];
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,6 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
lib,
|
config = {
|
||||||
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,10 +5,7 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
options.my.kdeconnect.enable = lib.mkEnableOption "KDE Connect / GSConnect";
|
config = lib.mkMerge [
|
||||||
|
|
||||||
config = lib.mkIf config.my.kdeconnect.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
{
|
||||||
networking.firewall =
|
networking.firewall =
|
||||||
let
|
let
|
||||||
|
|
@ -52,6 +49,5 @@
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
]
|
];
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,6 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
lib,
|
config = {
|
||||||
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,15 +1,7 @@
|
||||||
|
{ 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 = [
|
||||||
(_: prev: {
|
(final: prev: {
|
||||||
inherit (prev.lixPackageSets.stable)
|
inherit (prev.lixPackageSets.stable)
|
||||||
nixpkgs-review
|
nixpkgs-review
|
||||||
nix-eval-jobs
|
nix-eval-jobs
|
||||||
|
|
@ -20,5 +12,4 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
nix.package = pkgs.lixPackageSets.latest.lix;
|
nix.package = pkgs.lixPackageSets.latest.lix;
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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;
|
||||||
|
|
@ -48,5 +44,4 @@
|
||||||
allowReboot = false;
|
allowReboot = false;
|
||||||
operation = "boot";
|
operation = "boot";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,5 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
niri,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [ niri.nixosModules.niri ];
|
|
||||||
|
|
||||||
options.my.muedeDesktopSettings.enable = lib.mkEnableOption "muede desktop settings (Firefox, Logitech, RDP)";
|
|
||||||
|
|
||||||
config = lib.mkIf config.my.muedeDesktopSettings.enable {
|
|
||||||
my.overlays.niri.enable = true;
|
|
||||||
programs.niri.enable = true;
|
|
||||||
|
|
||||||
programs.firefox.enable = true;
|
programs.firefox.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
|
@ -32,5 +18,4 @@
|
||||||
# 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,13 +1,5 @@
|
||||||
|
{ 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; [
|
||||||
|
|
@ -28,5 +20,4 @@
|
||||||
icu
|
icu
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
self,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
options.my.overlays = {
|
|
||||||
enableAll = lib.mkEnableOption "all nixpkgs overlays";
|
|
||||||
}
|
|
||||||
// lib.mapAttrs (_: _: {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
};
|
|
||||||
}) self.overlays;
|
|
||||||
|
|
||||||
config = lib.mkMerge (
|
|
||||||
[
|
|
||||||
{
|
|
||||||
my.overlays = lib.mapAttrs (_: _: {
|
|
||||||
enable = lib.mkDefault config.my.overlays.enableAll;
|
|
||||||
}) self.overlays;
|
|
||||||
}
|
|
||||||
]
|
|
||||||
++ lib.mapAttrsToList (
|
|
||||||
name: overlay:
|
|
||||||
lib.mkIf config.my.overlays.${name}.enable {
|
|
||||||
nixpkgs.overlays = [ overlay ];
|
|
||||||
}
|
|
||||||
) self.overlays
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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;
|
||||||
|
|
@ -12,5 +8,4 @@
|
||||||
KbdInteractiveAuthentication = false;
|
KbdInteractiveAuthentication = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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 = {
|
||||||
|
|
@ -12,5 +8,4 @@
|
||||||
autoPrune.enable = true;
|
autoPrune.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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;
|
||||||
|
|
@ -13,5 +9,4 @@
|
||||||
openFirewall = true; # opens the firewall for UDP port 5353
|
openFirewall = true; # opens the firewall for UDP port 5353
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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;
|
||||||
|
|
@ -21,5 +17,4 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,16 @@
|
||||||
|
{ modulesPath, lib, ... }:
|
||||||
{
|
{
|
||||||
lib,
|
imports = [ (modulesPath + "/virtualisation/proxmox-lxc.nix") ];
|
||||||
config,
|
|
||||||
...
|
config = {
|
||||||
}:
|
# TODO is this needed?
|
||||||
{
|
# nix.settings.sandbox = false;
|
||||||
options.my.pxvirtGuest.enable = lib.mkEnableOption "Proxmox LXC guest configuration";
|
|
||||||
|
proxmoxLXC = {
|
||||||
|
manageNetwork = false;
|
||||||
|
privileged = false;
|
||||||
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.my.pxvirtGuest.enable {
|
|
||||||
# Let Proxmox host handle fstrim
|
# Let Proxmox host handle fstrim
|
||||||
services.fstrim.enable = false;
|
services.fstrim.enable = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,5 @@
|
||||||
|
{ 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"
|
||||||
|
|
@ -30,5 +22,4 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,9 @@
|
||||||
|
{ 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. enable this module, rebuild
|
# 2. import 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
|
||||||
|
|
@ -33,5 +25,4 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
pkiBundle = "/var/lib/sbctl";
|
pkiBundle = "/var/lib/sbctl";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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 = {
|
||||||
|
|
@ -46,5 +42,4 @@
|
||||||
"steam-run"
|
"steam-run"
|
||||||
"steam-unwrapped"
|
"steam-unwrapped"
|
||||||
];
|
];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,5 @@
|
||||||
|
{ 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";
|
||||||
|
|
@ -91,5 +83,4 @@
|
||||||
package = pkgs.adwaita-icon-theme;
|
package = pkgs.adwaita-icon-theme;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{ 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;
|
||||||
|
|
@ -12,5 +8,4 @@
|
||||||
consoleMode = "max";
|
consoleMode = "max";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,8 @@
|
||||||
{ 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,13 +1,5 @@
|
||||||
|
{ 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;
|
||||||
|
|
@ -42,5 +34,4 @@
|
||||||
|
|
||||||
"claude-code"
|
"claude-code"
|
||||||
];
|
];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,5 @@
|
||||||
|
{ 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";
|
||||||
|
|
@ -24,5 +16,4 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.settings.trusted-users = [ "ronja" ];
|
nix.settings.trusted-users = [ "ronja" ];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,5 @@
|
||||||
|
{ 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;
|
||||||
|
|
@ -27,5 +19,4 @@
|
||||||
vulkan-tools
|
vulkan-tools
|
||||||
mesa-demos
|
mesa-demos
|
||||||
];
|
];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue