{
  inputs = let
    mkCustomUrl = url: {inherit url;};

    mkInput = url: {url = "github:${url}";};

    mkFollowingNixpkgs = url: {
      url = "github:${url}";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    mkFollowing = url: input: {
      url = "github:${url}";
      inputs.${input}.follows = input;
    };

    mkWithSubmodules = url: {
      inherit url;
      submodules = true;
      type = "git";
    };
  in {
    agenix = mkInput "ryantm/agenix";
    catppuccin = mkInput "catppuccin/nix";
    chaotic = mkInput "chaotic-cx/nyx/nyxpkgs-unstable";
    hyprland = mkWithSubmodules "https://github.com/hyprwm/Hyprland";
    hyprland-plugins = mkFollowing "hyprwm/hyprland-plugins" "hyprland";
    impermanence = mkInput "nix-community/impermanence";
    nix-colors = mkInput "Misterio77/nix-colors";
    nixpkgs = mkInput "NixOS/nixpkgs/nixos-unstable";
    nix-super = mkCustomUrl "git+https://git.privatevoid.net/max/nix-super.git";
    nixvim = mkInput "pupbrained/nixvim";
    schizofox = mkInput "schizofox/schizofox";
    treefmt-nix = mkInput "numtide/treefmt-nix";

    home-manager = mkFollowingNixpkgs "nix-community/home-manager";
    nix-index-database = mkFollowingNixpkgs "nix-community/nix-index-database";
    snowfall-flake = mkFollowingNixpkgs "snowfallorg/flake";
    snowfall-lib = mkFollowingNixpkgs "snowfallorg/lib/dev";
  };

  outputs = {...} @ inputs:
    with inputs; let
      pkgs = import nixpkgs {inherit system;};
      system = "x86_64-linux";
    in
      snowfall-lib.mkFlake {
        inherit inputs;
        src = ./.;

        formatter.${system} = treefmt-nix.lib.mkWrapper pkgs {
          projectRootFile = "flake.nix";

          programs = {
            alejandra.enable = true;
            deadnix.enable = true;
          };
        };

        overlays = [
          snowfall-flake.overlays.default

          (_final: _prev: {
            nixSuper = nix-super.packages.${system}.default;
          })
        ];

        channels-config = {
          allowAliases = true;
          allowUnfree = true;
          allowUnsupportedSystem = true;
          cudaSupport = true;
          permittedInsecurePackages = ["freeimage-unstable-2021-11-01"];
          home-manager.useGlobalPkgs = true;
        };

        homes.modules = [
          catppuccin.homeManagerModules.catppuccin
          chaotic.homeManagerModules.default
          hyprland.homeManagerModules.default
          nix-colors.homeManagerModules.default
          nix-index-database.hmModules.nix-index
          schizofox.homeManagerModules.default
        ];

        systems.modules.nixos = [
          agenix.nixosModules.default
          catppuccin.nixosModules.catppuccin
          chaotic.nixosModules.default
          impermanence.nixosModules.impermanence
        ];

        devShells.${system}.default = with pkgs;
          mkShellNoCC {
            packages = [
              alejandra
              git
              nvfetcher
              statix
              (writeScriptBin "build" "nix fmt && nh os switch . -- --impure && nh home switch")
              (writeScriptBin "up" "nix flake update")
            ];
          };
      };
}
