{ self, inputs, ... }: { perSystem = { system, pkgs, ... }: let treefmtEval = inputs.treefmt-nix.lib.evalModule pkgs { projectRootFile = "flake.nix"; programs = { nixfmt.enable = true; deadnix.enable = true; }; }; mkPreCommitHooks = src: inputs.pre-commit-hooks.lib.${system}.run { inherit src; hooks = { check-merge-conflicts.enable = true; deadnix.enable = true; detect-private-keys.enable = true; end-of-file-fixer.enable = true; mixed-line-endings.enable = true; shellcheck = { enable = true; excludes = [ "\\.envrc$" ]; }; flake-checker.enable = true; treefmt = { enable = true; entry = "${treefmtEval.config.build.wrapper}/bin/treefmt --ci"; }; trim-trailing-whitespace.enable = true; }; }; pre-commit-check = mkPreCommitHooks ./.; scripts = import "${self}/scripts" { inherit pkgs self system inputs ; }; in { devShells = { default = pkgs.mkShellNoCC { inherit (pre-commit-check) shellHook; packages = with pkgs; [ nixos-rebuild git inputs.agenix.packages."${system}".default ] ++ scripts.all; }; }; }; }