this repo has no description
1{ ... }:
2
3let
4 nameTable = {
5 discord = "Discord";
6 discord-ptb = "DiscordPTB";
7 discord-canary = "DiscordCanary";
8 discord-development = "DiscordDevelopment";
9 };
10
11 darwinNameTable = {
12 discord = "Discord";
13 discord-ptb = "Discord PTB";
14 discord-canary = "Discord Canary";
15 discord-development = "Discord Development";
16 };
17
18 mkOverride = prev: moonlight: name:
19 let discord = prev.${name};
20 in discord.overrideAttrs (old: {
21 installPhase = let
22 folderName = nameTable.${name};
23 darwinFolderName = darwinNameTable.${name};
24
25 injected = ''
26 require("${moonlight}/injector").inject(
27 require("path").join(__dirname, "../_app.asar")
28 );
29 '';
30
31 packageJson = ''
32 {"name":"${name}","main":"./injector.js","private":true}
33 '';
34
35 in old.installPhase + "\n" + ''
36 resources="$out/opt/${folderName}/resources"
37 if [ ! -d "$resources" ]; then
38 resources="$out/Applications/${darwinFolderName}.app/Contents/Resources"
39 fi
40
41 mv "$resources/app.asar" "$resources/_app.asar"
42 mkdir -p "$resources/app"
43
44 cat > "$resources/app/injector.js" <<EOF
45 ${injected}
46 EOF
47
48 echo '${packageJson}' > "$resources/app/package.json"
49 '';
50 });
51in final: prev: rec {
52 moonlight-mod = final.callPackage ./default.nix { };
53 discord = mkOverride prev moonlight-mod "discord";
54 discord-ptb = mkOverride prev moonlight-mod "discord-ptb";
55 discord-canary = mkOverride prev moonlight-mod "discord-canary";
56 discord-development = mkOverride prev moonlight-mod "discord-development";
57}