Releases: benlinton/dotfiles
v1.0.7
- Add
age,sopbrew formulae for encrypting version controlled yaml values - Add
git-filter-repofor scrubbing secrets from git history - Improve
ssh-loginconfig path and step-cli defaults fallback - Add
zoxideto macOS brew formulae - Configure zoxide shell integration
- Add
claude-upscript to auto update claude; disable update banner - Keep local shell alive after exiting cloned SSH tabs
- Add zoxide cheatsheet
Full Changelog: v1.0.6...v1.0.7
v1.0.6
- Update README for clarity on user input and Ansible
- Improve cheatsheet formatting
- Add
fnmFast Node Manager - Experiment with
karabiner-elements(deleted) - Add
reloadfunction for bash and zsh - Add
keepingyouawakeapp for long running AI on macOS
Full Changelog: v1.0.5...v1.0.6
v1.0.5
- Add
cheatsheetcommand - Add many MacOS applications
- Support installing casks that require sudo access
- Configure Kitty navigation hotkeys
- Change remote ssh prompt to magenta color
- Add git config dotfile
- Improve documentation
Bug fixes
- fix: Auto-install homebrew
Full Changelog: v1.0.4...v1.0.5
v1.0.4
- Add
Kittyapp - evaluating as a potential cross-platform substitute foriTerm2 - Auto colorize remote ssh sessions - without modifying server config
- Include a few additional MacOS app installs during bootstrap provisioning
Full Changelog: v1.0.3...v1.0.4
v1.0.3
- Split ansible provisioning into separate files per OS family
- Support
interactivecommentsforzsh - Attempted Windows (not
wls)ansibleplaybook - Landed on using
wingetnatively instead to significantly reduce complexity - Successfully ran Windows provisioning for the first time
Full Changelog: v1.0.2...v1.0.3
v1.0.2
- Add basic claude settings
- Add smallstep support
- Ansible no longer needs sudo access for Darwin systems and auto installs brew
- Improve prompt colors to avoid confusion with server defaults
- Audit this project and refactor any discovered issues
Full Changelog: v1.0.1...v1.0.2
v1.0.1
Colorize prompts.
- root: red
- remote: green (for the future: avoid green since debian uses it as a default)
- local: blue
Full Changelog: v1.0.0...v1.0.1
v1.0.0
Complete rewrite using Chezmoi and Ansible.
- Replaced the custom bash bootstrap system with chezmoi for dotfile management and templating
- Added ansible playbook for system provisioning across macOS, Debian, and Fedora
- Added shared
~/.shellrcsourced by both.bashrcand.zshrc— consolidates pyenv, nvm, PATH, and editor config in one POSIX-compatible file - Added
~/.inputrcwith readline improvements: arrow key history search, case-insensitive completion, colored stats
v0.9.0
Snapshot of my dotfiles from the 2010s.
Environments
This repository attempts to support:
- MacOS
- Linux - primarily Debian
- Windows - using Cygwin; minimal support
Structure
bin/- executables available via $PATHdocs/- help files, tutorials, cheatsheets, etc.functions/- autoloaded global functionsmodules/- autoloaded config files grouped by library/feature/packageinit.sh- main script that loads all functions and modules
How it works
*.symlink magic
All files and directories ending with .symlink will get automatically
symlinked into the $HOME directory when you run the dotfiles installer.
The dotfiles installer is safe in that it will never destroy existing files,
it can run multiple times with the same outcome (i.e. idempotent), and you can
undo all changes with the uninstaller. You'll only need to run the dotfiles
installer once.
After running the dotfiles installer, your $HOME folder will look something
like:
$ ls -l `find ~ -maxdepth 1 -type l -print`
lrwxr-xr-x 1 myuser staff 57 Aug 11 11:28 /Users/myuser/.bash_profile@ -> /Users/myuser/.dotfiles/modules/bash/bash_profile.symlink
lrwxr-xr-x 1 myuser staff 51 Aug 11 11:28 /Users/myuser/.bashrc@ -> /Users/myuser/.dotfiles/modules/bash/bashrc.symlink
lrwxr-xr-x 1 myuser staff 51 Aug 11 11:28 /Users/myuser/.bundle@ -> /Users/myuser/.dotfiles/modules/ruby/bundle.symlink
lrwxr-xr-x 1 myuser staff 50 Aug 11 11:28 /Users/myuser/.gemrc@ -> /Users/myuser/.dotfiles/modules/ruby/gemrc.symlink
lrwxr-xr-x 1 myuser staff 53 Aug 11 11:28 /Users/myuser/.gitignore@ -> /Users/myuser/.dotfiles/modules/git/gitignore.symlink
lrwxr-xr-x 1 myuser staff 52 Aug 11 11:28 /Users/myuser/.inputrc@ -> /Users/myuser/.dotfiles/modules/bash/inputrc.symlink
...
NOTE: The symlinked source files should never begin with a . dot. The symlink
installer will automatically add a preceeding dot to the symlink destination files.
For example, ~/.bashrc -> ~/.dotfiles/bash/bashrc.symlink.
Load init.sh
The init.sh file is the one and only main bootstrapper script that loads
global shell variables, loads globally available functions, and autoloads
module scripts.
The init.sh script is sourced by very thin .bashrc and .bash_profile which
get symlinked into your $HOME directory via the dotfiles installer. These
files can be found within the modules/bash/ directory.
Load global functions
The init.sh loader will first source functions before any modules so all
global functions are available within each module.
Functions will load in alphabetic order of their filename. Ideally, each file
should contain a single function or a group of tightly knit functions.
Load *.autoload.sh module files
After loading functions, the init.sh bootstrapper will find all files appended
with .autoload.sh and load them using the built-in source command. The
bootstrap loader will take multiple passes to load bash files:
- first loading files ending in
.autoload.first.sh - then
.autoload.sh - and finally
.autoload.last.sh
During each pass, files will load in alphabetical order of directory name
followed by filename. Autoloaded files are typically found within the modules/
directory.
Copy *.template files
Files or directories ending with .template will get copied into the $HOME
directory when you run the dotfiles installer.
NOTE: This functionality is not fully supported yet.
Bin commands
The bin commands will be made available by adding the bin/ directory to
$PATH from within the bash module.
dotfiles- install, uninstall, and morereload- reloads the shell without exiting