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:
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.
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.