1
0
Fork 0
mirror of https://git.sr.ht/~roxwize/.dotfiles synced 2025-06-07 12:39:29 +00:00
.dotfiles/nixos/modules/system/default.nix
2025-06-02 22:50:45 -04:00

93 lines
2.8 KiB
Nix

{ pkgs, lib, config, ... }: let
cfg = config.r5e.system;
in with lib; {
options.r5e.system = {
graphics = {
display.x11 = {
enable = mkEnableOption "X11";
windowManagers = mkOption {
type = types.listOf types.str;
default = [ "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 "Intel Quick Sync Video" { default = [ "vpl-gpu-rt" ]; };
};
};
nvidia = {
enable = mkEnableOption "NVIDIA drivers";
package = mkPackageOption config.boot.kernelPackages.nvidiaPackages "NVIDIA driver" { default = [ "stable" ]; };
};
};
};
};
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 = builtins.listToAttrs (builtins.map (x: { name = x; value = { enable = true; }; }) cfg.graphics.display.x11.windowManagers);
videoDrivers = (optional cfg.graphics.hardwareAcceleration.nvidia.enable "nvidia") ++ [ "modesetting" ];
};
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;
};
};
};
};
}