A vibe coded tangled fork which supports pijul.
1package config
2
3import (
4 "context"
5 "fmt"
6 "path/filepath"
7
8 "github.com/bluesky-social/indigo/atproto/syntax"
9 "github.com/sethvargo/go-envconfig"
10)
11
12type Server struct {
13 ListenAddr string `env:"LISTEN_ADDR, default=0.0.0.0:6555"`
14 Hostname string `env:"HOSTNAME, required"`
15 TapDBUrl string `env:"TAP_DB_URL, default=sqlite://./spindle-tap.db"`
16 TapPort string `env:"TAP_PORT, default=6480"`
17 PlcUrl string `env:"PLC_URL, default=https://plc.directory"`
18 RelayUrl string `env:"RELAY_URL, default=https://relay1.us-east.bsky.network"`
19 Dev bool `env:"DEV, default=false"`
20 Owner syntax.DID `env:"OWNER, required"`
21 Secrets Secrets `env:",prefix=SECRETS_"`
22 LogDir string `env:"LOG_DIR, default=/var/log/spindle"`
23 DataDir string `env:"DATA_DIR, default=/var/lib/spindle"`
24 QueueSize int `env:"QUEUE_SIZE, default=100"`
25 MaxJobCount int `env:"MAX_JOB_COUNT, default=2"` // max number of jobs that run at a time
26}
27
28func (s Server) Did() syntax.DID {
29 return syntax.DID(fmt.Sprintf("did:web:%s", s.Hostname))
30}
31
32func (s Server) RepoDir() string {
33 return filepath.Join(s.DataDir, "repos")
34}
35
36func (s Server) DBPath() string {
37 return filepath.Join(s.DataDir, "spindle.db")
38}
39
40type Secrets struct {
41 Provider string `env:"PROVIDER, default=sqlite"`
42 OpenBao OpenBaoConfig `env:",prefix=OPENBAO_"`
43}
44
45type OpenBaoConfig struct {
46 ProxyAddr string `env:"PROXY_ADDR, default=http://127.0.0.1:8200"`
47 Mount string `env:"MOUNT, default=spindle"`
48}
49
50type NixeryPipelines struct {
51 Nixery string `env:"NIXERY, default=nixery.tangled.sh"`
52 WorkflowTimeout string `env:"WORKFLOW_TIMEOUT, default=5m"`
53}
54
55type Config struct {
56 Server Server `env:",prefix=SPINDLE_SERVER_"`
57 NixeryPipelines NixeryPipelines `env:",prefix=SPINDLE_NIXERY_PIPELINES_"`
58}
59
60func Load(ctx context.Context) (*Config, error) {
61 var cfg Config
62 err := envconfig.Process(ctx, &cfg)
63 if err != nil {
64 return nil, err
65 }
66
67 return &cfg, nil
68}