pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / by-name / im / immich-go / package.nix
blob9e996b621a7807f3bb0954970e4a204378452368
1 { lib, buildGoModule, fetchFromGitHub, nix-update-script, testers, immich-go }:
2 buildGoModule rec {
3   pname = "immich-go";
4   version = "0.22.1";
6   src = fetchFromGitHub {
7     owner = "simulot";
8     repo = "immich-go";
9     rev = "${version}";
10     hash = "sha256-6bLjHKkEghbY+UQFrgbfeHwOjtks1HjXbDXEr7DuJbU=";
12     # Inspired by: https://github.com/NixOS/nixpkgs/blob/f2d7a289c5a5ece8521dd082b81ac7e4a57c2c5c/pkgs/applications/graphics/pdfcpu/default.nix#L20-L32
13     # The intention here is to write the information into files in the `src`'s
14     # `$out`, and use them later in other phases (in this case `preBuild`).
15     # In order to keep determinism, we also delete the `.git` directory
16     # afterwards, imitating the default behavior of `leaveDotGit = false`.
17     # More info about git log format can be found at `git-log(1)` manpage.
18     leaveDotGit = true;
19     postFetch = ''
20       cd "$out"
21       git log -1 --pretty=%H > "COMMIT"
22       git log -1 --pretty=%cd --date=format:'%Y-%m-%dT%H:%M:%SZ' > "SOURCE_DATE"
23       rm -rf ".git"
24     '';
25   };
27   vendorHash = "sha256-jED1K2zHv60zxMY4P7Z739uzf7PtlsnvZyStOSLKi4M=";
29   # options used by upstream:
30   # https://github.com/simulot/immich-go/blob/0.13.2/.goreleaser.yaml
31   ldflags = [
32     "-s"
33     "-w"
34     "-extldflags=-static"
35     "-X main.version=${version}"
36   ];
38   preBuild = ''
39     ldflags+=" -X main.commit=$(cat COMMIT)"
40     ldflags+=" -X main.date=$(cat SOURCE_DATE)"
41   '';
43   passthru = {
44     updateScript = nix-update-script { };
45     tests.versionTest = testers.testVersion {
46       package = immich-go;
47       command = "immich-go -version";
48       version = version;
49     };
50   };
52   meta = {
53     description = "Immich client tool for bulk-uploads";
54     longDescription = ''
55       Immich-Go is an open-source tool designed to streamline uploading
56       large photo collections to your self-hosted Immich server.
57     '';
58     homepage = "https://github.com/simulot/immich-go";
59     mainProgram = "immich-go";
60     license = lib.licenses.agpl3Only;
61     maintainers = with lib.maintainers; [ kai-tub ];
62     changelog = "https://github.com/simulot/immich-go/releases/tag/${version}";
63   };