From 1a7820b227be5a2595f67c6eb0485e65ea798651 Mon Sep 17 00:00:00 2001 From: t4ccer Date: Tue, 22 Oct 2024 19:43:00 -0600 Subject: [PATCH] pds: init at 0.4.74 --- pkgs/by-name/pd/pds/package.nix | 92 +++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 pkgs/by-name/pd/pds/package.nix diff --git a/pkgs/by-name/pd/pds/package.nix b/pkgs/by-name/pd/pds/package.nix new file mode 100644 index 000000000000..8f6fbdf29c73 --- /dev/null +++ b/pkgs/by-name/pd/pds/package.nix @@ -0,0 +1,92 @@ +{ + stdenv, + makeBinaryWrapper, + removeReferencesTo, + srcOnly, + python3, + pnpm_9, + fetchFromGitHub, + nodejs, + vips, + pkg-config, + lib, +}: + +let + nodeSources = srcOnly nodejs; + pythonEnv = python3.withPackages (p: [ p.setuptools ]); +in + +stdenv.mkDerivation (finalAttrs: { + pname = "pds"; + version = "0.4.74"; + + src = fetchFromGitHub { + owner = "bluesky-social"; + repo = "pds"; + rev = "v${finalAttrs.version}"; + hash = "sha256-kNHsQ6funmo8bnkFBNWHQ0Fmd5nf/uh+x9buaRJMZnM="; + }; + + sourceRoot = "${finalAttrs.src.name}/service"; + + nativeBuildInputs = [ + makeBinaryWrapper + nodejs + pythonEnv + pkg-config + pnpm_9.configHook + removeReferencesTo + ]; + + # Required for `sharp` NPM dependency + buildInputs = [ vips ]; + + pnpmDeps = pnpm_9.fetchDeps { + inherit (finalAttrs) + pname + version + src + sourceRoot + ; + hash = "sha256-oU4dwlBdsMmgAUv1ICaOqaqucmg/TjKOZxjnxpm0qL8="; + }; + + buildPhase = '' + runHook preBuild + + pushd ./node_modules/.pnpm/better-sqlite3@*/node_modules/better-sqlite3 + npm run build-release --offline --nodedir="${nodeSources}" + find build -type f -exec remove-references-to -t "${nodeSources}" {} \; + popd + + makeWrapper "${lib.getExe nodejs}" "$out/bin/pds" \ + --add-flags --enable-source-maps \ + --add-flags "$out/lib/pds/index.js" \ + --set-default NODE_ENV production + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/{bin,lib/pds} + mv node_modules $out/lib/pds + mv index.js $out/lib/pds + + runHook postInstall + ''; + + meta = { + description = "Bluesky Personal Data Server (PDS)"; + homepage = "https://github.com/bluesky-social/pds"; + license = with lib.licenses; [ + mit + asl20 + ]; + maintainers = with lib.maintainers; [ t4ccer ]; + platforms = lib.platforms.unix; + mainProgram = "pds"; + }; +})