From 312fac6253673d62b29ad59d9aaf366004b96603 Mon Sep 17 00:00:00 2001 From: Olli Helenius Date: Sun, 12 Jan 2025 12:24:33 +0200 Subject: [PATCH 1/5] mattermost-desktop: 5.9.0 -> 5.10.2 --- pkgs/by-name/ma/mattermost-desktop/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ma/mattermost-desktop/package.nix b/pkgs/by-name/ma/mattermost-desktop/package.nix index b6f4085a688f..2197db81bf2f 100644 --- a/pkgs/by-name/ma/mattermost-desktop/package.nix +++ b/pkgs/by-name/ma/mattermost-desktop/package.nix @@ -9,17 +9,17 @@ let pname = "mattermost-desktop"; - version = "5.9.0"; + version = "5.10.2"; srcs = { "x86_64-linux" = { url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-x64.tar.gz"; - hash = "sha256-zLKdfu5p7TyJOw8vJX7i/uu4j0PrUf2/BDmb1kdqqMc="; + hash = "sha256-MSV5ias643eYKmJlJInCuNA2hnaDRv+3c7x4xxZI7Z4="; }; "aarch64-linux" = { url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-arm64.tar.gz"; - hash = "sha256-JljK7d4KLAn1+NwF+VcedL/7hEsp/9LzLdzROa1fgJA="; + hash = "sha256-vuUn7LWs970o1S1CmW3uMiE0Y8XpP0eVtoC2NP13R8w="; }; }; From a8ecc65908dbd20759ea682d5013fc631039f6a6 Mon Sep 17 00:00:00 2001 From: Olli Helenius Date: Sun, 12 Jan 2025 13:55:38 +0200 Subject: [PATCH 2/5] mattermost-desktop: add liff as a maintainer --- pkgs/by-name/ma/mattermost-desktop/package.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/ma/mattermost-desktop/package.nix b/pkgs/by-name/ma/mattermost-desktop/package.nix index 2197db81bf2f..f2f913962512 100644 --- a/pkgs/by-name/ma/mattermost-desktop/package.nix +++ b/pkgs/by-name/ma/mattermost-desktop/package.nix @@ -71,6 +71,9 @@ stdenv.mkDerivation { "x86_64-linux" "aarch64-linux" ]; - maintainers = [ maintainers.joko ]; + maintainers = with lib.maintainers; [ + joko + liff + ]; }; } From 4a49f96c4265c3f8f66b318eec40f6d00470ec45 Mon Sep 17 00:00:00 2001 From: Olli Helenius Date: Sun, 12 Jan 2025 13:56:00 +0200 Subject: [PATCH 3/5] mattermost-desktop: add changelog --- pkgs/by-name/ma/mattermost-desktop/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/ma/mattermost-desktop/package.nix b/pkgs/by-name/ma/mattermost-desktop/package.nix index f2f913962512..2259b85aa791 100644 --- a/pkgs/by-name/ma/mattermost-desktop/package.nix +++ b/pkgs/by-name/ma/mattermost-desktop/package.nix @@ -65,6 +65,7 @@ stdenv.mkDerivation { description = "Mattermost Desktop client"; mainProgram = "mattermost-desktop"; homepage = "https://about.mattermost.com/"; + changelog = "https://github.com/mattermost/desktop/releases/tag/${src.tag}"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; license = licenses.asl20; platforms = [ From ae2526c5c4e39b407efd50bed90e159feaa07e59 Mon Sep 17 00:00:00 2001 From: Olli Helenius Date: Sun, 12 Jan 2025 14:01:07 +0200 Subject: [PATCH 4/5] mattermost-desktop: add a simple package test --- pkgs/by-name/ma/mattermost-desktop/package.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/by-name/ma/mattermost-desktop/package.nix b/pkgs/by-name/ma/mattermost-desktop/package.nix index 2259b85aa791..c6f9c2dec4c8 100644 --- a/pkgs/by-name/ma/mattermost-desktop/package.nix +++ b/pkgs/by-name/ma/mattermost-desktop/package.nix @@ -4,6 +4,8 @@ fetchurl, electron, makeWrapper, + testers, + mattermost-desktop, }: let @@ -61,6 +63,14 @@ stdenv.mkDerivation { runHook postInstall ''; + passthru = { + tests.version = testers.testVersion { + package = mattermost-desktop; + # Invoking with `--version` insists on being able to write to a log file. + command = "env HOME=/tmp ${mattermost-desktop.meta.mainProgram} --version"; + }; + }; + meta = with lib; { description = "Mattermost Desktop client"; mainProgram = "mattermost-desktop"; From a95cc2b35bbddc748b119ebf25cc79b10aa47bad Mon Sep 17 00:00:00 2001 From: Olli Helenius Date: Thu, 2 Jan 2025 14:00:30 +0200 Subject: [PATCH 5/5] mattermost-desktop: build from source --- .../by-name/ma/mattermost-desktop/package.nix | 94 ++++++++++--------- 1 file changed, 52 insertions(+), 42 deletions(-) diff --git a/pkgs/by-name/ma/mattermost-desktop/package.nix b/pkgs/by-name/ma/mattermost-desktop/package.nix index c6f9c2dec4c8..d907d627dda2 100644 --- a/pkgs/by-name/ma/mattermost-desktop/package.nix +++ b/pkgs/by-name/ma/mattermost-desktop/package.nix @@ -1,59 +1,72 @@ { lib, - stdenv, - fetchurl, + fetchFromGitHub, + buildNpmPackage, electron, makeWrapper, testers, mattermost-desktop, + nix-update-script, }: -let - +buildNpmPackage rec { pname = "mattermost-desktop"; version = "5.10.2"; - srcs = { - "x86_64-linux" = { - url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-x64.tar.gz"; - hash = "sha256-MSV5ias643eYKmJlJInCuNA2hnaDRv+3c7x4xxZI7Z4="; - }; - - "aarch64-linux" = { - url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-arm64.tar.gz"; - hash = "sha256-vuUn7LWs970o1S1CmW3uMiE0Y8XpP0eVtoC2NP13R8w="; - }; + src = fetchFromGitHub { + owner = "mattermost"; + repo = "desktop"; + tag = "v${version}"; + hash = "sha256-LHjVmrsOdk8vfsqvNEWkzpusm6jbz3SOb3bEaIb7rb4="; }; - inherit (stdenv.hostPlatform) system; - -in - -stdenv.mkDerivation { - inherit pname version; - - src = fetchurl (srcs."${system}" or (throw "Unsupported system ${system}")); + npmDepsHash = "sha256-LAbqsMdMmmHGgvg2ilz6neQxMOK3jtCKt8K0M8BWifs="; + npmBuildScript = "build-prod"; + makeCacheWritable = true; nativeBuildInputs = [ makeWrapper ]; + env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; + + postPatch = '' + substituteInPlace webpack.config.base.js \ + --replace-fail \ + "const VERSION = childProcess.execSync('git rev-parse --short HEAD', {cwd: __dirname}).toString();" \ + "const VERSION = process.env.version;" + ''; + + postBuild = '' + # electronDist needs to be writable + cp -r ${electron.dist} electron-dist + chmod -R u+w electron-dist + + npm exec electron-builder -- \ + --config electron-builder.json \ + --dir \ + -c.electronDist=electron-dist \ + -c.electronVersion=${electron.version} + ''; + installPhase = '' runHook preInstall - # Mattermost tarball comes with executable bit set for everything. - # We’ll apply it only to files that need it. - find . -type f -print0 | xargs -0 chmod -x - find . -type f \( -name '*.so.*' -o -name '*.s[oh]' \) -print0 | xargs -0 chmod +x - chmod +x mattermost-desktop chrome-sandbox + mkdir --parents \ + $out/bin \ + $out/share/applications \ + $out/share/icons/hicolor/512x512/apps - mkdir -p $out/bin $out/share/applications $out/share/${pname}/ - cp -r app_icon.png create_desktop_file.sh locales/ resources/* $out/share/${pname}/ + readonly dist=release/linux-unpacked - patchShebangs $out/share/${pname}/create_desktop_file.sh - $out/share/${pname}/create_desktop_file.sh - rm $out/share/${pname}/create_desktop_file.sh - mv Mattermost.desktop $out/share/applications/Mattermost.desktop + cp -a $dist/resources $out/share/${pname} + + patchShebangs $dist/create_desktop_file.sh + $dist/create_desktop_file.sh + mv Mattermost.desktop $out/share/applications/ substituteInPlace $out/share/applications/Mattermost.desktop \ - --replace /share/mattermost-desktop/mattermost-desktop /bin/mattermost-desktop + --replace-fail /build/source/$dist/app_icon.png ${pname} \ + --replace-fail /build/source/$dist/ $out/bin/ + + cp src/assets/linux/app_icon.png $out/share/icons/hicolor/512x512/apps/${pname}.png makeWrapper '${lib.getExe electron}' $out/bin/${pname} \ --set-default ELECTRON_IS_DEV 0 \ @@ -67,21 +80,18 @@ stdenv.mkDerivation { tests.version = testers.testVersion { package = mattermost-desktop; # Invoking with `--version` insists on being able to write to a log file. - command = "env HOME=/tmp ${mattermost-desktop.meta.mainProgram} --version"; + command = "env HOME=/tmp ${meta.mainProgram} --version"; }; + updateScript = nix-update-script { }; }; - meta = with lib; { + meta = { description = "Mattermost Desktop client"; mainProgram = "mattermost-desktop"; homepage = "https://about.mattermost.com/"; changelog = "https://github.com/mattermost/desktop/releases/tag/${src.tag}"; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; - license = licenses.asl20; - platforms = [ - "x86_64-linux" - "aarch64-linux" - ]; + license = lib.licenses.asl20; + platforms = electron.meta.platforms; maintainers = with lib.maintainers; [ joko liff