char/topaz-flake
git clone https://git.t4t.associates/char/topaz-flake
df10a8e
main
1{ pkgs , unstable-pkgs , hydrant-src , ...} : 2let 3hydrant = pkgs . callPackage ( hydrant-src + "/default.nix" ) { }; 4in 5{ 6users . groups . stars = { }; 7users . users . stars = { 8isSystemUser = true ; 9group = "stars" ; 10}; 11users . groups . stars-hydrant = { }; 12users . users . stars-hydrant = { 13isSystemUser = true ; 14group = "stars-hydrant" ; 15}; 16 17systemd . services . stars-hydrant = { 18description = "Stars Hydrant indexer" ; 19after = [ "network-online.target" ]; 20wants = [ "network-online.target" ]; 21wantedBy = [ "multi-user.target" ]; 22environment = { 23HYDRANT_DATABASE_PATH = "/var/lib/stars-hydrant/db" ; 24HYDRANT_API_BIND = "127.0.0.1:33991" ; 25HYDRANT_PLC_URL = "https://plc.cerulea.blue,https://plc.directory" ; 26HYDRANT_FULL_NETWORK = "false" ; 27HYDRANT_EPHEMERAL = "false" ; 28HYDRANT_ONLY_INDEX_LINKS = "false" ; 29HYDRANT_FILTER_SIGNALS = "site.hackery.stars.star,site.hackery.stars.follow" ; 30HYDRANT_FILTER_COLLECTIONS = "site.hackery.stars.star,site.hackery.stars.follow,app.bsky.actor.profile" ; 31HYDRANT_VERIFY_SIGNATURES = "full" ; 32HYDRANT_ENABLE_FIREHOSE = "true" ; 33HYDRANT_ENABLE_CRAWLER = "true" ; 34HYDRANT_RELAY_HOST = "wss://relay.fire.hose.cam/" ; 35HYDRANT_CRAWLER_URLS = "by_collection::https://lightrail.microcosm.blue" ; 36HYDRANT_BACKFILL_CONCURRENCY_LIMIT = "4" ; 37HYDRANT_CACHE_SIZE = "128" ; 38RUST_LOG = "warn" ; 39}; 40serviceConfig = { 41Type = "simple" ; 42User = "stars-hydrant" ; 43Group = "stars-hydrant" ; 44StateDirectory = "stars-hydrant" ; 45StateDirectoryMode = "0700" ; 46WorkingDirectory = "/var/lib/stars-hydrant" ; 47ExecStart = " ${ hydrant } /bin/hydrant" ; 48Restart = "on-failure" ; 49RestartSec = "5s" ; 50NoNewPrivileges = true ; 51PrivateTmp = true ; 52ProtectSystem = "strict" ; 53ProtectHome = true ; 54}; 55}; 56 57systemd . services . stars = { 58description = "Stars server" ; 59after = [ "network-online.target" "stars-hydrant.service" ]; 60wants = [ "network-online.target" "stars-hydrant.service" ]; 61wantedBy = [ "multi-user.target" ]; 62unitConfig . ConditionPathExists = "/srv/apps/stars/main.ts" ; 63environment = { 64PUBLIC_URL = "https://stars.hackery.site" ; 65HYDRANT_URL = "http://127.0.0.1:33991" ; 66DATABASE_PATH = "/var/lib/stars/stars.sqlite" ; 67DENO_DIR = "/var/cache/stars/deno" ; 68HOME = "/var/lib/stars" ; 69}; 70serviceConfig = { 71Type = "simple" ; 72User = "stars" ; 73Group = "stars" ; 74StateDirectory = "stars" ; 75StateDirectoryMode = "0700" ; 76CacheDirectory = "stars" ; 77CacheDirectoryMode = "0700" ; 78WorkingDirectory = "/srv/apps/stars" ; 79ExecStartPre = " ${ unstable-pkgs . deno } /bin/deno cache --lock=deno.lock main.ts" ; 80ExecStart = " ${ unstable-pkgs . deno } /bin/deno run --cached-only --allow-net --allow-env --allow-read=/srv/apps/stars,/var/lib/stars,/var/cache/stars --allow-write=/var/lib/stars,/var/cache/stars main.ts" ; 81Restart = "on-failure" ; 82RestartSec = "5s" ; 83NoNewPrivileges = true ; 84PrivateTmp = true ; 85ProtectSystem = "strict" ; 86ProtectHome = true ; 87}; 88}; 89}