# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ modulesPath, lib, ... }:

{
  imports = [
    # Include the default incus configuration.
    "${modulesPath}/virtualisation/lxc-container.nix"
    # Include the container-specific autogenerated configuration.
    ../../modules/system/default.nix
  ];

  nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";

  settings = {
    hostname = "v-th-ctr-01";
    display-manager = "none";
    desktop-environments = {
      cosmic.enable = false;
      hyprland.enable = false;
      gnome.enable = false;
    };
    applications = {
      common.enable = true;
      steam.enable = false;
      thunar.enable = false;
    };
    services = {
      docker.enable = false;
      podman.enable = true;
      quickemu.enable = false;
      sunshine.enable = false;
      garbage-collection.enable = true;
      incus.enable = false;
      ssh.enable = true;
    };
    hardware = {
      fprint.enable = false;
      printing.enable = false;
      bluetooth.enable = false;
      firewall.enable = true;
      locale.enable = true;
      nvidia.enable = false;
    };
  };

  users.users.deploy = {
    isNormalUser = true;
    description = "Deploy";
    extraGroups = [ "networkmanager" "wheel" "dialout" ];
    linger = true;
  };

  # networking
  networking = {
    dhcpcd.enable = false;
    useDHCP = false;
    useHostResolvConf = false;
  };

  networking.hosts = {
    "127.0.0.1" = [ "tbmrs.nl" ];
  };

  networking.firewall = {
    enable = true;
    allowedTCPPorts = [ 1080 1443 1053 ];
    allowedUDPPorts = [ 1080 1443 1053 ];
  };

  systemd.network = {
    enable = true;
    networks."50-eth0" = {
      matchConfig.Name = "eth0";
      networkConfig = {
        DHCP = "ipv4";
        IPv6AcceptRA = true;
      };
      linkConfig.RequiredForOnline = "routable";
    };
  };
}
