{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; flake-parts.url = "github:hercules-ci/flake-parts"; git-hooks.url = "github:cachix/git-hooks.nix"; agenix.url = "github:ryantm/agenix"; disko.url = "github:nix-community/disko"; nixops4.url = "github:nixops4/nixops4"; nixops4-nixos.url = "github:nixops4/nixops4-nixos"; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; imports = [ inputs.git-hooks.flakeModule inputs.nixops4.modules.flake.default ./infra/flake-part.nix ./services/flake-part.nix ]; perSystem = { config, pkgs, lib, inputs', ... }: { formatter = pkgs.nixfmt-rfc-style; pre-commit.settings.hooks = let ## Add a directory here if pre-commit hooks shouldn't apply to it. optout = [ "npins" ]; excludes = map (dir: "^${dir}/") optout; addExcludes = lib.mapAttrs (_: c: c // { inherit excludes; }); in addExcludes { nixfmt-rfc-style.enable = true; deadnix.enable = true; trim-trailing-whitespace.enable = true; shellcheck.enable = true; }; devShells.default = pkgs.mkShell { packages = [ pkgs.nil inputs'.agenix.packages.default (inputs'.nixops4.packages.default.overrideAttrs { impureEnvVars = [ "DEPLOYMENT" ]; }) pkgs.httpie pkgs.jq ]; shellHook = config.pre-commit.installationScript; }; }; }; }