forked from
tangled.org/core
fork
Configure Feed
Select the types of activity you want to include in your feed.
Monorepo for Tangled
fork
Configure Feed
Select the types of activity you want to include in your feed.
1package config
2
3import (
4 "context"
5 "fmt"
6
7 "github.com/bluesky-social/indigo/atproto/syntax"
8 "github.com/sethvargo/go-envconfig"
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 PlcUrl string `env:"PLC_URL, default=https://plc.directory"`
17 Dev bool `env:"DEV, default=false"`
18 Owner string `env:"OWNER, required"`
19 Secrets Secrets `env:",prefix=SECRETS_"`
20 LogDir string `env:"LOG_DIR, default=/var/log/spindle"`
21 QueueSize int `env:"QUEUE_SIZE, default=100"`
22 MaxJobCount int `env:"MAX_JOB_COUNT, default=2"` // max number of jobs that run at a time
23}
24
25func (s Server) Did() syntax.DID {
26 return syntax.DID(fmt.Sprintf("did:web:%s", s.Hostname))
27}
28
29type Secrets struct {
30 Provider string `env:"PROVIDER, default=sqlite"`
31 OpenBao OpenBaoConfig `env:",prefix=OPENBAO_"`
32}
33
34type OpenBaoConfig struct {
35 ProxyAddr string `env:"PROXY_ADDR, default=http://127.0.0.1:8200"`
36 Mount string `env:"MOUNT, default=spindle"`
37}
38
39type NixeryPipelines struct {
40 Nixery string `env:"NIXERY, default=nixery.tangled.sh"`
41 WorkflowTimeout string `env:"WORKFLOW_TIMEOUT, default=5m"`
42}
43
44type Config struct {
45 Server Server `env:",prefix=SPINDLE_SERVER_"`
46 NixeryPipelines NixeryPipelines `env:",prefix=SPINDLE_NIXERY_PIPELINES_"`
47}
48
49func Load(ctx context.Context) (*Config, error) {
50 var cfg Config
51 err := envconfig.Process(ctx, &cfg)
52 if err != nil {
53 return nil, err
54 }
55
56 return &cfg, nil
57}