Configuration
The configuration file is located at $XDG_CONFIG_HOME/seido/config.yaml (usually ~/.config/seido/config.yaml).
For easier integration into NixOS, you can also specify a custom config using --config.
This allows you to run seido --config ${generated_config} sync inside a systemd user job for example.
Warning
Seido requires XDG env variables, make sure they are set.
Structure
items:
- name: <string> # Unique identifier
type: <git|http> # Source type
source: <url> # Source URL
target: <path> # Local symlink target (supports env vars like $HOME)
links: <map> # Map of source subpath -> target symlink path (alternative to target)
frozen: <bool> # If true, skip updates (default: false)
postSync: <cmd> # Shell command to run after change
git: # Git-specific options
ref: <string> # Branch, tag, or commit SHA
path: <string> # Subpath within repo to symlink
Item Types
Git (type: git)
Clones a repository and symlinks it (or a subdirectory).
source: Repository URL.git.ref: Optional. Branch, tag, or commit SHA. Defaults to default branch.git.path: Optional. Subdirectory or file within the repo to symlink. Defaults to the entire repo.
HTTP (type: http)
Downloads a single file. Uses ETag and Last-Modified headers to avoid unnecessary downloads.
source: URL to the file.
Example
items:
# Git repository (full)
- name: dotfiles
type: git
source: https://github.com/user/dotfiles.git
target: $HOME/dotfiles
# Git repository (subdirectory)
- name: nvim-config
type: git
source: https://github.com/user/nvim-config.git
target: $HOME/.config/nvim
git:
ref: main
path: config
# Single file via HTTP
- name: model-weights
type: http
source: https://huggingface.co/user/model/resolve/main/weights.bin
target: $HOME/models/weights.bin
frozen: true # Don't auto-update
# Multiple files from one repo
- name: multi-file-repo
type: git
source: https://github.com/user/repo.git
links:
"config/app.conf": $HOME/.config/app/app.conf
"scripts/run.sh": $HOME/bin/run-app