#symbolic-links #dotfiles #configuration #command-line-tool #symlink #portable #link

app wagon

A command line utility to manage configuration files in one place

4 releases (breaking)

0.4.0 Jul 9, 2022
0.3.0 Mar 21, 2022
0.2.0 Mar 13, 2021
0.1.0 Dec 27, 2020

#597 in Configuration

MIT license

27KB
713 lines

Wagon

Utility to make dotfiles portable with symbolic links

build

Installation

cargo install wagon

Usage

Create the dotfiles in your git-controlled directory.

Place dotfiles in a subdirectory such as the following.

dotfiles
├── .bashrc
├── .config
│   ├── direnv
│   │   ├── .gitignore
│   │   └── direnvrc
│   ├── flake8
│   ├── git
│   │   └── ignore
│   ├── peco
│   │   └── config.json
│   ├── starship.toml
│   └── yapf
│       └── style
├── .gitconfig
├── .ssh
│   └── config
├── .tmux.conf
├── .vim
├── .vimrc
├── .vscode
│   └── settings.json
├── .zsh
└── .zshrc

Then execute the following command, and symbolic links to your files will be created in your home.

wagon link .

You can also use the copy subcommand to copy files.

wagon copy .

wagon repo Command

wagon repo OWNER/REPO # for example yasuyuky/wagon

This command will checkout the GitHub Repository to ~/src/github.com/OWNER/REPO

Configuration

The .wagon.toml file controls the behavior of the command.

dest field

By default, the command links the configuration file under your home. If you want to change this behavior, set the dest field.

"dest" = "/"

init field

The init field can be used to initialize the application to use each configuration file.

[[init]]
command = "brew"
args = ["install", "direnv"]
os = "macos"

For example, you can use the following command to run the initial configuration.

wagon init direnv

Dependencies

~8–20MB
~228K SLoC