-
-
Notifications
You must be signed in to change notification settings - Fork 14.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- rename hardware.opengl to hardware.graphics - remove hardware.opengl.driSupport, which does nothing - remove hardware.opengl.setLdLibraryPath, which should never be done - rename hardware.opengl.driSupport32Bit to hardware.graphics.enable32Bit - lost of small docs / formatting cleanups
- Loading branch information
Showing
27 changed files
with
176 additions
and
212 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
{ config, lib, pkgs, ... }: | ||
let | ||
cfg = config.hardware.graphics; | ||
|
||
kernelPackages = config.boot.kernelPackages; | ||
|
||
videoDrivers = config.services.xserver.videoDrivers; | ||
|
||
driversEnv = pkgs.buildEnv { | ||
name = "graphics-drivers"; | ||
paths = [ cfg.package ] ++ cfg.extraPackages; | ||
}; | ||
|
||
driversEnv32 = pkgs.buildEnv { | ||
name = "graphics-drivers-32bit"; | ||
paths = [ cfg.package32 ] ++ cfg.extraPackages32; | ||
}; | ||
in | ||
{ | ||
imports = [ | ||
(lib.mkRenamedOptionModule [ "services" "xserver" "vaapiDrivers" ] [ "hardware" "opengl" "extraPackages" ]) | ||
(lib.mkRemovedOptionModule [ "hardware" "opengl" "s3tcSupport" ] "S3TC support is now always enabled in Mesa.") | ||
(lib.mkRemovedOptionModule [ "hardware" "opengl" "driSupport"] "The setting can be removed.") | ||
|
||
(lib.mkRenamedOptionModule [ "hardware" "opengl" "enable"] [ "hardware" "graphics" "enable" ]) | ||
(lib.mkRenamedOptionModule [ "hardware" "opengl" "driSupport32Bit"] [ "hardware" "graphics" "enable32Bit" ]) | ||
(lib.mkRenamedOptionModule [ "hardware" "opengl" "package"] [ "hardware" "graphics" "package" ]) | ||
(lib.mkRenamedOptionModule [ "hardware" "opengl" "package32"] [ "hardware" "graphics" "package32" ]) | ||
(lib.mkRenamedOptionModule [ "hardware" "opengl" "extraPackages"] [ "hardware" "graphics" "extraPackages" ]) | ||
(lib.mkRenamedOptionModule [ "hardware" "opengl" "extraPackages32"] [ "hardware" "graphics" "extraPackages32" ]) | ||
]; | ||
|
||
options.hardware.graphics = { | ||
enable = lib.mkOption { | ||
description = '' | ||
Whether to enable hardware accelerated graphics drivers. | ||
This is required to allow most graphical applications and | ||
environments to use hardware rendering, video encode/decode | ||
acceleration, etc. | ||
This option should be enabled by default by the corresponding modules, | ||
so you do not usually have to set it yourself. | ||
''; | ||
type = lib.types.bool; | ||
default = false; | ||
}; | ||
|
||
enable32Bit = lib.mkOption { | ||
description = '' | ||
On 64-bit systems, whether to also install 32-bit drivers for | ||
32-bit applications (such as Wine). | ||
''; | ||
type = lib.types.bool; | ||
default = false; | ||
}; | ||
|
||
package = lib.mkOption { | ||
description = '' | ||
The package that provides the default driver set. | ||
''; | ||
type = lib.types.package; | ||
internal = true; | ||
}; | ||
|
||
package32 = lib.mkOption { | ||
description = '' | ||
The package that provides the 32-bit driver set. Used when {option}`enable32Bit` is enabled. | ||
set. | ||
''; | ||
type = lib.types.package; | ||
internal = true; | ||
}; | ||
|
||
extraPackages = lib.mkOption { | ||
description = '' | ||
Additional packages to add to the default graphics driver lookup path. | ||
This can be used to add OpenCL drivers, VA-API/VDPAU drivers, etc. | ||
::: {.note} | ||
intel-media-driver supports hardware Broadwell (2014) or newer. Older hardware should use the mostly unmaintained intel-vaapi-driver driver. | ||
::: | ||
''; | ||
type = lib.types.listOf lib.types.package; | ||
default = []; | ||
example = lib.literalExpression "with pkgs; [ intel-media-driver intel-ocl intel-vaapi-driver ]"; | ||
}; | ||
|
||
extraPackages32 = lib.mkOption { | ||
description = '' | ||
Additional packages to add to 32-bit graphics driver lookup path on 64-bit systems. | ||
Used when {option}`enable32Bit` is set. This can be used to add OpenCL drivers, VA-API/VDPAU drivers, etc. | ||
::: {.note} | ||
intel-media-driver supports hardware Broadwell (2014) or newer. Older hardware should use the mostly unmaintained intel-vaapi-driver driver. | ||
::: | ||
''; | ||
type = lib.types.listOf lib.types.package; | ||
default = []; | ||
example = lib.literalExpression "with pkgs.pkgsi686Linux; [ intel-media-driver intel-vaapi-driver ]"; | ||
}; | ||
}; | ||
|
||
config = lib.mkIf cfg.enable { | ||
assertions = [ | ||
{ | ||
assertion = cfg.enable32Bit -> pkgs.stdenv.isx86_64; | ||
message = "`hardware.graphics.enable32Bit` only makes sense on a 64-bit system."; | ||
} | ||
{ | ||
assertion = cfg.enable32Bit -> (config.boot.kernelPackages.kernel.features.ia32Emulation or false); | ||
message = "`hardware.graphics.enable32Bit` requires a kernel that supports 32-bit emulation"; | ||
} | ||
]; | ||
|
||
systemd.tmpfiles.settings.graphics-driver = { | ||
"/run/opengl-driver"."L+".argument = toString driversEnv; | ||
"/run/opengl-driver-32" = | ||
if pkgs.stdenv.isi686 then | ||
{ "L+".argument = "opengl-driver"; } | ||
else if cfg.enable32Bit then | ||
{ "L+".argument = toString driversEnv32; } | ||
else | ||
{ "r" = {}; }; | ||
}; | ||
|
||
hardware.graphics.package = lib.mkDefault pkgs.mesa.drivers; | ||
hardware.graphics.package32 = lib.mkDefault pkgs.pkgsi686Linux.mesa.drivers; | ||
|
||
boot.extraModulePackages = lib.optional (lib.elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions; | ||
}; | ||
} |
Oops, something went wrong.