WIP! A BB-style forum, on the ATmosphere! We're still working... we'll be back soon when we have something to show off!
node typescript hono htmx atproto
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 114 lines 3.2 kB view raw
1{ 2 lib, 3 stdenv, 4 nodejs_22, 5 pnpm_9, 6 fetchPnpmDeps, 7 pnpmConfigHook, 8 bash, 9 makeWrapper, 10}: 11 12stdenv.mkDerivation (finalAttrs: { 13 pname = "atbb"; 14 version = "0.1.0"; 15 16 src = lib.fileset.toSource { 17 root = ../.; 18 fileset = lib.fileset.unions [ 19 ../package.json 20 ../pnpm-lock.yaml 21 ../pnpm-workspace.yaml 22 ../turbo.json 23 ../tsconfig.base.json 24 ../apps 25 ../packages 26 ]; 27 }; 28 29 pnpmDeps = fetchPnpmDeps { 30 inherit (finalAttrs) pname version; 31 # Only lockfile + manifests — pnpm doesn't need TypeScript source to fetch deps. 32 # Using the full src would force a rebuild on every code change. 33 src = lib.fileset.toSource { 34 root = ../.; 35 fileset = lib.fileset.unions [ 36 ../package.json 37 ../pnpm-lock.yaml 38 ../pnpm-workspace.yaml 39 ../apps/appview/package.json 40 ../apps/web/package.json 41 ../packages/atproto/package.json 42 ../packages/cli/package.json 43 ../packages/css-sanitizer/package.json 44 ../packages/db/package.json 45 ../packages/lexicon/package.json 46 ../packages/logger/package.json 47 ]; 48 }; 49 pnpm = pnpm_9; 50 fetcherVersion = 3; 51 hash = "sha256-RxdykdkbLfw9rsug5ow8AsCsI2DnZ+pjNSF3tQ4pFLk="; 52 }; 53 54 nativeBuildInputs = [ 55 nodejs_22 56 pnpm_9 57 pnpmConfigHook 58 bash 59 makeWrapper 60 ]; 61 62 buildPhase = '' 63 runHook preBuild 64 pnpm build 65 runHook postBuild 66 ''; 67 68 installPhase = '' 69 runHook preInstall 70 71 mkdir -p $out 72 73 # Workspace config 74 cp package.json pnpm-lock.yaml pnpm-workspace.yaml $out/ 75 76 # Root node_modules (pnpm virtual store symlinks point into Nix store FOD) 77 cp -r node_modules $out/ 78 79 # Each workspace package: package.json + dist/ + local node_modules symlinks 80 for pkg in apps/appview apps/web packages/db packages/atproto packages/cli packages/css-sanitizer packages/lexicon packages/logger; do 81 mkdir -p "$out/$pkg" 82 cp "$pkg/package.json" "$out/$pkg/" 83 [ -d "$pkg/dist" ] && cp -r "$pkg/dist" "$out/$pkg/" 84 [ -d "$pkg/node_modules" ] && cp -r "$pkg/node_modules" "$out/$pkg/" 85 done 86 87 # DB schema source (needed by drizzle.config.ts which references ../../packages/db/src/schema.ts) 88 cp -r packages/db/src $out/packages/db/ 89 90 # Drizzle migrations (needed for db:migrate at deploy time) 91 cp -r apps/appview/drizzle $out/apps/appview/ 92 cp -r apps/appview/drizzle-sqlite $out/apps/appview/ 93 94 # Drizzle config files (needed by drizzle-kit migrate) 95 cp apps/appview/drizzle.postgres.config.ts $out/apps/appview/ 96 cp apps/appview/drizzle.sqlite.config.ts $out/apps/appview/ 97 98 # Web static assets (CSS, favicon served by hono serveStatic) 99 cp -r apps/web/public $out/apps/web/ 100 101 # CLI wrapper makes `atbb` available on PATH 102 mkdir -p $out/bin 103 makeWrapper ${nodejs_22}/bin/node $out/bin/atbb \ 104 --add-flags "$out/packages/cli/dist/index.js" 105 106 runHook postInstall 107 ''; 108 109 meta = with lib; { 110 description = "atBB decentralized BB-style forum on AT Protocol"; 111 license = licenses.agpl3Only; 112 platforms = [ "x86_64-linux" "aarch64-linux" ]; 113 }; 114})