nixos-config/modules/desktop/gnome/default.nix

106 lines
2.3 KiB
Nix

#
# Gnome configuration
#
# flake.nix
# ├─ ./hosts
# │ └─ ./laptop
# │ └─ default.nix
# └─ ./modules
# └─ ./desktop
# └─ ./gnome
# └─ default.nix *
#
{ config, lib, user, pkgs, jovian-nixos, ... }:
{
imports = [
(jovian-nixos + "/modules")
];
jovian = {
steam.enable = true;
devices.steamdeck = {
enable = true;
};
};
hardware.pulseaudio.enable = lib.mkForce false;
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
environment.systemPackages = with pkgs; [
gnome.gnome-terminal
gnomeExtensions.dash-to-dock
steamdeck-firmware
rocm-opencl-icd
rocm-opencl-runtime
clinfo
];
services = {
xserver = {
enable = false;
desktopManager.gnome.enable = true;
displayManager = {
gdm.wayland = true;
# defaultSession = "steam-wayland";
autoLogin.enable = true;
autoLogin.user = "kabbone";
};
};
};
systemd.services.gamescope-switcher = {
wantedBy = [ "graphical.target" ];
serviceConfig = {
User = 2000;
PAMName = "login";
WorkingDirectory = "~";
TTYPath = "/dev/tty7";
TTYReset = "yes";
TTYVHangup = "yes";
TTYVTDisallocate = "yes";
StandardInput = "tty-fail";
StandardOutput = "journal";
StandardError = "journal";
UtmpIdentifier = "tty7";
UtmpMode = "user";
Restart = "always";
};
script = ''
set-session () {
mkdir -p ~/.local/state
>~/.local/state/steamos-session-select echo "$1"
}
consume-session () {
if [[ -e ~/.local/state/steamos-session-select ]]; then
cat ~/.local/state/steamos-session-select
rm ~/.local/state/steamos-session-select
else
echo "gamescope"
fi
}
while :; do
session=$(consume-session)
case "$session" in
plasma)
dbus-run-session -- gnome-shell --display-server --wayland
;;
gamescope)
steam-session
;;
esac
done
'';
};
}