1.5 KiB
1.5 KiB
Sigil
Sigil is a minimal symlink-based dotfile manager with per-package Lua config.
Install (dev)
go run . <command>
Commands
sigil apply— apply symlinks from~/.dotfilessigil apply --prune— prune stale links without promptingsigil add <path>— add a file/dir to the repo and symlink itsigil status— show stale linkssigil unlink <spec>— restore file(s) and remove from reposigil remove <spec>— same as unlink, plus remove package/subpath
Repo layout
~/.dotfiles/
<package>/
config.lua
files/
...
config.lua
---@class SigilConfig
---@field target table<string, string|boolean>
---@field ignore? string[]
---@type SigilConfig
local config = {
target = {
linux = "~/.config/nvim",
macos = "~/Library/Application Support/nvim",
-- use false to skip applying on that platform
windows = false,
default = "~/.config/nvim",
},
ignore = {
"**/.DS_Store",
"**/*.tmp",
"cache/**",
},
}
return config
Spec formats
unlink/remove accept:
packagepackage:relative/path- repo path:
~/.dotfiles/<pkg>/files/... - target path: e.g.
~/.config/<app>/...
Notes
- Uses
SIGIL_REPOenv var to override the repo path. - Conflicts are detected (existing non-symlink files will stop apply).
config.ignoresupports gitignore-like globs (*,?,**) relative to each packagefiles/directory.- Prefer
sigil addover manual edits infiles/.