Adding this package with the necessary dependencies makes sure that if it's
installed its dependencies are installed as well and everything should work.
Archlinux doesn't specify a value for this and relies on applications knowing
the default. Guix adds values to this list, meaning that because there is no
value initially it overrides the defaults completely. One thing that always goes
wrong when this happens is that Firefox installed through ‘pacman’ won't be able
to find some schemas it needs to show the upload file dialog and crashes when I
try.
The ‘syncthing-gtk’ program doesn't seem to start the syncthing daemon
automatically. In fact trying to start ‘syncthing-gtk’ through shepherd doesn't
seem to want to work at the moment, complaining that it can't close a bunch of
file descriptors.
The example was using a system constructor with a kill destructor, but I don't
think those two work together. I prefer having the application run in the
foreground and using the shepherd way of forking so I have more control.
I thought that ‘syncthing-gtk’ was a program that would fork (given the fact
that it has a ‘--quit’ command), but it turns out that it doesn't. Using the
system constructor means that shepherd will block until ‘syncthing-gtk’ is
closed.
Even though the output of the ‘--help’ command promises that ‘--file-guile’ is
the same as ‘-fg’ it appears that specifying ‘--file-guile’ doesn't work. It
just pops up the help message.
The herbstluftwm configuration isn't complete yet, it's only the package so far,
but it does extend the xsession service to include a line in xsession to execute
the window manager in a bit of a hacky way.
This also adds a ‘mixed-executable-file’ function which is the same as the
‘mixed-text-file’ except that it also sets the executable bit for the computed
file.
- Make the header more robust. If we need to add more argumetns to the scsh
command-line this will let us do that more easily in the future without having
to change the header again.
- Don't ‘display’ the result of the call to ‘run’ because that should always be
‘0’, unless something went wrong. Regardless, it doesn't belong in the output
of this program.
- Use ‘rx’ in Emacs to build the regular expression. This is easier to read,
especially considering how many times a single ‘\’ has to be escaped (once for
the string in scsh, and once more for the string in Emacs).
Other file headers come with caveats:
- ‘#!/usr/bin/scsh -s’ :: Now that scsh is installed through Guix, this is not
where this file lives.
- ‘#!/usr/bin/env -S scsh -s’ :: This doesn't work when we need to specify move
arguments on the command line and need to use the meta-argument.
‘env -S scsh \’ doesn't work.
Write a small DSL for converting a simple lisp expression to an MPD query
format. This turns, for example:
(and (= artist "Katatonia") (= album "Last Fair Deal Gone Down"))
Into:
((artist == "Katatonia") AND (album == "Last Fair Deal Gone Down"))
The expressions inside ‘query’ are quasi-quoted, so that variable substitution
is possible.