{
  self,
  agenix,
  home-manager,
  homepage,
  nixos-hardware,
  nixos-generators,
  nixpkgs,
  nixpkgs-small,
  ...
}@inputs:
let
  nixosSystem =
    {
      nixpkgs,
      system ? "x86_64-linux",
      extraModules ? [ ],
    }:
    nixpkgs.lib.nixosSystem {
      inherit system;

      modules =
        [
          {
            nixpkgs.overlays = nixpkgs.lib.attrValues self.overlays;
          }
        ]
        ++ (nixpkgs.lib.attrValues self.nixosModules)
        ++ [ agenix.nixosModules.age ]
        ++ extraModules;
    };
in
{
  gorgon =
    let
      system = "x86_64-linux";
    in
    nixosSystem {
      inherit nixpkgs system;

      extraModules = [
        {
          nixpkgs.overlays = nixpkgs.lib.attrValues self.overlays;
          dadada.pkgs = self.packages.${system};
          dadada.inputs = inputs // {
            dadada = self;
          };
        }

        nixos-hardware.nixosModules.lenovo-thinkpad-t14s-amd-gen1

        home-manager.nixosModules.home-manager
        (
          { pkgs, lib, ... }:
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.sharedModules = (nixpkgs.lib.attrValues self.hmModules) ++ [
              { dadada.home.helix.package = pkgs.helix; }
              { manual.manpages.enable = false; }
            ];
            home-manager.users.dadada = import ../home;
          }
        )
        ./gorgon/configuration.nix
      ];
    };

  surgat = nixosSystem {
    nixpkgs = nixpkgs-small;
    system = "x86_64-linux";
    extraModules = [
      {
        dadada.homepage.package = homepage;
      }
      ./modules/profiles/server.nix
      ./surgat/configuration.nix
    ];
  };

  agares = nixosSystem {
    nixpkgs = nixpkgs-small;
    extraModules = [
      ./agares/configuration.nix
    ];
  };

  installer =
    let
      nixpkgs = nixpkgs-small;
    in
    nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        nixos-generators.nixosModules.install-iso
        self.nixosModules.admin
        {
          isoImage.isoName = nixpkgs.lib.mkForce "dadada-nixos-installer.iso";
          networking.tempAddresses = "disabled";
          dadada.admin.enable = true;
          documentation.enable = true;
          documentation.nixos.enable = true;
          i18n.defaultLocale = "en_US.UTF-8";
          console = {
            font = "Lat2-Terminus16";
            keyMap = "us";
          };
        }
      ];
    };

  ninurta = nixosSystem {
    nixpkgs = nixpkgs-small;
    extraModules = [
      ./ninurta/configuration.nix
    ];
  };
}