Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


This is the VM that I work in. It contains my configurations of vim, tmux, fish and more. On my Mac, there are no developer tools installed except Vagrant, VirtualBox, iTerm2, and the Xcode Command Line Tools. My dotfiles contains a Vagrantfile to provision the Vagrant box running in VirtualBox with Ansible. So when I want to start developing on my machine, I do a vagrant up && vagrant ssh and then I work inside the Vagrant box. From time to time I run a vagrant destroy to keep everything clean. I use US-Extended as my keyboard layout (The German keyboard layout doesn't work for me).

I'm using Solarized Light as my color scheme. My font of choice is Input in 11px. I then work in full screen mode. This is how the entire thing looks like:



I'm using fish as my shell. I noticed that it does a lot of things I needed to configure in ZSH by default and switched to it. The only thing I configured is that I use fzf, because I really missed Ctrl+r for reverse searching and I like the incremental search.

The prompt is a tiny arrow (or a ✦ when there are jobs in the background) that is green when the last status exit was 0, and red otherwise. In the right prompt, I display the pwd and the current git status. I have a few functions:

  • With j I can jump to my Code projects
  • To start or continue working on a project, I use my tiny s function which starts (or attaches to) a tmux session for a project with the correct start directory.
  • mcd creates a directory and then cds into it
  • l is just ls -al


Use tmux, it rocks! I configured it with some more Vim-like bindings and a nice status bar with the current time and battery charge (via acpi).


I'm doing all my programming and most of my writing in vim. I use the following plugins:

Other commandline tools

  • git is the only version control system I use. It has an amazing companion: tig
  • ripgrep is a replacement for grep that is so fast, that I can't really believe it
  • jq is like sed for JSON data, but I mostly use it for pretty printing
  • tree prints the folder structure as a tree
  • wget and curl
  • pry is a replacement for Ruby's IRB with amazing_print
  • mdless is a less for Markdown files
  • ragel is a beautiful state machine compiler
  • youtube-dl allows me to download videos for train trips
  • docker and docker-compose because I really wish it would do what I want
  • shellcheck to get feedback about shell scripts
  • asciinema to record terminal things
  • electric_monk to check if I have unpushed changes anywhere
  • direnv to load and unload environment variables depending on the current directory

Languages I work or play with

The programming languages I use regularly are installed via asdf so I can switch versions and always be on the most recent release.

  • I write Ruby and JavaScript (Node, Browser or Deno) almost daily
  • Currently working in a Go project
  • I used Haskell quite a lot back in University and I'm playing around with it again

Making GPG available in the box

Thanks for @bascht for helping me setting this up.

On my Mac, I have GPGTools installed to write and receive GPG encryped emails. The GPG agent on my Mac is configured to create an extra GPG socket.

# ~/.gnupg/gpg-agent.conf
default-cache-ttl 300
max-cache-ttl 999999
extra-socket /Users/moonglum/.gnupg/S.gpg-agent.extra

SSH is then configured to forward that extra socket to the virtual machine:

# ~/.ssh/config
  RemoteForward /var/run/user/1000/gnupg/S.gpg-agent /Users/moonglum/.gnupg/S.gpg-agent.extra
  ExitOnForwardFailure yes

In addition to that, the host and machine share the pubring.gpg and trustdb.gpg. They are both in the folder of this repo (but gitignored), and then linked to the according locations.



The Vagrant Box I do almost all my work in




No releases published


No packages published