about summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2023-03-30 16:55:04 +0200
committerGitHub <noreply@github.com>2023-03-30 16:55:04 +0200
commitb97ea5900b3ee465eba3811f75f8b36d552184f5 (patch)
tree5a5da3895e3719a3b7294b98a28d038bef5c442e /pkgs/applications
parent951d87bbe73b4d77fde06d05ec809fb44b5c8be8 (diff)
parent55024cd307e4400463d64bc63b93d1cacfad7459 (diff)
Merge pull request #222727 from panda2134/podman-desktop
podman-desktop: init at 0.12.0
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/virtualization/podman-desktop/default.nix120
-rw-r--r--pkgs/applications/virtualization/podman-desktop/patches/extension-no-download-podman.patch13
-rw-r--r--pkgs/applications/virtualization/podman-desktop/patches/fix-yarn-lock-deterministic.patch13
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==