60 lines
1.8 kB
1
{ pnpm2nix }:
2
3
let
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":"discord","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
});
51
in final: prev: rec {
52
moonlight-mod = final.callPackage ./default.nix {
53
pkgs = final;
54
mkPnpmPackage = pnpm2nix.packages.${final.system}.mkPnpmPackage;
55
};
56
discord = mkOverride prev moonlight-mod "discord";
57
discord-ptb = mkOverride prev moonlight-mod "discord-ptb";
58
discord-canary = mkOverride prev moonlight-mod "discord-canary";
59
discord-development = mkOverride prev moonlight-mod "discord-development";
60
}
61