diff --git a/pkgs/servers/mattermost/default.nix b/pkgs/servers/mattermost/default.nix index 55ea22500c56..c8b8d4ffb060 100644 --- a/pkgs/servers/mattermost/default.nix +++ b/pkgs/servers/mattermost/default.nix @@ -1,101 +1,50 @@ -{ lib, stdenv, fetchurl, fetchFromGitHub, buildGoPackage, buildEnv +{ lib +, buildGo118Module +, fetchFromGitHub +, fetchurl +, nixosTests +}: -# The suffix for the Mattermost version. -, versionSuffix ? "nixpkgs" +buildGo118Module rec { + pname = "mattermost"; + version = "7.0.1"; -# The constant build date. -, buildDate ? "1970-01-01" - -# Set to true to set the build hash to the Nix store path. -, storePathAsBuildHash ? false }: - -let - version = "6.3.6"; - - goPackagePath = "github.com/mattermost/mattermost-server"; - - mattermost-server-build = buildGoPackage rec { - pname = "mattermost-server"; - inherit version goPackagePath; - - src = fetchFromGitHub { - owner = "mattermost"; - repo = "mattermost-server"; - rev = "v${version}"; - sha256 = "905zxMucDTxxrLoh5ZoAExW4eFmi+xa98aI3EpJZ2Og="; - }; - - ldflags = [ - "-s" "-w" - "-X ${goPackagePath}/model.BuildNumber=${version}${lib.optionalString (versionSuffix != null) "-${versionSuffix}"}" - "-X ${goPackagePath}/model.BuildDate=${buildDate}" - "-X ${goPackagePath}/model.BuildEnterpriseReady=false" - ]; + src = fetchFromGitHub { + owner = "mattermost"; + repo = "mattermost-server"; + rev = "v${version}"; + sha256 = "sha256-oxZaOOV5pkK9HAi/AQ+MLZgfwvF6d/ArzYrXzUQGTDA="; }; - mattermost-server = if storePathAsBuildHash then mattermost-server-build.overrideAttrs (orig: { - buildPhase = '' - origGo="$(type -p go)" - - # Override the Go binary to set the build hash in -ldflags to $out. - # Technically this is more accurate than a Git hash! - # nixpkgs does not appear to support environment variables in ldflags - # for go packages, so we have to rewrite -ldflags before calling go. - go() { - local args=() - local ldflags="-X ${goPackagePath}/model.BuildHash=$out" - local found=0 - for arg in "$@"; do - if [[ "$arg" == -ldflags=* ]] && [ $found -eq 0 ]; then - arg="-ldflags=''${ldflags} ''${arg#-ldflags=}" - found=1 - fi - args+=("$arg") - done - "$origGo" "''${args[@]}" - } - - ${orig.buildPhase} - ''; - }) else mattermost-server-build; - - mattermost-webapp = stdenv.mkDerivation { - pname = "mattermost-webapp"; - inherit version; - - src = fetchurl { - url = "https://releases.mattermost.com/${version}/mattermost-${version}-linux-amd64.tar.gz"; - sha256 = "JDsCDZEtbeBTYuzOSwrxFNRKXy+9KXirjaCz6ODP5uw="; - }; - - installPhase = '' - mkdir -p $out - tar --strip 1 --directory $out -xf $src \ - mattermost/client \ - mattermost/i18n \ - mattermost/fonts \ - mattermost/templates \ - mattermost/config - - # For some reason a bunch of these files are +x... - find $out -type f -exec chmod -x {} \; - ''; + webapp = fetchurl { + url = "https://releases.mattermost.com/${version}/mattermost-${version}-linux-amd64.tar.gz"; + sha256 = "sha256-NWVDPDqdx7mdWCr/qBi8HsUsCJbT63x37UZGecHsZr4="; }; -in - buildEnv { - name = "mattermost-${version}"; - paths = [ mattermost-server mattermost-webapp ]; + vendorSha256 = "sha256-0sKuk0klxeep8J96RntDP9DHsVM4vrOmsKXiaWurVis="; - meta = with lib; { - description = "Open-source, self-hosted Slack-alternative"; - homepage = "https://www.mattermost.org"; - sourceProvenance = with sourceTypes; [ - fromSource - binaryNativeCode # mattermost-webapp - ]; - license = with licenses; [ agpl3 asl20 ]; - maintainers = with maintainers; [ fpletz ryantm numinit ]; - platforms = platforms.unix; - }; - } + subPackages = [ "cmd/mattermost" ]; + + ldflags = [ + "-s" + "-w" + "-X github.com/mattermost/mattermost-server/v6/model.Version=${version}" + ]; + + postInstall = '' + tar --strip 1 --directory $out -xf $webapp \ + mattermost/{client,i18n,fonts,templates,config} + + # For some reason a bunch of these files are executable + find $out/{client,i18n,fonts,templates,config} -type f -exec chmod -x {} \; + ''; + + passthru.tests.mattermost = nixosTests.mattermost; + + meta = with lib; { + description = "Mattermost is an open source platform for secure collaboration across the entire software development lifecycle"; + homepage = "https://www.mattermost.org"; + license = with licenses; [ agpl3 asl20 ]; + maintainers = with maintainers; [ fpletz ryantm numinit kranzes ]; + }; +} diff --git a/pkgs/tools/misc/mmctl/default.nix b/pkgs/tools/misc/mmctl/default.nix index c9de0bf14ca8..2040d18e5f69 100644 --- a/pkgs/tools/misc/mmctl/default.nix +++ b/pkgs/tools/misc/mmctl/default.nix @@ -1,24 +1,33 @@ -{ lib, fetchFromGitHub, buildGoModule }: +{ lib +, fetchFromGitHub +, buildGoModule +}: + buildGoModule rec { pname = "mmctl"; - version = "6.4.2"; + version = "7.0.1"; src = fetchFromGitHub { owner = "mattermost"; repo = "mmctl"; rev = "v${version}"; - sha256 = "sha256-FlqkY4LvAW9Cibs+3UkMDWA+uc62wMh13BllWuxjVZU="; + sha256 = "sha256-xNj8aM3hpcvxwXCdFCfkXDBagIdCjcjWLGNp43KsV10="; }; vendorSha256 = null; checkPhase = "make test"; + ldflags = [ + "-s" + "-w" + "-X github.com/mattermost/mmctl/v6/commands.Version=${version}" + ]; + meta = with lib; { description = "A remote CLI tool for Mattermost"; homepage = "https://github.com/mattermost/mmctl"; license = licenses.asl20; maintainers = with maintainers; [ ppom ]; - platforms = platforms.linux ++ platforms.darwin; }; }