Files
Numbus/flake.nix

82 lines
2.5 KiB
Nix

{
description = "Numbus - Simplified NixOS deployments";
inputs = {
# Nix unstable packages
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
# Nix stable packages
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11";
# Numbus
numbus.url = "https://gittea.dev/numbus/numbus";
# Disko
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
# Sops-nix
sops-nix.url = "github:Mic92/sops-nix";
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
# Flatpaks
nix-flatpak.url = "github:gmodena/nix-flatpak";
};
outputs = { self, nixpkgs, ... }@inputs:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
# Helper for defining systems
mkNumbus = { deviceModule, extraModules ? [], nixpkgsRef, deviceType }: nixpkgsRef.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs deviceType; };
modules = [
inputs.disko.nixosModules.disko
inputs.sops-nix.nixosModules.sops
self.nixosModules.common
deviceModule
] ++ extraModules;
};
in {
nixosModules = {
common = ./modules/common/default.nix;
server = ./modules/server/default.nix;
backup = ./modules/backup/default.nix;
console = ./modules/console/default.nix;
computer = ./modules/computer/default.nix;
tv = ./modules/tv/default.nix;
};
nixosConfigurations = {
numbus-server = mkNumbus {
deviceModule = self.nixosModules.server;
nixpkgsRef = inputs.nixpkgs-stable;
deviceType = "server";
};
numbus-backup = mkNumbus {
deviceModule = self.nixosModules.backup;
nixpkgsRef = inputs.nixpkgs-stable;
deviceType = "backup";
};
numbus-computer = mkNumbus {
deviceModule = self.nixosModules.computer;
extraModules = [ inputs.nix-flatpak.nixosModules.nix-flatpak ];
nixpkgsRef = inputs.nixpkgs;
deviceType = "computer";
};
numbus-console = mkNumbus {
deviceModule = self.nixosModules.console;
nixpkgsRef = inputs.nixpkgs;
deviceType = "console";
};
numbus-tv = mkNumbus {
deviceModule = self.nixosModules.tv;
nixpkgsRef = inputs.nixpkgs;
extraModules = [ inputs.nix-flatpak.nixosModules.nix-flatpak ];
deviceType = "tv";
};
};
};
}