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 | {
description = "A basic gomod2nix flake";
inputs = {
nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.zst";
gomod2nix = {
url = "github:nix-community/gomod2nix";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
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"
];
perSystem =
{
config,
inputs',
pkgs,
...
}:
{
pre-commit = {
settings = {
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;
extraPackages = [ pkgs.go ];
};
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;
};
};
};
}
|