{ lib, ... }:
  let
    inherit (lib)
      mkOption
      types
    ;
  in {
    imports = [
      ./hardware.nix
      ./i18n.nix
      ./os.nix
      ./packages/git.nix
      ./packages/nextcloud.nix
      ./packages/oh-my-posh.nix
      ./packages/rclone.nix
      ./partition.nix
      ./software.nix
      ./users.nix
      ./windows.nix
    ];

    options = {
      valhalla = {
        boot = {
          efiMountPoint = mkOption {
            type = types.str;
            description = "The mountpoint of the efi partition.";
            default = "/boot";
          };

          label = mkOption {
            type = types.str;
            description = "The label of the boot entry.";
            default = "OS";
          };
        };

        hostname = mkOption {
          type = types.str;
          description = "The hostname of the system.";
          default = "valhalla";
        };

        setupUser = {
          name = mkOption {
            type = types.str;
            description = "The name of the user used to set up the system.";
            default = "heimdall";
          };

          id = mkOption {
            type = types.int;
            description = "The UID of the user used to set up the system.";
            default = 420;
          };
        };

        timeZone = mkOption {
          type = types.nullOr types.str;
          description = "The time zone of the system.";
          default = null;
        };

        keyMap = mkOption {
          type = types.nullOr types.str;
          description = "The console key map of the system.";
          default = null;
        };

        keyboardLayout = mkOption {
          type = types.nullOr types.str;
          description = "The X11 keyboard layout of the system.";
          default = null;
        };

        hidpi = mkOption {
          type = types.bool;
          description = "A value indicating whether the screen is hidpi.";
          default = false;
        };
      };
    };
  }