2023-07-01 20:50:25 +00:00
|
|
|
{ lib
|
|
|
|
, buildNpmPackage
|
|
|
|
, fetchFromGitHub
|
|
|
|
, copyDesktopItems
|
|
|
|
, python3
|
|
|
|
, pipewire
|
|
|
|
, libpulseaudio
|
2024-01-07 06:18:26 +00:00
|
|
|
, libnotify
|
2023-07-01 20:50:25 +00:00
|
|
|
, xdg-utils
|
2023-12-17 13:34:37 +00:00
|
|
|
, electron_28
|
2023-07-01 20:50:25 +00:00
|
|
|
, makeDesktopItem
|
|
|
|
, nix-update-script
|
|
|
|
}:
|
2022-12-02 01:02:48 +00:00
|
|
|
|
|
|
|
buildNpmPackage rec {
|
2023-03-17 02:07:07 +00:00
|
|
|
pname = "webcord";
|
2024-02-07 21:17:52 +00:00
|
|
|
version = "4.7.1";
|
2022-12-02 01:02:48 +00:00
|
|
|
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "SpacingBat3";
|
|
|
|
repo = "WebCord";
|
|
|
|
rev = "v${version}";
|
2024-02-07 21:17:52 +00:00
|
|
|
hash = "sha256-JzKXIdXR/C3HRbpmSUq3qXYpLnVQjIY/uO+wbt1k2jI=";
|
2022-12-02 01:02:48 +00:00
|
|
|
};
|
|
|
|
|
2024-02-07 21:17:52 +00:00
|
|
|
npmDepsHash = "sha256-KbMoM1zYOjX2Dwu6DJZLyezRx78AC9piPw3xsX3Kb3I=";
|
2022-12-02 01:02:48 +00:00
|
|
|
|
|
|
|
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
|
2023-10-09 02:52:58 +00:00
|
|
|
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
2022-12-02 01:02:48 +00:00
|
|
|
|
|
|
|
# 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
|
2023-10-09 02:52:58 +00:00
|
|
|
installPhase =
|
|
|
|
let
|
|
|
|
libPath = lib.makeLibraryPath [
|
|
|
|
libpulseaudio
|
|
|
|
pipewire
|
2024-01-07 06:18:26 +00:00
|
|
|
libnotify
|
2023-10-09 02:52:58 +00:00
|
|
|
];
|
|
|
|
binPath = lib.makeBinPath [ xdg-utils ];
|
|
|
|
in
|
|
|
|
''
|
2022-12-02 01:02:48 +00:00
|
|
|
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
|
|
|
|
|
2023-03-17 02:07:07 +00:00
|
|
|
# Add xdg-utils to path via suffix, per PR #181171
|
2023-12-17 13:34:37 +00:00
|
|
|
makeWrapper '${lib.getExe electron_28}' $out/bin/webcord \
|
2022-12-02 01:02:48 +00:00
|
|
|
--prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/webcord \
|
2023-10-09 02:52:58 +00:00
|
|
|
--suffix PATH : "${binPath}" \
|
2023-10-20 16:59:46 +00:00
|
|
|
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
|
2022-12-02 01:02:48 +00:00
|
|
|
--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" ];
|
|
|
|
})
|
|
|
|
];
|
|
|
|
|
2023-07-01 20:50:25 +00:00
|
|
|
passthru.updateScript = nix-update-script { };
|
|
|
|
|
2023-10-09 02:52:58 +00:00
|
|
|
meta = {
|
2023-10-07 05:32:45 +00:00
|
|
|
description = "A Discord and SpaceBar electron-based client implemented without Discord API";
|
2022-12-02 01:02:48 +00:00
|
|
|
homepage = "https://github.com/SpacingBat3/WebCord";
|
|
|
|
downloadPage = "https://github.com/SpacingBat3/WebCord/releases";
|
|
|
|
changelog = "https://github.com/SpacingBat3/WebCord/releases/tag/v${version}";
|
2023-10-09 02:52:58 +00:00
|
|
|
license = lib.licenses.mit;
|
2023-08-25 13:37:17 +00:00
|
|
|
mainProgram = "webcord";
|
2023-10-20 17:40:20 +00:00
|
|
|
maintainers = with lib.maintainers; [ eclairevoyant huantian ];
|
2023-10-09 02:52:58 +00:00
|
|
|
platforms = lib.platforms.linux;
|
2022-12-02 01:02:48 +00:00
|
|
|
};
|
|
|
|
}
|