inputs: 
with builtins;
let
  aspects = [
    ./autopatch
    ./brig
    ./desktop
    ./enterprise
    ./firewall
    ./games
    ./hardened
    ./hyprspace
    ./ipfs-lain
    ./jackett
    ./laptop-config
    ./lidarr
    ./networking-client
    ./nextcloud-client
    ./nix-builder
    ./nix-config
    ./nix-register-flakes
    ./nm-vdns-auto
    ./persistence
    ./prowlarr
    ./shell-config
    ./sound
    ./ssh
  ];
  mappedAspects = map (x: { name = baseNameOf x; value = import x; }) aspects;
in rec {
  modules = listToAttrs mappedAspects;
  sets = with modules; rec {
    base = [ 
      autopatch
      enterprise
      hardened
    ];

    networking = [ firewall ssh ];

    client-networking = networking ++ [ networking-client nm-vdns-auto ipfs-lain hyprspace ];

    desktop = [
      modules.desktop
      inputs.home-manager.nixosModules.home-manager
      brig
      nextcloud-client
      nix-register-flakes
      nix-config
      shell-config
      sound
    ] ++ base ++ client-networking;

    laptop = desktop ++ [ laptop-config ];
  };
}