Monorepo for Tangled tangled.org
5

Configure Feed

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

1package config 2 3import ( 4 "context" 5 6 "github.com/bluesky-social/indigo/atproto/syntax" 7 "github.com/sethvargo/go-envconfig" 8 "tangled.org/core/xrpc/serviceauth" 9) 10 11type Server struct { 12 ListenAddr string `env:"LISTEN_ADDR, default=0.0.0.0:6555"` 13 DBPath string `env:"DB_PATH, default=spindle.db"` 14 Hostname string `env:"HOSTNAME, required"` 15 JetstreamEndpoint string `env:"JETSTREAM_ENDPOINT, default=wss://jetstream1.us-west.bsky.network/subscribe"` 16 Tap Tap `env:",prefix=TAP_"` 17 PlcUrl string `env:"PLC_URL, default=https://plc.directory"` 18 Dev bool `env:"DEV, default=false"` 19 Owner string `env:"OWNER, required"` 20 Secrets Secrets `env:",prefix=SECRETS_"` 21 LogDir string `env:"LOG_DIR, default=/var/log/spindle"` 22 QueueSize int `env:"QUEUE_SIZE, default=100"` 23 MaxJobCount int `env:"MAX_JOB_COUNT, default=2"` // max number of pipelines that run at a time 24 MaxConcurrentWorkflows int `env:"MAX_CONCURRENT_WORKFLOWS, default=8"` // max number of workflow containers running at once (memory cap) 25 DockerSocket string `env:"DOCKER_SOCKET"` // path to a docker socket to expose to workflow containers 26} 27 28type Tap struct { 29 Embed bool `env:"EMBED, default=true"` 30 Url string `env:"URL, default=http://[::1]:2480"` 31 Bind string `env:"BIND, default=[::1]:2480"` 32 DBPath string `env:"DB_PATH, default=tap.db"` 33 RelayUrl string `env:"RELAY_URL, default=https://bsky.network"` 34 AdminPassword string `env:"ADMIN_PASSWORD"` 35} 36 37func (s Server) Did() syntax.DID { 38 return serviceauth.DidWeb(s.Hostname) 39} 40 41type Secrets struct { 42 Provider string `env:"PROVIDER, default=sqlite"` 43 OpenBao OpenBaoConfig `env:",prefix=OPENBAO_"` 44} 45 46type OpenBaoConfig struct { 47 ProxyAddr string `env:"PROXY_ADDR, default=http://127.0.0.1:8200"` 48 Mount string `env:"MOUNT, default=spindle"` 49} 50 51type NixeryPipelines struct { 52 Nixery string `env:"NIXERY, default=nixery.tangled.sh"` 53 WorkflowTimeout string `env:"WORKFLOW_TIMEOUT, default=5m"` 54 MaxJobMemoryMB int64 `env:"MAX_JOB_MEMORY_MB, default=6144"` // per-container memory limit in MiB (default 6 GiB) 55} 56 57type S3 struct { 58 LogBucket string `env:"LOG_BUCKET"` 59} 60 61type Config struct { 62 Server Server `env:",prefix=SPINDLE_SERVER_"` 63 NixeryPipelines NixeryPipelines `env:",prefix=SPINDLE_NIXERY_PIPELINES_"` 64 S3 S3 `env:",prefix=SPINDLE_S3_"` 65} 66 67func Load(ctx context.Context) (*Config, error) { 68 var cfg Config 69 err := envconfig.Process(ctx, &cfg) 70 if err != nil { 71 return nil, err 72 } 73 74 return &cfg, nil 75}