nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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})