-
Notifications
You must be signed in to change notification settings - Fork 42
/
flake.nix
101 lines (96 loc) · 3.05 KB
/
flake.nix
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
89
90
91
92
93
94
95
96
97
98
99
100
101
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/release-24.05";
flake-parts.url = "github:hercules-ci/flake-parts";
flake-root.url = "github:srid/flake-root";
gomod2nix.url = "github:nix-community/gomod2nix";
git-hooks = {
url = "github:cachix/git-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
systems.url = "github:nix-systems/default";
treefmt-nix = {
url = "github:numtide/treefmt-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs:
inputs.flake-parts.lib.mkFlake {inherit inputs;} {
systems = inputs.nixpkgs.lib.trivial.id (import inputs.systems);
imports = [
inputs.flake-root.flakeModule
inputs.git-hooks.flakeModule
inputs.treefmt-nix.flakeModule
];
perSystem = {
config,
self',
inputs',
system,
...
}: let
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [inputs.gomod2nix.overlays.default (final: prev: {})];
config = {};
};
version = inputs.self.shortRev or "development";
jenkins-credentials-decryptor = pkgs.buildGoApplication {
inherit version;
pname = "jenkins-credentials-decryptor";
src = ./.;
ldflags = ["-X github.com/lafrenierejm/gron/cmd.Version=${version}"];
modules = ./gomod2nix.toml;
meta = with pkgs.lib; {
description = "Command line tool for decrypting and dumping Jenkins credentials";
homepage = "https://github.com/hoto/jenkins-credentials-decryptor";
license = licenses.mit;
maintainers = with maintainers; [lafrenierejm];
};
};
in {
# Per-system attributes can be defined here. The self' and inputs'
# module parameters provide easy access to attributes of the same
# system.
packages = {
inherit jenkins-credentials-decryptor;
default = jenkins-credentials-decryptor;
};
apps = {
inherit jenkins-credentials-decryptor;
default = jenkins-credentials-decryptor;
};
# Auto formatters.
treefmt.config = {
projectRootFile = ".git/config";
package = pkgs.treefmt;
flakeCheck = false; # use pre-commit's check instead
programs = {
alejandra.enable = true;
};
};
pre-commit = {
check.enable = true;
settings.hooks = {
editorconfig-checker.enable = true;
treefmt.enable = true;
typos.enable = true;
};
};
devShells.default = pkgs.mkShell {
# Inherit all of the pre-commit hooks.
inputsFrom = [config.pre-commit.devShell];
packages =
config.pre-commit.settings.enabledPackages
++ (with pkgs; [
go-tools
godef
gomod2nix
gopls
gotools
(mkGoEnv {pwd = ./.;})
]);
};
};
};
}