{ 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"; }; pre-commit-hooks = { url = "github:cachix/pre-commit-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, nixpkgs, flake-utils, sops-nix, utils, 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 ({ config, pkgs, ... }: { # Inject git revision for our custom GitOps module to query system.configurationRevision = self.rev or self.dirtyRev or "unknown"; }) ]; }; hosts = { izanagi.modules = [ ./hosts/izanagi ]; }; }; }