{
  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
              pkgs.httpie
              pkgs.jq
            ];
            shellHook = config.pre-commit.installationScript;
          };
        };
    };
}