Channels support

While this primarily uses flakes as its main form of distribution, this project does keep some use cases for traditional channels. It’s not guaranteed to be good as Using my config with flakes but it’s an option. Anyhow, there is a section for using my configuration with channels as shown in Using my config with channels.

The entry point is found at ./default.nix.

default.nix
{ compat-flake ? "flake-compat-fds" }:

(import
  (
    let
      lock = builtins.fromJSON (builtins.readFile ./flake.lock);
    in
    fetchTarball {
      url = lock.nodes.${compat-flake}.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
      sha256 = lock.nodes.${compat-flake}.locked.narHash;
    }
  )
  { src = ./.; }
).defaultNix

As you can tell, it is made with flake-compat. This is to support both use cases easily at the expense of making the traditional method a bit more tedious such as the Nix project being completely locked in with its dependencies (thus you can’t configure it with your own nixpkgs version). [1]


1. Then again, the way it used to be before flakes already has a host of problems. This is the least of them.