{
  config,
  pkgs,
  lib,
  ...
}:

{
  imports = [
    ../baseline.nix
    ./backup.nix
    ./ceph.nix
    ./container.nix
    ./db.nix
    ./gnome.nix
    ./home.nix
    ./kde.nix
    ./kiwix-serve.nix
    ./linode.nix
    ./print.nix
    ./proxy.nix
    ./remote-builder.nix
    ./router.nix
    ./rpi4.nix
    ./sway.nix
    ./syncthing.nix
    ./tailscale.nix
    ./vmdev.nix
  ];

  environment.systemPackages = with pkgs; [
    btrfs-progs
    coreutils-full
    efibootmgr
    psmisc
    lshw
    usbutils
    xfsprogs
  ];

  system.stateVersion = "24.11";

  nix = {
    gc.dates = "weekly";
    settings.auto-optimise-store = true;
  };

  # I am a fan of network manager, myself
  networking = {
    search = [
      "thehellings.lan"
      "home"
    ];
    networkmanager.enable = true;
  };

  programs.xonsh = {
    enable = true;
    extraPackages = (
      ps: with ps; [
        xonsh-apipenv
        pkgs.nur.repos.xonsh-xontribs.xonsh-direnv
        pkgs.nur.repos.xonsh-xontribs.xontrib-vox
      ]
    );
  };

  # Enable the OpenSSH daemon for remote control
  services = {
    openssh = {
      enable = true;
      settings.X11Forwarding = true;
    };
  };

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.greg = {
    isNormalUser = true;
    createHome = true;
    extraGroups = [
      "wheel"
      "networkmanager"
    ]; # Enable ‘sudo’ for the user.
    shell = config.programs.xonsh.package;
    initialPassword = "password";
    openssh.authorizedKeys.keys = lib.strings.splitString "\n" (
      builtins.readFile ../../home/ssh/authorized_keys
    );
  };

  security.sudo.extraRules = [
    {
      users = [ "greg" ];
      commands = [
        {
          command = "ALL";
          options = [ "NOPASSWD" ];
        }
      ];
    }
  ];

  i18n.defaultLocale = "en_US.UTF-8";

  console = {
    font = "Lat2-Terminus16";
    keyMap = "us";
  };
}
