1
0
Fork 0
mirror of https://git.sr.ht/~roxwize/.dotfiles synced 2025-06-08 21:19:29 +00:00
.dotfiles/nixos/modules/system/default.nix
roxwize 2566b6da29
~
Signed-off-by: roxwize <rae@roxwize.xyz>
2025-05-26 13:34:45 -04:00

118 lines
3.2 KiB
Nix

{ pkgs, lib, config, ... }: let
cfg = config.r5e.system;
in with lib; {
options.r5e.system = {
graphics = {
display.x11 = {
enable = mkEnableOption "X11";
windowManagers = {
twm.enable = mkEnableOption "twm";
};
displayManager = {
# enable = mkEnableOption "SDDM";
autologin = {
enable = mkEnableOption "SDDM autologin";
user = mkOption {
type = types.str;
default = "rae";
};
session = mkOption {
type = types.str;
default = "none+twm";
};
};
};
};
hardwareAcceleration = {
enable = mkEnableOption "graphics acceleration";
intel = {
videoPlayback = {
# TODO wiki.nixos.org/wiki/Intel_Graphics
enable = mkEnableOption "accelerated video playback";
package = mkPackageOption pkgs "intel-media-driver";
};
qsv = {
enable = mkEnableOption "Intel Quick Sync Video";
package = mkPackageOption pkgs "vpl-gpu-rt";
};
};
nvidia = {
enable = mkEnableOption "NVIDIA drivers";
package = mkPackageOption config.boot.kernelPackages.nvidiaPackages "stable";
};
};
};
programs = {
steam = {
enable = mkEnableOption "Steam";
openFirewall = mkOption {
type = types.bool;
default = false;
};
};
thunderbird = {
enable = mkEnableOption "Mozilla Thunderbird";
};
};
};
config = {
environment = {
sessionVariables = {
LIBVA_DRIVER_NAME = mkIf cfg.graphics.hardwareAcceleration.intel.videoPlayback.enable
(if cfg.graphics.hardwareAcceleration.intel.videoPlayback.package == pkgs.intel-vaapi-driver then "i965" else "iHD");
};
};
hardware = {
graphics = {
enable = cfg.graphics.hardwareAcceleration.enable;
extraPackages =
optional cfg.graphics.hardwareAcceleration.intel.videoPlayback.enable cfg.graphics.hardwareAcceleration.intel.videoPlayback.package
++ optional cfg.graphics.hardwareAcceleration.intel.qsv.enable cfg.graphics.hardwareAcceleration.intel.qsv.package;
};
nvidia = mkIf cfg.graphics.hardwareAcceleration.nvidia.enable {
modesetting.enable = true;
powerManagement = {
enable = false;
finegrained = false;
};
open = false;
nvidiaSettings = true;
package = cfg.graphics.hardwareAcceleration.nvidia.package;
};
};
services = {
xserver = {
enable = cfg.graphics.display.x11.enable;
xkb.layout = "us";
windowManager = cfg.graphics.display.x11.windowManagers;
videoDrivers = optional cfg.graphics.hardwareAcceleration.nvidia.enable "nvidia";
};
displayManager.sddm = {
enable = cfg.graphics.display.x11.enable;
settings.Autologin = mkIf cfg.graphics.display.x11.displayManager.autologin.enable {
User = cfg.graphics.display.x11.displayManager.autologin.user;
Session = cfg.graphics.display.x11.displayManager.autologin.session;
};
};
};
programs = {
steam = {
enable = cfg.programs.steam.enable;
remotePlay.openFirewall = cfg.programs.steam.openFirewall;
dedicatedServer.openFirewall = cfg.programs.steam.openFirewall;
localNetworkGameTransfers.openFirewall = cfg.programs.steam.openFirewall;
};
thunderbird = {
enable = cfg.programs.thunderbird.enable;
policies.DisableTelemetry = true;
};
};
};
}