A dotfiles collection with a SysAdmin & DevOps focus
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.vscode
bash
bazaar/.bazaar
clink
cmd
conemu
conhost
cpan/.cpan/CPAN
curl
cygwin
dircolors
editline
fish/.config/fish
git-win
git
htop/.config/htop
kitty
kpcli
less
markdownlint
metadata
modules
mysql
ncurses/.terminfo
npm
onenote
openssh/.ssh
pgsql
pip/.config/pip
posh
quilt
readline
sbuild
screen
scripts/bin
sh
stow
subversion/.subversion
themes
tmux
vim
vscode
wget
windbg/Workspaces
xdg-user-dir/.config
xlaunch
zsh
.gitattributes
.gitignore
.gitmodules
.mailmap
LICENSE
POSTERITY.md
README.md
dot-manage
dot-update

README.md

dotfiles

Here lies my own collection of dotfiles. In contrast to many other dotfiles collections, I've setup mine with slightly different objectives which reflect my occupation as a SysAdmin & DevOps engineer versus a pure developer.

Objectives

My primary occupation is that of a SysAdmin and so I often find myself working on many different systems. This introduces some key objectives I've tried to ensure my dotfiles meet:

  • Ease of access
    GitHub makes this easy by providing access to ZIP files of each branch in a repository. While a Git clone is strongly preferable, if this is too much effort or otherwise problematic, simply downloading and unpacking the ZIP archive is a helpful fallback.
  • Ease of setup
    A long or manual installation or removal process is painful and time-consuming. An automated approach is essential so that installation is quick and easy, with removal similarly straightforward if this is desirable (e.g. on a shared access account).
  • Portability
    It's all too easy for platform assumptions to seep into configurations. I've tried my best to avoid such assumptions so that all configurations work on platforms where the underlying application or library is supported, or at least degrade gracefully.

Management

I've settled on using Stow to manage my dotfiles due to the following attributes:

  • Compatible
    Most Unix-like systems have Perl installed by default and Stow itself has no peculiar dependencies.
  • Portable
    Stow can be included in the repository and subsequently stow itself into a location in the user's PATH for a quick bootstrap!
  • Organised
    Stow makes keeping the repository organised simple, with each directory containing the configuration for a specific program or library.
  • Granular
    Stow operates on chosen directories allowing for only a desired subset of applications or library configurations to be installed.
  • Revertible
    Stow can undo the changes it makes, ensuring that leaving the system in the same state as it was originally is trivial to do.
  • Stateless
    Stow doesn't need to maintain any state between executions which helps keep the system simple, and consequently less likely to break.
  • Lightweight
    Stow is fast, unintrusive, and at the time of writing the script comes in at a mere ~132KB!

Tested Environments

The following environments are known to work:

Thanks To

The numerous people whose dotfiles served as inspiration or templates for my own!

I keep a record of resources I've found particularly useful here.

Special mentions to:

License

All content is licensed under the terms of The Unlicense License.

You're free to do as you wish with my dotfiles (though I'd love a Star to show your appreciation!).