forked from mirrors/nixpkgs
55 lines
1.7 KiB
Nix
55 lines
1.7 KiB
Nix
|
# Global configuration for the SSH client.
|
||
|
|
||
|
{ config, lib, pkgs, ... }:
|
||
|
|
||
|
with lib;
|
||
|
|
||
|
let
|
||
|
cfg = config.programs.turbovnc;
|
||
|
in
|
||
|
{
|
||
|
options = {
|
||
|
|
||
|
programs.turbovnc = {
|
||
|
|
||
|
ensureHeadlessSoftwareOpenGL = mkOption {
|
||
|
type = types.bool;
|
||
|
default = false;
|
||
|
description = ''
|
||
|
Whether to set up NixOS such that TurboVNC's built-in software OpenGL
|
||
|
implementation works.
|
||
|
|
||
|
This will enable <option>hardware.opengl.enable</option> so that OpenGL
|
||
|
programs can find Mesa's llvmpipe drivers.
|
||
|
|
||
|
Setting this option to <code>false</code> does not mean that software
|
||
|
OpenGL won't work; it may still work depending on your system
|
||
|
configuration.
|
||
|
|
||
|
This option is also intended to generate warnings if you are using some
|
||
|
configuration that's incompatible with using headless software OpenGL
|
||
|
in TurboVNC.
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
};
|
||
|
|
||
|
};
|
||
|
|
||
|
config = mkIf cfg.ensureHeadlessSoftwareOpenGL {
|
||
|
|
||
|
# TurboVNC has builtin support for Mesa llvmpipe's `swrast`
|
||
|
# software rendering to implemnt GLX (OpenGL on Xorg).
|
||
|
# However, just building TurboVNC with support for that is not enough
|
||
|
# (it only takes care of the X server side part of OpenGL);
|
||
|
# the indiviudual applications (e.g. `glxgears`) also need to directly load
|
||
|
# the OpenGL libs.
|
||
|
# Thus, this creates `/run/opengl-driver` populated by Mesa so that the applications
|
||
|
# 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;
|
||
|
|
||
|
};
|
||
|
}
|