This is my latest dotfiles generation.
I've been experimenting with many different tools to manage them properly, from Ansible to shell scripts, and never liked any of them that much, to be honest.
You can see the history on these repositories:
Then, I tried nix, which seemed fine, but also overkill for my case. In the end, what I really wanted was just a simple shell script, which is this version here!
./setup
# And maybe:
./macos/set-defaults.shMachine-specific bits (Brewfile.<host>, hammerspoon/apps.<host>.lua) are
picked by hostname -s: darkmatter is personal, quasar is work.
Copilot settings live in copilot/config, one key value
per line. The first field is the key; the rest is the literal value, with
surrounding whitespace ignored. Do not add shell quotes or variable expansion.
Blank lines and full-line # comments are ignored. ./setup applies only
settings that do not already match; runtime paths stay in setup.
Copilot agents and skills are symlinked individually into ~/.copilot. Setup
leaves existing files and directories alone and configures read-only sandbox
access to this repository. Remove old copies of repo-managed entries once
before running setup.
task releasetask updateRun task nvim to update Neovim plugins, install missing configured Tree-sitter
parsers, and update installed parsers. Neither startup nor ./setup updates
plugins or installs parsers.
Inside Neovim, these operations are also available separately:
:lua vim.pack.update(), :TSInstallConfigured, and :TSUpdate.