From 4ecf88be2dbb46c039f433043317de53a1cf13e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?PedroHLC=20=E2=98=AD?= Date: Thu, 23 Jun 2022 16:34:12 -0300 Subject: [PATCH 1/2] discord: add openasar option --- .../instant-messengers/discord/darwin.nix | 10 ++++- .../instant-messengers/discord/default.nix | 7 +++- .../instant-messengers/discord/linux.nix | 10 ++++- .../instant-messengers/discord/openasar.nix | 42 +++++++++++++++++++ 4 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 pkgs/applications/networking/instant-messengers/discord/openasar.nix diff --git a/pkgs/applications/networking/instant-messengers/discord/darwin.nix b/pkgs/applications/networking/instant-messengers/discord/darwin.nix index 4bc9ac98df1f..494a7e6a4428 100644 --- a/pkgs/applications/networking/instant-messengers/discord/darwin.nix +++ b/pkgs/applications/networking/instant-messengers/discord/darwin.nix @@ -1,4 +1,4 @@ -{ pname, version, src, meta, stdenv, binaryName, desktopName, undmg }: +{ pname, version, src, openasar, meta, stdenv, binaryName, desktopName, lib, undmg }: stdenv.mkDerivation { inherit pname version src meta; @@ -8,7 +8,15 @@ stdenv.mkDerivation { sourceRoot = "."; installPhase = '' + runHook preInstall + mkdir -p $out/Applications cp -r "${desktopName}.app" $out/Applications + + runHook postInstall + ''; + + postInstall = lib.strings.optionalString (openasar != null) '' + cp -f ${openasar} $out/Applications/${desktopName}.app/Contents/Resources/app.asar ''; } diff --git a/pkgs/applications/networking/instant-messengers/discord/default.nix b/pkgs/applications/networking/instant-messengers/discord/default.nix index ab471ef47fb7..957efb7a1a48 100644 --- a/pkgs/applications/networking/instant-messengers/discord/default.nix +++ b/pkgs/applications/networking/instant-messengers/discord/default.nix @@ -1,4 +1,4 @@ -{ branch ? "stable", pkgs, lib, stdenv }: +{ branch ? "stable", pkgs, lib, stdenv, withOpenASAR ? false }: let inherit (pkgs) callPackage fetchurl; versions = if stdenv.isLinux then { @@ -61,8 +61,11 @@ let ++ lib.optionals (branch == "ptb") [ "aarch64-darwin" ]; }; package = if stdenv.isLinux then ./linux.nix else ./darwin.nix; + + openasar = if withOpenASAR then callPackage ./openasar.nix { } else null; + packages = (builtins.mapAttrs - (_: value: callPackage package (value // { inherit src version; meta = meta // { mainProgram = value.binaryName; }; })) + (_: value: callPackage package (value // { inherit src version openasar; meta = meta // { mainProgram = value.binaryName; }; })) { stable = rec { pname = "discord"; diff --git a/pkgs/applications/networking/instant-messengers/discord/linux.nix b/pkgs/applications/networking/instant-messengers/discord/linux.nix index 74e424aaf1df..28c1d353ff61 100644 --- a/pkgs/applications/networking/instant-messengers/discord/linux.nix +++ b/pkgs/applications/networking/instant-messengers/discord/linux.nix @@ -1,4 +1,4 @@ -{ pname, version, src, meta, binaryName, desktopName, autoPatchelfHook +{ pname, version, src, openasar, meta, binaryName, desktopName, autoPatchelfHook , makeDesktopItem, lib, stdenv, wrapGAppsHook, makeShellWrapper, alsa-lib, at-spi2-atk , at-spi2-core, atk, cairo, cups, dbus, expat, fontconfig, freetype, gdk-pixbuf , glib, gtk3, libcxx, libdrm, libnotify, libpulseaudio, libuuid, libX11 @@ -72,6 +72,8 @@ stdenv.mkDerivation rec { ]; installPhase = '' + runHook preInstall + mkdir -p $out/{bin,opt/${binaryName},share/pixmaps,share/icons/hicolor/256x256/apps} mv * $out/opt/${binaryName} @@ -95,6 +97,12 @@ stdenv.mkDerivation rec { ln -s $out/opt/${binaryName}/discord.png $out/share/icons/hicolor/256x256/apps/${pname}.png ln -s "${desktopItem}/share/applications" $out/share/ + + runHook postInstall + ''; + + postInstall = lib.strings.optionalString (openasar != null) '' + cp -f ${openasar} $out/opt/${binaryName}/resources/app.asar ''; desktopItem = makeDesktopItem { diff --git a/pkgs/applications/networking/instant-messengers/discord/openasar.nix b/pkgs/applications/networking/instant-messengers/discord/openasar.nix new file mode 100644 index 000000000000..e378f490c0f4 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/discord/openasar.nix @@ -0,0 +1,42 @@ +{ lib, stdenv, fetchFromGitHub, nodejs, bash, nodePackages }: + +stdenv.mkDerivation rec { + version = "unstable-2022-06-10"; + pname = "openasar"; + + src = fetchFromGitHub { + owner = "GooseMod"; + repo = "OpenAsar"; + rev = "c6f2f5eb7827fea14cb4c54345af8ff6858c633a"; + sha256 = "m6e/WKGgkR8vjKcHSNdWE25MmDQM1Z3kgB24OJgbw/w="; + }; + + buildPhase = '' + runHook preBuild + + bash scripts/injectPolyfills.sh + substituteInPlace src/index.js --replace 'nightly' '${version}' + ${nodejs}/bin/node scripts/strip.js + ${nodePackages.asar}/bin/asar pack src app.asar + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + install app.asar $out + + runHook postInstall + ''; + + doCheck = false; + + meta = with lib; { + description = "Open-source alternative of Discord desktop's \"app.asar\"."; + homepage = "https://openasar.dev"; + license = licenses.mit; + maintainers = with maintainers; [ pedrohlc ]; + platforms = nodejs.meta.platforms; + }; +} From 64938ed3918114605ca20028b93b10555e9c4e11 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Thu, 23 Jun 2022 16:42:57 -0300 Subject: [PATCH 2/2] discord: no pkgs in inputs --- .../networking/instant-messengers/discord/default.nix | 3 +-- pkgs/top-level/all-packages.nix | 9 +++------ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/discord/default.nix b/pkgs/applications/networking/instant-messengers/discord/default.nix index 957efb7a1a48..54bd7acf6833 100644 --- a/pkgs/applications/networking/instant-messengers/discord/default.nix +++ b/pkgs/applications/networking/instant-messengers/discord/default.nix @@ -1,6 +1,5 @@ -{ branch ? "stable", pkgs, lib, stdenv, withOpenASAR ? false }: +{ branch ? "stable", callPackage, fetchurl, lib, stdenv, withOpenASAR ? false }: let - inherit (pkgs) callPackage fetchurl; versions = if stdenv.isLinux then { stable = "0.0.18"; ptb = "0.0.29"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d525f2e5da02..b3a11961d6c4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -35212,19 +35212,16 @@ with pkgs; mpvc = callPackage ../applications/misc/mpvc { }; - discord = import ../applications/networking/instant-messengers/discord { + discord = callPackage ../applications/networking/instant-messengers/discord { branch = "stable"; - inherit pkgs lib stdenv; }; - discord-ptb = import ../applications/networking/instant-messengers/discord { + discord-ptb = callPackage ../applications/networking/instant-messengers/discord { branch = "ptb"; - inherit pkgs lib stdenv; }; - discord-canary = import ../applications/networking/instant-messengers/discord { + discord-canary = callPackage ../applications/networking/instant-messengers/discord { branch = "canary"; - inherit pkgs lib stdenv; }; golden-cheetah = libsForQt5.callPackage ../applications/misc/golden-cheetah {};