I'm not *happy* about Guix being pronounced "geeks," but my strident position that you should pronounce GIF the way the creator says[1] leaves me no choice.
[1]: Steve Wilhite, who created the format, said it's pronounced "jif"[2], and you do not know better than he does.
I looked into packaging a Matrix client, since that's another thing I use daily. It looks like it's going to be exceptionally difficult, since both the popular ones are webapps wrapped in Electron and almost none of the inevitable 10000 JS libs are in Guix already.
FluffyChat uses a proprietary binary-only framework and build tool, so that's never going to make into Guix proper.
Element uses yarn, which is open-source, but not packaged and seems challenging. Yarn docs recommend installing it via npm, which like, just.... sigh. Installing a package manager to install a package manager to install a library that does like "if (x > 0) { return true; }" is peak JavaScript brain.
I haven't been complaining about Guix lately, because I've mostly figured out how stuff works, or can figure it out when stuff comes up.
I submitted patches to add LibreWolf packages, which have been completely ignored, like most of the patches I've sent in. That's not great.
But I can just... drop that code into my own channel and use it. Or fork the official Guix repo and add it and run my whole system off that instead. So I am, and that's honestly pretty nice.
I keep vacillating between "Guix rules, actually" and "what the fuck is this nonsense."
I'm in the latter place today, as I found that an important part of the Scheme code doesn't work unless the path to the process it's running in ends in "bin/guix". This means that when you use Emacs and Geiser to run Guile to hack on Guix packages, it can't use any packages from any channel other than the default one.
Broke my Guix config in a way that prevented X11 from starting. SSH'd into the box, ran `sudo guix system roll-back' and it gave me back the exact previous working setup.
I have created a package for LibreWolf[1] which appears to more or less work. That's extremely cool.
For this to be daily-driveable, I still need:
A Matrix client. I looked at Fluffychat, but it depends on "Flutter," which is a proprietary/binary-only build tool/toolkit. This is probably a non-starter, not necessarily because I have objection to it being proprietery, but because it seems like pain-in-my-ass weirdware. So probably going to tackle Element instead -- it's what I normally use anyway.
A working autofs setup. A good chunk of my NAS gets exported as NFS, which I use autofs to manage. There's an autofs package, but no way to configure it, so I'll be tackling some kind of service to do that.
Some of my Emacs packages. These are stuck in code review. I might dump these into a personal channel in the meantime.
[1]: LibreWolf is a fork of Firefox with all the ill-advised Mozilla Corporation junk removed; it will never, ever show an ad for Mozilla VPN. https://librewolf.net/
I have 90% of my Emacs config ported to Guix Home and working well enough that I'm only setting my hair on fire a couple times an hour, instead of every 30 seconds.
Packaged the rest of my weirdware.
Packaged the Jellyfin MPV Shim, which is working well. Legit really nice experience here, had to package three deps as well, it all took less than an hour.
Haven't set up the channel properly yet, but, soon.
I have been told that I can solve my problem with these fonts by using something called a "computed origin," which is completely undocumented and (based on multiple responses saying "it's impossible to do this") not well-known.
This despite it being used for icecat, the least ridiculous browser Guix has packaged.
Okay, still Guixing over here. I'm making packages for my Emacs Weirdware, and it's honestly really delightful that five of the 19 things already have official Guix packages.
There's a special thing for handling fonts, you basically need ~20 lines of boilerplate to fetch an archive with the .ttf files in, and this code does the rest.
Input Mono is gratis for personal use, but if you publish anything that uses it, you need to pay for a license. It's not freely redistributable.
Not freely redistributable shouldn't be a problem! Guix will download the fonts when someone requests an install, which isn't redistribution.
Except.
The hash of the .zip of the fonts is different every time you download it. I don't know why, but the actual .ttf files are ~6 bytes different in every download. Doesn't seem like enough data for it to be a fingerprint, but, maybe?
Guix has a strong focus on reproduceability, you have to provide the hash of any source material. Which you cannot do if the source material is different every download.
I asked for help, it seems like it's literally impossible to handle this, unless I download a copy and host it elsewhere, then point Guix at that and give it the hash.
Which is redistribution, which is against the license.
So I can either placate Guix by violating the license, or switch my preferred font.
Alright, so, I'm trying to get Guix into a comfortable, daily-driveable state. This is going to involve packaging some large things that aren't currently in Guix, like Librewolf, my preferred web browser.
I suspect that's going to be a lot.
I decided to start with something simple: my preferred text editor font, Input Mono.
But, so, yeah. I can't change how one key on my keyboard works because some third-party software package is broken, even though that has literally nothing to do with the change I want to make.
Okay, I got some help from #nonguix on Libera, turns out, the System Crafters install image I was using pinned the nonguix channel to a specific commit, and that commit was either broken or had an implicit dependency on the stock guix channel which caused breakage.
Removed the pin and I was able to reconfigure the system. This took several hours, since it downloaded hundreds of megs of... something... and compiled the whole Linux kernel.
But, I have a caps lock key that works like control, which means I can type on this laptop without immediately becoming enraged.
I am not sure it should be so difficult to change one keyboard layout setting.
The error I get when I run `guix pull` doesn't tell me anything helpful about what's wrong:
building /gnu/store/zlsavr3sd9wl8i9l9ps0hpk1j0wjkak6-nonguix.drv... |builder for `/gnu/store/zlsavr3sd9wl8i9l9ps0hpk1j0wjkak6-nonguix.drv' failed to produce output path `/gnu/store/sailxjc3lnd9rylm2x9795x0j0cgcgxl-nonguix' build of /gnu/store/zlsavr3sd9wl8i9l9ps0hpk1j0wjkak6-nonguix.drv failed View build log at '/var/log/guix/drvs/zl/savr3sd9wl8i9l9ps0hpk1j0wjkak6-nonguix.drv.gz'. cannot build derivation `/gnu/store/imiaxn32kiv9fdifqgajmm7ggpf8b100-profile.drv': 1 dependencies couldn't be built guix pull: error: build of `/gnu/store/imiaxn32kiv9fdifqgajmm7ggpf8b100-profile.drv' failed
First thing driving me up the wall: The caps lock key is acting as the caps lock key (wrong, bad) instead of the control key (pure, good), so I can't type anything without scrabbling at the keyboard like a helpless squirrel.
Changing this one setting requires reconfiguring the entire system. In case I changed something else completely different at the same time, I guess.
Reconfiguring the system requires running `guix pull`, so it knows about the nonguix channel that has the kernel that supports WiFi.
I can't pull because something in nonguix is broken. I have no idea what, or whether I could fix it if I did.
So I keep waiting a day or so and retrying `guix pull` in the hopes that someone has noticed that this is broken, and fixes it, and then I can configure my keyboard.
Okay, so. I was able to log into the Guix install on this laptop, because I reset my password after logging into a virtual terminal as root, which I was allowed to do with no password whatsoever, despite the installer asking me for a root password.
Oh, I see. The instructions for actually using the installer[1] -- which aren't mentioned in the repo containing the installer images[2], much less linked from it -- tells me that, during the last step of the install process, I have to switch to another virtual terminal and hand-edit the configuration. And if you don't do that, you get a probably-unusable install.
Why do I keep pushing this particular boulder up this particular hill? It comes down to a few things:
- I think packaging stuff for Guix is easier than other distros. At least, there's a huge package-to-contributor ratio I've never seen in other distros, and it has a ton of software for a relatively new (and very niche) distro. - All the packaging and system config is in Scheme, and I like Lisps. - The way you can create profiles of installed software obviates the need for language-specific version & environment manager tools. When the distro natively supports installing/running multiple versions of things side-by-side, you don't have to care about crap like rbenv, nvm, or pyenv. - It's very easy to host your own package repo. It's very difficult to host a Debian package repo.
...it had WiFi during the install, but the installer installed Linux-Libre, so it has no WiFi after the install. Fixing that requires an internet connection.