This repository is essentially my dotfiles for my local machine, with a bit of extra configuration magic.
It replaces a previous version that used a Chef cookbook. The reason for replacing it with a custom script is that every time I used it, I spent a fair chunk of time updating my configuration to match what had changed in the Chef universe since I touched it last. As an added bonus, this way is simpler and faster.
xcode-select --install
git clone https://github.com/daisylb/config.git ~/Config
cd ~/Config
./run2.sh
xcode-select --install
git clone https://github.com/excitedleigh/config.git
cd config
./run.sh add
# look at the diff of config.toml, and remove unwanted packages
./run.sh uninstall
run.sh
invokes a Python project in the configsync
subdirectory, whose behaviour is described in detail in the following section. It installs everything that is listed in config.toml
; additionally, things that are not listed in config.toml
are either added to that file (if add
is passed) or uninstalled (if uninstall
is passed).
These are configured by the bootstrap script, because they are needed for configsync to run.
A handful of tools have configuration files or directories in this repo. Symlinks are created from their expected locations pointing here, controlled by the [symlinks]
table of config.toml
. Those tools are as follows:
vscode-config
: Visual Studio Codefish-config
: Fish shellgit-{config,ignore,template,message}
: Git
These are stored in the [homebrew]
table of config.toml
. They are installed using generated Brewfile
s, by running brew bundle dump
and brew bundle install
when in add
mode, and brew bundle install
and brew bundle cleanup
when in uninstall
mode.
Not implemented yet
These are stored in the [mac-app-store]
table of config.toml
, as a mapping of app names to IDs. They are installed by mas
and removed using sudo rm
.
These are stored in the [python]
table of config.toml
, and installed with pipx
. pipx
is itself installed with pip install --user -U
.
These are stored in the [vscode]
table of config.toml
.
Node packages are not installed ahead of time; I run them as needed with npx
, which is now part of Node.