{ description = "My NixOS configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nur.url = "github:nix-community/NUR"; stylix.url = "github:pizzapim/stylix/release-24.05"; treefmt-nix.url = "github:numtide/treefmt-nix"; nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; git-hooks = { url = "github:cachix/git-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; nix-index-database = { url = "github:nix-community/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager?ref=release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-artwork = { type = "git"; url = "https://github.com/NixOS/nixos-artwork.git"; flake = false; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-cosmic = { url = "github:lilyinstarlight/nixos-cosmic"; inputs.nixpkgs-stable.follows = "nixpkgs-unstable"; }; }; outputs = { self, nixpkgs, ... } @ inputs: let supportedSystems = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; forAllSystems' = nixpkgs.lib.genAttrs; forAllSystems = forAllSystems' supportedSystems; pkgsForSystem = system: import nixpkgs { inherit system; }; treefmtEval = forAllSystems ( system: inputs.treefmt-nix.lib.evalModule (pkgsForSystem system) ./treefmt.nix ); in { formatter = forAllSystems (system: (treefmtEval.${system}.config.build.wrapper)); nixosConfigurations = nixpkgs.lib.mapAttrs ( name: nixosModule: nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; specialArgs = { inherit inputs system self; }; modules = [ nixosModule ./nixos ]; } ) (import ./machines); checks = forAllSystems (system: { pre-commit-check = inputs.git-hooks.lib.${system}.run { src = ./.; hooks = { treefmt = { enable = true; package = treefmtEval.${system}.config.build.wrapper; }; }; }; }); devShells = forAllSystems (system: { default = nixpkgs.legacyPackages.${system}.mkShell { inherit (self.checks.${system}.pre-commit-check) shellHook; buildInputs = self.checks.${system}.pre-commit-check.enabledPackages; }; }); colmena = { meta = { nixpkgs = import nixpkgs { system = "x86_64-linux"; }; specialArgs = { inherit inputs self; }; nodeSpecialArgs = { sue = {}; }; }; sue = { name, nodes, ... }: { deployment = { allowLocalDeployment = true; targetHost = null; }; imports = [ (import ./machines).sue ./nixos ]; }; gamepc = { name, nodes, ... }: { deployment = { targetHost = "gamepc.lan"; targetUser = "root"; }; imports = [ (import ./machines).gamepc ./nixos ]; }; }; }; }