{
  description = "Home Manager configuration of doloro";

  inputs = {
    # Specify the source of Home Manager and Nixpkgs.
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
    nix-meow.url = "git+https://git.scug.io/nikkuss/nix-meow.git"; # config manager, meow'd
    hyprland.url = "github:hyprwm/Hyprland";
    rsRPC.url = "github:Doloro1978/rsRPC";
    protonhax.url = "github:linusfri/protonhax-nix";
    hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
    quickshell = {
      url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    heliumFlake = {
      url = "github:vikingnope/helium-browser-nix-flake";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    nikkuss-pkgs = {
      url = "git+https://git.scug.io/nikkuss/pkgs";
      # inputs.nixpkgs.follows = "nixpkgs";
    };
    zen-browser = {
      url = "github:0xc000022070/zen-browser-flake";
      inputs = {
        # IMPORTANT: we're using "libgbm" and is only available in unstable so ensure
        # to have it up-to-date or simply don't specify the nixpkgs input
        nixpkgs.follows = "nixpkgs";
        home-manager.follows = "home-manager";
      };
    };
    sops-nix = {
      url = "github:Mic92/sops-nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    disko = {
      url = "github:nix-community/disko/latest";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    stylix = {
      url = "github:nix-community/stylix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
    nixvim = {
      url = "github:nix-community/nixvim";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    spicetify-nix = {
      url = "github:Gerg-L/spicetify-nix";
    };
    nix-warez = {
      # Blender-bin
      url = "github:edolstra/nix-warez?dir=blender";
    };
    nixpkgs-gamescope = {
      url = "github:Nixos/nixpkgs?rev=8fcb6f1c4948305af52d19f887b89011ee2c080d";
    };
    font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
  };
  outputs =
    inputs@{
      nixpkgs,
      home-manager,
      nix-meow,
      ...
    }:
    let
      overlays = [
        # inputs.nikkuss-pkgs.overlays.default
        (final: prev: {
          arrpc = prev.arrpc.overrideAttrs (preve: rec {
            pname = preve.pname + "-meow";
            version = "94d3ec81";
            patches = [ ./deadlock.patch ];
            src = prev.fetchFromGitHub {
              owner = "XenHat";
              repo = "arrpc";
              # branch = "improved-detection-fixes";
              rev = "94d3ec81339f94e563af512b83db369596d05d3b";
              sha256 = "sha256-DI/HCrmiQo1lPkErCNXOpdQli2wua03PDjdlERrpxTg=";
            };
            npmDepsHash = prev.lib.fakeHash;
            npmDeps = final.fetchNpmDeps {
              inherit src;
              name = "${pname}-${version}-npm-deps";
              hash = "sha256-lw6pngFC2Pnk+I8818TOTwN4r+8IsjvdMYIyTsTi49g=";
            };
          });
        })
        (
          final: prev:
          let
            system = prev.stdenv.hostPlatform.system;
            pkgs_gamescope = import inputs.nixpkgs-gamescope {
              inherit system;
              config = {
                allow_unfree = true;
              };
            };
            packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/ga/gamescope/package.nix";
          in
          {
            gamescope = pkgs_gamescope.callPackage packageNix { };
          }
        )
        (self: super: {
          intel-npu-driver = super.intel-npu-driver.overrideAttrs (oldAttrs: rec {
            installPhase = ''
              mkdir -p $out/lib/firmware
              ${oldAttrs.installPhase}
            '';
          });
        })
        (final: prev: {
          vesktop = prev.vesktop.overrideAttrs (old: {
            preBuild = ''
              cp -r ${prev.electron.dist} electron-dist
              chmod -R u+w electron-dist
            '';
            buildPhase = ''
              runHook preBuild

              pnpm build
              pnpm exec electron-builder \
                --dir \
                -c.asarUnpack="**/*.node" \
                -c.electronDist="electron-dist" \
                -c.electronVersion=${prev.electron.version}

              runHook postBuild
            '';
          });
        })
      ];
      utils = nix-meow.lib.setup {
        inherit (inputs) home-manager nixpkgs;
        inherit inputs;
        flakeRoot = ./.;
        hostsFolder = ./hosts;
        hardwaresFolder = ./hardwares;
        modulesFolder = ./modules;
        globalConfig = {
          allowUnfree = true;
        };
        globalOverlays = overlays;
        defaultUser = "doloro";
      };
      inherit (utils) mkHost;
      configurations = [
        (mkHost {
          hardware = "doloro";
          host = "doloro";
          system = "x86_64-linux";
          stateVersion = "25.05";
          nixpkgsConfig = {
            rocmSupport = false;
            cudaSupport = true;
          };
        })
        (mkHost {
          hardware = "doloro-wsl";
          host = "doloro-wsl";
          system = "aarch64-linux";
          stateVersion = "25.05";
          nixpkgsConfig = {
            rocmSupport = false;
          };
        })
        (mkHost {
          hardware = "doloro-laptop";
          host = "doloro-laptop";
          system = "x86_64-linux";
          stateVersion = "25.11";
          nixpkgsConfig = {
            rocmSupport = false;
          };
        })
      ];
    in
    (utils.deepMerge configurations);
}
