{ lib, config, pkgs, hostname, stateVersion, username, desktop, gpu, inputs, platform, theme, ... }: {
  imports = [ 
      # Services
      ./common/services/openssh.nix
      ./common/services/fail2ban.nix

      # NixOS Modules
      # ./common/modules/networking.nix      # Initial Networking configs
      ./common/modules/nixos.nix           # NixOS related items
      ./common/modules/remote-builders.nix # Add remote builders

      ./users/root
      ./users/${username}
      ./hosts/${hostname}
    ] ++ lib.optional (builtins.isString desktop) ./common/desktops/${desktop};

  # List packages installed in system profile
  environment.systemPackages = with pkgs; [
    sbctl
    wget
    killall
    curl
    rsync
    git
    duf
    ncdu
    du-dust
    btop
    iftop
    nload
    iotop
    sops
    gnupg
    cryptsetup
    parted
    screen
  ];

  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";
  i18n.extraLocaleSettings = {
    LC_ADDRESS = "en_US.UTF-8";
    LC_IDENTIFICATION = "en_US.UTF-8";
    LC_MEASUREMENT = "en_US.UTF-8";
    LC_MONETARY = "en_US.UTF-8";
    LC_NAME = "en_US.UTF-8";
    LC_NUMERIC = "en_US.UTF-8";
    LC_PAPER = "en_US.UTF-8";
    LC_TELEPHONE = "en_US.UTF-8";
    LC_TIME = "en_US.UTF-8";
  };

  system.stateVersion = stateVersion;
}