# vim: ts=2
{
  system,
  pkgs,
  nixpkgs,
  sysLib,
  # configs
  defaultModules,
  defaultSpecialArgs,
  # bins
  video_pause,
  yambar_cpu,
  yambar_memory,
  strip_js_comments,
  river_init_lesser,
  grades,
  shell_library,
  # external deps
  user_js,
  neovim_config,
  snap-sync,
  templates,
  # modules
  impermanence,
  home-manager,
  agenix,
  ...
}: let
  generateHost = name: {
    name = "${name}";
    value = nixpkgs.lib.nixosSystem {
      inherit system pkgs;
      specialArgs = defaultSpecialArgs;
      modules =
        [
          ../../hosts/${name}
        ]
        ++ defaultModules;
    };
  };
  hosts = ["tiamat" "mammun" "apzu" "lahmu"];
  generatedHosts = builtins.listToAttrs (builtins.map generateHost hosts);
in
  generatedHosts