There are two main free and open-source technologies today for real-time internet chat: [IRC] and [Matrix]. The former is old and stable, while the latter is newer and still developing. Most communities I want to keep in touch with are on Matrix, like [Nix], while a few are on IRC, like [Guix]. One advantage of Matrix is that it allows for [bridging] to and from other platforms, like IRC.
Highly extensible software like Emacs, Vim, and Neovim tend to grow their own package managers. A software developer, for example, might want to install editor plugins that hook into a particular programming language's linter or language server. The programmer's text editor is therefore extended to support managing additional software to extend the text editor. If this loop continues for too long, the programmer's editor becomes more delicate and complex. The remedy for this problem is to manage software using dedicated tools apart
[Nix] is a cross-platform package manager and domain-specific language used to define packages. In this article, I will demonstrate how to write and contribute Nix packages to [Nixpkgs], the [world's largest software repository]. I assume that you, dear reader, already know the basics of software development. Nix brings a number of advantages over comparable packaging solutions, most importantly:
- more reproducible builds
- a large and welcoming community
aspe:keyoxide.org:ESQIYIHUFMW4ZI3NLH3TFYM2CM
In a previous post
I explained how to manage Neovim plugins with Nix and Home Manager.
In this post I want to go further and show how to migrate Neovim configuration
from ~/.config/nvim
to ~/.config/home-manager
entirely. The end result will
be to split our Neovim setup into multiple modules that colocate plugin sourcing
and configuration.
If you haven't read the post linked above, do so now. We will assume the
NixOS provides good support for the Xfce desktop environment out-of-the-box, but the defaults are minimal. The files in this Gist provide a more complete experience, including a suite of basic software and plugins as well as an optional home-manager
configuration for theming.
The key additions to the default Xfce provided by NixOS are:
- Complete bluetooth / audio support with panel indicators and apps
- LightDM with theme
- Extra Xfce apps for calendaring, disk partitioning, etc.
- Various quality-of-life improving non-essentials
In my previous article, [How to build with Nix], I explained how to write a Nix package and contribute it to
the official Nix package repository. One of the advantages of Nix is how easy it is to develop your own custom
Nix package repository, called a channel. A channel can be implemented simply as a tarball containing a
default.nix
file like this:
let
pkgs = import <nixpkgs> {};
in