name: {
  nixpkgs,
  inputs,
  home-manager,
  system,
  user,
  laptop ? false,
  work ? false,
  userName,
  ...
}:
nixpkgs.lib.nixosSystem {
  specialArgs = {inherit inputs;};

  inherit system;

  modules = [
    inputs.stylix.nixosModules.stylix
    ({pkgs, ...}: {
      stylix.image = ../images/demonslayer.png;
      stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
    })

    home-manager.nixosModules.home-manager
    {
      home-manager.useGlobalPkgs = true;
      home-manager.useUserPackages = true;
      home-manager.users.${user}.imports = [
        ../home/.
        {
          options.home.userFullname = nixpkgs.lib.mkOption {default = userName;};
          config.home.username = user;
        }
      ];
    }
    {
      imports = [
        (import ../hardware/${name}.nix {inherit user;})
        (import ../nixos/. user)
      ];
      roles.work.enable = work;
      roles.personal.enable = !work;
    }
  ];
}
