slab: setup supergfxd in specialisation
This commit is contained in:
parent
dc7ff4cac7
commit
0fd3f6455b
@ -30,6 +30,7 @@
|
||||
|
||||
../../system # nixfiles modules
|
||||
./nvidia-optimus.nix
|
||||
./supergfxd.nix
|
||||
];
|
||||
|
||||
specialisation.plasma.configuration = {
|
||||
@ -42,6 +43,8 @@
|
||||
services.xserver.displayManager.startx.enable = lib.mkForce false;
|
||||
};
|
||||
|
||||
nixfiles.supergfxd.profile = lib.mkDefault "Integrated";
|
||||
|
||||
# who needs a display manager?
|
||||
services.displayManager.sddm.enable = false;
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
nvidia.configuration = {
|
||||
system.nixos.tags = [ "NVIDIA" ];
|
||||
|
||||
nixfiles.supergfxd.profile = "Hybrid";
|
||||
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
services.xserver.videoDrivers = ["amdgpu" "nvidia"];
|
||||
|
@ -3,50 +3,64 @@ let
|
||||
gfx = {
|
||||
Integrated = {
|
||||
supergfxd = pkgs.writeText "supergfxd-integrated" ''
|
||||
{
|
||||
"mode": "Integrated",
|
||||
"vfio_enable": false,
|
||||
"vfio_save": false,
|
||||
"always_reboot": false,
|
||||
"no_logind": false,
|
||||
"logout_timeout_s": 180,
|
||||
"hotplug_type": "None"
|
||||
}
|
||||
{
|
||||
"mode": "Integrated",
|
||||
"vfio_enable": false,
|
||||
"vfio_save": false,
|
||||
"always_reboot": false,
|
||||
"no_logind": false,
|
||||
"logout_timeout_s": 180,
|
||||
"hotplug_type": "None"
|
||||
}
|
||||
'';
|
||||
# old def (keeping this here just in case
|
||||
# modprobe = pkgs.writeText "supergfxd-integrated-modprobe" ''
|
||||
# # Automatically generated by supergfxd
|
||||
# blacklist nouveau
|
||||
# alias nouveau off
|
||||
# blacklist nvidia_drm
|
||||
# blacklist nvidia_uvm
|
||||
# blacklist nvidia_modeset
|
||||
# blacklist nvidia
|
||||
# alias nvidia off
|
||||
|
||||
# options nvidia-drm modeset=1
|
||||
# '';
|
||||
modprobe = pkgs.writeText "supergfxd-integrated-modprobe" ''
|
||||
# Automatically generated by supergfxd
|
||||
blacklist nouveau
|
||||
alias nouveau off
|
||||
blacklist nvidia_drm
|
||||
blacklist nvidia_uvm
|
||||
blacklist nvidia_modeset
|
||||
blacklist nvidia
|
||||
alias nvidia off
|
||||
|
||||
options nvidia-drm modeset=1
|
||||
# Automatically generated by supergfxd
|
||||
blacklist nouveau
|
||||
blacklist nvidia_drm
|
||||
blacklist nvidia_uvm
|
||||
blacklist nvidia_modeset
|
||||
blacklist nvidia
|
||||
install nvidia_uvm /bin/false
|
||||
install nvdia_drm /bin/false
|
||||
install nvidia_modeset /bin/false
|
||||
install nvidia /bin/false
|
||||
install nouveau /bin/false
|
||||
|
||||
options nvidia-drm modeset=1
|
||||
'';
|
||||
};
|
||||
Hybrid = {
|
||||
supergfxd = pkgs.writeText "supergfxd-hybrid" ''
|
||||
{
|
||||
"mode": "Hybrid",
|
||||
"vfio_enable": false,
|
||||
"vfio_save": false,
|
||||
"always_reboot": false,
|
||||
"no_logind": false,
|
||||
"logout_timeout_s": 180,
|
||||
"hotplug_type": "None"
|
||||
}
|
||||
{
|
||||
"mode": "Hybrid",
|
||||
"vfio_enable": false,
|
||||
"vfio_save": false,
|
||||
"always_reboot": false,
|
||||
"no_logind": false,
|
||||
"logout_timeout_s": 180,
|
||||
"hotplug_type": "None"
|
||||
}
|
||||
'';
|
||||
modprobe = pkgs.writeText "supergfxd-hybrid-modprobe" ''
|
||||
# Automatically generated by supergfxd
|
||||
blacklist nouveau
|
||||
alias nouveau off
|
||||
options nvidia NVreg_DynamicPowerManagement=0x02
|
||||
|
||||
options nvidia-drm modeset=1
|
||||
# Automatically generated by supergfxd
|
||||
blacklist nouveau
|
||||
alias nouveau off
|
||||
options nvidia NVreg_DynamicPowerManagement=0x02
|
||||
|
||||
options nvidia-drm modeset=1
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -61,17 +75,24 @@ options nvidia-drm modeset=1
|
||||
in {
|
||||
options = {
|
||||
nixfiles.supergfxd.profile = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
type = types.nullOr (types.enum (builtins.attrNames gfx));
|
||||
default = null;
|
||||
example = "Integrated";
|
||||
description = "supergfxd profile to use";
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
etc = mkIf (!(cfg.profile == "")) {
|
||||
# TODO figure out here how to assert if the value is in the gfx attrset
|
||||
environment.etc = mkIf (!(builtins.isNull cfg.profile)) {
|
||||
# TODO actually configure the system settings here
|
||||
"supergfxd.conf" = {
|
||||
source = gfx.${cfg.profile}.supergfxd;
|
||||
mode = "0644";
|
||||
};
|
||||
"modprobe.d/supergfxd.conf" = {
|
||||
source = gfx.${cfg.profile}.modprobe;
|
||||
mode = "0644";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user