{ 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"; }; }; }; }