this repo has no description

Merge pull request #27 from moonlight-mod/nix

Nix flake

+4
.gitignore
···
dist.tar.gz
.DS_Store
eslint_report.json
+
+
# Nix
+
/result
+
*.drv
+130
flake.lock
···
+
{
+
"nodes": {
+
"flake-utils": {
+
"inputs": {
+
"systems": "systems"
+
},
+
"locked": {
+
"lastModified": 1701680307,
+
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+
"owner": "numtide",
+
"repo": "flake-utils",
+
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
+
"type": "github"
+
},
+
"original": {
+
"owner": "numtide",
+
"repo": "flake-utils",
+
"type": "github"
+
}
+
},
+
"flake-utils_2": {
+
"inputs": {
+
"systems": "systems_2"
+
},
+
"locked": {
+
"lastModified": 1701680307,
+
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+
"owner": "numtide",
+
"repo": "flake-utils",
+
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
+
"type": "github"
+
},
+
"original": {
+
"owner": "numtide",
+
"repo": "flake-utils",
+
"type": "github"
+
}
+
},
+
"nixpkgs": {
+
"locked": {
+
"lastModified": 1704295289,
+
"narHash": "sha256-9WZDRfpMqCYL6g/HNWVvXF0hxdaAgwgIGeLYiOhmes8=",
+
"owner": "NixOS",
+
"repo": "nixpkgs",
+
"rev": "b0b2c5445c64191fd8d0b31f2b1a34e45a64547d",
+
"type": "github"
+
},
+
"original": {
+
"owner": "NixOS",
+
"ref": "nixos-23.11",
+
"repo": "nixpkgs",
+
"type": "github"
+
}
+
},
+
"nixpkgs_2": {
+
"locked": {
+
"lastModified": 1702151865,
+
"narHash": "sha256-9VAt19t6yQa7pHZLDbil/QctAgVsA66DLnzdRGqDisg=",
+
"owner": "nixos",
+
"repo": "nixpkgs",
+
"rev": "666fc80e7b2afb570462423cb0e1cf1a3a34fedd",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nixos",
+
"ref": "nixos-unstable",
+
"repo": "nixpkgs",
+
"type": "github"
+
}
+
},
+
"pnpm2nix": {
+
"inputs": {
+
"flake-utils": "flake-utils_2",
+
"nixpkgs": "nixpkgs_2"
+
},
+
"locked": {
+
"lastModified": 1709572248,
+
"narHash": "sha256-WhaKD4cIvZLbwI2vZTkpH/oEeqGiyMvdW3bLi24P0eU=",
+
"owner": "mojotech",
+
"repo": "pnpm2nix-nzbr",
+
"rev": "c3cfff81ea297cfb9dc18928652f375314dc287d",
+
"type": "github"
+
},
+
"original": {
+
"owner": "mojotech",
+
"repo": "pnpm2nix-nzbr",
+
"type": "github"
+
}
+
},
+
"root": {
+
"inputs": {
+
"flake-utils": "flake-utils",
+
"nixpkgs": "nixpkgs",
+
"pnpm2nix": "pnpm2nix"
+
}
+
},
+
"systems": {
+
"locked": {
+
"lastModified": 1681028828,
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+
"owner": "nix-systems",
+
"repo": "default",
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nix-systems",
+
"repo": "default",
+
"type": "github"
+
}
+
},
+
"systems_2": {
+
"locked": {
+
"lastModified": 1681028828,
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+
"owner": "nix-systems",
+
"repo": "default",
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nix-systems",
+
"repo": "default",
+
"type": "github"
+
}
+
}
+
},
+
"root": "root",
+
"version": 7
+
}
+115
flake.nix
···
+
{
+
description = "Yet another Discord mod";
+
+
inputs = {
+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
+
flake-utils.url = "github:numtide/flake-utils";
+
pnpm2nix.url = "github:mojotech/pnpm2nix-nzbr";
+
};
+
+
outputs = { self, nixpkgs, flake-utils, pnpm2nix }:
+
let
+
mkMoonlight = { pkgs, mkPnpmPackage }:
+
mkPnpmPackage rec {
+
workspace = ./.;
+
src = ./.;
+
components = [
+
"packages/core"
+
"packages/core-extensions"
+
"packages/injector"
+
"packages/node-preload"
+
"packages/types"
+
"packages/web-preload"
+
];
+
distDirs = [ "dist" ];
+
+
copyNodeModules = true;
+
buildPhase = "pnpm run build";
+
installPhase = "cp -r dist $out";
+
+
meta = with pkgs.lib; {
+
description = "Yet another Discord mod";
+
homepage = "https://moonlight-mod.github.io/";
+
license = licenses.agpl3;
+
maintainers = with maintainers; [ notnite ];
+
};
+
};
+
+
nameTable = {
+
discord = "Discord";
+
discord-ptb = "DiscordPTB";
+
discord-canary = "DiscordCanary";
+
discord-development = "DiscordDevelopment";
+
};
+
+
darwinNameTable = {
+
discord = "Discord";
+
discord-ptb = "Discord PTB";
+
discord-canary = "Discord Canary";
+
discord-development = "Discord Development";
+
};
+
+
mkOverride = prev: moonlight: name:
+
let discord = prev.${name};
+
in discord.overrideAttrs (old: {
+
installPhase = let
+
folderName = nameTable.${name};
+
darwinFolderName = darwinNameTable.${name};
+
+
injected = ''
+
require("${moonlight}/injector").inject(
+
require("path").join(__dirname, "../_app.asar")
+
);
+
'';
+
+
packageJson = ''
+
{"name":"discord","main":"./injector.js","private":true}
+
'';
+
+
in old.installPhase + "\n" + ''
+
resources="$out/opt/${folderName}/resources"
+
if [ ! -d "$resources" ]; then
+
resources="$out/Applications/${darwinFolderName}.app/Contents/Resources"
+
fi
+
+
mv "$resources/app.asar" "$resources/_app.asar"
+
mkdir -p "$resources/app"
+
+
cat > "$resources/app/injector.js" <<EOF
+
${injected}
+
EOF
+
+
echo '${packageJson}' > "$resources/app/package.json"
+
'';
+
});
+
+
overlay = final: prev: rec {
+
moonlight-mod = mkMoonlight {
+
pkgs = final;
+
mkPnpmPackage = pnpm2nix.packages.${final.system}.mkPnpmPackage;
+
};
+
discord = mkOverride prev moonlight-mod "discord";
+
discord-ptb = mkOverride prev moonlight-mod "discord-ptb";
+
discord-canary = mkOverride prev moonlight-mod "discord-canary";
+
discord-development =
+
mkOverride prev moonlight-mod "discord-development";
+
};
+
in flake-utils.lib.eachDefaultSystem (system:
+
let
+
pkgs = import nixpkgs {
+
inherit system;
+
config.allowUnfree = true;
+
overlays = [ overlay ];
+
};
+
in {
+
packages.default = pkgs.moonlight-mod;
+
packages.moonlight-mod = pkgs.moonlight-mod;
+
+
packages.discord = pkgs.discord;
+
packages.discord-ptb = pkgs.discord-ptb;
+
packages.discord-canary = pkgs.discord-canary;
+
packages.discord-development = pkgs.discord-development;
+
}) // {
+
overlays.default = overlay;
+
};
+
}