jakimfett's dev (b)log

Year: 2024
Day: #221
Today I installed the OnlyKey command-line program.

And I was not impressed.

The install was smooth. Using NixOS, the command nix-env -i onlykey-cli gave me the onlykey-cli program, and upon executing it I’ve got the prompt: OnlyKeyHelp

As you may notice, they want me to go online for the help.
Less obvious are the implications.

First and foremost, this is the command line.
Why the heck do you want me to open a browser for the docs?

Secondly, that appears to be a symantically versioned number at the top, and that URL is entirely generic.
So, depending on how the website is managed (as of writing this I’m waiting for their site to load), it may or may not actually help me depending on whether I’ve got the latest version of the command line app or not.

I hate both of those things with a passion that outshines the convulsive inferno of nine thousand supernovea, so that brings me to the point of writing this post.

I’ve clearly got to fix this.

In part because I bought the hardware and I want to use it despite my potato-quality network.

(@todo - harm viewers with a screenshot of my speedtest graphs)
So while I’m going to attempt to pull down the correct version of the docs, I’ll then want to figure out how to tinker with the source code from my existing system, and ideally modify the source to include a manpage if nothing else.

However, that means I need to figure out how to modify the nix expression for the onlykey-cli application, and then make my system use the modified version instead of the mainline upstream one.

Now, I see you in the back holding up your “…and submit your modified version to the upstream, right Anakin?” meme, and I’d like to agree with you. But, technical difficulties of properly submitting such a modification to the upstream aside, and my desire to help open source software and hardware succeed notwithstanding, such a thing can be a monumental task. And the technical difficulty level of this is high to begin with.


Functionally, Nix and NixOS makes keeping a system stable and usable a lot easier…once it’s been set up. And for a lot of stuff, installing packages is just as easy as a single command.


Woe betide you if it’s not already in nixpkgs and working.
I’ve been avoiding learning this because I’ve had other priorities.

Where to start in this monstrosity of a hammer factory.
Ideally, if you’re interested in this sort of thing, you already know about nix the expression language, and possibly even that such a thing as nixos, which uses the nixpkgs repo, exists.

But much of this is driven by my potato-quality network, so I’m going to be starting there, at the foundation of our collective tech stacks: assumptions about the internet.

Now, when this is written in the year of our zord twenty twenty four, the internet is pretty pervasive, and the online world generally assumes that you have a minimum of a megabit per second, which is a far cry from the dialup we had in the early ’90s. But despite this assumption, I live in an area where internet is via cell network, and most of the time we get around 20kbps, which due to exponential throttling, drops to less than 1kbps within about a minute. This makes the network unusable for most purposes, and I’ve been trying to treat this as a fun problem to solve rather than an irritating limitation on my deity-like software development stack and voracious hunger for learning.

That said, I’m getting between 1mbps and 100kbps today, so things are looking good for actually accomplishing something internet related.

Having said that, now I’m attempting to publish this as a blogpost, so we’re getting somewhere.

(…26 hours later…)
Well, this is now the only blogpost on my website.
And, I’ve gotten sidetracked from getting OnlyKey to work (there’s an exception, and I need to grok more nix if I’m going to debug) to the mad task of making revision control work. So for now, this one is done. OnlyKey_Error


In an effort to keep this mess organized,
the nix stuffs is getting its own page / post.



You can’t actually see this distinction on public website, because pandoc is rendering the files as HTML, but this gives me the next step towards paginating the blog again.

Everything for more than one reason.
In the case of automation, XKCD #1319 applies.



The premise of Nix, and NixOS, is declarative system management.

Declarative mostly means that the computer does the heavy lifting once the desired outcome is defined. Unfortunately this means something more along the lines of “someone else wrote the configuration”, but in most cases that works…relatively okay.

In my use case of OnlyKey, the help function doesn’t even work properly.

So, normally I’d just download the sources, and start tinkering. But this is NixOS, so “start tinkering” comes after getting the environment set up. Which, at the risk of belaboring the obvious, is nontrivial.

home | blog | contact