‘The half minute which we daily devote to the winding-up of our watches is an exertion of labour almost insensible; yet, by the aid of a few wheels, its effect is spread over the whole twenty-four hours.’
Benjamin Slade

Guix, Nix: You are in a maze of twisty little $PATHs, some undefined

Some notes on interactive fiction/text adventure games and PATHs in Guix, and StumpWM. Maze no. 1 There may (likely is) some way of programmatically setting the X Windows PATH variable in Guix System (née GuixSD) via the base configuration (e.g. config.scm), but I haven’t been able to uncover anything that works. This is relevant for being able to use locally installed static binaries or local shell scripts via the window manager.

Semi-automated installation of Void Linux on pure ZFS with full LUKS disk encryption

After spending too much time repeatedly trying to set up a Void Linux installation using ‘pure ZFS’ and full-disk LUKS encryption, I ended up writing up a set of BASH scripts to automate (and, effectively, document) the installation process, and prevent me from forgetting steps along the way. There’s quite a number of potential stumbling block along the way (such as grub-probe not knowing how to properly find the root drive) which I figured out ways around, as well as discovering that Void’s zfs-0.

Auto-generate “creator” PDF metadata in AUCTeX using yasnippet

After struggling with some poorly-handled, apparently “reset” proofs introducing heaps of errors (despite my providing a .tex source) for the past few days,1 I thought about providing automated pdf-tags indicating creation tools used for my TeX-produced documents. Real, professionally-typeset documents deserve to have the tools used to produce them properly recognised in their metadata. So here’s a yasnippet which generates auto-populated hyperref options to generate a pdf-creator tag indicating the version of Emacs, AUCTeX, and distro used:

youtube-dl bash shell function: prefer mp4, and timestamp with download time

In case it’s useful, a quick Bash shell function which takes a single argument (a web address that is processable by youtube-dl) and returns the best quality mp4 version (in case you need to deal with a device that doesn’t like modern video encodings/containers), with the download time as the file’s modification time timestamp (useful if you have a directory of downloaded videos and want to quickly see the last N files you downloaded, rather than the files being sorted by upload time).

Equake(!) Quake-style overlay console in StumpWM

I’ve been alternatively using both KDE Plasma 5 and StumpWM on various machines and have got a working model for using the Equake drop-down in StumpWM. The StumpWM #'invoke-equake command hides (using StumpWM native hide-window, rather than Emacs’s make-frame-invisible as the latter creates various issues in finding and fetching the Equake window) the Equake frame if it’s the currently active window; it searches through all windows in all groups on the current screen/monitor, and calls emacsclient -n -e '(equake-invoke)' to create an Equake frame if no extant Equake window is found; and if an Equake window does already exist for the current screen, it is yanked into the current group, pulled into the current frame, and unhidden (if necessary).

Equake: A drop-down console written in Emacs Lisp

Over the holiday break I’ve been working on developing a Quake-style drop-down console, dubbed Equake / equake. It is not yet on Melpa, but is accessible at https://gitlab.com/emacsomancer/equake.1 equake, written fully in Emacs Lisp, is designed as a ‘classic’ drop-down console interface like Yakuake, inspired by ‘cheat’ consoles in games like Quake. It provides access to various ‘shells’ implemented in Emacs, including shell (an Emacs wrapper around the current system shell), term and ansi-term, (both terminal emulators, emulating VT100-style ANSI escape codes, like xterm does), and eshell (a shell written entirely in Emacs Lisp).

Browsing the Web with Common Lisp

I was a long-time user of Conkeror, a highly-extensible browser with an Emacs ethos. It still exists, but since the changes in the Firefox back-end away from XULRunner, which Conkeror uses, running Conkeror became increasingly difficult to use, so I’ve largely switched to just using plain Firefox. However, John Mercouris has been developing Next Browser (originally styled nEXT Browser), a browser with a Common Lisp front-end, allowing for customisability and extensibility along Conkeror/Emacs lines:

Confusion: PDP-10 Zork

I grew up playing Infocom, Magnetic Scrolls, and Level 9 text adventures, with the Zork trilogy, the Enchanter trilogy, Planetfall, Wishbringer, The Guild of Thieves, The Pawn, Knight Orc, and Silicon Dreams being particularly prominent in my memory (somewhat re-activated through recent listening to the Eaten by a Grue podcast). I would have played all of these on an Atari 8bit or ST computer, and didn’t have any access to anything like a mainframe, and so never actually played the original Zork, which was written in the Lisp-derived MDL language (which formed the basis for the MDL-subset Infocom-specific ZIL language used for their subsequent offerings) for the DEC PDP-10.

Quake-style drop-down terminal in StumpWM

One thing I’ve missed in StumpWM is a Quake-style drop-down terminal, like what Guake provides (and I have a Lua-one in my AwesomeWM config). It may be that I’m still haven’t fully absorbed the StumpWM-mindset and that I should be doing this a different way. But up until now when I’m using StumpWM I’ve tended to end up with a heap of terminal windows that are a pain to navigate through (I have a run-or-raise command associated with xterm, but it starts from the first xterm window and usually I want the last – something else to figure out how to do).

Dockerised Firefox on GuixSD

So GuixSD doesn’t currently package Firefox (though hopefully that is changing), but only IceCat (which is now EOL). On freenode#guix, pkill9 suggested that Firefox (and Chromium etc.) could be installed on Guix via the Nix installer (install as per instructions on their site and then nix-env -i firefox) with the following trick, create a file ~/.local/bin/firefox with the following content: # Wrapper to run the Firefox built and packaged by Nix MESA_LIB=$(dirname $(realpath /run/current-system/profile/lib/libGL.