IFD-embracing Nix expression to import pnpm lock files in Nix derivations

feat: add example package

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>

+75 -1
+59
checks/vencord.nix
··· 1 + { 2 + fetchFromGitHub, 3 + git, 4 + nodejs, 5 + pnpm_10, 6 + iplConfigHook, 7 + importPnpmLock, 8 + stdenv, 9 + }: 10 + stdenv.mkDerivation (finalAttrs: { 11 + pname = "vencord"; 12 + version = "1.14.4"; 13 + 14 + src = fetchFromGitHub { 15 + owner = "Vendicated"; 16 + repo = "Vencord"; 17 + tag = "v${finalAttrs.version}"; 18 + hash = "sha256-B+A3ArypZBbgcRBwrW5lr6JEjiTNrKlLWMzX9x3rKzM="; 19 + }; 20 + 21 + mitmCache = importPnpmLock { 22 + lockFile = "${finalAttrs.src}/pnpm-lock.yaml"; 23 + manualEntries = { 24 + "gifenc@https://codeload.github.com/mattdesl/gifenc/tar.gz/64842fca317b112a8590f8fef2bf3825da8f6fe3" = 25 + "sha256-Tw2j23uifvrOlF2DAeitFNcV9MSGxG6Nk+GmOYB/EEU="; 26 + }; 27 + }; 28 + 29 + nativeBuildInputs = [ 30 + git 31 + nodejs 32 + iplConfigHook 33 + pnpm_10 34 + ]; 35 + 36 + env = { 37 + VENCORD_REMOTE = "${finalAttrs.src.owner}/${finalAttrs.src.repo}"; 38 + VENCORD_HASH = "${finalAttrs.version}"; 39 + }; 40 + 41 + buildPhase = '' 42 + runHook preBuild 43 + 44 + pnpm run build \ 45 + -- --standalone --disable-updater 46 + 47 + runHook postBuild 48 + ''; 49 + 50 + installPhase = '' 51 + runHook preInstall 52 + 53 + cp -r dist/ $out 54 + cp package.json $out # Presence is checked by Vesktop. 55 + 56 + runHook postInstall 57 + ''; 58 + 59 + })
+16 -1
flake.nix
··· 7 7 }; 8 8 9 9 outputs = 10 - { nixpkgs, systems, ... }: 10 + { 11 + self, 12 + nixpkgs, 13 + systems, 14 + ... 15 + }: 11 16 let 12 17 forSystems = 13 18 attrs: ··· 16 21 attrs { 17 22 inherit system; 18 23 pkgs = nixpkgs.legacyPackages.${system}; 24 + ourPackages = self.legacyPackages.${system}; 19 25 } 20 26 ); 21 27 in ··· 23 29 legacyPackages = forSystems ({ pkgs, ... }: import ./. { inherit pkgs; }); 24 30 25 31 formatter = forSystems ({ pkgs, ... }: pkgs.nixfmt-tree); 32 + 33 + checks = forSystems ( 34 + { pkgs, ourPackages, ... }: 35 + { 36 + vencord = pkgs.callPackage ./checks/vencord.nix { 37 + inherit (ourPackages) importPnpmLock iplConfigHook; 38 + }; 39 + } 40 + ); 26 41 }; 27 42 }