{ pkgs, lib, ... }:
with lib;
with lib.metacfg;
{
  imports = [
    ./hardware-configuration.nix
    # ./ipu.nix
  ];

  hardware.bluetooth.input.General.ClassicBondedOnly = false;
  services.udev.extraRules = ''
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="e4c5", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="e489", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
  '';

  metacfg = {
    base.enable = true;
    gui.enable = true;
    nix-ld.enable = true;
    nix.enable = true;
    podman.enable = true;
    secureboot.enable = true;
    homeprinter.enable = true;

    system = {
      limits = {
        enable = true;
        nofileLimit = 32768;
        memlockLimit = 32768;
      };
    };

    # User configuration
    tools = {
      direnv.enable = true;
    };
    user.extraGroups = [
      "docker"
      "dialout"
    ];
  };

  nixpkgs.config.permittedInsecurePackages = [
    "electron-27.3.11"
  ];

  environment.systemPackages = with pkgs; [
    azure-cli
    cloudflare-warp
    desktop-file-utils
    kubectl
    kubectx
    k9s
    attic-client
    ollama
    piper
    klavaro
    tipp10
    gtypist
    logseq
    claude-code
  ];

  zramSwap.enable = true;

  services.ratbagd.enable = true;

  services.resolved.enable = true;
  #services.resolved.dnssec = "allow-downgrade";
  #services.resolved.extraConfig = ''
  #  ResolveUnicastSingleLabel=yes
  #'';

  systemd.packages = [ pkgs.cloudflare-warp ]; # for warp-cli

  virtualisation = {
    docker.enable = true;
    libvirtd.enable = true;
    podman.dockerCompat = false;
  };

  system.autoUpgrade = {
    enable = true;
    operation = "boot";
    allowReboot = false;
  };

  services.trezord.enable = true;

  services.ollama = {
    enable = false;
    acceleration = "rocm";
    environmentVariables = {
      HSA_OVERRIDE_GFX_VERSION = "10.1.0";
    };
  };

  environment.sessionVariables = {
    LIBVA_DRIVER_NAME = "iHD";
    # NIXOS_OZONE_WL = "1";
    # DRI_PRIME = "pci-0000_24_00_0";
    DRI_PRIME = "pci-0000_00_02_0";
  };

  system.stateVersion = "23.11";
}