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; }; }; }; } |