nixos-configs/flake.nix

223 lines
6.1 KiB
Nix
Raw Normal View History

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
2025-05-01 22:19:50 +02:00
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
home-manager = {
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-11-24 18:10:44 +01:00
2025-03-16 10:25:59 +01:00
niri = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs";
};
zerforschen-plus = {
url = "git+https://git.berlin.ccc.de/vinzenz/zerforschen.plus";
inputs.nixpkgs.follows = "nixpkgs";
};
2025-05-10 13:24:08 +02:00
naersk = {
url = "github:nix-community/naersk";
inputs.nixpkgs.follows = "nixpkgs";
};
servicepoint-cli = {
url = "git+https://git.berlin.ccc.de/servicepoint/servicepoint-cli.git";
inputs = {
nixpkgs.follows = "nixpkgs";
naersk.follows = "naersk";
};
2025-05-10 13:24:08 +02:00
};
servicepoint-simulator = {
url = "git+https://git.berlin.ccc.de/servicepoint/servicepoint-simulator.git";
inputs = {
nixpkgs.follows = "nixpkgs";
naersk.follows = "naersk";
};
2025-05-10 13:24:08 +02:00
};
nix-vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
};
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-03-16 10:25:59 +01:00
niri,
zerforschen-plus,
2025-05-01 22:19:50 +02:00
nixpkgs-unstable,
2025-05-10 13:24:08 +02:00
servicepoint-cli,
servicepoint-simulator,
nix-vscode-extensions,
...
2024-10-27 12:33:35 +01:00
}:
let
devices = {
vinzenz-lpt2 = "x86_64-linux";
vinzenz-pc2 = "x86_64-linux";
2025-04-13 21:40:52 +02:00
ronja-pc = "x86_64-linux";
hetzner-vpn2 = "aarch64-linux";
forgejo-runner-1 = "aarch64-linux";
};
2025-03-16 10:25:59 +01:00
homeDevices = [
"vinzenz-lpt2"
"vinzenz-pc2"
2025-04-13 21:40:52 +02:00
"ronja-pc"
2025-03-16 10:25:59 +01:00
];
2025-09-13 17:49:17 +02:00
lib = nixpkgs.lib;
forDevice = f: lib.mapAttrs f devices;
supported-systems = [
"x86_64-linux"
"aarch64-linux"
];
forAllSystems =
f:
2025-09-13 17:49:17 +02:00
lib.genAttrs supported-systems (
system:
f rec {
inherit system;
pkgs = nixpkgs.legacyPackages.${system};
}
);
in
2025-09-14 12:37:29 +02:00
{
lib = {
importDir =
dir:
(lib.attrsets.mapAttrs' (
m: _:
lib.attrsets.nameValuePair (lib.strings.removeSuffix ".nix" m) { imports = [ "${dir}/${m}" ]; }
) (builtins.readDir dir));
};
nixosConfigurations = forDevice (
device: system:
2025-05-10 13:24:08 +02:00
let
2025-09-14 13:36:45 +02:00
commonSpecialArgs = {
2025-09-13 15:10:42 +02:00
inherit device;
2025-09-14 13:36:45 +02:00
vinzenzHomeModules = self.homeModules;
2025-09-15 17:18:59 +02:00
vinzenzLib = self.lib;
2025-05-10 13:24:08 +02:00
};
in
nixpkgs.lib.nixosSystem {
2025-09-14 13:36:45 +02:00
inherit system;
specialArgs = commonSpecialArgs // {
vinzenzNixosModules = self.nixosModules;
};
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-09-13 17:49:17 +02:00
self.nixosModules.lix-is-nix
self.nixosModules.globalinstalls
self.nixosModules.autoupdate
self.nixosModules.openssh
2025-09-13 18:08:41 +02:00
self.nixosModules.tailscale
2025-09-14 12:22:20 +02:00
self.nixosModules.allowed-unfree-list
self.nixosModules.extra-caches
2025-09-14 14:12:14 +02:00
self.nixosModules.systemd-boot
zerforschen-plus.nixosModules.default
2025-09-06 19:16:13 +02:00
]
++ (nixpkgs.lib.optionals (builtins.elem device homeDevices) [
2025-09-13 15:25:54 +02:00
{
2025-09-14 13:36:45 +02:00
home-manager = {
extraSpecialArgs = commonSpecialArgs;
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-09-14 13:00:03 +02:00
self.homeModules.adwaita
2025-09-14 13:36:45 +02:00
self.homeModules.git
self.homeModules.templates
self.homeModules.zsh-basics
self.homeModules.nano
2025-09-15 17:18:59 +02:00
self.homeModules.gnome-extensions
2025-09-14 12:22:20 +02:00
];
2025-09-13 15:25:54 +02:00
}
2025-09-13 17:49:17 +02:00
self.nixosModules.pkgs-unstable
self.nixosModules.pkgs-vscode-extensions
2025-09-13 17:49:17 +02:00
self.nixosModules.niri
self.nixosModules.kdeconnect
self.nixosModules.en-de
2025-09-13 18:20:00 +02:00
self.nixosModules.gnome
2025-09-14 13:36:45 +02:00
self.nixosModules.modern-desktop
self.nixosModules.nix-ld
2025-09-14 14:01:42 +02:00
self.nixosModules.quiet-boot
2025-09-14 14:12:14 +02:00
self.nixosModules.firmware-updates
2025-09-13 17:49:17 +02:00
home-manager.nixosModules.home-manager
servicepoint-simulator.nixosModules.default
servicepoint-cli.nixosModules.default
2025-09-06 19:16:13 +02:00
]);
}
);
2024-10-27 12:33:35 +01:00
2025-05-01 22:19:50 +02:00
overlays = {
unstable-packages = final: prev: {
unstable = import nixpkgs-unstable {
system = prev.system;
config = prev.config;
};
};
2025-09-13 14:05:04 +02:00
};
2025-09-14 12:37:29 +02:00
nixosModules = (self.lib.importDir ./nixosModules) // {
2025-09-13 17:49:17 +02:00
niri = {
imports = [ niri.nixosModules.niri ];
nixpkgs.overlays = [ niri.overlays.niri ];
};
pkgs-unstable = {
nixpkgs.overlays = [ self.overlays.unstable-packages ];
};
pkgs-vscode-extensions = {
2025-09-13 17:49:17 +02:00
nixpkgs.overlays = [ nix-vscode-extensions.overlays.default ];
2025-05-10 13:24:08 +02:00
};
2025-09-13 17:49:17 +02:00
};
2025-05-01 22:19:50 +02:00
homeModules = self.lib.importDir ./homeModules;
2025-09-14 12:22:20 +02:00
formatter = forAllSystems ({ pkgs, ... }: pkgs.nixfmt-tree);
};
}