Updated September 20, 2024
You can watch a broad overview of my system in this video:
This will be the first post in an ongoing series on setting up the Ultimate Zen Workstation and as a reference point for me in the future to look back on if I have breaking changes/need to install on a new machine.
I will be updating it on a fairly regular basis as things grow and change. In part one, we will discuss my rationale for choosing various services and programs.
In the following parts, we will build out this Zen Workstation that can be reproduced and tweaked to your needs. This will include a development environment, a system for note taking, video editing, and productivity - all tailored to my workflow after thousands of hours refining and tweaking.
Let’s begin!
The Rationale #
I have recently been working towards simplification of my life in all aspects. From getting rid of services I no longer use, to purging my closet of all but the essentials, to reducing clutter in both my physical space as well as my mind.
So, it was only natural to look at my workstation on which I create the videos, writings, and apps that sustain my family and help people in the world.
My computer has always been a bit of a chaotic environment that I have lived with, but it always weighed on my mind, and the more that I look at the future of the desktop Linux space, the more that I see things moving away from the systems that I have built about half a decade ago.
The time has come to update them, simplify, and create a Workstation that is conducive to getting things done rather than finagling. The endgoal is a system that is portable and replicable without too much upkeep.
Prior Workstation #
For the last six years, I have daily driven Arch Linux in some form or another. Sometimes vanilla Arch, sometimes EndeaourOS or Manjaro. At risk of falling for every meme on the internet, I will quickly digress. This is not going to be a post dunking on Arch; I still believe it is a great distribution to use to learn the Linux system in general, and for certain people, it meets their needs perfectly.
With that being said, I am not that person any longer. I can’t be bothered to deal with the granularity that comes with Arch based systems in my daily workflow. As a younger man with more time on my hands, I had the ability to customize my computer and waste time on the things that probably didn’t matter so much. But, as a father and business owner, the time is no longer there for this hobby, and I would rather use my machine for getting things built and pushed out into the world.
So, we are going to rebuild a system for the next decade that will allow us to grow with the technological ebb and flow in the process. Hopefully, this system will be current a decade from now with minor tweaking and updating.
My prior workstation used BSPWM, SXHKD, Dunst, Rofi, and some other services to tie things together. We won’t be abandoning all of these programs, just revamping and simplifying.
Enter the Choices for My New Workstation #
OS - Fedora Workstation #
I have chosen to run Fedora Workstation as the distribution that we will build on top of. Why? Because it is a fair balance between Arch’s bleeding edge and Debian’s stability, allowing for newer packages but also keeping from (hopefully) breaking too often. This also has the added benefit of running on Apple Silicon with Asahi Linux if I decide to go with a Macbook as my mobile computing environment in the future. This is still up in the air for me if I will go that direction, but the battery life of my fairly new T14s Thinkpad is making me think it is a good idea - I have owned the computer for nine months and the battery health has degraded to 3 hours on a charge. Good thing I bought battery replacement for 4 years…
The distribution matters a lot less than most people would have you believe.
The biggest departure from Arch will be from using pacman
to dnf
, and (potentially) adding in some Flatpaks.
I didn’t previously think this was a good idea, but to be honest, Flatpaks do seem to be another future of Linux scenario that allow sandboxing of apps and non-breaking dependencies for some apps that include Signal, a video editor, and some other electron apps.
I didn’t get Docker until I used it, and the same with Flatpaks, but I think I understand now.
This is also beneficial in that I can use Alma or Rocky Linux on the server, allowing me to learn one set of commands for all my computing needs. If Fedora doesn’t work out, I will simply move to another distro, but from my research and preliminary use, I find it to be pretty solid.
I still use Debian extensively on the server, and tying it in with Nix and home-manager is something I may want to explore in the future.
WM - Hyprland #
I last built out a custom configuration with BSPWM in 2020, and have slowly tweaked things as the years went on. It has served me well in my workflow, but admittedly is a bit of a mess in some respects. However, in those five years or so, the state of Wayland has changed to the point that I do believe that it will be the future for Linux desktops. As such, we will be building a configuration based on Hyprland, but the launcher and Notifications system will remain the same as before (rofi and dunst respectively, just with Wayland support).
*update: I am exploring swaync as a dunst replacement
Terminal - Kitty #
This is a departure from alacritty in that I see it as the future of my terminal experience. Alacritty is still a fine choice, but there are just some things that work better in Kitty, fonts and image support being two of the big ones.
Terminal Utilities: #
ZSH #
Starship Prompt #
Oh-my-zsh #
Zsh-autosuggestions #
Zsh-syntax-highlighting #
Powerlevel10k #
Tmux #
Tmux is a great piece of software that allows persistent use of a terminal, as well as logins to SSH services, quick switching to other workspaces, and so much more. I have used it every day since I learned about it seven years ago. If your workflow is terminal based and you are not using Tmux, start.
Zoxide #
Lazygit #
This is a drop in replacement for magit, and I think it is incredible.
Font: SauceCodePro Nerd Font #
Editor - Neovim with NVChad Configuration #
If you have followed me for any time, you will know I have been an avid emacs user since 2020. But, in simplifying things, I am going away from it for a few reasons - I find it slow, it does too much, and I want to replicate my dev environment everywhere with low latancy. Emacs is great but I feel as if Neovim is the future and I want to skate to where the puck is going (to show my Canadian side). It is apparent to me that emacs has its time and place, but with the rapid movement of Neovim, I see it as the place to be. We will configure this with all plugins and necessary additions that I use, and will be building from NVChad’s base config - which is really good and has such sane defaults.
Plugins #
luarocks #
Neorg #
Zen Mode #
Vim-Beancount #
Org-mode #
vim-dadbod, ui, and completion #
hop #
Obsidian #
Harpoon #
Noice #
nvim-notify #
Notifications - Dunst #
Currenty. I am exploring alternatives.
Launcher - Rofi (Wayland) #
Screenshots - Grim with Slurp #
Calender - Calcure #
I only use this for larger events, I still use google calendar on an alternate account for my phone Notifications etc as it just works. #
TODOs and Notetaking: Obsidian.nvim and a custom Taskwarrior app I am building #
Browser - Firefox #
Plugins #
Ublock Origin #
VimiumFF #
uMatrix #
I still don’t care about cookies #
Decentraleyes #
Newsfeeds and RSS - Newsboat #
Emails - Neomutt #
Passwords and encryption - Pass with GPG #
Video Editing - Shotcut #
Video Playback - MPV #
Image Editing - GIMP #
Ebooks and PDFs - Zathura #
Audio and desktop recording - OBS Studio #
Screenlocking and timeout - Hyprlock #
Thus concludes Part One of this series! In the next part, we will start with a fresh Fedora installation and I will show you how to create a similar system with my dotfiles, and I will show you how I quickly back up my configurations with a custom script, as well as a fresh install script that should have you up and running in a few minutes.
See you then.