all repos — erl @ c8ab7c849959313a035bf9e448d110e794190a4f

Execute Reload Loop

flake.nix (view raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
{
  description = "A basic gomod2nix flake";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    flake-utils.url = "github:numtide/flake-utils";
    gomod2nix = {
      url = "github:nix-community/gomod2nix";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        flake-utils.follows = "flake-utils";
      };
    };
    pre-commit-hooks = {
      url = "github:cachix/pre-commit-hooks.nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    flake-parts.url = "github:hercules-ci/flake-parts";
    files.url = "github:mightyiam/files";
    git-hooks = {
      url = "github:cachix/git-hooks.nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs =
    inputs@{ flake-parts, ... }:
    flake-parts.lib.mkFlake { inherit inputs; } {
      imports = with inputs; [
        files.flakeModules.default
        git-hooks.flakeModule
      ];
      systems = [
        "aarch64-linux"
        "x86_64-linux"
        "aarch64-darwin"
        "x86_64-darwin"
      ];
      perSystem =
        {
          config,
          inputs',
          pkgs,
          ...
        }:
        {
          pre-commit = {
            settings = {
              enabledPackages = with pkgs; [
                go
              ];
              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;
                gomod2nix = {
                  enable = true;
                  name = "gomod2nix";
                  description = "Import go.mod updates to nix";
                  types_or = [ "go-sum" ];
                  entry = "${inputs'.gomod2nix.legacyPackages.gomod2nix}/bin/gomod2nix";
                  pass_filenames = false;
                };
              };
            };
          };
          packages.default = pkgs.callPackage ./. {
            inherit (inputs'.gomod2nix.legacyPackages) buildGoApplication;
          };
          devShells.default = pkgs.callPackage ./shell.nix {
            shellHook = config.pre-commit.installationScript;
            inherit (inputs'.gomod2nix.legacyPackages) mkGoEnv gomod2nix;
          };
        };
    };
}