{
  nixos.systems.installer = { config, ... }: {
    system = "x86_64-linux";
    nixpkgs = "mine";
    docCustom = false;
    rendered = config.configuration.config.my.asISO;

    configuration =
      { lib, pkgs, modulesPath, config, ... }:
      let
        inherit (lib) mkDefault mkForce mkImageMediaOverride;

        installRoot = "/mnt";
      in
      {
        imports = [
          # Useful tools to have
          "${modulesPath}/profiles/base.nix"
        ];

        config = {
          my = {
            # Lots of kernel modules and firmware
            build.allHardware = true;
            # Whatever installer mechanism is chosen will provide an appropriate `/`
            tmproot.enable = false;
            firewall.nat.enable = false;
            deploy.enable = false;
            user.enable = false;

            server.enable = true;
          };

          image = {
            baseName = "jackos-installer";
          };
          isoImage = {
            volumeID = "jackos-${config.system.nixos.release}-${pkgs.stdenv.hostPlatform.uname.processor}";
            edition = "devplayer0";
            appendToMenuLabel = " /dev/player0 Installer";
          };

          environment.sessionVariables = {
            INSTALL_ROOT = installRoot;
          };
          users.users.root.openssh.authorizedKeys.keyFiles = [ lib.my.c.sshKeyFiles.deploy ];
          home-manager.users.root = {
            programs = {
              starship.settings = {
                hostname.ssh_only = false;
              };
            };

            home.shellAliases = {
              show-hw-config = "nixos-generate-config --show-hardware-config --root $INSTALL_ROOT";
            };

            my.gui.enable = false;
          };

          services = {
            openssh.settings.PermitRootLogin = mkImageMediaOverride "prohibit-password";
          };

          networking = {
            # Will be set dynamically, but need something to satisfy `/etc/os-release` stuff
            hostName = "installer";
            useNetworkd = false;
          };

          # This should be overridden by whatever boot mechanism is used
          fileSystems."/" = mkDefault {
            device = "none";
            fsType = "tmpfs";
          };

          systemd.tmpfiles.rules = [
            "d ${installRoot} 0755 root root"
          ];
          boot.postBootCommands =
            ''
              ${pkgs.nettools}/bin/hostname "installer-$(${pkgs.coreutils}/bin/head -c4 /dev/urandom | \
                ${pkgs.coreutils}/bin/od -A none -t x4 | \
                ${pkgs.gawk}/bin/awk '{ print $1 }')"
            '';

          boot.supportedFilesystems.nfs = true;

          environment.systemPackages = with pkgs; [
            dhcpcd
            lm_sensors
            ethtool
          ];

          # Much of this onwards is yoinked from modules/profiles/installation-device.nix
          # Good to have docs in the installer!
          documentation.enable = mkForce true;
          documentation.nixos.enable = mkForce true;

          # Enable wpa_supplicant, but don't start it by default.
          networking.wireless.enable = mkDefault true;
          networking.wireless.userControlled = true;
          systemd.services.wpa_supplicant.wantedBy = mkForce [];

          # Tell the Nix evaluator to garbage collect more aggressively.
          # This is desirable in memory-constrained environments that don't
          # (yet) have swap set up.
          environment.variables.GC_INITIAL_HEAP_SIZE = "1M";

          # Make the installer more likely to succeed in low memory
          # environments.  The kernel's overcommit heustistics bite us
          # fairly often, preventing processes such as nix-worker or
          # download-using-manifests.pl from forking even if there is
          # plenty of free memory.
          boot.kernel.sysctl."vm.overcommit_memory" = "1";
          services.lvm.boot.thin.enable = true;
        };
      };
  };
}
