- Rust 86%
- Nix 14%
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| package.nix | ||
| README.md | ||
| treefmt.toml | ||
Weave
A fast, simple hard link manager. Weave serves a similar purpose to GNU Stow, but using hard links rather than symlinks.
Usage
By default, Weave uses the weave.toml in the current working directory as its configuration file.
This can be overridden with the --config option.
A typical weave.toml might look like this:
from = "my-dotfiles"
to = "~"
The my-dotfiles directory should follow this structure: my-dotfiles/<choice>/path/to/file.
For example, if you intend to configure a program like Helix, you could have this path to the Helix configuration file: my-dotfiles/helix/.config/helix/config.toml.
By default, Weave will simply link all directories in my-dotfiles, but if you want to just link your Helix configuration files, you can just run weave helix.
You don't need to split these up, but it turns out to be useful in some scenarios.
Example
This is what it looks like when I run Weave on my dotfiles repository:
$ weave --verbose --force
INFO weave: weaving from home to /home/helvetica
INFO weave: choices are ["nix", "fish", "helix", "qutebrowser", "ssh", "git", "bash", "mpv", "bottom"]
INFO weave: /home/helvetica/.config/nix/nix.conf already links to home/nix/.config/nix/nix.conf
INFO weave: /home/helvetica/.config/fish/config.fish already links to home/fish/.config/fish/config.fish
INFO weave: /home/helvetica/.config/helix/languages.toml already links to home/helix/.config/helix/languages.toml
INFO weave: /home/helvetica/.config/helix/themes/revontuli_transparent.toml already links to home/helix/.config/helix/themes/revontuli_transparent.toml
INFO weave: /home/helvetica/.config/helix/themes/revontuli_night_transparent.toml already links to home/helix/.config/helix/themes/revontuli_night_transparent.toml
INFO weave: /home/helvetica/.config/helix/themes/revontuli_night.toml already links to home/helix/.config/helix/themes/revontuli_night.toml
INFO weave: /home/helvetica/.config/helix/themes/github_dark_high_contrast_transparent.toml already links to home/helix/.config/helix/themes/github_dark_high_contrast_transparent.toml
INFO weave: /home/helvetica/.config/helix/themes/revontuli.toml already links to home/helix/.config/helix/themes/revontuli.toml
INFO weave: /home/helvetica/.config/helix/config.toml already links to home/helix/.config/helix/config.toml
INFO weave: /home/helvetica/.config/qutebrowser/config.py already links to home/qutebrowser/.config/qutebrowser/config.py
INFO weave: /home/helvetica/.ssh/config already links to home/ssh/.ssh/config
INFO weave: /home/helvetica/.config/git/config already links to home/git/.config/git/config
INFO weave: /home/helvetica/.config/git/ignore already links to home/git/.config/git/ignore
INFO weave: /home/helvetica/.bashrc already links to home/bash/.bashrc
INFO weave: /home/helvetica/.config/mpv/input.conf already links to home/mpv/.config/mpv/input.conf
INFO weave: linked /home/helvetica/.config/mpv/mpv.conf to home/mpv/.config/mpv/mpv.conf
INFO weave: linked /home/helvetica/.config/bottom/bottom.toml to home/bottom/.config/bottom/bottom.toml
INFO weave: 2 linked, 0 overwritten, 15 skipped
Run weave --help for more information.