use treefmt-nix to format everything
1 file changed, 114 insertions(+), 81 deletions(-)
changed files
M flake.nix → flake.nix
@@ -7,94 +7,127 @@ inputs.gomod2nix.inputs.nixpkgs.follows = "nixpkgs"; inputs.gomod2nix.inputs.flake-utils.follows = "utils"; inputs.pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; inputs.pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs"; + inputs.treefmt-nix.url = "github:numtide/treefmt-nix"; - outputs = { self, nixpkgs, utils, pre-commit-hooks, gomod2nix, ... }: - utils.lib.eachDefaultSystem - (system: - let - pkgs = import nixpkgs { - inherit system; - overlays = [ - gomod2nix.overlays.default - ]; - }; - commonShellPackages = with pkgs; [ - go - hyperlink - just - ko - flyctl - redis - sqlc + outputs = + { + self, + nixpkgs, + utils, + pre-commit-hooks, + gomod2nix, + treefmt-nix, + ... + }: + utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ + gomod2nix.overlays.default ]; - devPackages = with pkgs; [ - wgo - gopls - gotools - gomod2nix.legacyPackages.${system}.gomod2nix + }; + commonShellPackages = with pkgs; [ + go + hyperlink + just + ko + flyctl + redis + sqlc + ]; + devPackages = with pkgs; [ + wgo + gofumpt + gopls + gotools + gomod2nix.legacyPackages.${system}.gomod2nix + sqlfluff - systemfd - modd - ]; - in - { - devShells = { - ci = pkgs.mkShell { - packages = commonShellPackages; - }; - default = pkgs.mkShell { - inherit (self.checks.${system}.pre-commit-check) shellHook; - packages = devPackages ++ commonShellPackages; - }; + systemfd + modd + ]; + treefmtEval = treefmt-nix.lib.evalModule pkgs { + projectRootFile = "flake.nix"; + programs = { + nixfmt.enable = true; + taplo.enable = true; + mdformat.enable = true; + gofumpt.enable = true; + golines.enable = true; + prettier.enable = true; + sqlfluff.enable = true; + sqlfluff.dialect = "sqlite"; + }; + settings = { + taplo.excludes = [ "gomod2nix.toml" ]; + }; + }; + in + { + devShells = { + ci = pkgs.mkShell { + packages = commonShellPackages; + }; + default = pkgs.mkShell { + inherit (self.checks.${system}.pre-commit-check) shellHook; + packages = devPackages ++ commonShellPackages; }; - checks = { - pre-commit-check = pre-commit-hooks.lib.${system}.run { - src = ./.; - hooks = { - go-mod-tidy = { - enable = true; - name = "go-mod-tidy"; - description = "Run `go mod tidy`"; - types_or = [ "go" "go-mod" ]; - entry = "${pkgs.go}/bin/go mod tidy"; - pass_filenames = false; - }; - golines.enable = true; - golangci-lint.enable = true; - gotest.enable = true; - govet.enable = true; - gomod2nix = { - enable = true; - name = "gomod2nix"; - description = "Import go.mod updates to nix"; - types_or = [ "go-sum" ]; - entry = "${pkgs.gomod2nix}/bin/gomod2nix"; - pass_filenames = false; - }; - sqlc = { - enable = true; - name = "sqlc"; - description = "Generate go code from SQL"; - types_or = [ "sql" ]; - entry = "${pkgs.sqlc}/bin/sqlc generate"; - pass_filenames = false; - }; + }; + formatter = treefmtEval.config.build.wrapper; + checks = { + pre-commit-check = pre-commit-hooks.lib.${system}.run { + src = ./.; + hooks = { + go-mod-tidy = { + enable = true; + name = "go-mod-tidy"; + description = "Run `go mod tidy`"; + types_or = [ + "go" + "go-mod" + ]; + entry = "${pkgs.go}/bin/go mod tidy"; + pass_filenames = false; + }; + golines.enable = true; + golangci-lint.enable = true; + gotest.enable = true; + govet.enable = true; + gomod2nix = { + enable = true; + name = "gomod2nix"; + description = "Import go.mod updates to nix"; + types_or = [ "go-sum" ]; + entry = "${pkgs.gomod2nix}/bin/gomod2nix"; + pass_filenames = false; + }; + sqlc = { + enable = true; + name = "sqlc"; + description = "Generate go code from SQL"; + types_or = [ "sql" ]; + entry = "${pkgs.sqlc}/bin/sqlc generate"; + pass_filenames = false; }; }; }; - packages = { - build = pkgs.buildGoApplication { - pname = "build"; - version = self.shortRev or self.dirtyShortRev; - src = ./.; - modules = ./gomod2nix.toml; - subPackages = [ "domain/content/builder/build" ]; - nativeBuildInputs = with pkgs; [ makeWrapper ]; + }; + packages = { + build = pkgs.buildGoApplication { + pname = "build"; + version = self.shortRev or self.dirtyShortRev; + src = ./.; + modules = ./gomod2nix.toml; + subPackages = [ "domain/content/builder/build" ]; + nativeBuildInputs = with pkgs; [ makeWrapper ]; - postInstall = '' - wrapProgram $out/bin/build --set KO_DATA_PATH ${./kodata} - ''; - }; + postInstall = '' + wrapProgram $out/bin/build --set KO_DATA_PATH ${./kodata} + ''; }; - }); + }; + } + ); }