nixos-configs/devices/bbsteamie/modules/desktop.nix

157 lines
3.3 KiB
Nix
Raw Normal View History

{
config,
lib,
pkgs,
self,
...
}: let
2024-06-30 12:58:09 -04:00
inherit (lib) getExe mkForce;
inherit (config.vars) mainUser;
# FIXME: switch to wayland when possible
2024-06-30 12:58:09 -04:00
defaultSession = "plasmax11";
switch-session = pkgs.writeShellApplication {
name = "switch-session";
text = ''
mkdir -p /etc/sddm.conf.d
cat <<EOF | tee /etc/sddm.conf.d/autologin.conf
[Autologin]
User=${mainUser}
Session=$1
Relogin=true
EOF
'';
};
gaming-mode = pkgs.writeShellScriptBin "gaming-mode" ''
sudo ${pkgs.systemd}/bin/systemctl start to-gaming-mode.service
'';
in {
services = {
2024-06-30 12:58:09 -04:00
xserver.enable = true;
desktopManager.plasma6.enable = true;
displayManager = {
2024-06-29 22:53:47 -04:00
sddm = {
enable = true;
2024-06-29 23:00:49 -04:00
autoLogin.relogin = true;
};
};
};
2024-06-29 22:53:47 -04:00
# Sets the default session at launch
systemd.services."set-session" = {
wantedBy = ["multi-user.target"];
before = ["display-manager.service"];
path = [switch-session];
script = ''
2024-06-30 12:58:09 -04:00
switch-session "${defaultSession}"
'';
};
# Allows switching to gaming mode
systemd.services."to-gaming-mode" = {
2024-06-30 12:58:09 -04:00
wantedBy = mkForce [];
path = [switch-session];
script = ''
switch-session "gamescope-wayland"
systemctl restart display-manager
sleep 10
2024-06-30 12:58:09 -04:00
switch-session "${defaultSession}"
'';
};
# Make it so we don't need root to switch to gaming mode
security.sudo.extraRules = [
{
users = [mainUser];
groups = [100];
commands = [
{
command = "${pkgs.systemd}/bin/systemctl start to-gaming-mode.service";
options = ["SETENV" "NOPASSWD"];
}
];
}
];
# Add desktop entry to make it GUI friendly
home-manager.users.${mainUser}.xdg.desktopEntries."Gaming Mode" = {
name = "Gaming Mode";
exec = getExe gaming-mode;
icon = "steam";
terminal = false;
type = "Application";
};
2024-07-03 17:49:48 -04:00
environment.systemPackages = [
# Misc apps for DE
2024-07-03 17:49:48 -04:00
pkgs.firefox
2024-07-05 00:27:40 -04:00
pkgs.kdePackages.discover
2024-07-03 17:49:48 -04:00
pkgs.wl-clipboard
self.packages.${pkgs.system}.ryujinx
];
programs = {
xwayland.enable = true;
kdeconnect.enable = true;
2024-07-03 17:49:48 -04:00
steam = {
enable = true;
remotePlay.openFirewall = true;
extraCompatPackages = [
pkgs.proton-ge-bin
];
};
};
# Enable flatpak support
services.flatpak.enable = true;
services.packagekit.enable = true;
# Jovian NixOS settings
jovian.steam = {
# Steam > Settings > System > Enable Developer Mode
# Steam > Developer > CEF Remote Debugging
enable = true;
user = mainUser;
desktopSession = config.services.displayManager.defaultSession;
};
jovian.decky-loader = {
enable = true;
user = mainUser;
stateDir = "/home/${mainUser}/.local/share/decky"; # Keep scoped to user
# https://github.com/Jovian-Experiments/Jovian-NixOS/blob/1171169117f63f1de9ef2ea36efd8dcf377c6d5a/modules/decky-loader.nix#L80-L84
extraPackages = with pkgs; [
# Generic packages
curl
unzip
util-linux
gnugrep
readline.out
procps
pciutils
libpulseaudio
];
2024-07-04 19:33:33 -04:00
extraPythonPackages = pythonPackages:
with pythonPackages; [
python
];
};
2024-06-30 00:35:53 -04:00
# Takes way too long to shutdown
systemd.services."decky-loader".serviceConfig.TimeoutStopSec = "5";
}