1{ lib, buildGoModule, fetchFromGitHub, makeBinaryWrapper }:
2
3buildGoModule rec {
4 pname = "docker-slim";
5 version = "1.40.6";
6
7 src = fetchFromGitHub {
8 owner = "slimtoolkit";
9 repo = "slim";
10 rev = version;
11 hash = "sha256-0rn+tqdPVjkIPxOwL9rDnolrpcsDOwOah0Y7924mjD4=";
12 };
13
14 vendorHash = null;
15
16 subPackages = [ "cmd/slim" "cmd/slim-sensor" ];
17
18 nativeBuildInputs = [ makeBinaryWrapper ];
19
20 preBuild = ''
21 go generate github.com/docker-slim/docker-slim/pkg/appbom
22 '';
23
24 ldflags = [
25 "-s"
26 "-w"
27 "-X github.com/docker-slim/docker-slim/pkg/version.appVersionTag=${version}"
28 "-X github.com/docker-slim/docker-slim/pkg/version.appVersionRev=${src.rev}"
29 ];
30
31 # docker-slim tries to create its state dir next to the binary (inside the nix
32 # store), so we set it to use the working directory at the time of invocation
33 postInstall = ''
34 wrapProgram "$out/bin/slim" --add-flags '--state-path "$(pwd)"'
35 '';
36
37 meta = with lib; {
38 description = "Minify and secure Docker containers";
39 homepage = "https://slimtoolkit.org/";
40 changelog = "https://github.com/slimtoolkit/slim/raw/${version}/CHANGELOG.md";
41 license = licenses.asl20;
42 maintainers = with maintainers; [ Br1ght0ne marsam mbrgm ];
43 };
44}