2024-10-26 00:04:27 +02:00
|
|
|
{
|
|
|
|
|
inputs = {
|
2025-12-01 17:30:51 +01:00
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
|
2025-05-01 22:19:50 +02:00
|
|
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
|
|
|
|
2024-10-26 00:04:27 +02:00
|
|
|
home-manager = {
|
2025-12-01 17:30:51 +01:00
|
|
|
url = "github:nix-community/home-manager/release-25.11";
|
2024-10-26 00:04:27 +02:00
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
};
|
2024-11-24 18:10:44 +01:00
|
|
|
|
2025-11-11 13:15:22 +01:00
|
|
|
#keep-sorted start block=yes
|
|
|
|
|
flake-parts = {
|
|
|
|
|
url = "github:hercules-ci/flake-parts";
|
|
|
|
|
#inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
};
|
2025-11-15 14:13:00 +01:00
|
|
|
lanzaboote = {
|
|
|
|
|
url = "github:nix-community/lanzaboote/v0.4.3";
|
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
};
|
2025-11-11 13:15:22 +01:00
|
|
|
naersk = {
|
|
|
|
|
url = "github:nix-community/naersk";
|
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
};
|
2025-03-16 10:25:59 +01:00
|
|
|
niri = {
|
|
|
|
|
url = "github:sodiboo/niri-flake";
|
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
inputs.nixpkgs-stable.follows = "nixpkgs";
|
|
|
|
|
};
|
2025-11-11 13:15:22 +01:00
|
|
|
nix-filter.url = "github:numtide/nix-filter";
|
2025-10-12 15:16:44 +02:00
|
|
|
nix-vscode-extensions = {
|
|
|
|
|
url = "github:nix-community/nix-vscode-extensions";
|
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
};
|
2025-11-11 13:15:22 +01:00
|
|
|
nur = {
|
|
|
|
|
url = "github:nix-community/NUR";
|
|
|
|
|
inputs = {
|
|
|
|
|
nixpkgs.follows = "nixpkgs";
|
|
|
|
|
flake-parts.follows = "flake-parts";
|
|
|
|
|
};
|
2025-04-07 19:43:41 +02:00
|
|
|
};
|
2025-05-10 13:24:08 +02:00
|
|
|
servicepoint-cli = {
|
|
|
|
|
url = "git+https://git.berlin.ccc.de/servicepoint/servicepoint-cli.git";
|
2025-11-11 13:15:22 +01:00
|
|
|
inputs = {
|
2025-12-01 17:30:51 +01:00
|
|
|
# TODO: update flake to 25.11
|
|
|
|
|
# nixpkgs.follows = "nixpkgs";
|
2025-11-11 13:15:22 +01:00
|
|
|
naersk.follows = "naersk";
|
|
|
|
|
nix-filter.follows = "nix-filter";
|
|
|
|
|
};
|
2025-05-10 13:24:08 +02:00
|
|
|
};
|
|
|
|
|
servicepoint-simulator = {
|
|
|
|
|
url = "git+https://git.berlin.ccc.de/servicepoint/servicepoint-simulator.git";
|
2025-11-11 13:15:22 +01:00
|
|
|
inputs = {
|
2025-12-01 17:30:51 +01:00
|
|
|
# TODO: update flake to 25.11
|
|
|
|
|
# nixpkgs.follows = "nixpkgs";
|
2025-11-11 13:15:22 +01:00
|
|
|
naersk.follows = "naersk";
|
|
|
|
|
nix-filter.follows = "nix-filter";
|
|
|
|
|
};
|
2025-05-10 13:24:08 +02:00
|
|
|
};
|
2025-10-12 15:16:44 +02:00
|
|
|
servicepoint-tanks = {
|
2025-10-23 20:15:48 +02:00
|
|
|
url = "git+https://git.berlin.ccc.de/vinzenz/servicepoint-tanks.git?ref=service-improvements";
|
2025-09-16 19:50:41 +02:00
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
2025-06-28 09:46:08 +02:00
|
|
|
};
|
2025-11-11 13:15:22 +01:00
|
|
|
stylix = {
|
2025-12-01 17:30:51 +01:00
|
|
|
url = "github:nix-community/stylix/release-25.11";
|
2025-11-11 13:15:22 +01:00
|
|
|
inputs = {
|
|
|
|
|
nixpkgs.follows = "nixpkgs";
|
|
|
|
|
nur.follows = "nur";
|
|
|
|
|
flake-parts.follows = "flake-parts";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
treefmt-nix = {
|
|
|
|
|
url = "github:numtide/treefmt-nix";
|
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
};
|
|
|
|
|
zerforschen-plus = {
|
|
|
|
|
url = "git+https://git.berlin.ccc.de/vinzenz/zerforschen.plus";
|
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
};
|
|
|
|
|
#keep-sorted end
|
2024-10-26 00:04:27 +02:00
|
|
|
};
|
|
|
|
|
|
2024-10-27 12:33:35 +01:00
|
|
|
outputs =
|
2025-09-13 15:10:42 +02:00
|
|
|
{
|
2025-03-17 19:17:16 +01:00
|
|
|
self,
|
2024-10-27 12:33:35 +01:00
|
|
|
nixpkgs,
|
|
|
|
|
home-manager,
|
2025-11-11 13:15:22 +01:00
|
|
|
# keep-sorted start
|
2025-11-15 14:13:00 +01:00
|
|
|
lanzaboote,
|
2025-03-16 10:25:59 +01:00
|
|
|
niri,
|
2025-10-12 15:16:44 +02:00
|
|
|
nix-vscode-extensions,
|
2025-11-11 13:15:22 +01:00
|
|
|
nixpkgs-unstable,
|
2025-05-10 13:24:08 +02:00
|
|
|
servicepoint-cli,
|
|
|
|
|
servicepoint-simulator,
|
2025-10-12 15:16:44 +02:00
|
|
|
servicepoint-tanks,
|
2025-11-11 13:15:22 +01:00
|
|
|
stylix,
|
|
|
|
|
treefmt-nix,
|
|
|
|
|
zerforschen-plus,
|
|
|
|
|
# keep-sorted end
|
|
|
|
|
...
|
2024-10-27 12:33:35 +01:00
|
|
|
}:
|
2025-03-15 11:03:03 +01:00
|
|
|
let
|
|
|
|
|
devices = {
|
2025-09-15 19:01:30 +02:00
|
|
|
vinzenz-lpt2 = {
|
|
|
|
|
system = "x86_64-linux";
|
|
|
|
|
additional-modules = [
|
|
|
|
|
self.nixosModules.user-vinzenz
|
|
|
|
|
|
|
|
|
|
self.nixosModules.gnome
|
|
|
|
|
self.nixosModules.wine-gaming
|
|
|
|
|
self.nixosModules.steam
|
|
|
|
|
self.nixosModules.podman
|
|
|
|
|
self.nixosModules.vinzenz-desktop-settings
|
|
|
|
|
self.nixosModules.intel-graphics
|
2025-11-15 14:13:00 +01:00
|
|
|
self.nixosModules.secure-boot
|
2025-09-15 19:01:30 +02:00
|
|
|
];
|
|
|
|
|
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.podman
|
|
|
|
|
self.nixosModules.vinzenz-desktop-settings
|
|
|
|
|
self.nixosModules.amd-graphics
|
2025-11-17 14:36:31 +01:00
|
|
|
self.nixosModules.secure-boot
|
2025-09-15 19:01:30 +02:00
|
|
|
];
|
|
|
|
|
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 ];
|
|
|
|
|
};
|
2025-03-15 11:03:03 +01:00
|
|
|
};
|
2025-09-15 19:40:49 +02:00
|
|
|
inherit (nixpkgs) lib;
|
2025-09-15 19:01:30 +02:00
|
|
|
forDevice = f: lib.mapAttrs (device: value: f (value // { inherit device; })) devices;
|
|
|
|
|
supported-systems = lib.attrsets.mapAttrsToList (k: v: v.system) devices;
|
2025-11-09 14:47:03 +01:00
|
|
|
treefmt-config = {
|
|
|
|
|
projectRootFile = "flake.nix";
|
|
|
|
|
programs = {
|
|
|
|
|
nixfmt.enable = true;
|
|
|
|
|
jsonfmt.enable = true;
|
|
|
|
|
prettier.enable = true;
|
2025-11-11 12:08:04 +01:00
|
|
|
keep-sorted.enable = true;
|
2025-11-09 14:47:03 +01:00
|
|
|
};
|
|
|
|
|
};
|
2025-09-12 23:51:00 +02:00
|
|
|
forAllSystems =
|
|
|
|
|
f:
|
2025-09-13 17:49:17 +02:00
|
|
|
lib.genAttrs supported-systems (
|
2025-09-12 23:51:00 +02:00
|
|
|
system:
|
|
|
|
|
f rec {
|
|
|
|
|
inherit system;
|
|
|
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
2025-11-09 14:47:03 +01:00
|
|
|
treefmt-eval = treefmt-nix.lib.evalModule pkgs treefmt-config;
|
2025-09-12 23:51:00 +02:00
|
|
|
}
|
|
|
|
|
);
|
2025-09-15 23:30:28 +02:00
|
|
|
importModuleDir =
|
|
|
|
|
directory:
|
|
|
|
|
nixpkgs.lib.packagesFromDirectoryRecursive {
|
|
|
|
|
inherit directory;
|
|
|
|
|
callPackage = path: _args: path;
|
|
|
|
|
};
|
2025-03-15 11:03:03 +01:00
|
|
|
in
|
2025-09-14 12:37:29 +02:00
|
|
|
{
|
2025-09-15 19:40:49 +02:00
|
|
|
overlays = {
|
|
|
|
|
unstable-packages = final: prev: {
|
|
|
|
|
unstable = import nixpkgs-unstable {
|
|
|
|
|
inherit (prev) system config;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-15 23:30:28 +02:00
|
|
|
nixosModules = (importModuleDir ./nixosModules) // {
|
2025-11-02 01:19:27 +01:00
|
|
|
niri =
|
|
|
|
|
{ pkgs, ... }:
|
|
|
|
|
{
|
|
|
|
|
imports = [ niri.nixosModules.niri ];
|
|
|
|
|
nixpkgs.overlays = [ niri.overlays.niri ];
|
|
|
|
|
|
|
|
|
|
programs.niri = {
|
|
|
|
|
enable = true;
|
|
|
|
|
#package = pkgs.niri-stable;
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-09-15 19:40:49 +02:00
|
|
|
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 ];
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-15 23:30:28 +02:00
|
|
|
homeModules = importModuleDir ./homeModules;
|
|
|
|
|
homeConfigurations = {
|
|
|
|
|
vinzenz = ./homeConfigurations/vinzenz;
|
|
|
|
|
ronja = ./homeConfigurations/ronja;
|
|
|
|
|
};
|
2025-09-15 19:40:49 +02:00
|
|
|
|
2025-03-15 11:03:03 +01:00
|
|
|
nixosConfigurations = forDevice (
|
2025-09-15 19:01:30 +02:00
|
|
|
{
|
|
|
|
|
device,
|
|
|
|
|
system,
|
|
|
|
|
home-manager-users ? { },
|
|
|
|
|
additional-modules ? [ ],
|
|
|
|
|
}:
|
2025-05-10 13:24:08 +02:00
|
|
|
let
|
2025-09-15 19:01:30 +02:00
|
|
|
specialArgs = {
|
2025-09-13 15:10:42 +02:00
|
|
|
inherit device;
|
2025-05-10 13:24:08 +02:00
|
|
|
};
|
|
|
|
|
in
|
|
|
|
|
nixpkgs.lib.nixosSystem {
|
2025-09-15 19:01:30 +02:00
|
|
|
inherit system specialArgs;
|
2025-09-06 19:16:13 +02:00
|
|
|
modules = [
|
2025-09-13 15:25:54 +02:00
|
|
|
{
|
|
|
|
|
networking.hostName = device;
|
2025-09-14 14:01:42 +02:00
|
|
|
nixpkgs = {
|
|
|
|
|
inherit system;
|
|
|
|
|
hostPlatform = lib.mkDefault system;
|
|
|
|
|
};
|
2025-09-13 15:25:54 +02:00
|
|
|
system = {
|
|
|
|
|
stateVersion = "22.11";
|
|
|
|
|
autoUpgrade.flake = "git+https://git.berlin.ccc.de/vinzenz/nixos-configuration.git";
|
|
|
|
|
};
|
2025-09-14 12:22:20 +02:00
|
|
|
|
|
|
|
|
nixpkgs.overlays = [
|
2025-09-14 12:37:29 +02:00
|
|
|
self.overlays.unstable-packages
|
2025-09-14 12:22:20 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
nix.settings.experimental-features = [
|
|
|
|
|
"nix-command"
|
|
|
|
|
"flakes"
|
|
|
|
|
];
|
2025-09-14 13:45:48 +02:00
|
|
|
|
|
|
|
|
documentation = {
|
|
|
|
|
info.enable = false; # info pages and the info command
|
|
|
|
|
doc.enable = false; # documentation distributed in packages' /share/doc
|
|
|
|
|
};
|
2025-09-13 15:25:54 +02:00
|
|
|
}
|
2025-09-06 19:16:13 +02:00
|
|
|
|
2025-09-14 13:09:37 +02:00
|
|
|
./nixosConfigurations/${device}
|
2025-09-06 19:16:13 +02:00
|
|
|
|
2025-11-11 12:08:04 +01:00
|
|
|
# keep-sorted start
|
2025-11-15 14:13:00 +01:00
|
|
|
lanzaboote.nixosModules.lanzaboote
|
2025-11-11 12:08:04 +01:00
|
|
|
self.nixosModules.allowed-unfree-list
|
|
|
|
|
self.nixosModules.autoupdate
|
2025-09-15 19:01:30 +02:00
|
|
|
self.nixosModules.default
|
2025-11-11 12:08:04 +01:00
|
|
|
self.nixosModules.extra-caches
|
2025-09-13 17:49:17 +02:00
|
|
|
self.nixosModules.globalinstalls
|
2025-11-11 12:08:04 +01:00
|
|
|
self.nixosModules.lix-is-nix
|
2025-09-13 17:49:17 +02:00
|
|
|
self.nixosModules.openssh
|
2025-09-14 14:12:14 +02:00
|
|
|
self.nixosModules.systemd-boot
|
2025-11-11 12:08:04 +01:00
|
|
|
self.nixosModules.tailscale
|
2025-09-14 12:54:58 +02:00
|
|
|
zerforschen-plus.nixosModules.default
|
2025-11-11 12:08:04 +01:00
|
|
|
# keep-sorted end
|
2025-09-06 19:16:13 +02:00
|
|
|
]
|
2025-09-15 19:01:30 +02:00
|
|
|
++ (nixpkgs.lib.optionals (home-manager-users != { }) [
|
2025-09-13 15:25:54 +02:00
|
|
|
{
|
2025-09-14 13:36:45 +02:00
|
|
|
home-manager = {
|
2025-09-15 19:01:30 +02:00
|
|
|
extraSpecialArgs = specialArgs;
|
2025-09-14 13:36:45 +02:00
|
|
|
useGlobalPkgs = true;
|
|
|
|
|
useUserPackages = true;
|
|
|
|
|
};
|
2025-09-13 15:25:54 +02:00
|
|
|
|
|
|
|
|
time.timeZone = "Europe/Berlin";
|
2025-09-14 12:22:20 +02:00
|
|
|
|
|
|
|
|
home-manager.sharedModules = [
|
2025-09-14 13:36:45 +02:00
|
|
|
{ home.stateVersion = "22.11"; }
|
2025-11-11 12:08:04 +01:00
|
|
|
# keep-sorted start
|
2025-09-14 13:36:45 +02:00
|
|
|
self.homeModules.git
|
2025-11-11 12:08:04 +01:00
|
|
|
self.homeModules.gnome-extensions
|
|
|
|
|
self.homeModules.nano
|
2025-09-14 13:36:45 +02:00
|
|
|
self.homeModules.templates
|
|
|
|
|
self.homeModules.zsh-basics
|
2025-09-25 19:41:17 +02:00
|
|
|
self.homeModules.zsh-powerlevel10k
|
2025-11-11 12:08:04 +01:00
|
|
|
# keep-sorted end
|
2025-09-14 12:22:20 +02:00
|
|
|
];
|
2025-09-15 19:01:30 +02:00
|
|
|
|
|
|
|
|
home-manager.users = home-manager-users;
|
2025-09-13 15:25:54 +02:00
|
|
|
}
|
2025-09-13 17:49:17 +02:00
|
|
|
|
2025-11-11 13:15:22 +01:00
|
|
|
# keep-sorted start
|
2025-11-11 12:08:04 +01:00
|
|
|
home-manager.nixosModules.home-manager
|
2025-09-13 17:49:17 +02:00
|
|
|
self.nixosModules.en-de
|
2025-11-11 12:08:04 +01:00
|
|
|
self.nixosModules.firmware-updates
|
2025-09-13 18:20:00 +02:00
|
|
|
self.nixosModules.gnome
|
2025-11-11 12:08:04 +01:00
|
|
|
self.nixosModules.kdeconnect
|
2025-09-14 13:36:45 +02:00
|
|
|
self.nixosModules.modern-desktop
|
2025-11-11 12:08:04 +01:00
|
|
|
self.nixosModules.niri
|
2025-09-14 13:36:45 +02:00
|
|
|
self.nixosModules.nix-ld
|
2025-11-11 12:08:04 +01:00
|
|
|
self.nixosModules.pkgs-unstable
|
|
|
|
|
self.nixosModules.pkgs-vscode-extensions
|
2025-09-14 14:01:42 +02:00
|
|
|
self.nixosModules.quiet-boot
|
2025-11-11 15:23:24 +01:00
|
|
|
self.nixosModules.stylix
|
2025-09-13 17:49:17 +02:00
|
|
|
servicepoint-cli.nixosModules.default
|
2025-11-11 12:08:04 +01:00
|
|
|
servicepoint-simulator.nixosModules.default
|
2025-10-12 15:16:44 +02:00
|
|
|
servicepoint-tanks.nixosModules.default
|
2025-11-11 13:15:22 +01:00
|
|
|
stylix.nixosModules.stylix
|
2025-11-11 12:08:04 +01:00
|
|
|
# keep-sorted end
|
2025-09-15 19:01:30 +02:00
|
|
|
])
|
|
|
|
|
++ additional-modules;
|
2025-03-15 11:03:03 +01:00
|
|
|
}
|
|
|
|
|
);
|
2025-11-09 14:47:03 +01:00
|
|
|
|
|
|
|
|
formatter = forAllSystems ({ treefmt-eval, ... }: treefmt-eval.config.build.wrapper);
|
|
|
|
|
|
|
|
|
|
checks = forAllSystems (
|
|
|
|
|
{ treefmt-eval, ... }:
|
|
|
|
|
{
|
|
|
|
|
formatting = treefmt-eval.config.build.check self;
|
|
|
|
|
}
|
|
|
|
|
);
|
2024-10-26 00:04:27 +02:00
|
|
|
};
|
|
|
|
|
}
|