{ lib, pkgs, ... }: { imports = [ ./fleet.nix ./utils/bento.nix ./utils/modules/sops.nix ./utils/modules/lego/lego.nix ./utils/modules/nginx.nix ./utils/modules/autoupgrade.nix ./utils/modules/promtail ./utils/modules/borgbackup.nix # fw ./modules/network-prefix.nix ./modules/networking.nix ./modules/setupnetwork.nix ./modules/firewall.nix # ./modules/dhcp4.nix # ./modules/unbound.nix ./modules/dnsmasq.nix ./modules/avahi.nix ./modules/openconnect.nix ./modules/wireguard.nix ./modules/podman.nix ./modules/omada.nix ./modules/ddclient.nix ./utils/modules/victoriametrics # ./modules/wol.nix # microvm ./modules/microvm.nix ./modules/gitea-vm.nix # ./modules/vscode-server.nix # Add VS Code Server microvm ./modules/ai-mailer.nix # ./modules/wazuh.nix # web ./modules/web # git ./modules/gitea.nix # ./modules/fwmetrics.nix # ha customers ./modules/ha-customers ./modules/firefox-sync.nix ./modules/fivefilters.nix ./modules/pyload.nix # home assistant ./modules/home-assistant ./modules/deconz.nix # ./modules/mopidy.nix # ./modules/mosquitto.nix # ./modules/snapserver.nix ./modules/lms.nix # gaming # ./modules/palworld.nix # ./modules/ark-survival-evolved.nix ./modules/foundry-vtt.nix # setup network ./modules/setupnetwork.nix ./modules/set-nix-channel.nix # Automatically manage nix-channel from /var/bento/channel ./modules/grafana-monitor.nix # Grafana online status monitor ./hardware-configuration.nix ]; networkPrefix = "10.42"; nixpkgs.overlays = [ (import ./utils/overlays/packages.nix) ]; nixpkgs.config.permittedInsecurePackages = [ "openssl-1.1.1w" ]; nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "mongodb" "ai-mailer" "filebot" ]; # Intel N100 Graphics Support for hardware transcoding hardware.graphics = { enable = true; extraPackages = with pkgs; [ intel-media-driver # VAAPI driver (iHD) for modern Intel GPUs vpl-gpu-rt # Intel VPL/QSV runtime for Gen 12+ (N100) intel-compute-runtime # OpenCL support for tone-mapping ]; }; hardware.enableRedistributableFirmware = true; time.timeZone = "Europe/Vienna"; services.logind.extraConfig = "RuntimeDirectorySize=2G"; sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; sops.defaultSopsFile = ./secrets.yaml; environment.systemPackages = with pkgs; [ bento conntrack-tools # view network connection states ethtool # manage NIC settings (offload, NIC feeatures, ...) git htop # to see the system load tcpdump # view network traffic vim # my preferred editor wol inotify-tools ]; nix = { settings = { auto-optimise-store = true; # Build performance optimizations max-jobs = 4; cores = 4; # Enable eval caching for faster rebuilds eval-cache = true; # Use binary caches to avoid unnecessary rebuilds substituters = [ "https://cache.nixos.org" ]; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ]; }; gc = { automatic = true; dates = "weekly"; options = "--delete-older-than 60d"; }; # Free up to 1GiB whenever there is less than 100MiB left. extraOptions = '' min-free = ${toString (100 * 1024 * 1024)} max-free = ${toString (1024 * 1024 * 1024)} ''; }; services.tlp = { enable = true; settings = { CPU_SCALING_GOVERNOR_ON_AC = "performance"; # powersave or performance CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; # power or performance # CPU_MIN_PERF_ON_AC = 0; # CPU_MAX_PERF_ON_AC = 100; # max 100 }; }; systemd.services = { powertop = { wantedBy = [ "multi-user.target" ]; after = [ "multi-user.target" ]; description = "Powertop tunings"; path = [ pkgs.kmod ]; serviceConfig = { Type = "oneshot"; RemainAfterExit = "yes"; ExecStart = "${pkgs.powertop}/bin/powertop --auto-tune && for dev in /sys/class/net/*; do echo on > \"$dev/device/power/control\"; done'"; }; }; }; boot.tmp.cleanOnBoot = true; zramSwap.enable = true; networking.hostName = "fw"; services.openssh.enable = true; users.users.root.openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDN/2SAFm50kraB1fepAizox/QRXxB7WbqVbH+5OPalDT47VIJGNKOKhixQoqhABHxEoLxdf/C83wxlCVlPV9poLfDgVkA3Lyt5r3tSFQ6QjjOJAgchWamMsxxyGBedhKvhiEzcr/Lxytnoz3kjDG8fqQJwEpdqMmJoMUfyL2Rqp16u+FQ7d5aJtwO8EUqovhMaNO7rggjPpV/uMOg+tBxxmscliN7DLuP4EMTA/FwXVzcFNbOx3K9BdpMRAaSJt4SWcJO2cS2KHA5n/H+PQI7nz5KN3Yr/upJN5fROhi/SHvK39QOx12Pv7FCuWlc+oR68vLaoCKYhnkl3DnCfc7A7" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIRQuPqH5fdX3KEw7DXzWEdO3AlUn1oSmtJtHB71ICoH Generated By Termius" ]; # backups borgbackup.repo = "u149513-sub2@u149513-sub2.your-backup.de:borg"; services.borgbackup.jobs.default.paths = lib.mkAfter [ "/var/lib/microvms/persist/web-02/var/backup" ]; system.stateVersion = "22.05"; }