Finally fully enable binary cache for nix-community and emacs-overlay.
No I don't have to build emacs from scratch for every master update :)
This was done by means of cachix, which is a means to upload built derivations
for others to share with. Nix-community has their own, and it makes using
overlays provided by nix-community that much better. This should shave off 20-25
min per system rebuild.
I am not sure if this will work as is after moving this config to new system,
so here are the steps to follow:
1. nix shell nixpkgs#cachix
2. sudo cachix use nix-community
3. stage/commit cachix.nix and cachix/ from /etc/nixos
4. done
Hopefully this will be enough in the future system move. If not, all the best to
future me.
I was using it before on Work machine for dev (as it came default with IDEA),
then saw it on Andreas King's streams and its alright.
For long-form text 'reading', I like FiraCode as JetBrains font is bit taller
and just a bit thicker, so Emacs will stay on FiraCode for now, but for terminal
and other monospace stuff, JetBrains is very nice as it doesn't have all the
extra ledges of FiraCode so looks less cluttered.
ca-references is an experimental feature that allows using Content Addressed
paths in Nix-store.
Benefit is that it is no longer needed to update/rebuild/download a package when
there is an inconsequential change in dependency.
The feature has ways to go before becoming fully stable and (I hope) even longer
to make the CA-referenced builds available in Hydra. But, it doesn't hurt to
enable it. If something goes wrong, I can always switch back :)
Previously a hack was used to add plasma wayland session via Systemd to sddm.
Since then Nixpkgs merged the PR to make it available to SDDM via propoer path,
so the hack is no longer needed and can be removed
Use Emacs master branch with native compilation flag enabled.
I tried Pgtk branch, but it is not always kept up to date with master (currently
3+ months behind) and could have some issues that aren't always tested. It does
mean Wayland integration is imperfect, but right now it is good enough (with few
minor annoyances).
Emacs + Gcc (native-comp)
native-comp is currently in upcoming release branch (28.0.50), while pgtk branch
is yet to be merged. Using both above features is easily available with
emacs-overlay provided by nix-community.
I still haven't been able to get cachix build cache to work, so currrently this
config builds full Emacs on machine. This extends system rebuild by 30+ minutes
and reduces system useability for the same duration.
Updating system frequently is not currently on my radar anyway, and I can
probably stomach keeping the machine humming for 60+ minutes of system
rebuild (compiling Emacs itself takes 25-30 min),
as long as I do it less than once per week. Will see how it goes.
I haven't used it in months and don't expect to use it much in future either.
Often its subtitle sync was worse than original and in general it wasn't a good
tool for my needs.
Before Emacs was launching full GUI instance for simple $EDITOR invocations.
Terminal Emacs is good enough, and I don't need full GUI for quick editing of
git messages and whatnot, so use TUI emacs for this use-case
I have taken liking to some variants of FiraCode fonts as they are bit less
crowded than Roboto Mono and have just a little ol' typewriter personality.
Its an experiment, we'll see where it goes.
For some reason, couple of months ago, plasma5 and SDDM broke dpi on X11 session
and they started looking blown up. Everything still rendered at 1080p, but dpi
was set to too high automatically apparently.
While that finally pushed me to Wayland (and it seems to be where I'll be
settling), SDDM where I first interact with UI still looked ugly and immature
with blown up proportions. So its nice to get this fixed.
I'm assuming this will only work for Laptop display as dpi is now hard-coded for
96 and will look tiny on 4K monitor, but oh well. I don't plug in my monitor to
display too often anyway.
These were added to provide graphing support for org-roam
(and then were used with Land of Lisp book)
But, my Lisp learning is on hold for now, and I've never really used the graph
feature of prg-roam beyond initial novelty. It makes sense to simply remove
these applications from the system
These are snippets for shell. They expand to their target with SPC or
ENTER. For behavior, they're kinda like aliases, and I'm not used to
seeing them expand at will.
If they prove more trouble than worth, I'll remove them, until then, I
can keep'em
PipeWire is new Linux audio and video streams.
Previously I used PulseAudio, and while it worked, it was less than
perfect. Pulse used bit much processing, and in general had few bugs.
Pipewire is supposed to be lighter, more stable, and it can use high
quality codec for bluetooth.
I took this opportunity to move sound-related config to its separate
module (sound.nix). This is a beginning to nicely move inpendent config
sections to their own modules. Sound config has pretty much zero
relations with rest of the config, so it made sense to move it in
separate file. Perhaps I can do the same with other stuff, maybe some services.
5 min is default value, and my PC is not always on to make this a big
issue.
15 min cuts a little too steep with up to 30 min possible delay between
replies, by which time I've already forgot about the context. Hopefully
5 min will be enough without getting too distracting.
Emacs daemon had some interesting problems, mostly related to not being
ablt to cleanly and easily restart the service. It also had issues
accessing desktop file.
Standalone Emacs starts fairly quickly, and its not much issue to open
new window connected to same emacs instance now, so daemon config is no
longer needed. It was disabled since a while, but can be removed
completely now.
Default EDITOR variable is also now set to launch new instnace of emacs.
I am not pursuing Common Lisp anymore, in no small part due to there
being little to no integration with NixOS. I realise this is more on
NixOS than CL, but I'm not up for struggling with my OS AND Language AND
tooling.
Microsoft's python-language-server was getting stack overfllow on
invocation so basically useless.
python-lsp-server (originally by Palantir and now maintained by Spyder
IDE team and community) worked and without any major config.