Monorepo for Tangled tangled.org

nix,spindle: use DATA_DIR for db & other spindle data #983

open opened by boltless.me targeting master from sl/spindle-rewrite

This single persistent directory can be used for storing general spindle data like db, motd file and upcoming sparse-clone git repos.

db path will be ${DATA_DIR}/spindle.db

Signed-off-by: Seongmin Lee git@boltless.me

Labels

None yet.

assignee

None yet.

Participants 1
AT URI
at://did:plc:xasnlahkri4ewmbuzly2rlc5/sh.tangled.repo.pull/3mckguakf7d22
+11 -6
Diff #2
+4 -4
nix/modules/spindle.nix
··· 35 35 description = "Address to listen on"; 36 36 }; 37 37 38 - dbPath = mkOption { 38 + stateDir = mkOption { 39 39 type = types.path; 40 - default = "/var/lib/spindle/spindle.db"; 41 - description = "Path to the database file"; 40 + default = "/var/lib/spindle"; 41 + description = "Tangled spindle data directory"; 42 42 }; 43 43 44 44 hostname = mkOption { ··· 150 150 StateDirectory = "spindle"; 151 151 Environment = [ 152 152 "SPINDLE_SERVER_LISTEN_ADDR=${cfg.server.listenAddr}" 153 - "SPINDLE_SERVER_DB_PATH=${cfg.server.dbPath}" 153 + "SPINDLE_SERVER_DATA_DIR=${cfg.server.stateDir}" 154 154 "SPINDLE_SERVER_HOSTNAME=${cfg.server.hostname}" 155 155 "SPINDLE_SERVER_PLC_URL=${cfg.server.plcUrl}" 156 156 "SPINDLE_SERVER_DEV=${lib.boolToString cfg.server.dev}"
+1 -1
nix/vm.nix
··· 140 140 }; 141 141 in { 142 142 knot = mkDataSyncScripts "/mnt/knot-data" config.services.tangled.knot.stateDir; 143 - spindle = mkDataSyncScripts "/mnt/spindle-data" (builtins.dirOf config.services.tangled.spindle.server.dbPath); 143 + spindle = mkDataSyncScripts "/mnt/spindle-data" config.services.tangled.spindle.server.stateDir; 144 144 }; 145 145 }) 146 146 ];
+6 -1
spindle/config/config.go
··· 3 3 import ( 4 4 "context" 5 5 "fmt" 6 + "path/filepath" 6 7 7 8 "github.com/bluesky-social/indigo/atproto/syntax" 8 9 "github.com/sethvargo/go-envconfig" ··· 10 11 11 12 type Server struct { 12 13 ListenAddr string `env:"LISTEN_ADDR, default=0.0.0.0:6555"` 13 - DBPath string `env:"DB_PATH, default=spindle.db"` 14 14 Hostname string `env:"HOSTNAME, required"` 15 15 TapUrl string `env:"TAP_URL, required"` 16 16 PlcUrl string `env:"PLC_URL, default=https://plc.directory"` ··· 18 18 Owner syntax.DID `env:"OWNER, required"` 19 19 Secrets Secrets `env:",prefix=SECRETS_"` 20 20 LogDir string `env:"LOG_DIR, default=/var/log/spindle"` 21 + DataDir string `env:"DATA_DIR, default=/var/lib/spindle"` 21 22 QueueSize int `env:"QUEUE_SIZE, default=100"` 22 23 MaxJobCount int `env:"MAX_JOB_COUNT, default=2"` // max number of jobs that run at a time 23 24 } ··· 26 27 return syntax.DID(fmt.Sprintf("did:web:%s", s.Hostname)) 27 28 } 28 29 30 + func (s Server) DBPath() string { 31 + return filepath.Join(s.DataDir, "spindle.db") 32 + } 33 + 29 34 type Secrets struct { 30 35 Provider string `env:"PROVIDER, default=sqlite"` 31 36 OpenBao OpenBaoConfig `env:",prefix=OPENBAO_"`

History

3 rounds 0 comments
sign up or login to add to the discussion
1 commit
expand
nix,spindle: use DATA_DIR for db & other spindle data
2/3 failed, 1/3 success
expand
no conflicts, ready to merge
expand 0 comments
1 commit
expand
nix,spindle: use DATA_DIR for db & other spindle data
2/3 failed, 1/3 success
expand
expand 0 comments
1 commit
expand
nix,spindle: use DATA_DIR for db & other spindle data
2/3 failed, 1/3 success
expand
expand 0 comments