{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";

    flake-parts.url = "github:hercules-ci/flake-parts";
    import-tree.url = "github:vic/import-tree";

    wrapper-modules.url = "github:BirdeeHub/nix-wrapper-modules";

    nixos-raspberrypi = {
      url = "github:nvmd/nixos-raspberrypi/main";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    oom-hardware = {
      url = "github:robertjakub/oom-hardware/devel";
      inputs.nixpkgs.follows = "nixpkgs";
      inputs.nixos-raspberrypi.follows = "nixos-raspberrypi";
    };

    dms = {
      url = "github:AvengeMedia/DankMaterialShell/stable";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    dgop = {
      url = "github:AvengeMedia/dgop";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nix-monitor = {
      url = "github:antonjah/nix-monitor";
    };

    t2linux-patches = {
      url = "github:t2linux/linux-t2-patches";
      flake = false;
    };

    # T2 SMC fan curves — linux rarely ramps fans without this (wiki.t2linux.org/guides/fan/).
    t2fanrd = {
      url = "github:GnomedDev/T2FanRD";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    mobile-nixos = {
      url = "github:mobile-nixos/mobile-nixos";
      flake = false;
    };

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

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

    zen-browser = {
      url = "github:0xc000022070/zen-browser-flake";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    cursor = {
      url = "git+https://git.chiasson.cloud/Olivier/cursor-nixos-flake";
      inputs.nixpkgs.follows = "nixpkgs";
    };

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

    wallpapers = {
      url = "git+https://git.chiasson.cloud/Olivier/wallpapers";
      flake = false;
    };

    nixcord = {
      url = "github:KaylorBen/nixcord";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    spicetify-nix = {
      url = "github:Gerg-L/spicetify-nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    swiftshare = {
      url = "git+https://git.chiasson.cloud/Olivier/SwiftShare";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    # After pushing Personal-Website, `nix flake update personal-website` refreshes the lock pin.
    personal-website = {
      url = "git+https://git.chiasson.cloud/Olivier/Personal-Website";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    # DDRM browser-extension backend
    ddrm = {
      url = "git+https://git.chiasson.cloud/Olivier/DDRM";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = inputs:
    let
      lib = inputs.nixpkgs.lib;
      # import-tree default: only .nix, skip paths with /_/ (see
      # https://import-tree.oeiuwq.com/guides/filtering/ ). filterNot composes AND with that.
      # Skip /package/, /packages/, and dms/home-manager/ (callPackage + DMS HM colocation).
      # Avoid a global "/home-manager/" filter — it would drop modules/ssh/home-manager/.
      modulesTree =
        lib.pipe inputs.import-tree [
          (it: it.withLib lib)
          (it:
            it.filterNot (
              p:
              lib.hasInfix "/package/" p
              || lib.hasInfix "/packages/" p
              || lib.hasInfix "dms/home-manager/" p
            ))
          (it: it ./modules)
        ];
    in
    inputs.flake-parts.lib.mkFlake { inherit inputs; } modulesTree;
}
