this repo has no description
at v1.0.9 3.6 kB view raw
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 pnpm2nix.url = "github:mojotech/pnpm2nix-nzbr"; 8 }; 9 10 outputs = { self, nixpkgs, flake-utils, pnpm2nix }: 11 let 12 mkMoonlight = { pkgs, mkPnpmPackage }: 13 mkPnpmPackage rec { 14 workspace = ./.; 15 src = ./.; 16 components = [ 17 "packages/core" 18 "packages/core-extensions" 19 "packages/injector" 20 "packages/node-preload" 21 "packages/types" 22 "packages/web-preload" 23 ]; 24 distDirs = [ "dist" ]; 25 26 copyNodeModules = true; 27 buildPhase = "pnpm run build"; 28 installPhase = "cp -r dist $out"; 29 30 meta = with pkgs.lib; { 31 description = "Yet another Discord mod"; 32 homepage = "https://moonlight-mod.github.io/"; 33 license = licenses.lgpl3; 34 maintainers = with maintainers; [ notnite ]; 35 }; 36 }; 37 38 nameTable = { 39 discord = "Discord"; 40 discord-ptb = "DiscordPTB"; 41 discord-canary = "DiscordCanary"; 42 discord-development = "DiscordDevelopment"; 43 }; 44 45 darwinNameTable = { 46 discord = "Discord"; 47 discord-ptb = "Discord PTB"; 48 discord-canary = "Discord Canary"; 49 discord-development = "Discord Development"; 50 }; 51 52 mkOverride = prev: moonlight: name: 53 let discord = prev.${name}; 54 in discord.overrideAttrs (old: { 55 installPhase = let 56 folderName = nameTable.${name}; 57 darwinFolderName = darwinNameTable.${name}; 58 59 injected = '' 60 require("${moonlight}/injector").inject( 61 require("path").join(__dirname, "../_app.asar") 62 ); 63 ''; 64 65 packageJson = '' 66 {"name":"discord","main":"./injector.js","private":true} 67 ''; 68 69 in old.installPhase + "\n" + '' 70 resources="$out/opt/${folderName}/resources" 71 if [ ! -d "$resources" ]; then 72 resources="$out/Applications/${darwinFolderName}.app/Contents/Resources" 73 fi 74 75 mv "$resources/app.asar" "$resources/_app.asar" 76 mkdir -p "$resources/app" 77 78 cat > "$resources/app/injector.js" <<EOF 79 ${injected} 80 EOF 81 82 echo '${packageJson}' > "$resources/app/package.json" 83 ''; 84 }); 85 86 overlay = final: prev: rec { 87 moonlight-mod = mkMoonlight { 88 pkgs = final; 89 mkPnpmPackage = pnpm2nix.packages.${final.system}.mkPnpmPackage; 90 }; 91 discord = mkOverride prev moonlight-mod "discord"; 92 discord-ptb = mkOverride prev moonlight-mod "discord-ptb"; 93 discord-canary = mkOverride prev moonlight-mod "discord-canary"; 94 discord-development = 95 mkOverride prev moonlight-mod "discord-development"; 96 }; 97 in flake-utils.lib.eachDefaultSystem (system: 98 let 99 pkgs = import nixpkgs { 100 inherit system; 101 config.allowUnfree = true; 102 overlays = [ overlay ]; 103 }; 104 in { 105 packages.default = pkgs.moonlight-mod; 106 packages.moonlight-mod = pkgs.moonlight-mod; 107 108 packages.discord = pkgs.discord; 109 packages.discord-ptb = pkgs.discord-ptb; 110 packages.discord-canary = pkgs.discord-canary; 111 packages.discord-development = pkgs.discord-development; 112 }) // { 113 overlays.default = overlay; 114 }; 115}