147 lines
3.2 KiB
Nix
147 lines
3.2 KiB
Nix
{ lib, config, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.roles.desktop;
|
|
|
|
customPackages = pkgs.callPackage ../../packages {};
|
|
|
|
basePackages = with pkgs; [
|
|
bambu-studio
|
|
blender
|
|
brightnessctl
|
|
ghostty
|
|
mangohud # Should probably get refactored with steam/gamescope out to a gaming role
|
|
protonup-qt
|
|
|
|
#customPackages.vulkanHDRLayer
|
|
];
|
|
|
|
x11BasePackages = with pkgs; [
|
|
];
|
|
|
|
x11OnlyPackages = with pkgs; [
|
|
emacs
|
|
];
|
|
|
|
waylandBasePackages = with pkgs; [
|
|
grim
|
|
slurp
|
|
wl-clipboard
|
|
mako
|
|
];
|
|
|
|
waylandOnlyPackages = with pkgs; [
|
|
emacs-gtk
|
|
];
|
|
in
|
|
{
|
|
options.roles.desktop = {
|
|
enable = mkEnableOption "Enable the desktop role";
|
|
x11Only = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
};
|
|
waylandOnly = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable
|
|
{
|
|
services.xserver.xkb = {
|
|
layout = "us";
|
|
variant = "";
|
|
options = "caps:escape";
|
|
};
|
|
services.xserver.enable = true;
|
|
|
|
services.displayManager.sddm = {
|
|
enable = true;
|
|
wayland.enable = !cfg.x11Only;
|
|
};
|
|
services.desktopManager.plasma6.enable = true;
|
|
|
|
services.xserver.windowManager.i3 = {
|
|
enable = true;
|
|
extraPackages = with pkgs; [
|
|
dmenu
|
|
i3status
|
|
i3lock
|
|
];
|
|
};
|
|
programs.dconf.enable = true;
|
|
services.gnome.gnome-keyring.enable = true;
|
|
|
|
programs.sway = mkIf (!cfg.x11Only) {
|
|
enable = true;
|
|
wrapperFeatures.gtk = true;
|
|
};
|
|
programs.light.enable = mkIf (!cfg.x11Only) true;
|
|
|
|
programs.kdeconnect.enable = true;
|
|
programs.java.enable = true;
|
|
programs.gamemode = {
|
|
enable = true;
|
|
|
|
};
|
|
programs.gamescope = {
|
|
enable = true;
|
|
#capSysNice = true;
|
|
args = [
|
|
#"--adaptive-sync"
|
|
#"--nested-refresh 165"
|
|
#"--backend wayland"
|
|
"--hdr-enabled"
|
|
"--hdr-itm-enable"
|
|
"--hdr-debug-force-output"
|
|
"--mangoapp"
|
|
"--rt"
|
|
"--steam"
|
|
#"--xwayland-count 2"
|
|
];
|
|
env = {
|
|
#PROTON_DISABLE_NVAPI = "1";
|
|
MANGOHUD = "1";
|
|
#MANGOHUD_CONFIG = "cpu_temp gpu_temp ram vram";
|
|
};
|
|
};
|
|
programs.steam = {
|
|
enable = true;
|
|
remotePlay.openFirewall = true;
|
|
localNetworkGameTransfers.openFirewall = true;
|
|
gamescopeSession = {
|
|
enable = true;
|
|
};
|
|
extraCompatPackages = with pkgs; [
|
|
proton-ge-bin
|
|
];
|
|
#package = pkgs.steam.override {
|
|
#withJava = true;
|
|
#withPrimus = true;
|
|
#extraPkgs = pkgs: [ bumblebee glxinfo ];
|
|
#};
|
|
};
|
|
services.sunshine = {
|
|
enable = true;
|
|
autoStart = false;
|
|
capSysAdmin = true;
|
|
openFirewall = true;
|
|
};
|
|
|
|
virtualisation.docker.enable = true;
|
|
users.extraGroups.docker.members = [ "johno" ];
|
|
|
|
environment.systemPackages = with pkgs; mkMerge [
|
|
basePackages
|
|
(mkIf (!cfg.waylandOnly) x11BasePackages)
|
|
(mkIf cfg.x11Only x11OnlyPackages)
|
|
(mkIf (!cfg.x11Only) waylandBasePackages)
|
|
(mkIf (cfg.waylandOnly) waylandOnlyPackages)
|
|
];
|
|
};
|
|
|
|
}
|