this repo has no description

Nix flake

+4
.gitignore
··· 3 3 dist.tar.gz 4 4 .DS_Store 5 5 eslint_report.json 6 + 7 + # Nix 8 + /result 9 + *.drv
+61
flake.lock
··· 1 + { 2 + "nodes": { 3 + "flake-utils": { 4 + "inputs": { 5 + "systems": "systems" 6 + }, 7 + "locked": { 8 + "lastModified": 1701680307, 9 + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", 10 + "owner": "numtide", 11 + "repo": "flake-utils", 12 + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", 13 + "type": "github" 14 + }, 15 + "original": { 16 + "owner": "numtide", 17 + "repo": "flake-utils", 18 + "type": "github" 19 + } 20 + }, 21 + "nixpkgs": { 22 + "locked": { 23 + "lastModified": 1704295289, 24 + "narHash": "sha256-9WZDRfpMqCYL6g/HNWVvXF0hxdaAgwgIGeLYiOhmes8=", 25 + "owner": "NixOS", 26 + "repo": "nixpkgs", 27 + "rev": "b0b2c5445c64191fd8d0b31f2b1a34e45a64547d", 28 + "type": "github" 29 + }, 30 + "original": { 31 + "owner": "NixOS", 32 + "ref": "nixos-23.11", 33 + "repo": "nixpkgs", 34 + "type": "github" 35 + } 36 + }, 37 + "root": { 38 + "inputs": { 39 + "flake-utils": "flake-utils", 40 + "nixpkgs": "nixpkgs" 41 + } 42 + }, 43 + "systems": { 44 + "locked": { 45 + "lastModified": 1681028828, 46 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 47 + "owner": "nix-systems", 48 + "repo": "default", 49 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 50 + "type": "github" 51 + }, 52 + "original": { 53 + "owner": "nix-systems", 54 + "repo": "default", 55 + "type": "github" 56 + } 57 + } 58 + }, 59 + "root": "root", 60 + "version": 7 61 + }
+95
flake.nix
··· 1 + { 2 + description = "Yet another Discord mod"; 3 + 4 + inputs = { 5 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; 6 + flake-utils.url = "github:numtide/flake-utils"; 7 + }; 8 + 9 + outputs = { self, nixpkgs, flake-utils }: 10 + flake-utils.lib.eachDefaultSystem (system: 11 + let 12 + pkgs = import nixpkgs { 13 + inherit system; 14 + config.allowUnfree = true; 15 + }; 16 + 17 + version = "1.0.7"; 18 + hash = "sha256-jqy9RM2/9i/o4TTzKG1FvnoUCjwslBaHVG2tIx/T2f4="; 19 + 20 + # pnpm2nix is unmaintained, forks of it don't support pnpm workspaces 21 + # Downloading tarballs from GitHub releases will have to do 22 + moonlight = pkgs.stdenv.mkDerivation { 23 + name = "moonlight"; 24 + version = version; 25 + src = pkgs.fetchurl { 26 + url = 27 + "https://github.com/moonlight-mod/moonlight/releases/download/v${version}/dist.tar.gz"; 28 + sha256 = hash; 29 + }; 30 + 31 + buildInputs = [ pkgs.gnutar ]; 32 + buildPhase = '' 33 + mkdir -p $out 34 + tar -xzf $src -C $out 35 + ''; 36 + 37 + meta = with pkgs.lib; { 38 + description = "Yet another Discord mod"; 39 + homepage = "https://moonlight-mod.github.io/"; 40 + license = licenses.agpl3; 41 + maintainers = with maintainers; [ notnite ]; 42 + }; 43 + }; 44 + 45 + mkOverride = discord: name: 46 + discord.overrideAttrs (old: { 47 + installPhase = let 48 + origAsar = "$out/opt/${name}/resources/app.asar"; 49 + movedAsar = "$out/opt/${name}/resources/_app.asar"; 50 + app = "$out/opt/${name}/resources/app"; 51 + 52 + injected = '' 53 + require("${moonlight}/injector").inject( 54 + require("path").join(__dirname, "../_app.asar") 55 + ); 56 + ''; 57 + 58 + packageJson = '' 59 + {"name":"discord","main":"./injector.js","private":true} 60 + ''; 61 + 62 + in old.installPhase + "\n" + '' 63 + mv ${origAsar} ${movedAsar} 64 + mkdir -p ${app} 65 + 66 + cat > ${app}/injector.js <<EOF 67 + ${injected} 68 + EOF 69 + 70 + echo '${packageJson}' > ${app}/package.json 71 + ''; 72 + }); 73 + 74 + overlay = final: prev: { 75 + discord = mkOverride prev.discord "Discord"; 76 + discord-ptb = mkOverride prev.discord-ptb "DiscordPTB"; 77 + discord-canary = mkOverride prev.discord-canary "DiscordCanary"; 78 + discord-development = 79 + mkOverride prev.discord-development "DiscordDevelopment"; 80 + }; 81 + 82 + pkgsWithOverlay = import nixpkgs { 83 + inherit system; 84 + config.allowUnfree = true; 85 + overlays = [ overlay ]; 86 + }; 87 + in { 88 + packages.default = moonlight; 89 + overlays.default = overlay; 90 + packages.discord = pkgsWithOverlay.discord; 91 + packages.discord-ptb = pkgsWithOverlay.discord-ptb; 92 + packages.discord-canary = pkgsWithOverlay.discord-canary; 93 + packages.discord-development = pkgsWithOverlay.discord-development; 94 + }); 95 + }