nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 98 lines 2.0 kB view raw
1{ 2 stdenv, 3 makeBinaryWrapper, 4 removeReferencesTo, 5 srcOnly, 6 python3, 7 pnpm_9, 8 fetchFromGitHub, 9 nodejs, 10 vips, 11 pkg-config, 12 nixosTests, 13 lib, 14}: 15 16let 17 nodeSources = srcOnly nodejs; 18 pythonEnv = python3.withPackages (p: [ p.setuptools ]); 19in 20 21stdenv.mkDerivation (finalAttrs: { 22 pname = "pds"; 23 version = "0.4.158"; 24 25 src = fetchFromGitHub { 26 owner = "bluesky-social"; 27 repo = "pds"; 28 tag = "v${finalAttrs.version}"; 29 hash = "sha256-TesrTKAP2wIQ+H6srvVbS6GF/7Be2xJa1dn/krScPOs="; 30 }; 31 32 sourceRoot = "${finalAttrs.src.name}/service"; 33 34 nativeBuildInputs = [ 35 makeBinaryWrapper 36 nodejs 37 pythonEnv 38 pkg-config 39 pnpm_9.configHook 40 removeReferencesTo 41 ]; 42 43 # Required for `sharp` NPM dependency 44 buildInputs = [ vips ]; 45 46 pnpmDeps = pnpm_9.fetchDeps { 47 inherit (finalAttrs) 48 pname 49 version 50 src 51 sourceRoot 52 ; 53 fetcherVersion = 1; 54 hash = "sha256-+ESVGrgXNCQWOhqH4PM5lKQKcxE/5zxRmIboDZxgxcc="; 55 }; 56 57 buildPhase = '' 58 runHook preBuild 59 60 pushd ./node_modules/.pnpm/better-sqlite3@*/node_modules/better-sqlite3 61 npm run build-release --offline --nodedir="${nodeSources}" 62 find build -type f -exec remove-references-to -t "${nodeSources}" {} \; 63 popd 64 65 makeWrapper "${lib.getExe nodejs}" "$out/bin/pds" \ 66 --add-flags --enable-source-maps \ 67 --add-flags "$out/lib/pds/index.js" \ 68 --set-default NODE_ENV production 69 70 runHook postBuild 71 ''; 72 73 installPhase = '' 74 runHook preInstall 75 76 mkdir -p $out/{bin,lib/pds} 77 mv node_modules $out/lib/pds 78 mv index.js $out/lib/pds 79 80 runHook postInstall 81 ''; 82 83 passthru.tests = { 84 inherit (nixosTests) pds; 85 }; 86 87 meta = { 88 description = "Bluesky Personal Data Server (PDS)"; 89 homepage = "https://github.com/bluesky-social/pds"; 90 license = with lib.licenses; [ 91 mit 92 asl20 93 ]; 94 maintainers = with lib.maintainers; [ t4ccer ]; 95 platforms = lib.platforms.unix; 96 mainProgram = "pds"; 97 }; 98})