{ lib, config, pkgs, hostname, stateVersion, username, desktop, gpu, inputs, platform, theme, ... }: {
  imports = [ 
      # Modules
      inputs.disko.nixosModules.disko

      # Services
      ./common/services/openssh.nix
      ./common/services/promtail.nix
      ./common/services/fail2ban.nix
      ./common/services/telegraf.nix
      ./common/services/tailscale.nix
      ./common/services/gnupg-agent.nix
      ./common/services/opensnitch.nix

      # CLI Software
      ./common/software/cli/weechat.nix

      # NixOS Modules
      ./common/modules/fonts.nix           # Font Configs
      ./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        # Secureboot Control
    wget         # WebGet
    killall      # Killall
    curl         # Curl - For web requests
    neofetch     # system information viewer
    rsync        # copy/sync 
    git          # git!
    duf          # replacement / prettier UI for df
    ncdu         # ncurses style browser for du/dust
    du-dust      # better UI for 'du"
    home-manager # manage dotfiles
    btop         # like htop, but prettier
    iftop        # interface top - network usage
    nload        # network load - Network usage graphs
    iotop        # I/O top viewer - disk r/w, etc
    sops         # manage secrets
    gnupg        # GNU Privacy Guard
    fx           # Pretty print JSON
    eza          # like ls, but prettier
    cryptsetup   # used to open LUKS devices
    parted       # Disk partitioner / Formatter
    screen       # Terminal screen manager
    e2fsprogs    # disk format utilities, like mkfs.ext4
    bat          # Like cat, but with syntax highlighting
    openssl      # Used to generate certs, random strings, etc
    tree         # CLI directory display software
    nmap         # network mapping / discovery software
    busybox      # General linux commands, nslookup, dig, etc
  ];

  # 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;
}