Updated 2021-03-24. (Tested on OpenBSD 6.8)
I’m a new OpenBSD user. I find the minimalist and security-focused philosophy of the OS attractive, so I’ve been learning about it on an instance hosted on OpenBSD Amsterdam.
I like how easy it is to write shell scripts in Fish, so it’s been my default shell for a while. All the little conveniences like autocomplete are amazing, so it’s honestly one of the first things that I do when setting up a new system.
$ doas pkg_add fish
$ chsh -s /usr/local/bin/fish jag
I use YADM to manage my dotfiles. There isn’t a package available on OpenBSD, but since it’s written in shell I could simply pull it in. It does require you to have Bash and Git installed, so make sure to do
doas pkg_add bash git as well before running YADM.
$ doas curl -fLo /usr/local/bin/yadm https://github.com/TheLocehiliosan/yadm/raw/master/yadm
$ doas chmod a+x /usr/local/bin/yadm
$ doas pkg_add bashgit
Fisher is how I manage my Fish plugins. It unfortunately failed to run on OpenBSD when I tried it, so I sent a small patch to fix that. It should work well now:
$ curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher $ fisher update
fzf (and friends)
I don’t know how I lived without fzf in the past. It makes it easy for me to find files and visually go through my shell history. Installing it is easy:
$ doas pkg_add fzf
Integrating it with Fish takes a bit more work, though. First, install fzf integration with Fish:
$ fisher install
Then we need to compile fd so we need the Rust compiler. It took a while for my little machine to compile all the dependencies:
$ doas pkg_add rust $ cargo install fd-find
Then we add the binaries to our
$PATH by adding
set PATH $PATH $HOME/.cargo/bin to
We also need bat, but unfortunately one of the dependencies failed to compile on my machine. It still works well even if bat is missing.
I use CoffeeScript and Browsersync for my generative art and they both need Node to work. I would use Node Version Manager (either the Bash script version or the Fish shell version) but neither of them support OpenBSD. So I installed Node through
$ doas pkg_add node
It’s an old version of node, but it works!
CoffeeScript and Browsersync
I then installed these two tools globally:
$ doas npm install -g coffeescript $ doas npm install -g browser-sync
I enjoy using the Micro editor and a package does exist on OpenBSD. Unfortunately it’s an old version so my plugins didn’t seem to work well. I’m lucky that an OpenBSD binary is available on GitHub though!
I downloaded the binary then moved it to
Since OpenBSD.Amsterdam is in another timezone, the time on my system is off. This makes it easier to work with cron, e-mail clients, and time tracking software.
$ doas ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime