From 14c471b127039f67eaed970d4b4f6da8f1d6a375 Mon Sep 17 00:00:00 2001 From: NTBBloodbath Date: Sun, 26 Jan 2025 14:31:57 -0400 Subject: [PATCH 1/2] maintainers: add ntbbloodbath --- maintainers/maintainer-list.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index fcc8363179a2..7f355a4412ca 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -16790,6 +16790,13 @@ githubId = 30942198; name = "Noah Snelson"; }; + ntbbloodbath = { + email = "bloodbathalchemist@protonmail.com"; + matrix = "@ntbbloodbath:matrix.org"; + github = "ntbbloodbath"; + githubId = 36456999; + name = "Alejandro Martin"; + }; nthorne = { email = "notrupertthorne@gmail.com"; github = "nthorne"; From af541d476acab91db2c486730c4ca2a4e0256df2 Mon Sep 17 00:00:00 2001 From: NTBBloodbath Date: Sun, 26 Jan 2025 14:32:45 -0400 Subject: [PATCH 2/2] penpot-desktop: init at 0.10.0 --- .../penpot-desktop/electron-package-lock.diff | 39 ++++++ pkgs/by-name/pe/penpot-desktop/package.nix | 114 ++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 pkgs/by-name/pe/penpot-desktop/electron-package-lock.diff create mode 100644 pkgs/by-name/pe/penpot-desktop/package.nix diff --git a/pkgs/by-name/pe/penpot-desktop/electron-package-lock.diff b/pkgs/by-name/pe/penpot-desktop/electron-package-lock.diff new file mode 100644 index 000000000000..9e2fee2657fb --- /dev/null +++ b/pkgs/by-name/pe/penpot-desktop/electron-package-lock.diff @@ -0,0 +1,39 @@ +diff --git i/package-lock.json w/package-lock.json +index 039e3c0..135e0a0 100644 +--- i/package-lock.json ++++ w/package-lock.json +@@ -18,7 +18,7 @@ + "@commitlint/cli": "^19.6.1", + "@commitlint/config-conventional": "^19.6.0", + "@eslint/js": "^9.19.0", +- "electron": "^34.0.1", ++ "electron": "^33.3.1", + "electron-builder": "^25.1.8", + "eslint": "^9.19.0", + "globals": "^15.14.0", +@@ -3495,9 +3495,9 @@ + } + }, + "node_modules/electron": { +- "version": "34.0.1", +- "resolved": "https://registry.npmjs.org/electron/-/electron-34.0.1.tgz", +- "integrity": "sha512-aArw5tAM80i3CKwEREnyZSM1SkARf5Jd1yBMTIdOL4pB1M+p/oDeyWSFI9Dl+vujyfJKiK4SS5+j19wna1onMw==", ++ "version": "33.3.1", ++ "resolved": "https://registry.npmjs.org/electron/-/electron-33.3.1.tgz", ++ "integrity": "sha512-Z7l2bVgpdKxHQMI4i0CirBX2n+iCYKOx5mbzNM3BpOyFELwlobEXKmzCmEnwP+3EcNeIhUQyIEBFQxN06QgdIw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", +diff --git i/package.json w/package.json +index 9525e62..deb065e 100644 +--- i/package.json ++++ w/package.json +@@ -43,7 +43,7 @@ + "@commitlint/cli": "^19.6.1", + "@commitlint/config-conventional": "^19.6.0", + "@eslint/js": "^9.19.0", +- "electron": "^34.0.1", ++ "electron": "^33.1.1", + "electron-builder": "^25.1.8", + "eslint": "^9.19.0", + "globals": "^15.14.0", diff --git a/pkgs/by-name/pe/penpot-desktop/package.nix b/pkgs/by-name/pe/penpot-desktop/package.nix new file mode 100644 index 000000000000..302e63e0a1da --- /dev/null +++ b/pkgs/by-name/pe/penpot-desktop/package.nix @@ -0,0 +1,114 @@ +{ + lib, + buildNpmPackage, + copyDesktopItems, + electron_33, + fetchFromGitHub, + jq, + makeDesktopItem, + makeWrapper, + nodejs_22, + stdenv, +}: + +let + description = "Unofficial desktop application for the open-source design tool, Penpot"; + icon = "penpot"; + nodejs = nodejs_22; + electron = electron_33; +in +buildNpmPackage rec { + pname = "penpot-desktop"; + version = "0.10.0"; + + src = fetchFromGitHub { + owner = "author-more"; + repo = "penpot-desktop"; + tag = "v${version}"; + hash = "sha256-KlTE61k5rl13GPpOznpugSn1hmn55Cd/Z9vhwDjWhPo="; + }; + + patches = [ + ./electron-package-lock.diff # this downgrades electron version from 34 to 33 to match the latest available version in nixpkgs + ]; + + makeCacheWritable = true; + npmFlags = [ + "--engine-strict" + "--legacy-peer-deps" + ]; + npmDepsHash = "sha256-DWZ1ih4i0vyYlShBWkJTCq0IKgT4CgEmvURnGoQiSy0="; + # Do not run the default build script as it leads to errors caused by the electron-builder configuration + dontNpmBuild = true; + + env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; + + nativeBuildInputs = [ + jq + nodejs + makeWrapper + copyDesktopItems + ]; + + preBuild = '' + if [[ $(jq --raw-output '.devDependencies.electron' < package.json | grep -E --only-matching '\^[0-9]+' | sed -e 's/\^//') != ${lib.escapeShellArg (lib.versions.major electron.version)} ]]; then + echo 'ERROR: electron version mismatch' + exit 1 + fi + ''; + + postBuild = '' + npm exec electron-builder -- \ + --dir \ + --c.electronDist=${electron.dist} \ + --c.electronVersion=${electron.version} + ''; + + installPhase = '' + runHook preInstall + + mkdir $out + + pushd dist/linux-${lib.optionalString stdenv.hostPlatform.isAarch64 "arm64-"}unpacked + mkdir -p $out/opt/Penpot + cp -r locales resources{,.pak} $out/opt/Penpot + popd + + makeWrapper '${lib.getExe electron}' "$out/bin/penpot-desktop" \ + --add-flags $out/opt/Penpot/resources/app.asar \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ + --set-default ELECTRON_IS_DEV 0 \ + --inherit-argv0 + + pushd build + for icon in icon.*; do + dir=$out/share/icons/hicolor/"''${icon%.*}"/apps + mkdir -p "$dir" + cp "$icon" "$dir"/${icon}.png + done + popd + + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + name = "Penpot"; + exec = "penpot-desktop %U"; + inherit icon; + comment = description; + desktopName = "Penpot"; + categories = [ "Graphics" ]; + }) + ]; + + meta = { + changelog = "https://github.com/author-more/penpot-desktop/releases/tag/v${version}"; + inherit description; + homepage = "https://github.com/author-more/penpot.desktop"; + license = lib.licenses.agpl3Only; + maintainers = with lib.maintainers; [ ntbbloodbath ]; + platforms = electron.meta.platforms; + mainProgram = "penpot-desktop"; + }; +}