mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-21 22:43:01 +00:00
treewide: big opengl cleanup
- 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
This commit is contained in:
parent
951601ccab
commit
98cef4c273
@ -30,7 +30,7 @@ $ export \
|
||||
```
|
||||
|
||||
The second mechanism is to add the OpenCL driver package to
|
||||
[](#opt-hardware.opengl.extraPackages).
|
||||
[](#opt-hardware.graphics.extraPackages).
|
||||
This links the ICD file under `/run/opengl-driver`, where it will be visible
|
||||
to the ICD loader.
|
||||
|
||||
@ -51,12 +51,12 @@ Platform Vendor Advanced Micro Devices, Inc.
|
||||
Modern AMD [Graphics Core
|
||||
Next](https://en.wikipedia.org/wiki/Graphics_Core_Next) (GCN) GPUs are
|
||||
supported through the rocmPackages.clr.icd package. Adding this package to
|
||||
[](#opt-hardware.opengl.extraPackages)
|
||||
[](#opt-hardware.graphics.extraPackages)
|
||||
enables OpenCL support:
|
||||
|
||||
```nix
|
||||
{
|
||||
hardware.opengl.extraPackages = [
|
||||
hardware.graphics.extraPackages = [
|
||||
rocmPackages.clr.icd
|
||||
];
|
||||
}
|
||||
@ -71,13 +71,13 @@ intel-compute-runtime package. The proprietary Intel OpenCL runtime, in
|
||||
the intel-ocl package, is an alternative for Gen7 GPUs.
|
||||
|
||||
The intel-compute-runtime or intel-ocl package can be added to
|
||||
[](#opt-hardware.opengl.extraPackages)
|
||||
[](#opt-hardware.graphics.extraPackages)
|
||||
to enable OpenCL support. For example, for Gen8 and later GPUs, the following
|
||||
configuration can be used:
|
||||
|
||||
```nix
|
||||
{
|
||||
hardware.opengl.extraPackages = [
|
||||
hardware.graphics.extraPackages = [
|
||||
intel-compute-runtime
|
||||
];
|
||||
}
|
||||
@ -90,8 +90,8 @@ compute API for GPUs. It is used directly by games or indirectly though
|
||||
compatibility layers like
|
||||
[DXVK](https://github.com/doitsujin/dxvk/wiki).
|
||||
|
||||
By default, if [](#opt-hardware.opengl.driSupport)
|
||||
is enabled, mesa is installed and provides Vulkan for supported hardware.
|
||||
By default, if [](#opt-hardware.graphics.enable)
|
||||
is enabled, Mesa is installed and provides Vulkan for supported hardware.
|
||||
|
||||
Similar to OpenCL, Vulkan drivers are loaded through the *Installable
|
||||
Client Driver* (ICD) mechanism. ICD files for Vulkan are JSON files that
|
||||
@ -110,7 +110,7 @@ $ export \
|
||||
```
|
||||
|
||||
The second mechanism is to add the Vulkan driver package to
|
||||
[](#opt-hardware.opengl.extraPackages).
|
||||
[](#opt-hardware.graphics.extraPackages).
|
||||
This links the ICD file under `/run/opengl-driver`, where it will be
|
||||
visible to the ICD loader.
|
||||
|
||||
@ -140,18 +140,18 @@ Modern AMD [Graphics Core
|
||||
Next](https://en.wikipedia.org/wiki/Graphics_Core_Next) (GCN) GPUs are
|
||||
supported through either radv, which is part of mesa, or the amdvlk
|
||||
package. Adding the amdvlk package to
|
||||
[](#opt-hardware.opengl.extraPackages)
|
||||
[](#opt-hardware.graphics.extraPackages)
|
||||
makes amdvlk the default driver and hides radv and lavapipe from the device list.
|
||||
A specific driver can be forced as follows:
|
||||
|
||||
```nix
|
||||
{
|
||||
hardware.opengl.extraPackages = [
|
||||
hardware.graphics.extraPackages = [
|
||||
pkgs.amdvlk
|
||||
];
|
||||
|
||||
# To enable Vulkan support for 32-bit applications, also add:
|
||||
hardware.opengl.extraPackages32 = [
|
||||
hardware.graphics.extraPackages32 = [
|
||||
pkgs.driversi686Linux.amdvlk
|
||||
];
|
||||
|
||||
@ -171,7 +171,7 @@ graphics hardware acceleration capabilities for video processing.
|
||||
|
||||
VA-API drivers are loaded by `libva`. The version in nixpkgs is built to search
|
||||
the opengl driver path, so drivers can be installed in
|
||||
[](#opt-hardware.opengl.extraPackages).
|
||||
[](#opt-hardware.graphics.extraPackages).
|
||||
|
||||
VA-API can be tested using:
|
||||
|
||||
@ -185,7 +185,7 @@ Modern Intel GPUs use the iHD driver, which can be installed with:
|
||||
|
||||
```nix
|
||||
{
|
||||
hardware.opengl.extraPackages = [
|
||||
hardware.graphics.extraPackages = [
|
||||
intel-media-driver
|
||||
];
|
||||
}
|
||||
@ -195,7 +195,7 @@ Older Intel GPUs use the i965 driver, which can be installed with:
|
||||
|
||||
```nix
|
||||
{
|
||||
hardware.opengl.extraPackages = [
|
||||
hardware.graphics.extraPackages = [
|
||||
intel-vaapi-driver
|
||||
];
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ Wine, you should also set the following:
|
||||
|
||||
```nix
|
||||
{
|
||||
hardware.opengl.driSupport32Bit = true;
|
||||
hardware.graphics.enable32Bit = true;
|
||||
}
|
||||
```
|
||||
|
||||
|
132
nixos/modules/hardware/graphics.nix
Normal file
132
nixos/modules/hardware/graphics.nix
Normal file
@ -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;
|
||||
};
|
||||
}
|
@ -1,158 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
cfg = config.hardware.opengl;
|
||||
|
||||
kernelPackages = config.boot.kernelPackages;
|
||||
|
||||
videoDrivers = config.services.xserver.videoDrivers;
|
||||
|
||||
package = pkgs.buildEnv {
|
||||
name = "opengl-drivers";
|
||||
paths = [ cfg.package ] ++ cfg.extraPackages;
|
||||
};
|
||||
|
||||
package32 = pkgs.buildEnv {
|
||||
name = "opengl-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.")
|
||||
];
|
||||
|
||||
options = {
|
||||
|
||||
hardware.opengl = {
|
||||
enable = lib.mkOption {
|
||||
description = ''
|
||||
Whether to enable OpenGL drivers. This is needed to enable
|
||||
OpenGL support in X11 systems, as well as for Wayland compositors
|
||||
like sway and Weston. It is enabled by default
|
||||
by the corresponding modules, so you do not usually have to
|
||||
set it yourself, only if there is no module for your wayland
|
||||
compositor of choice. See services.xserver.enable and
|
||||
programs.sway.enable.
|
||||
'';
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
};
|
||||
|
||||
driSupport = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable accelerated OpenGL rendering through the
|
||||
Direct Rendering Interface (DRI).
|
||||
'';
|
||||
};
|
||||
|
||||
driSupport32Bit = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
On 64-bit systems, whether to support Direct Rendering for
|
||||
32-bit applications (such as Wine). This is currently only
|
||||
supported for the `nvidia` as well as
|
||||
`Mesa`.
|
||||
'';
|
||||
};
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
internal = true;
|
||||
description = ''
|
||||
The package that provides the OpenGL implementation.
|
||||
'';
|
||||
};
|
||||
|
||||
package32 = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
internal = true;
|
||||
description = ''
|
||||
The package that provides the 32-bit OpenGL implementation on
|
||||
64-bit systems. Used when {option}`driSupport32Bit` is
|
||||
set.
|
||||
'';
|
||||
};
|
||||
|
||||
extraPackages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [];
|
||||
example = lib.literalExpression "with pkgs; [ intel-media-driver intel-ocl intel-vaapi-driver ]";
|
||||
description = ''
|
||||
Additional packages to add to OpenGL drivers.
|
||||
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.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
|
||||
extraPackages32 =lib. mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [];
|
||||
example = lib.literalExpression "with pkgs.pkgsi686Linux; [ intel-media-driver intel-vaapi-driver ]";
|
||||
description = ''
|
||||
Additional packages to add to 32-bit OpenGL drivers on 64-bit systems.
|
||||
Used when {option}`driSupport32Bit` 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.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
|
||||
setLdLibraryPath = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
internal = true;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether the `LD_LIBRARY_PATH` environment variable
|
||||
should be set to the locations of driver libraries. Drivers which
|
||||
rely on overriding libraries should set this to true. Drivers which
|
||||
support `libglvnd` and other dispatch libraries
|
||||
instead of overriding libraries should not set this.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{ assertion = cfg.driSupport32Bit -> pkgs.stdenv.isx86_64;
|
||||
message = "Option driSupport32Bit only makes sense on a 64-bit system.";
|
||||
}
|
||||
{ assertion = cfg.driSupport32Bit -> (config.boot.kernelPackages.kernel.features.ia32Emulation or false);
|
||||
message = "Option driSupport32Bit requires a kernel that supports 32bit emulation";
|
||||
}
|
||||
];
|
||||
|
||||
systemd.tmpfiles.settings.opengl = {
|
||||
"/run/opengl-driver"."L+".argument = toString package;
|
||||
"/run/opengl-driver-32" =
|
||||
if pkgs.stdenv.isi686 then
|
||||
{ "L+".argument = "opengl-driver"; }
|
||||
else if cfg.driSupport32Bit then
|
||||
{ "L+".argument = toString package32; }
|
||||
else
|
||||
{ "r" = {}; };
|
||||
};
|
||||
|
||||
environment.sessionVariables.LD_LIBRARY_PATH = lib.mkIf cfg.setLdLibraryPath
|
||||
([ "/run/opengl-driver/lib" ] ++ lib.optional cfg.driSupport32Bit "/run/opengl-driver-32/lib");
|
||||
|
||||
hardware.opengl.package = lib.mkDefault pkgs.mesa.drivers;
|
||||
hardware.opengl.package32 = lib.mkDefault pkgs.pkgsi686Linux.mesa.drivers;
|
||||
|
||||
boot.extraModulePackages = lib.optional (lib.elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions;
|
||||
};
|
||||
}
|
@ -297,7 +297,7 @@ in
|
||||
KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'"
|
||||
KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm-tools c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 1'"
|
||||
'';
|
||||
hardware.opengl = {
|
||||
hardware.graphics = {
|
||||
extraPackages = [ nvidia_x11.out ];
|
||||
extraPackages32 = [ nvidia_x11.lib32 ];
|
||||
};
|
||||
@ -467,7 +467,7 @@ in
|
||||
"egl/egl_external_platform.d".source = "/run/opengl-driver/share/egl/egl_external_platform.d/";
|
||||
};
|
||||
|
||||
hardware.opengl = {
|
||||
hardware.graphics = {
|
||||
extraPackages = [ pkgs.nvidia-vaapi-driver ];
|
||||
extraPackages32 = [ pkgs.pkgsi686Linux.nvidia-vaapi-driver ];
|
||||
};
|
||||
|
@ -67,6 +67,7 @@
|
||||
./hardware/gkraken.nix
|
||||
./hardware/glasgow.nix
|
||||
./hardware/gpgsmartcards.nix
|
||||
./hardware/graphics.nix
|
||||
./hardware/hackrf.nix
|
||||
./hardware/i2c.nix
|
||||
./hardware/infiniband.nix
|
||||
@ -84,7 +85,6 @@
|
||||
./hardware/new-lg4ff.nix
|
||||
./hardware/nitrokey.nix
|
||||
./hardware/onlykey/default.nix
|
||||
./hardware/opengl.nix
|
||||
./hardware/openrazer.nix
|
||||
./hardware/opentabletdriver.nix
|
||||
./hardware/pcmcia.nix
|
||||
|
@ -65,7 +65,7 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
hardware.opengl.enable = lib.mkDefault true;
|
||||
hardware.graphics.enable = lib.mkDefault true;
|
||||
fonts.enableDefaultPackages = lib.mkDefault true;
|
||||
programs.dconf.enable = lib.mkDefault true;
|
||||
programs.xwayland.enable = lib.mkDefault true;
|
||||
|
@ -50,7 +50,7 @@ in {
|
||||
}) // (prev.extraEnv or {});
|
||||
extraLibraries = pkgs: let
|
||||
prevLibs = if prev ? extraLibraries then prev.extraLibraries pkgs else [ ];
|
||||
additionalLibs = with config.hardware.opengl;
|
||||
additionalLibs = with config.hardware.graphics;
|
||||
if pkgs.stdenv.hostPlatform.is64bit
|
||||
then [ package ] ++ extraPackages
|
||||
else [ package32 ] ++ extraPackages32;
|
||||
@ -176,10 +176,9 @@ in {
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
hardware.opengl = { # this fixes the "glXChooseVisual failed" bug, context: https://github.com/NixOS/nixpkgs/issues/47932
|
||||
hardware.graphics = { # this fixes the "glXChooseVisual failed" bug, context: https://github.com/NixOS/nixpkgs/issues/47932
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
|
||||
security.wrappers = lib.mkIf (cfg.gamescopeSession.enable && gamescopeCfg.capSysNice) {
|
||||
|
@ -17,7 +17,7 @@ in
|
||||
Whether to set up NixOS such that TurboVNC's built-in software OpenGL
|
||||
implementation works.
|
||||
|
||||
This will enable {option}`hardware.opengl.enable` so that OpenGL
|
||||
This will enable {option}`hardware.graphics.enable` so that OpenGL
|
||||
programs can find Mesa's llvmpipe drivers.
|
||||
|
||||
Setting this option to `false` does not mean that software
|
||||
@ -46,7 +46,7 @@ in
|
||||
# can find the llvmpipe `swrast.so` software rendering DRI lib via `libglvnd`.
|
||||
# This comment exists to explain why `hardware.` is involved,
|
||||
# even though 100% software rendering is used.
|
||||
hardware.opengl.enable = true;
|
||||
hardware.graphics.enable = true;
|
||||
|
||||
};
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
pam.services.swaylock = {};
|
||||
};
|
||||
|
||||
hardware.opengl.enable = lib.mkDefault true;
|
||||
hardware.graphics.enable = lib.mkDefault true;
|
||||
fonts.enableDefaultPackages = lib.mkDefault true;
|
||||
|
||||
programs = {
|
||||
|
@ -63,7 +63,7 @@ in {
|
||||
];
|
||||
|
||||
# Copy-pasted basic stuff
|
||||
hardware.opengl.enable = lib.mkDefault true;
|
||||
hardware.graphics.enable = lib.mkDefault true;
|
||||
fonts.enableDefaultPackages = lib.mkDefault true;
|
||||
programs.dconf.enable = lib.mkDefault true;
|
||||
|
||||
|
@ -212,9 +212,7 @@ in
|
||||
after = [ "acpid.service" "systemd-logind.service" "systemd-user-sessions.service" ];
|
||||
restartIfChanged = false;
|
||||
|
||||
environment = lib.optionalAttrs config.hardware.opengl.setLdLibraryPath {
|
||||
LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.addOpenGLRunpath.driverLink ];
|
||||
} // cfg.environment;
|
||||
environment = cfg.environment;
|
||||
|
||||
preStart = cfg.preStart;
|
||||
script = lib.mkIf (config.systemd.services.display-manager.enable == true) cfg.execCmd;
|
||||
|
@ -31,11 +31,9 @@ in {
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
hardware.opengl = {
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
extraPackages = [ cfg.package ];
|
||||
driSupport32Bit = cfg.support32Bit.enable;
|
||||
extraPackages32 = [ cfg.support32Bit.package ];
|
||||
};
|
||||
|
||||
|
@ -38,7 +38,7 @@ in
|
||||
|
||||
fonts.enableDefaultPackages = lib.mkDefault true;
|
||||
|
||||
hardware.opengl.enable = lib.mkDefault true;
|
||||
hardware.graphics.enable = lib.mkDefault true;
|
||||
|
||||
programs.gnupg.agent.pinentryPackage = lib.mkOverride 1100 pkgs.pinentry-gnome3;
|
||||
|
||||
|
@ -107,7 +107,7 @@ in {
|
||||
fonts = optional (cfg.fonts != null) "font-name=${lib.concatMapStringsSep ", " (f: f.name) cfg.fonts}";
|
||||
in lib.concatStringsSep "\n" (render ++ fonts);
|
||||
|
||||
hardware.opengl.enable = mkIf cfg.hwRender true;
|
||||
hardware.graphics.enable = mkIf cfg.hwRender true;
|
||||
|
||||
fonts = mkIf (cfg.fonts != null) {
|
||||
fontconfig.enable = true;
|
||||
|
@ -101,7 +101,7 @@ in {
|
||||
session required ${config.systemd.package}/lib/security/pam_systemd.so
|
||||
'';
|
||||
|
||||
hardware.opengl.enable = mkDefault true;
|
||||
hardware.graphics.enable = mkDefault true;
|
||||
|
||||
systemd.targets.graphical.wants = [ "cage-tty1.service" ];
|
||||
|
||||
|
@ -216,7 +216,7 @@ in
|
||||
|
||||
security.pam.services.phosh = {};
|
||||
|
||||
hardware.opengl.enable = mkDefault true;
|
||||
hardware.graphics.enable = mkDefault true;
|
||||
|
||||
services.gnome.core-shell.enable = true;
|
||||
services.gnome.core-os-services.enable = true;
|
||||
|
@ -716,10 +716,7 @@ in
|
||||
|
||||
restartIfChanged = false;
|
||||
|
||||
environment =
|
||||
optionalAttrs config.hardware.opengl.setLdLibraryPath
|
||||
{ LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.addOpenGLRunpath.driverLink ]; }
|
||||
// config.services.displayManager.environment;
|
||||
environment = config.services.displayManager.environment;
|
||||
|
||||
preStart =
|
||||
''
|
||||
|
@ -244,8 +244,8 @@ in
|
||||
};
|
||||
|
||||
assertions = [
|
||||
{ assertion = cfg.enableNvidia && pkgs.stdenv.isx86_64 -> config.hardware.opengl.driSupport32Bit or false;
|
||||
message = "Option enableNvidia on x86_64 requires 32bit support libraries";
|
||||
{ assertion = cfg.enableNvidia && pkgs.stdenv.isx86_64 -> config.hardware.graphics.enable32Bit or false;
|
||||
message = "Option enableNvidia on x86_64 requires 32-bit support libraries";
|
||||
}];
|
||||
|
||||
virtualisation.docker.daemon.settings = {
|
||||
|
@ -12,7 +12,7 @@ let
|
||||
{ pkgs, ... }:
|
||||
|
||||
{ imports = [ ./common/user-account.nix ./common/x11.nix ];
|
||||
hardware.opengl.driSupport = true;
|
||||
hardware.graphics.enable = true;
|
||||
virtualisation.memorySize = 256;
|
||||
environment = {
|
||||
systemPackages = [ pkgs.armagetronad ];
|
||||
|
@ -14,9 +14,7 @@ in
|
||||
};
|
||||
|
||||
nodes.machine = { config, ... }:
|
||||
let
|
||||
alice = config.users.users.alice;
|
||||
in {
|
||||
{
|
||||
# Automatically login on tty1 as a normal user:
|
||||
imports = [ ./common/user-account.nix ];
|
||||
services.getty.autologinUser = "alice";
|
||||
@ -31,7 +29,7 @@ in
|
||||
fi
|
||||
'';
|
||||
|
||||
hardware.opengl.enable = true;
|
||||
hardware.graphics.enable = true;
|
||||
programs.xwayland.enable = true;
|
||||
security.polkit.enable = true;
|
||||
environment.systemPackages = [ pkgs.cagebreak pkgs.wayland-utils ];
|
||||
|
@ -5,7 +5,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
hardware.opengl.enable = true;
|
||||
hardware.graphics.enable = true;
|
||||
users.users.alice = {
|
||||
isNormalUser = true;
|
||||
uid = 1000;
|
||||
|
@ -5,7 +5,7 @@ let
|
||||
{ pkgs, ... }:
|
||||
|
||||
{ imports = [ ./common/x11.nix ];
|
||||
hardware.opengl.driSupport = true;
|
||||
hardware.graphics.enable = true;
|
||||
environment.systemPackages = [ pkgs.openarena ];
|
||||
};
|
||||
|
||||
|
@ -21,7 +21,7 @@ let
|
||||
{ pkgs, ... }:
|
||||
|
||||
{ imports = [ ./common/x11.nix ];
|
||||
hardware.opengl.driSupport = true;
|
||||
hardware.graphics.enable = true;
|
||||
environment.systemPackages = [ pkgs.quake3demo ];
|
||||
nixpkgs.config.packageOverrides = overrides;
|
||||
nixpkgs.config.allowUnfreePredicate = unfreePredicate;
|
||||
|
@ -39,7 +39,7 @@ in
|
||||
dwl -s 'foot touch /tmp/foot_started'
|
||||
'';
|
||||
|
||||
hardware.opengl.enable = true;
|
||||
hardware.graphics.enable = true;
|
||||
virtualisation.qemu.options = [ "-vga none -device virtio-gpu-pci" ];
|
||||
services.seatd.enable = true;
|
||||
};
|
||||
|
@ -16,7 +16,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||
systemPackages = with pkgs; [ tinywl foot wayland-utils ];
|
||||
};
|
||||
|
||||
hardware.opengl.enable = true;
|
||||
hardware.graphics.enable = true;
|
||||
|
||||
# Automatically start TinyWL when logging in on tty1:
|
||||
programs.bash.loginShellInit = ''
|
||||
|
@ -280,7 +280,7 @@ in buildFHSEnv rec {
|
||||
WARNING: Steam is not set up. Add the following options to /etc/nixos/configuration.nix
|
||||
and then run \`sudo nixos-rebuild switch\`:
|
||||
{
|
||||
hardware.opengl.driSupport32Bit = true;
|
||||
hardware.graphics.enable32Bit = true;
|
||||
hardware.pulseaudio.support32Bit = true;
|
||||
}
|
||||
**
|
||||
|
Loading…
Reference in New Issue
Block a user