*nix workflow after nearly a decade (presentation)

April 13, 2026

note: there's some artifacts like not knowing how to do org-mode's en-dashes in markdown when I converted this for my site. this was originally shown in org-mode via org-present.el.

who am I and why am I here

  • former e-board officer, been using *nix as my daily driver for nearly a decade
  • started at 12 as a 4chan /g/ kid -- any cringe can be blamed on that

    • I haven't gone on 4chan since like 2020, I have no idea what kind of cesspool even /g/ has become (back in the day, there were nice threads on there everywhere except /pol/ based on how the poltards were described)
  • guiding principles throughout: unix purist, minimalist, anti-bloat
  • this is roughly how that went

how it started: luke smith

  • his early video on why should one use terminal programs was my gateway drug into everything

    • since I used youtube in like 2011, this was the sole good thing that ever came out of the algorithm thing that people talk about for me specifically
  • from there: different distros (he started with parabola on his librebooted x200), tiling WMs (i3, dwm), suckless and minimalism, LaTeX
  • parabola's wiki in 2017 still had the beginner's guide arch had removed -- effectively the same distro anyway

    • parabola is just a more libre and gnu version of arch
  • this was 2017-2018, before he quit being a linguistics professor in georgia, moved to a cabin in florida, and started complaining about les youths
  • didn't follow other linux channels until much later -- pretty much just david wilson's system crafters for emacs and guix (more on this at the end)

distro hopping

  • started on parabola -> arch shortly after for wifi drivers (was interesting finding out about non-free firmware as soon I start using linux)
  • set up gentoo through the handbook to actually learn how linux works underneath
  • did a full LFS+BLFS. twice.

    • if I didn't get into Guix, I would've done it again after getting frustrated with regular distros for the nth time.

    • side-tangent: I already disliked that it made it seem like creating a distro was more complicated than it really can be because of how many dependencies stuff like gcc and glibc need, but now it's even adding systemd on top of that? I don't recommend anymore. too many points of failure where it can go wrong.

distro hopping 2

  • then: CRUX, Sabotage, KISS, Alpine -- hopping between them over whatever small thing annoyed me at the time
  • found CRUX through z3bra on nixers.net discussing differences between it and gentoo

    • felt like home: just enough packages for a minimal base, liked being a package maintainer for a while
    • power user burnout got to me every single time after a few months of usage though where I then quickly reinstall arch
  • sabotage was unique and interesting but only lasted one hop

    • it had a similar idea to nixos and guix where there's a singular store directory but

distro hopping 3

  • KISS was what I wished CRUX was, but it didn't have the drunk tux mascot so it only got a couple hops
  • sabotage and KISS found through people on IRC and XMPP
  • learned a lot about sysadmin and writing packages through all of this
  • choices eventually converged to: arch (easy), CRUX (fuzzy inside), gentoo (USE flags deepened the purism path, less package maintenance burden than CRUX)

os hopping -- the BSDs

  • found them in the continued pursuit of minimalism and purism
  • direct descendants of bell labs research unix
  • freebsd: what I wished linux was -- better documentation, first-class integrated ZFS
  • openbsd: high quality documentation in form of man pages (rather than freebsd's handbook in addition to man pages), security-above-all-else focus (though didn't impact game emulation much), tight-knit mature community (unlike most of linux), crux's packaging was heavily inspired by openbsd's, the mascot, and it's canadian

os hopping -- tangent with plan9 / 9front

  • grade 12 high school phase
  • the creators of UNIX at the end of Research UNIX v7 and v8 pretty much thought "how can we do this better?" and made a separate OS that is like a reimagining of UNIX

    • "everything is a file" taken further into even the networking
    • e.g. in BSD and its derivatives for networking via sockets are all based around the C sockets API while plan9 put even that into abstracted files and made 9p (plan9 protocol; even windows used it in wsl1 before they switched to virtualization)
  • loved the simplicity and elegance of how its programmed

    • it uses a different flavour of C
  • rio/8.5 and acme showed me that mice aren't inherently bad for computer use when designed /properly/

    • i.e. not context menu galore
  • couldn't daily it: i219-v and r8168 ethernet drivers weren't working correctly even after trying to patch them with my then-meager C skills like changing IRQ interrupt numbers and stuff

distro hopping fin

  • OSes I used the longest without hopping: crux, gentoo, and openbsd
  • left crux and gentoo mainly due to power user burnout from package maintenance
  • initially left openbsd for windows virtualization and gaming (though I ended up doing more FOSS engines and retro emulation under it than expected)
  • later left openbsd again and freebsd as well because of the amdkfd driver being patched out, meaning I can't use ROCm on my GPUs for GPGPU compute

    • it only leaves ggml's vulkan kernels which is quite different from doing CUDA/HIP

window managers

  • started with i3 -- keyboard-only workflow, most popular on r/unixporn at the time

    • back when every post was either i3-gaps or bspwm, not sway and hyprland like today
  • switched to bspwm: more minimal, more unix philosophy -- keybind handling split into a separate program (sxhkd)
  • used herbstluftwm for a bit -- liked the manual tiling
  • dwm became my main WM for a long time: minimalism + functionality, suckless, elegant
  • brief switch to spectrwm -- visually similar to dwm but easier to configure

    • based on my screenshots that lasted only a few months before switching back to dwm
  • briefly tried sway to see if wayland was worth it -- switched back to dwm

    • only really used sway when too lazy to set up xorg on a new system

some screenshots from other people

  • reflects what I see as a *nix desktop is

window managers -- i3 (from xaetlas on r/unixporn in 2021)

  • I couldn't find the picture I saw from luke smith's website, maybe mandela effect

window managers -- bspwm (from gamehelp16 on r/unixporn in 2017)

window managers -- herbsluftwm (from nerdypepper/abhinav on r/unixporn in 2017)

window managers -- cwm (from z3bra in 2018)

and now my rices

  • I didn't keep screenshots archived from before 2020. some good ones were lost. :(

2020 -- spectrwm

2023 -- cwm

2024 -- dwm

2025 -- sway

2025 -- dwm

2026 -- (not mine, joey's) hyprland since it looks cool

editors: before emacs

  • before linux: eclipse for java, notepad++ for everything else, brief atom stint
  • switched to vim when I started linux

    • terminal programs like it were part of what got me to switch in the first place
    • learning your tools actually matters -- this comes up a lot
    • avoided pre-made configs: they were bloated and changed defaults in ways that were hard to reason about as a new user
  • brief emacs attempt, but not knowing lisp made it impossible to properly configure

    • also noticeably sluggish on windows on the same hardware that ran arch and gentoo fine
  • after learning vim enough (motions, basic ex commands) -- wanted more minimalism

    • used vis and nvi for a while
  • plan9 phase: used acme briefly, learned sam through its manual

    • sam taught me ed, ed taught me basic regex

    • regex + vi motions: cannot overstate how much this improved editing

nixos

  • peer pressured into it by functional programming friends in junior year of college
  • main selling point: entire system configured through a single file, dotfiles managed in one language

    • if I hadn't used nixos, I likely would not have gotten as deep into guixsd later
    • guix itself was originally based on nix
  • frustrating at first because I didn't know nixlang

    • same situation as when I first tried emacs in 2020
    • once I learned more nixlang, nixos felt much nicer to use
  • but: still had to deal with systemd, and its administration felt very bureaucratic and corporate

nixos

  • the broader nixpkgs community was being overrun by new users blindly copy-pasting configs without understanding them -- everyone ended up with the same setup

    • felt like it was becoming less for power users
  • the DSL is a special snowflake -- they should have used something else as a base like haskell or anything they actually took inspiration from
  • ROCm support issue had a light-hearted tone that implied it wouldn't be seriously maintained by the team

    • that thread was marked stale three months ago and has had no activity for the past eight months -- right after I stopped using nixos

first attempt at guix

  • briefly tried guix after nixos
  • not knowing guile scheme made it hard to use -- same pattern as nixos and emacs before it
  • also trying to fold my existing suckless + vi workflow into it was difficult at the time
  • switched back to rotating between arch, CRUX, gentoo, and nixos despite their respective shortcomings

editors: almost emacs

  • the completion package situation had changed significantly since I last looked at emacs
  • it previously felt like you /needed/ something like ivy or helm -- packages that fundamentally changed how the editor felt, not improved it
  • what changed my mind:

    • orderless -- fuzzy searching without the bloat
    • vertico -- the vertical completion menu ivy used to give
    • consult -- better autocomplete layered over existing emacs functions
  • these packages improve what's already there rather than overriding it
  • finding them was part of my gateway drug into giving emacs a proper second chance

the lispy gopher show

  • heard about it while briefly on the fediverse through prahou (author/artist of unix_surrealism from analog_nowhere)
  • it and system crafters were what actually made me learn lisp and scheme properly rather than just look things up
  • had learned some functional programming through OCaml and nix the prior couple summers -- learning lisp and scheme was much easier with that background
  • with vi-like editors I never needed to write scripts in them or touch their config much

    • regex + vi motions + a few bridge packages covered most gaps
    • with emacs, not knowing lisp meant always looking things up instead of just writing what I needed
  • the parentheses were daunting before. now they make me feel fuzzy inside, the same way learning linux did in middle school

why emacs now and not before

  • the main reason I resisted emacs was it seeming like a monolithic kitchen sink

    • "an operating system that lacks a good editor" is not an entirely inaccurate description
  • but the way I was applying the unix philosophy had a cohesion problem

    • mutt looks different from newsboat looks different from lynx -- all configured in different syntaxes
    • vi keybinds and ncurses in common is about as far as the cohesion went
  • with emacs: yes it's one big program, yes I'm not using POSIX shell to glue things together

    • lisp is a more powerful language than shell, which depends on other programs written in other languages to do even simple things
    • everything goes through text-based buffers -- integration is genuinely easier
  • pre-made configs like doom emacs or spacemacs were also a turnoff

    • same problem as pre-made bloated vim configs: you end up learning the pre-made config, not the editor

    • neovim has a similar situation now

guix + emacs

  • guix got me to learn guile scheme properly
  • now write most of my programs in guile scheme instead of defaulting to C99 (suckless style) or python
  • guix also finally gave me what nixos pointed toward: system + home config + dotfiles all managed in one language, without systemd, without the corporate feel, without the special snowflake DSL problem

current stack

  • editor, scheme via geiser, elisp via eval-* functions: emacs, obviously
  • org-mode: document editing, task planning, habit tracking

    • worth calling out separately -- it's much more than a markup language
    • some people use emacs entirely for org-mode
  • email: notmuch + mbsync + msmtp via notmuch.el directly (same setup as before, just dropped mutt/aerc)
  • RSS: elfeed
  • browser: eww primarily, qutebrowser for js-heavy sites (canvas, etc.)
  • document viewing: pdftools + docview instead of mupdf

    • mupdf still for large PDFs like textbooks where it's just faster
  • background programs: dtach + its emacs management package instead of tmux
  • local LLMs: gptel talking to vllm and llama.cpp running on my desktop
  • window manager: EXWM instead of dwm or anything else

    • worked fine for games -- elite dangerous and others ran through it without emacs getting in the way