with import <nixpkgs> {};
{
    stateVersion = "23.11";

    hardware = {
        # support for GPUs
        amdgpu = true;
        intelgpu = false;
        nvidiagpu = false;

        bluetooth = true;
        acpilight = false;
        iio = true;

        # support for yubikey and additional software
        yubikey = {
            enable = true;
            # additional software
            ykman = false;
            authenticator = true;   # flutter yubico authenticator
        };
    };

    fish = true;

    plasma5 = {
        enable = true;
        dconf = true;
        xwayland = true;
        excludePackages = with pkgs.libsForQt5; [
            elisa
            oxygen
            khelpcenter
            kcolorpicker
        ];
    };

    virtualisation = {
        docker-rootless = {
            enable = true;
            autoPrune = true;
        };
        qemu = {
            enable = true;
            virt-manager = true;
        };
        waydroid = false;
        wine = {
            enable = true;
            wayland = false;
            winetricks = true;
        };
    };
    dev = {
        platformio = true;
        latex = true;
        dotnet = false;
        python3 = {
            enable = true;
            packages = ps: with ps; [
                pandas
                requests
                pygments
                tkinter
                numpy
                setuptools
                youtube-dl
                pip
                ipykernel
                scipy
            ];
        };
        arduino = {
            enable = false;  # enable arduino development platform
            ide2 = true;    # wether to use IDE 2.x or deprecated 1.x
        };
        lsp = {
            enable = true;
            # various language server
            shellcheck = true;
            luals = true;
            pyright = true;
            arduino = true;
            clangd = true;
        };
    };

    dvd = true;     # enable DVD decryption + ripping via Handbrake
    bluray = true;  # enable Bluray decryption (requires additional setup)
    printing = {
        enable = true;
        avahi = true;
    };
    xdg = {
        enable = true;
        extraPortals = with pkgs; [
            xdg-desktop-portal-gtk
            xdg-desktop-portal-kde
        ];
    };
    java = true;
    dotnet = true;

    networking = {
        wireguard = true;   # enable wireguard protocol
        hostname = "servostar-nixos-desktop";
    };

    games = {
        prismlauncher = true;
        steam = true;
    };

    sound = {
        pipewire = {
            enable = true;
            alsa = true;
            pulse = true;
            jack = true;
        };
        pulseaudio = {
            enable = false;
        };
    };
}
