diff --git a/pkgs/by-name/po/podman-desktop/package.nix b/pkgs/by-name/po/podman-desktop/package.nix index 92a673f11ed86..a71efb9b166bb 100644 --- a/pkgs/by-name/po/podman-desktop/package.nix +++ b/pkgs/by-name/po/podman-desktop/package.nix @@ -4,7 +4,7 @@ fetchFromGitHub, makeWrapper, copyDesktopItems, - electron_36, + electron_38, nodejs, pnpm_10, makeDesktopItem, @@ -15,26 +15,28 @@ nix, jq, gnugrep, + podman, }: let - electron = electron_36; + electron = electron_38; + appName = "Podman Desktop"; in stdenv.mkDerivation (finalAttrs: { pname = "podman-desktop"; - version = "1.19.1"; + version = "1.22.1"; passthru.updateScript = _experimental-update-script-combinators.sequence [ (nix-update-script { }) (lib.getExe (writeShellApplication { - name = "${finalAttrs.pname}-dependencies-updater"; + name = "podman-desktop-dependencies-updater"; runtimeInputs = [ nix jq gnugrep ]; runtimeEnv = { - PNAME = finalAttrs.pname; + PNAME = "podman-desktop"; PKG_FILE = builtins.toString ./package.nix; }; text = '' @@ -55,13 +57,13 @@ stdenv.mkDerivation (finalAttrs: { owner = "containers"; repo = "podman-desktop"; tag = "v${finalAttrs.version}"; - hash = "sha256-HTfrbMwXw+GGseVzJR2eagBJ7AmuPeFMuy/lO7EADmY="; + hash = "sha256-+YM1fiY2bH5nY1L/xWjMbWe5lH1LfyKW47OzCROB3nE="; }; pnpmDeps = pnpm_10.fetchDeps { inherit (finalAttrs) pname version src; fetcherVersion = 1; - hash = "sha256-6xXTzqEeWpDKhZN6z4dSHrU7qWK9AAlD2DXnr7ac0So="; + hash = "sha256-2Cja6CQxjOlxjhsjGQ5C9a/C/2RfzKdvtRCKO7VztwQ="; }; patches = [ @@ -71,11 +73,8 @@ stdenv.mkDerivation (finalAttrs: { ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; - # Don't attempt to sign the darwin app bundle. - # It's impure and may fail in some restricted environments. - CSC_IDENTITY_AUTO_DISCOVERY = lib.optionals stdenv.hostPlatform.isDarwin "false"; - nativeBuildInputs = [ + makeWrapper nodejs pnpm_10.configHook ] @@ -94,38 +93,52 @@ stdenv.mkDerivation (finalAttrs: { chmod -R u+w electron-dist pnpm build + + # Explicitly set identity to null to avoid signing on arm64 macs with newer electron-builder. + # See: https://github.com/electron-userland/electron-builder/pull/9007 ./node_modules/.bin/electron-builder \ --dir \ --config .electron-builder.config.cjs \ + -c.mac.identity=null \ -c.electronDist=electron-dist \ -c.electronVersion=${electron.version} runHook postBuild ''; - installPhase = '' - runHook preInstall - - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - mkdir -p $out/Applications - mv dist/mac*/Podman\ Desktop.app $out/Applications - '' - + lib.optionalString (!stdenv.hostPlatform.isDarwin) '' - mkdir -p "$out/share/lib/podman-desktop" - cp -r dist/*-unpacked/{locales,resources{,.pak}} "$out/share/lib/podman-desktop" - - install -Dm644 buildResources/icon.svg "$out/share/icons/hicolor/scalable/apps/podman-desktop.svg" - - makeWrapper '${electron}/bin/electron' "$out/bin/podman-desktop" \ - --add-flags "$out/share/lib/podman-desktop/resources/app.asar" \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ - --inherit-argv0 - '' - + '' - - runHook postInstall - ''; + installPhase = + let + commonWrapperArgs = "--prefix PATH : ${lib.makeBinPath [ podman ]}"; + in + ( + '' + runHook preInstall + + '' + + lib.optionalString stdenv.hostPlatform.isDarwin '' + mkdir -p "$out/Applications" + mv dist/mac*/"${appName}.app" "$out/Applications" + + wrapProgram "$out/Applications/${appName}.app/Contents/MacOS/${appName}" \ + ${commonWrapperArgs} + '' + + lib.optionalString (!stdenv.hostPlatform.isDarwin) '' + mkdir -p "$out/share/lib/podman-desktop" + cp -r dist/*-unpacked/{locales,resources{,.pak}} "$out/share/lib/podman-desktop" + + install -Dm644 buildResources/icon.svg "$out/share/icons/hicolor/scalable/apps/podman-desktop.svg" + + makeWrapper '${electron}/bin/electron' "$out/bin/podman-desktop" \ + --add-flags "$out/share/lib/podman-desktop/resources/app.asar" \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ + ${commonWrapperArgs} \ + --inherit-argv0 + '' + + '' + + runHook postInstall + '' + ); # see: https://github.com/containers/podman-desktop/blob/main/.flatpak.desktop desktopItems = [ @@ -133,11 +146,11 @@ stdenv.mkDerivation (finalAttrs: { name = "podman-desktop"; exec = "podman-desktop %U"; icon = "podman-desktop"; - desktopName = "Podman Desktop"; + desktopName = appName; genericName = "Desktop client for podman"; comment = finalAttrs.meta.description; categories = [ "Utility" ]; - startupWMClass = "Podman Desktop"; + startupWMClass = appName; }) ]; @@ -148,7 +161,6 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.asl20; maintainers = with lib.maintainers; [ booxter - panda2134 ]; inherit (electron.meta) platforms; mainProgram = "podman-desktop";