diff options
Diffstat (limited to 'pkgs/by-name/we/webcord/package.nix')
-rw-r--r-- | pkgs/by-name/we/webcord/package.nix | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/pkgs/by-name/we/webcord/package.nix b/pkgs/by-name/we/webcord/package.nix new file mode 100644 index 0000000000000..f68f070465a74 --- /dev/null +++ b/pkgs/by-name/we/webcord/package.nix @@ -0,0 +1,93 @@ +{ + lib, + buildNpmPackage, + fetchFromGitHub, + copyDesktopItems, + python3, + xdg-utils, + electron, + makeDesktopItem, +}: + +buildNpmPackage rec { + pname = "webcord"; + version = "4.9.2"; + + src = fetchFromGitHub { + owner = "SpacingBat3"; + repo = "WebCord"; + rev = "refs/tags/v${version}"; + hash = "sha256-iuhi4ELHNPxFDz7cmiTFuUA8bf6VI2YXnHOTi69FloU="; + }; + + npmDepsHash = "sha256-xEXAaYW/2Wx0ar0l7jcSj0NBYKTsa7vHdykLlU0BkJE="; + + nativeBuildInputs = [ + copyDesktopItems + python3 + ]; + + # npm install will error when electron tries to download its binary + # we don't need it anyways since we wrap the program with our nixpkgs electron + env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; + + # remove husky commit hooks, errors and aren't needed for packaging + postPatch = '' + rm -rf .husky + ''; + + # override installPhase so we can copy the only folders that matter + installPhase = + let + binPath = lib.makeBinPath [ xdg-utils ]; + in + '' + runHook preInstall + + # Remove dev deps that aren't necessary for running the app + npm prune --omit=dev + + mkdir -p $out/lib/node_modules/webcord + cp -r app node_modules sources package.json $out/lib/node_modules/webcord/ + + install -Dm644 sources/assets/icons/app.png $out/share/icons/hicolor/256x256/apps/webcord.png + + # Add xdg-utils to path via suffix, per PR #181171 + makeWrapper '${lib.getExe electron}' $out/bin/webcord \ + --suffix PATH : "${binPath}" \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \ + --add-flags $out/lib/node_modules/webcord/ + + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + name = "webcord"; + exec = "webcord"; + icon = "webcord"; + desktopName = "WebCord"; + comment = meta.description; + categories = [ + "Network" + "InstantMessaging" + ]; + }) + ]; + + passthru.updateScript = ./update.sh; + + meta = { + description = "A Discord and SpaceBar electron-based client implemented without Discord API"; + homepage = "https://github.com/SpacingBat3/WebCord"; + downloadPage = "https://github.com/SpacingBat3/WebCord/releases"; + changelog = "https://github.com/SpacingBat3/WebCord/releases/tag/v${version}"; + license = lib.licenses.mit; + mainProgram = "webcord"; + maintainers = with lib.maintainers; [ + eclairevoyant + huantian + ]; + platforms = lib.platforms.linux; + }; +} |