{ description = "Homelab configuration using flakes (v2 GitOps)"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; utils = { url = "github:gytis-ivaskevicius/flake-utils-plus"; inputs.flake-utils.follows = "flake-utils"; }; comin = { url = "github:nlewo/comin"; inputs.nixpkgs.follows = "nixpkgs"; }; pre-commit-hooks = { url = "github:cachix/pre-commit-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, nixpkgs, flake-utils, sops-nix, utils, comin, pre-commit-hooks, ... }: let system = utils.lib.system.x86_64-linux; in utils.lib.mkFlake { inherit self inputs; outputsBuilder = channels: let pkgs = channels.nixpkgs; system = pkgs.system; pre-commit-check = pre-commit-hooks.lib.${system}.run { src = ./.; hooks = { nixfmt-rfc-style.enable = true; statix.enable = true; terraform-format.enable = true; }; }; in { checks = { inherit pre-commit-check; }; devShells.default = pkgs.mkShell { inherit (pre-commit-check) shellHook; buildInputs = pre-commit-check.enabledPackages; }; }; hostDefaults = { inherit system; modules = [ ./modules ./users sops-nix.nixosModules.sops comin.nixosModules.comin # Base comin configuration for all nodes ({ config, pkgs, ... }: { services.comin = { enable = true; remotes = [{ name = "origin"; # Replace with actual internal forgejo URL once available url = "https://github.com/example/nix-config.git"; branches.main.name = "v2"; }]; }; }) ]; }; hosts = { # Hosts will be populated here as they are migrated to the v2 branch. }; }; }