Dotfiles
Some time ago, I moved my publicly available dotfiles
1 to a private gitolite
installation. I don’t remember exactly why I pulled it from GitHub
, and
recently I thought there might be some value to share my setup with others.
Besides, I haven’t had a reason to track any sensitive or personal data in my
configuration files themselves. Last week I decided that I might as well just
push it to GitHub
again, so here it is: my dotfiles repository.
I consider my configuration files some of the most valuable assets I have on a system. I try to constantly improve my configurations to suit my everyday needs. One blog post which really struck home with me, was John Cook’s Automate to save mental energy, not time. I don’t necessarily save heaps of time polishing my configuration setup, but I know I spare myself for future headaches fixing itches and pain-points today.
Mostly this is related to tools and technologies I use as a professional software developer. This post highlights some of the more notable parts of the repository.
Overview
From README.org
in the repository:
For the time being, I’m using
git
to track my configurations across multiple hosts using branches. These branches has a set of host-specific patches which are continuously rebased on top of the master branch. This provides a sensible backup across hosts, while having tailored configuration for each host.Most configurations are applied by symlinking dotfiles into
$HOME
using GNU stow.
The configuration section with most frequent changes are, perhaps not
surprisingly, related to my editor: Emacs
. Then comes my current window
manager i3wm and zsh
shell setup.
Emacs
I’ve already written about my usage of Doom Emacs, and I still continues to use it. I’ve found no other, better alternative, and quite frankly I think it’s pretty amazing. The project is evolving constantly, which can be both a good thing, and a bad thing. There still are things which aren’t entirely optimal using it, but all-in-all I’m quite satisfied with my editor setup these days.
i3wm
I’ve been switching between using MacOS
and Linux
on my laptop the last 10
years or so. Currently I’m on Linux
. On the desktop computers I’ve used at
work I’ve exclusively used Linux
. This means I’m pretty much on a Linux
-only
setup these days. One of my favorite pieces of software on systems with a
graphical user interface has to be tiling window managers. I’ve tried quite a
few, but I’m currently using i3wm
. This isn’t a post about tiling window
managers, but you should definitely consider trying one out I you haven’t already.
Rofi
I used Synapse to launch applications in i3
for quite a while, before
switching over to rofi
. Rofi
is pretty great. I mostly just use it as an
application launcher, but it can also switch between i3
workspaces, and
application windows, as well as be programmed to do basically whatever.
Git
Not really much exiting here. I absolute love git
, and it’s up there as one
of the pieces of software I use the most. However, I try to keep my
configuration quite simple, and not bother too much with customized behavior.
One thing to note though, are a few convenient aliases for showing the log.
A thing to note about my git
configuration is that I purposely don’t fill in
my email by default in $HOME/.gitconfig
. It’s too easy to mess up committing
as either my personal persona in a work context, or vice versa. I’ve done this
on several occasions, so now git
prompts me to set my email in every new and
cloned repository that I set up, using:
$ git config user.email <email>
Zsh (with prezto)
The command line interface never gets old. Not a day goes by where there’s
something I have to do which involves the command line. Before the terminal used
to be my main entry point to the command line, although this has tilted the
scale more towards my editor after switching to Emacs
. Still though, it’s the
same shell which powers it all though: zsh
.
These days I’m no longer sure why I use zsh
. I’m no power-user though, nor do
I think I use features which wouldn’t be available through e.g. bash
. Who
knows, one of these days I might switch back just to make default setup easier,
not having to install a new shell on new systems.
In any case, I currently use prezto
to drive most of the zsh
configuration.
I’m too old to write all this shit myself…
Tmux
Tmux
is awesome. I started using the GNU Screen
terminal multiplexer a long
time ago, but quickly switched over to tmux
when first learning about it and
its advantages over screen
. I use it less frequently now that more of my
workflow evolve around Emacs
, but it remains an important tool in my toolbox.
Fzf
I mostly use fzf
as a fuzzy finder for my shell command line history in zsh
,
but it does a whole lot more like fuzzy finding files to send to command line
applications.
Vim
I do still have my old vim
configuration lying around, although I don’t
change it much. I expect it to be quite rotten by now. I can’t really recall the
last time I fired it up, but I do have to from time to time. It uses a plugin
manager to install a few plugins, and nothing much more fancy than that.
The rest
There are configurations for a bunch of other applications and software which I don’t bother mentioning here. I expect my configuration files and tools of choice to continue to evolve, as well as accumulating new tricks and picking up new snippets which all make everyday programming life easier.
Hopefully publishing my dotfiles
could prove directly useful to others, or
inspire others to improve their own setup in ways which could be interesting to
me in return. Publicly available dotfiles from other users is one of my main
source of inspiration for my own setup, so if you haven’t checked out mine yet,
please knock yourself out!