Replacing Vim with Vim Classic in NixOS

Drew DeVault recently forked Vim into Vim Classic in an effort to preserve software for humans. It may seem goofy to some, but text editors matter. As software developers, they’re one of our (if not the) most fundamental interfaces to the computer that we have. We should not hand the keys over to that lightly. And I believe in Drew’s vision for human-maintained software. Not everything in my own life needs to be that way (I have to work with a lot of very pro-machine folks, whether they fully understand the long term effects it will have on their/our work), but you can pry my text editor out of my cold dead hands. And actually my hands are warmer and fuller of life than they’ve been in a long time. Programming and prose only make them moreso.

Today I’m gonna talk about getting Vim Classic to be the system text editor for NixOS, and why it matters, and why it matters.

But first, a ramble

At this point, I’ve used most of the editors worth trying. Emacs showed me that I didn’t have have to wait for someone else to build the tool I needed or wanted. It also taught me the value of high quality defaults because my emacs config never worked the same way twice and LISP, despite being a beautiful concept, is really an art project more than a programming language (sorry LISP folks, I really do have tremendous admiration… just please don’t make my most important tool depend on it!). I’ve also done IDEs (vomit), Sublime for about a week (meh), Notepad (my first C program in the 4th grade), Notepad++, VSCode (more vomit), etc. Eventually, the only one left I hadn’t tried was Vim.

In the last five years I’ve been a fairly enthusiastic user of a derivative of Vim (neovim) and lazy.vim however their recent shitty attitudes towards humanity have put me off. Seriously WTF is wrong with open source software right now? Get the actual fuck outta here with the racism and transphobia and homophobia and misogyny and parroted, hollow opinions from rich people who will burn you (with literal fire) the first chance they get.

Unfortunately, my current personal “stack” seems to overlap waaay too heavily with folks who are clearly in the wrong crowd. I don’t participate in OSS “communities” (partly because they’ve always been toxic), so I typically find out about problems long after the tools have made their way into my daily driver. These folks are also currently in cahoots with a lot of private capital that is being wielded against the safety of our community.

I’m fairly private (I do love sharing though), so I won’t list everything I use here other than what’s relevant to the post. Suffice it to say there’s clearly something “going around” the inscrutably-technical crowd that’s reinforcing some of the world’s worst attitudes. There’s also just some really toxic, awful, hateful, selfish, entitled, misogynistic creeps in way-too-public positions. These are not my people; not our people. These are the weird nerds in the 90s movie who were gross and perverse and inappropriate and even the other nerds celebrated when the jocks beat them up. Jesus, it’s the whole tech industry right now. The US writ large. It breaks my heart every damn day and makes me never want to lay a finger on another keyboard.

Our software tools are so broken right now. If you’re not a software/computing person it will be hard for you to even begin to understand how bad it is. Even talented developers that I work with default to tools that are essentially spyware spewing constant telemetry (I’m looking at you VSCode) because platforms have made it so awful to try and use meaningful alternatives. That’s not freedom or choice; it’s abuse. Of people. Of trust. Of your right to property and ideas and freedom of thought. Safety in your own digital home. Privacy. Right there in the motherf******* US Constitution. Computers pose a huge risk to your freedom right now. Way more than you realize if you don’t understand how computers actually do their thing; how easy it is to slip a packet out to a 3rd party that shares who you are, where you are, what you’re doing, what you’re interested in, the devices on your network, shit maybe a screenshot or a camera feed. And that’s just for advertising. Imagine when or if they want to persecute you. Please please please go educate yourselves.

I think Drew and others understand the risks we open ourselves up to when we turn over the tools. So thanks, Drew, for being willing to own your voice and code and chart a path for the rest of us.

Replacing Vim in NixOS with Vim Classic

I’ve been enjoying having a meaningful technical “deliverable” to these posts. I also barely get to do technical work in my day job anymore so when I’m wide awake at 4am and can’t fall back asleep, I try and eke out a little of that thrill.

Today I committed to replacing the default NixOS Vim install with Vim Classic. While I think NixOS also has some deep flaws I feel concerned about (see my complaints/concerns about systemd), there’s enough “right” with the underlying ideas for now that I find it hard to give up. I’m also terrified that some key developer is going to come out in support of killing puppies any day now, if they haven’t already. I know that the technocrat oligarchy defense sector surveillance crowd wanted to try and invade/take over Nix so fuck that too. That’s also not the focus of the post (you sure about that, John?).

Replacing your Vim with Vim Classic is fairly straightforward thankfully.

Most Nix configuration.nix files will start with:

{ config, lib, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];
		# ... rest of the config

Just plop the following override between those two blocks:

{ config, lib, pkgs, ... }:

let vimClassic = pkgs.vim.overrideAttrs (old: {
    src = pkgs.fetchgit {
      url = "https://git.sr.ht/~sircmpwn/vim-classic";
      rev = "4cdb8aa34c7dfcc65bbfcef55541d2bb9abf1d38";
      sha256 = "7yiaV5QeuSXnh/AnLHqbXXBeCsZV0TDhszyx2YZbD/w=";
    };
}); in
{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

Then do a good old fashioned nixos-rebuild switch and you should be off to the races.

$ vim --version
VIM Classic - Vi IMproved 8.3 (2026 Jun 02, compiled Jan 01 1980 00:00:00)
Compiled by nixbld
...

The current git commit here is where “main” is while I write this. You may need to update and also then correct the sha256 sum for a different commit.

Final thoughts

I think of computers and even AI as just mirrors back on ourselves. All the good stuff and all the bad. Is that tiny blob of silicon and plastic really that different than the Philosopher’s Stone that in the right hands gives eternal life, and in the wrong brings madness, pain, illness, and ultimately death?

I don’t think alchemy is real, but I do know that across all of the legends education and experience and wisdom were the antidotes. Education and understanding and a mastery of the elements and “sciences” was what could keep you safe, and even then involved risk. Any magical object has always been equally as dangerous as it was useful.

Maybe we humans told all of those stories for a reason.

<3, John

P.S. This post is written from Vim Classic 8.3

2026-10-10 04:00