Skip to content
86 changes: 49 additions & 37 deletions pkgs/by-name/po/podman-desktop/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
fetchFromGitHub,
makeWrapper,
copyDesktopItems,
electron_36,
electron_38,
nodejs,
pnpm_10,
makeDesktopItem,
Expand All @@ -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 = ''
Expand All @@ -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 = [
Expand All @@ -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
Comment thread
booxter marked this conversation as resolved.
nodejs
pnpm_10.configHook
]
Expand All @@ -94,50 +93,64 @@ 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 = [
(makeDesktopItem {
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;
})
];

Expand All @@ -148,7 +161,6 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
booxter
panda2134
Comment thread
booxter marked this conversation as resolved.
];
inherit (electron.meta) platforms;
mainProgram = "podman-desktop";
Expand Down
Loading