Merge pull request #329823 from ExpidusOS/fix/pkgsllvm/elfutils
[NixPkgs.git] / pkgs / servers / mattermost / default.nix
blob786b0e294739efd9de1983cb87d8de9329d0c0bf
1 { lib
2 , buildGoModule
3 , fetchFromGitHub
4 , nix-update-script
5 , fetchurl
6 , nixosTests
7 }:
9 buildGoModule rec {
10   pname = "mattermost";
11   # ESR releases only.
12   # See https://docs.mattermost.com/upgrade/extended-support-release.html
13   # When a new ESR version is available (e.g. 8.1.x -> 9.5.x), update
14   # the version regex in passthru.updateScript as well.
15   version = "9.5.6";
17   src = fetchFromGitHub {
18     owner = "mattermost";
19     repo = "mattermost";
20     rev = "v${version}";
21     hash = "sha256-bLnvbduP6h9o82BQUNh9MyFpW/Cbl6c5o9hrPV0Z8+0=";
22   };
24   # Needed because buildGoModule does not support go workspaces yet.
25   # We use go 1.22's workspace vendor command, which is not yet available
26   # in the default version of go used in nixpkgs, nor is it used by upstream:
27   # https://github.com/mattermost/mattermost/issues/26221#issuecomment-1945351597
28   overrideModAttrs = (_: {
29     buildPhase = ''
30       make setup-go-work
31       go work vendor -e
32     '';
33   });
35   webapp = fetchurl {
36     url = "https://releases.mattermost.com/${version}/mattermost-${version}-linux-amd64.tar.gz";
37     hash = "sha256-ZlvO/7kdMopIHBDdFp6wSQCR+NobGdDC6PcVd1iG16E=";
38   };
40   # Makes nix-update-script pick up the fetchurl for the webapp.
41   # https://github.com/Mic92/nix-update/blob/1.3.1/nix_update/eval.py#L179
42   offlineCache = webapp;
44   vendorHash = "sha256-TJCtgNf56A1U0EbV5gXjTro+YudVBRWiSZoBC3nJxnE=";
46   modRoot = "./server";
47   preBuild = ''
48     make setup-go-work
49   '';
51   subPackages = [ "cmd/mattermost" ];
53   tags = [ "production" ];
55   ldflags = [
56     "-s"
57     "-w"
58     "-X github.com/mattermost/mattermost/server/public/model.Version=${version}"
59     "-X github.com/mattermost/mattermost/server/public/model.BuildNumber=${version}-nixpkgs"
60     "-X github.com/mattermost/mattermost/server/public/model.BuildDate=1970-01-01"
61     "-X github.com/mattermost/mattermost/server/public/model.BuildHash=v${version}"
62     "-X github.com/mattermost/mattermost/server/public/model.BuildHashEnterprise=none"
63     "-X github.com/mattermost/mattermost/server/public/model.BuildEnterpriseReady=false"
64   ];
66   postInstall = ''
67     tar --strip 1 --directory $out -xf $webapp \
68       mattermost/{client,i18n,fonts,templates,config}
70     # For some reason a bunch of these files are executable
71     find $out/{client,i18n,fonts,templates,config} -type f -exec chmod -x {} \;
72   '';
74   passthru = {
75     updateScript = nix-update-script {
76       extraArgs = [ "--version-regex" "^v(9\.5\.[0-9]+)$" ];
77     };
78     tests.mattermost = nixosTests.mattermost;
79   };
81   meta = with lib; {
82     description = "Mattermost is an open source platform for secure collaboration across the entire software development lifecycle";
83     homepage = "https://www.mattermost.org";
84     license = with licenses; [ agpl3Only asl20 ];
85     maintainers = with maintainers; [ ryantm numinit kranzes mgdelacroix ];
86     mainProgram = "mattermost";
87   };