{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
    nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
    home-manager = {
      url = "github:nix-community/home-manager/release-26.05";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    stylix = {
      url = "github:nix-community/stylix/release-26.05";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    deploy-rs.url = "github:serokell/deploy-rs";
    devshell.url = "github:numtide/devshell";
    impermanence.url = "github:nix-community/impermanence";
    nix-minecraft.url = "github:Infinidoge/nix-minecraft";
    treefmt-nix.url = "github:numtide/treefmt-nix";
    walker.url = "github:abenz1267/walker";
    xremap.url = "github:xremap/nix-flake";

    disko = {
      url = "github:nix-community/disko";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    nixos-wsl = {
      url = "github:nix-community/NixOS-WSL";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    snowfall-lib = {
      url = "git+https://git.cpatino.com/c4patino/snowfallorg-lib?ref=main";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    sops-nix = {
      url = "github:Mic92/sops-nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    yumevim-nix = {
      url = "git+https://git.cpatino.com/c4patino/yumevim-nix?ref=main";
      inputs.nixpkgs.follows = "nixpkgs-unstable";
    };
    dotfiles = {
      url = "git+https://git.cpatino.com/c4patino/dotfiles?ref=main";
      flake = false;
    };
  };

  outputs = {
    snowfall-lib,
    treefmt-nix,
    ...
  } @ inputs:
    snowfall-lib.mkFlake {
      inherit inputs;
      src = ./.;

      deploy =
        (import ./deploy.nix {
          inherit inputs;
          inherit (inputs) self;
        }).deploy;

      channels-config = {
        allowUnfree = true;
        permittedInsecurePackages = [
          "mono-5.20.1.34"
        ];
      };

      snowfall = {
        namespace = "yumeami";
        meta = {
          name = "yumeami";
          title = "yumeami";
        };
      };

      alias = {
        shells.default = "yumeami";
        templates.default = "devshell";
      };

      templates = {
        devenv.description = "devenv development environment";
        devshell.description = "nixpkgs mkshell development environment";

        latex-chicago.description = "latex chicago paper template";
        latex-ieee.description = "latex ieee paper template";
      };

      outputs-builder = channels: let
        treefmtConfig = {...}: {
          projectRootFile = "flake.nix";
          programs = {
            alejandra.enable = true;
            keep-sorted.enable = true;
            stylua.enable = true;
            terraform.enable = true;
          };
          settings = {
            global.excludes = [
              "inputs/**"
            ];
          };
        };
        treefmtEval = treefmt-nix.lib.evalModule (channels.nixpkgs) (treefmtConfig {pkgs = channels.nixpkgs;});

        system = channels.nixpkgs.stdenv.hostPlatform.system;
      in {
        formatter = treefmtEval.config.build.wrapper;

        checks = inputs.deploy-rs.lib.${system}.deployChecks inputs.self.deploy;
      };
    };
}
