diff options
author | Sandro <sandro.jaeckel@gmail.com> | 2023-03-30 16:55:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-30 16:55:04 +0200 |
commit | b97ea5900b3ee465eba3811f75f8b36d552184f5 (patch) | |
tree | 5a5da3895e3719a3b7294b98a28d038bef5c442e /pkgs/applications | |
parent | 951d87bbe73b4d77fde06d05ec809fb44b5c8be8 (diff) | |
parent | 55024cd307e4400463d64bc63b93d1cacfad7459 (diff) |
Merge pull request #222727 from panda2134/podman-desktop
podman-desktop: init at 0.12.0
Diffstat (limited to 'pkgs/applications')
3 files changed, 146 insertions, 0 deletions
diff --git a/pkgs/applications/virtualization/podman-desktop/default.nix b/pkgs/applications/virtualization/podman-desktop/default.nix new file mode 100644 index 0000000000000..e574bb32bad11 --- /dev/null +++ b/pkgs/applications/virtualization/podman-desktop/default.nix @@ -0,0 +1,120 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchYarnDeps +, yarn +, fixup_yarn_lock +, nodejs +, makeWrapper +, copyDesktopItems +, desktopToDarwinBundle +, electron +, makeDesktopItem +}: + +stdenv.mkDerivation (self: { + pname = "podman-desktop"; + version = "0.12.0"; + + src = fetchFromGitHub { + owner = "containers"; + repo = "podman-desktop"; + rev = "v${self.version}"; + sha256 = "sha256-gEjcI+bfETYZB/pHDXRcNxNVDsbwuqQL1E22fMkIJHI="; + }; + + offlineCache = fetchYarnDeps { + yarnLock = "${self.src}/yarn.lock"; + sha256 = "sha256-x0hqNxi6r1i3vBe1tJQl+Oht2St9VIH3Eq27MZLkojA="; + }; + + patches = [ + # podman should be installed with nix; disable auto-installation + ./patches/extension-no-download-podman.patch + ./patches/fix-yarn-lock-deterministic.patch + ]; + + postPatch = '' + for file in packages/main/src/tray-animate-icon.ts extensions/podman/src/util.ts packages/main/src/plugin/certificates.ts; do + substituteInPlace "$file" \ + --replace 'process.resourcesPath' "'$out/share/lib/podman-desktop/resources'" \ + --replace '(process as any).resourcesPath' "'$out/share/lib/podman-desktop/resources'" + done + ''; + + ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; + + nativeBuildInputs = [ + yarn + fixup_yarn_lock + nodejs + makeWrapper + copyDesktopItems + ] + ++ lib.optionals stdenv.isDarwin [ + desktopToDarwinBundle + ]; + + configurePhase = '' + runHook preConfigure + + export HOME="$TMPDIR" + yarn config --offline set yarn-offline-mirror "$offlineCache" + fixup_yarn_lock yarn.lock + yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive + patchShebangs node_modules/ + + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + + yarn --offline run build + yarn --offline run electron-builder --dir \ + --config .electron-builder.config.cjs \ + -c.electronDist=${electron}/lib/electron \ + -c.electronVersion=${electron.version} + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + 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}}" \ + --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"; + genericName = "Desktop client for podman"; + comment = self.meta.description; + categories = [ "Utility" ]; + startupWMClass = "Podman Desktop"; + }) + ]; + + meta = with lib; { + description = "A graphical tool for developing on containers and Kubernetes"; + homepage = "https://podman-desktop.io"; + changelog = "https://github.com/containers/podman-desktop/releases/tag/v${self.version}"; + license = licenses.asl20; + maintainers = with maintainers; [ panda2134 ]; + inherit (electron.meta) platforms; + }; +}) diff --git a/pkgs/applications/virtualization/podman-desktop/patches/extension-no-download-podman.patch b/pkgs/applications/virtualization/podman-desktop/patches/extension-no-download-podman.patch new file mode 100644 index 0000000000000..89633b57290ee --- /dev/null +++ b/pkgs/applications/virtualization/podman-desktop/patches/extension-no-download-podman.patch @@ -0,0 +1,13 @@ +diff --git a/extensions/podman/package.json b/extensions/podman/package.json +index 5f86bbe9..92c0ef3b 100644 +--- a/extensions/podman/package.json ++++ b/extensions/podman/package.json +@@ -86,7 +86,7 @@ + } + }, + "scripts": { +- "build": "rollup --bundleConfigAsCjs --config rollup.config.js --compact --environment BUILD:production && npx ts-node ./scripts/download.ts && node ./scripts/build.js", ++ "build": "rollup --bundleConfigAsCjs --config rollup.config.js --compact --environment BUILD:production && node ./scripts/build.js", + "watch": "rollup --bundleConfigAsCjs --config rollup.config.js -w", + "test": "vitest run --passWithNoTests" + }, diff --git a/pkgs/applications/virtualization/podman-desktop/patches/fix-yarn-lock-deterministic.patch b/pkgs/applications/virtualization/podman-desktop/patches/fix-yarn-lock-deterministic.patch new file mode 100644 index 0000000000000..5b69f5e4e78d5 --- /dev/null +++ b/pkgs/applications/virtualization/podman-desktop/patches/fix-yarn-lock-deterministic.patch @@ -0,0 +1,13 @@ +diff --git a/yarn.lock b/yarn.lock +index ae340d04..5acc3fed 100644 +--- a/yarn.lock ++++ b/yarn.lock +@@ -12753,7 +12753,7 @@ ws@^7.3.1: + resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== + +-ws@^8.11.0, ws@^8.4.2: ++ws@^8.11.0, ws@^8.12.0, ws@^8.4.2: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" + integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== |