{
  description = "imnyang's Nix Configuration";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    nixpkgs-2511.url = "github:NixOS/nixpkgs/nixos-25.11";

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

    spicetify-nix.url = "github:Gerg-L/spicetify-nix";

    catppuccin.url = "github:catppuccin/nix";

    nix-flatpak.url = "github:gmodena/nix-flatpak/";

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

    darwin = {
      url = "github:nix-darwin/nix-darwin";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nix-homebrew.url = "github:zhaofengli/nix-homebrew";

    sops-nix = {
      url = "github:Mic92/sops-nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nixcord.url = "github:FlameFlag/nixcord";
    # nixcord.url = "path:/home/imnyang/workspaces/git/imnyang/nixcord";

    vscode-nigo = {
      url = "git+https://git.pari.ng/imnyang/vscode-nigo.git?ref=main";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    notion-desktop = {
      url = "github:heytcass/notion-mac-flake";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    notion-calendar-electron.url = "github:czlabinger/notion-calendar-electron";

    millennium.url = "github:SteamClientHomebrew/Millennium?dir=packages/nix";

    vicinae.url = "github:vicinaehq/vicinae";

    vicinae-extensions = {
      url = "github:vicinaehq/extensions";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nixos-wsl.url = "github:nix-community/NixOS-WSL/main";

    codex-app = {
      url = "github:ilysenko/codex-desktop-linux";
    };

    quadlet-nix.url = "github:SEIAROTg/quadlet-nix";

    rustfs = {
      url = "github:rustfs/rustfs-flake";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    imnyang.url = "git+https://git.mizuki.guru/imnyang/nix-packages.git";

    paring.url = "git+https://git.pari.ng/paring/nix-packages.git";

    mizuki-nc.url = "git+https://git.mizuki.guru/imnyang/mizuki.guru.git?rev=70b1c9a2befc933c63f2b3197655b4f1166f9fbb";

    muvel.url = "github:imnyang/muvel-nix";
  };

  outputs =
    inputs@{
      imnyang,
      paring,
      ...
    }:
    let
      # Overlays
      overlays = [
        paring.overlays.default
        imnyang.overlays.default
        inputs.millennium.overlays.default
        (import ./overlays/spotx.nix)
        (final: prev: {
          vulkan-validation-layers = prev.vulkan-validation-layers.overrideAttrs (old: {
            cmakeFlags = (old.cmakeFlags or [ ]) ++ [
              # Fixed upstream; keep this until the locked nixpkgs includes it.
              "-DUPDATE_DEPS=OFF"
            ];
          });

          pythonPackagesExtensions = (prev.pythonPackagesExtensions or [ ]) ++ [
            (python-final: python-prev: {
              uefi-firmware-parser = python-prev.uefi-firmware-parser.overridePythonAttrs (old: {
                build-system = (old.build-system or [ ]) ++ [
                  python-final.setuptools-scm
                ];
              });
            })
          ];
        })
        (import ./overlays/hoffice)
      ];

      mkHost =
        hostPath: overlays:
        import hostPath {
          inherit inputs overlays;
        };
    in
    {
      nixosConfigurations = {
        # Machine
        mafuyu = mkHost ./hosts/machine/mafuyu overlays;
        mizuki = mkHost ./hosts/machine/mizuki overlays;
        ena = mkHost ./hosts/machine/ena overlays;
        ribbon = mkHost ./hosts/machine/ribbon [
          paring.overlays.default
          imnyang.overlays.default
        ];
        installer = mkHost ./hosts/installer overlays;

        # Server
        hikari = mkHost ./hosts/server/hikari/default overlays;
        hako = mkHost ./hosts/server/hikari/hako overlays;
        natsu = mkHost ./hosts/server/natsu overlays;
        kazusa = mkHost ./hosts/server/kazusa overlays;
      };

      darwinConfigurations = {
        # Machine
        kanade = mkHost ./hosts/machine/kanade overlays;
      };
    };
}
