{
  description = "Harald Hoyer's Nix Configurations";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";

    snowfall-lib = {
      url = "github:snowfallorg/lib";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    neovim-flake.url = "github:notashelf/neovim-flake/v0.5";
    neovim-flake.inputs.nixpkgs.follows = "nixpkgs";

    home-manager.url = "github:nix-community/home-manager/release-23.11";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = inputs:
    let
      lib = inputs.snowfall-lib.mkLib {
        inherit inputs;
        src = ./.;

        snowfall.namespace = "plusultra";
      };
    in
    lib.mkFlake {
      channels-config = {
        allowUnfree = true;
      };

      # Add modules to all homes.
      homes.modules = with inputs; [
        neovim-flake.homeManagerModules.default
      ];

      outputs-builder = channels: {
        formatter = channels.nixpkgs.nixpkgs-fmt;
        defaultApp = lib.flake-utils-plus.mkApp { drv = channels.nixpkgs.home-manager; };
      };
    };
}
