From 26e9b1967982b92e8991785cea02ac351edb0fbd Mon Sep 17 00:00:00 2001 From: Luca Ruperto Date: Thu, 19 Mar 2026 17:59:26 +0100 Subject: [PATCH] webeep-sync: init at 1.0.3-unstable-2024-04-30 Co-authored-by: gepbird --- pkgs/by-name/we/webeep-sync/package.nix | 125 ++++++++++++++++++++ pkgs/by-name/we/webeep-sync/workspace.patch | 8 ++ 2 files changed, 133 insertions(+) create mode 100644 pkgs/by-name/we/webeep-sync/package.nix create mode 100644 pkgs/by-name/we/webeep-sync/workspace.patch diff --git a/pkgs/by-name/we/webeep-sync/package.nix b/pkgs/by-name/we/webeep-sync/package.nix new file mode 100644 index 000000000000..911c34414df8 --- /dev/null +++ b/pkgs/by-name/we/webeep-sync/package.nix @@ -0,0 +1,125 @@ +{ + stdenvNoCC, + fetchFromGitHub, + pnpm_10, + fetchPnpmDeps, + pnpmConfigHook, + writableTmpDirAsHomeHook, + makeWrapper, + electron, + nodejs, + zip, + makeDesktopItem, + copyDesktopItems, + lib, + nix-update-script, + withDebug ? false, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "webeep-sync"; + version = "1.0.3-unstable-2026-03-24"; + + src = fetchFromGitHub { + owner = "toto04"; + repo = "webeep-sync"; + rev = "eabae4471b32660358c8bf95a985473f145d160a"; + hash = "sha256-wQUNhuhuARLJG0ZYRVpIAgUIbYDFTLC3sRH762HOmBY="; + }; + + nativeBuildInputs = [ + pnpmConfigHook + pnpm_10 + writableTmpDirAsHomeHook + makeWrapper + nodejs + zip + electron + copyDesktopItems + ]; + + pnpmDeps = fetchPnpmDeps { + inherit (finalAttrs) pname version src; + hash = "sha256-IuI1asHqq2n1/hqf1NlRUG5/GU7HTLKCjalNooyPcO4="; + pnpm = pnpm_10; + fetcherVersion = 3; + }; + + env = { + ELECTRON_SKIP_BINARY_DOWNLOAD = 1; + }; + + patches = [ ./workspace.patch ]; # TODO: waiting for PR https://github.com/toto04/webeep-sync/pull/138 + + preBuild = '' + # create the electron archive to be used by electron-packager + cp -r ${electron.dist} electron-dist + chmod -R u+w electron-dist + + pushd electron-dist + zip -0Xqr ../electron.zip . + popd + + rm -r electron-dist + + # force @electron/packager to use our electron instead of downloading it + substituteInPlace node_modules/.pnpm/@electron+packager@*/node_modules/@electron/packager/dist/packager.js \ + --replace-fail "await this.getElectronZipPath(downloadOpts)" "'$(pwd)/electron.zip'" + ''; + + buildPhase = '' + runHook preBuild + pnpm config set node-linker hoisted + pnpm run package | cat + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + ${lib.optionalString (!withDebug) '' + find -type f \( -name "*.ts" -o -name "*.map" \) -exec rm -rf {} + + ''} + + rm -rf node_modules/.pnpm/{*electron*,*typescript*,prettier*,eslint*,@babel*,react-icons*} + # remove symlinks to the previously deleted packages + find node_modules packages/**/node_modules -xtype l -delete + + mkdir -p $out/lib/node_modules/${finalAttrs.pname} + cp -r .webpack node_modules $out/lib/node_modules/${finalAttrs.pname}/ + + makeWrapper ${electron}/bin/electron $out/bin/${finalAttrs.pname} \ + ${lib.optionalString withDebug ''--set NODE_OPTIONS "--enable-source-maps"''} \ + --add-flags "$out/lib/node_modules/${finalAttrs.pname}/.webpack/x64/main/index.js" \ + --add-flags "--user-data-dir=\$HOME/.config/${finalAttrs.pname}" + + for size in 32 48 64 72 96 128 256; do + install -Dm644 static/icons/icon-$size"x"$size.png \ + $out/share/icons/hicolor/$size"x"$size/apps/${finalAttrs.pname}.png + done + + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + name = finalAttrs.pname; + exec = finalAttrs.pname; + icon = finalAttrs.pname; # Matches the PNG name we installed earlier + desktopName = "WeBeep Sync"; + comment = finalAttrs.meta.description; + categories = [ "Education" ]; + }) + ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Keep all your WeBeep files synced on your computer"; + homepage = "https://github.com/toto04/webeep-sync"; + license = lib.licenses.gpl3Only; + platforms = lib.platforms.linux; + maintainers = [ lib.maintainers.lnk3 ]; + mainProgram = "webeep-sync"; + }; +}) diff --git a/pkgs/by-name/we/webeep-sync/workspace.patch b/pkgs/by-name/we/webeep-sync/workspace.patch new file mode 100644 index 000000000000..c56d7646b0d0 --- /dev/null +++ b/pkgs/by-name/we/webeep-sync/workspace.patch @@ -0,0 +1,8 @@ +--- a/pnpm-workspace.yaml ++++ b/pnpm-workspace.yaml +@@ -1,3 +1,5 @@ ++packages: ++ - '.' + allowBuilds: + '@parcel/watcher': true + electron: true