{ ... }:

{
  imports = [
    ../../modules/base.nix
    ../../modules/docker.nix
    ../../modules/libvirtd.nix
    ../../modules/zerotier.nix
    ./firewall.nix
    ./hardware.nix
  ];

  networking = {
    hostName = "mini-pc";
    useDHCP = false;
  };

  systemd.network = {
    enable = true;
    networks."10-lan" = {
      matchConfig.Name = "en*";
      networkConfig = {
        Address = "192.168.1.10/24";
        Gateway = "192.168.1.1";
        DNS = [
          "192.168.1.1"
          "1.1.1.1"
        ];
      };
    };
  };

  services.resolved = {
    enable = true;
    fallbackDns = [ "1.1.1.1" "8.8.8.8" ];
  };

  systemd.tmpfiles.rules = [
    "d /opt/data/adguard 0755 ada users - -"
    "d /opt/data/adguard/work 0755 ada users - -"
    "d /opt/data/caddy 0755 ada users - -"
    "d /opt/data/gitea-runner 0755 ada users - -"
    "d /opt/data/uptime-kuma 0755 ada users - -"
    "d /opt/data/vaultwarden 0755 ada users - -"
    "d /opt/data/zerotier 0755 ada users - -"
    "d /opt/configs/adguard 0755 ada users - -"
    "d /opt/configs/caddy 0755 ada users - -"
    "d /opt/configs/caddy/lego 0755 ada users - -"
  ];

  programs.bash.interactiveShellInit = ''
    proxy_on() {
      export http_proxy=http://192.168.1.10:10172
      export https_proxy=http://192.168.1.10:10172
      export HTTP_PROXY=http://192.168.1.10:10172
      export HTTPS_PROXY=http://192.168.1.10:10172
      export all_proxy=socks5://192.168.1.10:10171
      export ALL_PROXY=socks5://192.168.1.10:10171
      export ftp_proxy=http://192.168.1.10:10172
      export FTP_PROXY=http://192.168.1.10:10172
      export no_proxy=localhost,127.0.0.0/8,::1,192.168.1.0/24
      export NO_PROXY=localhost,127.0.0.0/8,::1,192.168.1.0/24
    }
    proxy_off() {
      unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
      unset all_proxy ALL_PROXY ftp_proxy FTP_PROXY
      unset no_proxy NO_PROXY
    }
  '';

  system.stateVersion = "25.11";
}
