i don’t remember when i switched to nixOS. this year has stretched into five in my mind, and getting a bearing on time is increasingly difficult. i suspect it was somewhere around march 2025, before my roommate moved in. before my old laptop burned down, too.
rather, i had issues with myself. i did something dumb like switching apt locks and bricked my system, maybe not beyond repair for anyone but definitely for me. i think it uninstalled the network stack.
i generally do not trust me. me has issues with executive function, long-term planning and any chore-adjacent maintenance. i know that me will, without fail, do something stupid at some point. so i wanted a failsafe.
or, really, anything with an undo button. but, in practice, an atomic package manager.
i picked nix because it seemed to fit that need, and because a lot of people i knew (who i usually trust more than me) seemed to be in it and good at it enough to give advice. so i went ahead and
this was excused by two things.
one: i assumed that, since i will not be doing any “advanced shit” (setting up containers, building custom packages), therefore any of the “actual code” parts in /etc/nixos/configuration.nix would be irrelevant to me
two: i assumed that, since i could understand how function calls and object declarations worked from just the first few pages, i could half-assedly infer the rest of the language from random snippets and examples online
the underlying cause was that i was feeling fairly apathetic at the time, and reading a big wall of text risked information overwhelm and loss of interest.
i don’t remember the specific machine i used to flash the installation media. mightve been the pi, mightve been my parents’ computer. either way, i had nixos, and over the course of a week or two i cobbled my previous setup together with just search.nixos.org.
it felt great! nixos-rebuild felt a bit weird at first, but on the upside i could interrupt it at any moment and it wouldnt break anything. even before that switch, i had already taken to regular backups (using the wretched yet useful FreeFileSync), and my fish scripts and some configs were already covered.
and, in a weird way, the entire system config being compressed into one file gave it an oddly coherent identity. before the OS was vast and cloudy in my perception, a million gears twisting way out of sight. now it had a face i could look into.
i even got nvidia drivers working, which was the direct cause for the downfall of my previous system. steelmillnymph got its futureproofing.
maybe in june, it smelled like smoke, and it was no longer charging. there wasnt a repair shop that would take it.
it was my fault and it wasn’t. the fans had stopped working some weeks before, and i had to prop it up diagonal and point a big standing fan at it. it seemed to handle major components well enough, but the charging circuit had other ideas.
if you’re wondering, the fans could be replaced. they weren’t. the reasons are as stupid and inevitable as you can imagine with our combined executive debilitation.
more so than i could have anticipated. a rancid, paraphysical discomfort, a piece of me torn violently and irreversibly. i had the tools to recover later. it didnt make it any better. steelmillnymph was dead, and i felt deader with it.
after some despaired wailing and crumpling in the bed, i got a friend to help out. i bought a new one with their money. it was a banged up but working fliptop, comically unfit for its advertised gimmick (inverting it to turn it into a tablet).
i installed nixos on it, and the recovery lived up to advertisement. i copied one file over, ran one command, and 40 minutes later i had most of my system, minus sessions and polish. the specs were worse, but i was just happy to not be missing half my brain.
at this point, i was still mostly interacting with nixconf as a json file, and didnt use shelldirs or any other stuff that worked outside it. despite that, the facial aspect of the thing began to settle in solid. i stopped insulting the system when i could.
the GPU was disabled in the BIOS by the previous owner, likely
because it had a defect. i felt a bit paranoid bringing it back on,
wondering if it’ll cause another fiery death. i remember sporadically
switching the amdgpu driver on or off every few rebuilds,
depending on whether convenience or paranoia were winning at the
moment.
because after an unfortunate cable tug, ladyoftheriver was also no longer charging. i disassembled it, but had no electrical tester, or manual on hand, or will to live.
even worse than last time. i did not want to beg for cash from the same people. i didnt know where to get another machine. i was locked up, wilting.
beyond that, it was becoming clear that the visceral discomfort of the situation wasn’t caused by the inconvenience of restoring the setup. it was inherent. it didnt matter if it was going to spend an hour or a week restoring it. being torn into pieces, left with no eye, no arm, no soul - that was the hard part. the unavoidable part.
i don’t have many scars. 6 out of 7 are from that month.
i got by for a few weeks using the raspi as my desktop. it was barely enough to keep me alive. eventually, my roommate got some things sorted and passed me their now-unused machine.
in many ways, it was worse than the pi. it had 2 cpu cores, and about 4gb ram. it had a sub-1080 screen, and an hdd expansion slot. it had a single, ~60gb emmc drive, and 2 usb slots total.
but, well, there weren’t really any options. so,
nixos-rebuild switch --use-remote-sudo i did.
/nix/store have trouble fitting in
there,nix search reliably consume all almost
available physical memory due to evaluating the entire package
registry,nixos-rebuild do the same before it even
starts building packages,that even nix-collect-garbage had a noticeable,
sometimes concerning demands
that i had to close every app if i wanted to change a firewall rule
and i no longer had it. i no longer had a good computer, or an okay computer, or a semi-reasonable computer. i had a netbook from 2010. the OS wasnt made with little junkyardwisp in mind.
i compensated as much as i could. i didnt use signal anymore, because signal was a web browser. i didnt use telegram anymore, because telegram was in a web browser. i restarted things often, and made a swap partition on a usb stick to prevent complete lockups, and turned on store auto-opt.
it felt like padding a falling anvil with pillows. even the most basic interactions were filled with dread. checking the memory/cpu graphs in the corner of my screen became a tic, browser clear a parasite of its own.
and, at the same time, the sense of urgency waned, and it became hard
not to think about what i was facing. why was
nix search like that? did it really have to re-eval the
entire monorepo every time? was i doing something wrong or was the
/nix/store supposed to be this uncomfortably large?
so, well, i went to the friends mentioned in the beginning, and they told me something along the lines of
yeah, it’s kinda ass, probably not getting fixed
about pretty much anything in that list. my cli tools aren’t usable without a browser open, and i can do fuckall.
meanwhile, my initial assumption one (“i will just install packages from nixpkgs”) was being proven false.
in the boredom following complete lack of entertainment software, i began tinkering with something. something that wanted to be built. something that needed a linker. moebius ansi editor? idk.
i got very confused by shelldirs. i got very confused by nixdsl itself. i needed help again, and the help was confusing.
i don’t think i managed to throw together a “quick and dirty” shelldir for a project from github. not in that first attempt, not since. i understand the process now, but understanding isn’t enough.
just, like, getting a FHS binary to run. trying to find all the
packages it wants so files from, which isn’t as
straightforward as it sounds. building something is even worse, when i
try it gives me toolchain-specific errors which may lead to more missing
libs, or they may not.
did you ever have a linker failure 25 minutes into a
cargo build because it turns out you accidentally added
both rustup and cargo to your package list
months ago? i hadnt even considered it possible, and yet.
it took a few of these attempts, and then i put it to words, and it felt like a spear to the neck
the long, mandatory windup of declaring an env before running anything, the obsessive unification of all functionality under the single lang’s cone (even when it feels unfitting), even the standard library being contained inside the package repository. everything feels like that.
i’m not the intended audience as a person, because that person does not want to Write A Package. i’m not the intended audience as someone who wants to build a program, because that person does not want to Write A Package.
i can Write A Package, or i can go home.
not the OS situation. the hardware situation.
junkyardwisp didn’t die. it’s still around, and i use it. i managed to find another one, a used tower pc without a disk or a gpu (for a criminally low price, considering it has 4 times the ram of jyw), and i’m writing from it now.
but, even as the situation improves, my perception of nix does not. i have exhausted all the positives, and am left with everything else.
like how the whole setup reproduction falls apart when your two
machines vary wildly in resources - one has all the disk space, other
needs to exclude libreoffice for fear of starving /home;
one could run plasma if it wanted, other struggles with lxqt. so you
have two very distinct nixconfigs, which nonetheless share 80% of the
packages, but they can’t be one file because there is no sane way to
collapse them neither with nix logic nor with dumb macros. i have to
hold both of them in my hands, as separate entities.
and, weirdly enough, i don’t think ignoring the manual is hampering me much? like, sure, when i complain about something, often it turns out there is an explanation which was in the guides (happened in a discussion of substitutors yesterday), but just as often
in the beginning, i assumed that i’ll be able to patch over my lack of education with intuition and snippets, and i wasn’t exactly wrong? my nixconf has a lib.lists.flatten for conditional packages, which someone said is insane. thats about it.
this did not make much of a difference. because the guide wasnt the bottleneck. the bottleneck is being on Discords, where they tell you all the crucial things no one’s assed to put on wikis. the bottleneck is going out and Acting Excited. i failed the filter because i wanted to be left alone.
the desperation pushed me to learn, not just nix but other things. i can do most things from the terminal now. i discovered micro-ed. and, sure, quick restores helped get through the fire
but it is seeming more and more likely that the thing that enabled these restores - single-file os declaration - is also responsible for my extreme reaction the restores could not possibly mitigate.
i identify with my hardware to a sickening degree, so much more than i used to. the computers used to be nebulous and distant, despite driving my life.
now i put stickers and trinkets on them for appeasement, outside and in. i call them by their names. at least twice i left guilt admissions in my fish history. it sucks and i dont want to go back and it sucks twice more.
usually i’m angry about nix. well, right now i’m just sad.
if this is to be tagged a machinekinner’s awakening, nix is the saddest, cringest vessel i could have possibly taken. if you gave me a choice, i’d even pick lusting over jane wakeman. just not this.
but, you didn’t, and i’m here now. i never talked on a nixos discord, or irc, or discourse, or reddit, and yet this dumbshit dsl-os-ppm has complicated emotional value for me now. i want to rid myself of it and i don’t. it gave me a wound only to patch it haphazardly. the logo of my future nixpkgs fork is already on my arm.
i hope that doesnt actually happen. i just spit over my left shoulder. repeating after my mother’s line.
ladyoftheriver and steelmillnymph no longer exist as coherent objects. i screwed both apart, threw the FRUs into two or three small bags, and ended up slashing one of the mainboards with a boxcutter by semi-accident.
it made me sadder than i like to admit.