{ inputs, pkgs, ... }:

{
  imports = [
    ../../nix-os/core.nix
    ../../nix-os/core-desktop.nix
    ../../nix-os/nvidia.nix
    ../../nix-os/docker.nix
    ../../nix-os/razer.nix
    ../../nix-os/desktopManagers/gnome.nix
    ../../nix-os/displayManagers/gdm.nix
    ../../nix-os/shell.nix
    ../../nix-os/virtualization.nix
    ../../nix-os/polkit/disable-shutdown.nix
    ../../nix-os/locale.nix
    ../../nix-os/adb.nix
    ../../nix-os/account.nix
    ../../nix-os/xdg-default-apps.nix
    ../../nix-os/services/nix-binary-cache.nix
    ../../nix-os/udev.nix
    ../../nix-os/gnupg.nix

    "${inputs.nixos-vscode-server}"
  ];

  config = {
    boot.loader.systemd-boot.enable = true;
    boot.loader.efi.canTouchEfiVariables = true;

    networking.hostName = "wroclaw-main";

    services.xrdp.enable = true;
    users.groups."tsusers".members = [ "wroclaw" ];

    services.printing.drivers = with pkgs; [
      hplip
    ];

    # nixos-vscode-server module needs this
    programs.nix-ld.enable = true;
    services.vscode-server = {
      enable = true;
      extraRuntimeDependencies = with pkgs; [
        docker
      ];
    };

    services.pipewire.wireplumber.configPackages = [(
      pkgs.stdenvNoCC.mkDerivation {
        name = "wireplumber-config";
        src = ./wireplumber;
        phases = [ "installPhase" ];
        installPhase = ''
          mkdir -p $out/share/wireplumber/wireplumber.conf.d
          cp -r $src/* $out/share/wireplumber/wireplumber.conf.d
        '';
      }
    )];

    services.printing.startWhenNeeded = false;

    system.stateVersion = "23.05";
  };
}