{
  description = "A complete, declarative, and reproducible configuration of my entire Nix fleet";

  inputs = {
    nixpkgsUnstable.url = "github:NixOS/nixpkgs";
    nixpkgsStable.url = "github:NixOS/nixpkgs/nixos-22.05";
    nixosHardware.url = "github:NixOS/nixos-hardware";
    homeManager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgsUnstable";
    };
    nur.url = "github:nix-community/NUR";
    preCommitHooks.url = "github:cachix/pre-commit-hooks.nix";
    agenix.url = "github:ryantm/agenix";
    doomEmacs.url = "github:nix-community/nix-doom-emacs";
    comma.url = "github:nix-community/comma";
    rock5b.url = "github:aciceri/rock5b-nixos";
    emacsSource = {
      url = "git://git.savannah.gnu.org/emacs.git?rev=72a94f91fd0570556ce770dc3a39e658f7588f7e";
      flake = false;
    };
  };
  outputs = {self, ...} @ inputs: let
    utils = import ./utils inputs;
    inherit
      (utils)
      checkFormatting
      formatApp
      formatter
      lib
      mkDevShell
      mkVmApps
      nixosConfigurations
      ;
  in {
    inherit nixosConfigurations;

    apps = lib.foldr lib.recursiveUpdate {} [
      (mkVmApps self.nixosConfigurations)
      formatApp
    ];

    checks = checkFormatting ./.;

    devShells = mkDevShell;

    inherit formatter;
  };

  nixConfig = {
    extra-substituters = [
      "https://aciceri-fleet.cachix.org"
      "https://rock5b-nixos.cachix.org"
    ];
    extra-trusted-public-keys = [
      "aciceri-fleet.cachix.org-1:e1AodrwmzRWy0eQi3lUY71M41fp9Sq+UpuKKv705xsI="
      "rock5b-nixos.cachix.org-1:bXHDewFS0d8pT90A+/YZan/3SjcyuPZ/QRgRSuhSPnA="
    ];
  };
}