This repository has been archived by the owner on Jan 22, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathflake.nix
86 lines (75 loc) · 2.67 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
{
description = "A modified Discord Linux build";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
outputs = { self, nixpkgs }:
let
version = "moonlight-1.0.0";
# tarball '...' contains an unexpected number of top-level files
discord-electron = builtins.fetchurl {
url =
"https://github.com/moonlight-mod/discord-electron/releases/download/${version}/electron.tar.gz";
sha256 = "sha256:0c95bwa58x4hy416pf9lcw0brkgb4ypv12y5qnjqzcd7icp812lm";
};
venmic = ./venmic.node;
nameTable = {
discord = "Discord";
discord-ptb = "DiscordPTB";
discord-canary = "DiscordCanary";
discord-development = "DiscordDevelopment";
};
mkOverride = prev: discord-electron: name:
let
discord = prev.${name};
folderName = nameTable.${name};
in discord.overrideAttrs (old: {
inherit name;
# For venmic
nativeBuildInputs = old.nativeBuildInputs
++ [ prev.pipewire prev.pulseaudio ];
# Needed to make the process get past zygote_linux fork()'ing
runtimeDependencies = [ prev.systemd ];
installPhase = old.installPhase + "\n" + ''
dir=$out/opt/${folderName}
# Delete everything but these
mv $dir/${name}.desktop $out
mv $dir/discord.png $out
mv $dir/postinst.sh $out
mv $dir/resources $out
# Extract our Electron
tar -xf ${discord-electron} -C $dir
mv $dir/electron $dir/${folderName}
# Copy venmic
cp ${venmic} $dir/venmic.node
# Put back the files we kept
mv $out/${name}.desktop $dir
mv $out/discord.png $dir
mv $out/postinst.sh $dir
mv $out/resources $dir
'';
});
overlay = final: prev: rec {
discord = mkOverride prev discord-electron "discord";
discord-ptb = mkOverride prev discord-electron "discord-ptb";
discord-canary = mkOverride prev discord-electron "discord-canary";
discord-development =
mkOverride prev discord-electron "discord-development";
};
in let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [ overlay ];
};
in {
packages.${system} = {
discord-electron = discord-electron;
discord = pkgs.discord;
discord-ptb = pkgs.discord-ptb;
discord-canary = pkgs.discord-canary;
discord-development = pkgs.discord-development;
};
} // {
overlays.default = overlay;
};
}