Skip to the content.

Worked examples

Create a source

mkdir -p ~/dotfiles
tuck source add ~/dotfiles --init --default
tuck source list

Adopt a shell config

tuck adopt zsh ~/.zshrc
tuck adopt zsh ~/.zshrc --apply
tuck package show zsh

Deploy a package on another machine

tuck source add ~/dotfiles --default
tuck package list
tuck package use zsh
tuck package use zsh --apply

Manage a root-context file

Root-context package files live under .root inside the source and deploy under /:

tuck adopt --root sshd /etc/ssh/sshd_config
sudo tuck adopt --root sshd /etc/ssh/sshd_config --apply
tuck package use --root sshd
sudo tuck package use --root sshd --apply

Configure one package leaf to deploy as a real copied file:

tuck package config set app .config/app/config --deploy copy
tuck package use app
tuck package use app --apply

Then inspect drift:

tuck status ~/.config/app/config
tuck package status app

Eject a managed file

tuck eject ~/.zshrc
tuck eject ~/.zshrc --apply

Eject stops managing the target and leaves a real file in place.