Yesterday I stated that I want to create the devbox of the week. I have (almost) delivered on the idea today. In other words, the K8S Cube hasn’t progressed. On the other hand, I am now writing this in a freshly configured Neovim that is running in a WSL Ubuntu that was automatically automatically configured with Ansible. Also, the Windows host has the same Neovim configuration, the GUI fonts were (almost) patched and installed by Ansible there, too.
So, let’s recap the boilerplate that I have chosen to make easier.
Neovim
I have been using Vim for more than a decade. I have sometimes tried to run some other IDEs and they are okay as long as I get my key bindings working on them, but with the new development of LSP and DAP, the editor will have all the power user functionality that most editors can bring. Also, Vim work as fast or a bit faster than I think.
I have a brand new and very basic configuration, but already now I feel that my brain to text interface hasn’t been as good for years.
I have my settings in a git repository and I have a Makefile that installs
symlinks to a new host so that .vim
, .vimrc
and .config/neovim
will
all be served by the git repository.
The most important things to install were Nerdtree, Fugitive and Airline. Nerdtree is a simple and easy filebrowser that I’ve used for many years and would be lost without it. Fugitive is a good git integration that enables me to never leave the safety of vim… as soon as I learn to power use it again. Finally, airline may seem like a vain thing to use, but I am used to being able to read this and that from the Vim status bar and at the same time the plugin makes it look nice as well.
It took a while to figure out what goes where and how to reuse my old VimL
configuration that can be installed anywhere with scp
and a Neovim only Lua
setup. All of that is on a level where I can adopt a new plugin or edit my
keyboard mappings with ease.
Ansible
In order to bulldose my development box without any further confusion. The toughest part was to make sure the same script or at the very least, runs on a Linux, a Windows 11 and my OSX laptop.
Things like setting hostname and installing packages do not follow a common practice in different operating system. This meant that I had to first start with a blank slate on my Mac and today I’ve been running from Windows.
Just like the Neovim configuration, the Ansible configuration is minimally functional in order to easily expand in the future.
GitOps
I did mention that I want to have everything in Git. Optimally, changes also propagate from the source repository to all of my hosts. This is obviously still in progress. I don’t know what I will be using as my CD pipeline and how I punch a hole to command them from something like Github Actions.
So far, as long as I remember to keep pushing and pulling frequently, there is a chance that my development boxes will stay current and I don’t have to go hunting for the golden configuration file.
Fonts
This may sound vain again, but when I am supposed to stare at a screen for
a whole work day, I want to have a say in the looks. So, I have paid for a few
font families and Comic Code
is a very clear console font.
I am using powerline glyphs for style and a lot of the plugins in Neovim use font glyphs very liberately. That’s why I had to to run a Nerd Font patcher. The tool adds a variety of Open Source glyphs and icons to my paid fonts that make all the missing character symbols readable again.
SSH
Collecting and maintaining SSH private and public keys is a bit painful. Also, on a Windows, having someone with admin rights sign in and do stuff is almost too Unix to be true. I want to be moving laterally with whatever I have in my ssh-agent at the time.
Conclusion: Everything in moderation
This took a lot more effort than I would have liked, but I am really happy with the results. There is plenty of things to do and development environment configurations may be a neverending project.
Next, I want to get down to action. It all starts with a bit of hardware diagnosis. I need to go through the nodes in the cluster to see whether they boot up at all and what the initial configuration is. Also, networking configuration on a high level is something to consider next, so that I don’t find myself and the paint bucket in the corner of a freshly painted room.