{ config, pkgs, lib, modulesPath, ... }: { imports = [ (modulesPath + "/profiles/qemu-guest.nix") ./services ]; options = { node = lib.mkOption { type = lib.types.attrs; default = { }; }; }; config = { networking = { hostName = "weilite"; useNetworkd = true; }; systemd.network = { enable = true; networks = { "10-wan" = { matchConfig.MACAddress = "52:54:00:db:23:d0"; networkConfig.DHCP = "ipv4"; }; }; }; commonSettings = { auth.enable = true; nix = { enable = true; }; comin.enable = true; }; node = { mediaDir = "/mnt/nixos/media"; }; boot = { loader = { systemd-boot.enable = true; efi.canTouchEfiVariables = true; }; initrd.availableKernelModules = [ "uhci_hcd" "ehci_pci" "ahci" "usb_storage" "sd_mod" ]; kernelModules = [ "kvm-intel" ]; kernelPackages = pkgs.linuxPackages_6_12; }; nixpkgs.config.allowUnfree = true; nixpkgs.hostPlatform = "x86_64-linux"; environment.systemPackages = [ pkgs.virtiofsd pkgs.intel-gpu-tools pkgs.pciutils ]; sops = { defaultSopsFile = ./secrets.yaml; age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; secrets = { "restic/localpass" = { owner = "restic"; }; }; }; custom.prometheus.exporters = { enable = true; blackbox = { enable = true; }; node = { enable = true; }; }; custom.monitoring = { promtail.enable = true; }; systemd.mounts = [ { what = "nixos"; where = "/mnt/nixos"; type = "virtiofs"; options = "rw,nodev,nosuid"; } { what = "/mnt/nixos/ocis"; where = "/var/lib/ocis"; options = "bind"; after = [ "mnt-nixos.mount" ]; wantedBy = [ "ocis.service" ]; } { what = "/mnt/nixos/restic"; where = "/var/lib/restic"; options = "bind"; after = [ "mnt-nixos.mount" ]; wantedBy = [ "restic-rest-server.service" ]; } { what = "/mnt/nixos/immich"; where = "/var/lib/immich"; options = "bind"; after = [ "mnt-nixos.mount" ]; wantedBy = [ "immich-server.service" ]; } ]; hardware.graphics = { enable = true; extraPackages = with pkgs; [ intel-media-driver intel-vaapi-driver vaapiVdpau intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in) intel-media-sdk # QSV up to 11th gen ]; }; services.openssh.ports = [ 22 2222 ]; services.dae = { enable = true; configFile = "/var/lib/dae/config.dae"; }; services.tailscale = { enable = true; openFirewall = true; permitCertUid = "caddy"; }; services.tailscale.derper = { enable = true; domain = "derper00.namely.icu"; openFirewall = true; verifyClients = true; }; # tailscale derper module use nginx for reverse proxy services.nginx.enable = lib.mkForce false; time.timeZone = "Asia/Shanghai"; fileSystems."/" = { device = "/dev/disk/by-label/nixos"; fsType = "btrfs"; }; fileSystems."/boot" = { device = "/dev/sda1"; fsType = "vfat"; options = [ "fmask=0022" "dmask=0022" ]; }; system.stateVersion = "24.11"; }; }