diff --git a/flake.nix b/flake.nix index 5d9d240cc4..9f98752e7e 100644 --- a/flake.nix +++ b/flake.nix @@ -26,11 +26,22 @@ let pkgs = pkgsFor system; paseo = pkgs.callPackage ./nix/package.nix { }; + versionParts = pkgs.lib.splitString "." paseo.version; + sourceRevision = if self ? revCount && self.revCount != null then self.revCount else 0; + buildRevision = sourceRevision - (sourceRevision / 10000) * 10000; + desktopBuildVersion = pkgs.lib.concatStringsSep "." [ + (builtins.elemAt versionParts 0) + (builtins.elemAt versionParts 1) + (toString buildRevision) + ]; in { default = paseo; paseo = paseo; - desktop = pkgs.callPackage ./nix/desktop-package.nix { inherit paseo; }; + desktop = pkgs.callPackage ./nix/desktop-package.nix { + inherit paseo; + buildVersion = desktopBuildVersion; + }; } ); diff --git a/nix/desktop-package.nix b/nix/desktop-package.nix index 3494afa6af..cadb074f02 100644 --- a/nix/desktop-package.nix +++ b/nix/desktop-package.nix @@ -10,6 +10,7 @@ makeDesktopItem, electron, libuv, + buildVersion, # Reuse the daemon's prebuilt npm-deps FOD. Same lockfile, same content — # without this, the desktop drv produces a separately-named store path # (`paseo-desktop--npm-deps`) and refetches the entire registry. Override @@ -126,6 +127,7 @@ buildNpmPackage { --mac \ --publish never \ --config.electronDist="$electron_dist" \ + --config.buildVersion=${lib.escapeShellArg buildVersion} \ --config.mac.identity=null \ --config.mac.hardenedRuntime=false \ --config.mac.notarize=false diff --git a/packages/desktop/electron-builder.yml b/packages/desktop/electron-builder.yml index bbee5e034d..01cd43d080 100644 --- a/packages/desktop/electron-builder.yml +++ b/packages/desktop/electron-builder.yml @@ -42,6 +42,8 @@ mac: extraResources: - from: bin/paseo to: bin/paseo + - from: assets/icon.png + to: icon.png target: - dmg - zip diff --git a/packages/desktop/src/main.ts b/packages/desktop/src/main.ts index 5509fdd0e7..07621fb7f4 100644 --- a/packages/desktop/src/main.ts +++ b/packages/desktop/src/main.ts @@ -651,8 +651,8 @@ function applyAppIcon(): void { return; } - const iconPath = path.resolve(__dirname, "../assets/icon.png"); - if (!existsSync(iconPath)) { + const iconPath = getWindowIconPath(); + if (!iconPath) { return; }