Skip to content

Commit 0687334

Browse files
inschrift-spruch-raumSuperSandro2000nzbr
authored
Expose wsl-lib to downstream. (#1043)
Co-authored-by: Sandro <sandro.jaeckel@gmail.com> Co-authored-by: Arson Copperflame <mail@nzbr.de>
1 parent 3e6d8af commit 0687334

1 file changed

Lines changed: 49 additions & 25 deletions

File tree

modules/wsl-distro.nix

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,59 @@ with builtins; with lib;
44

55
let
66
cfg = config.wsl;
7+
8+
defaultLinks = [
9+
"/usr/lib/wsl/lib/libcudadebugger.so.1"
10+
"/usr/lib/wsl/lib/libcuda.so"
11+
"/usr/lib/wsl/lib/libcuda.so.1"
12+
"/usr/lib/wsl/lib/libcuda.so.1.1"
13+
"/usr/lib/wsl/lib/libd3d12core.so"
14+
"/usr/lib/wsl/lib/libd3d12.so"
15+
"/usr/lib/wsl/lib/libdxcore.so"
16+
"/usr/lib/wsl/lib/libnvcuvid.so"
17+
"/usr/lib/wsl/lib/libnvcuvid.so.1"
18+
"/usr/lib/wsl/lib/libnvdxdlkernels.so"
19+
"/usr/lib/wsl/lib/libnvidia-encode.so"
20+
"/usr/lib/wsl/lib/libnvidia-encode.so.1"
21+
"/usr/lib/wsl/lib/libnvidia-gpucomp.so"
22+
"/usr/lib/wsl/lib/libnvidia-ml.so.1"
23+
"/usr/lib/wsl/lib/libnvidia-ngx.so.1"
24+
"/usr/lib/wsl/lib/libnvidia-opticalflow.so"
25+
"/usr/lib/wsl/lib/libnvidia-opticalflow.so.1"
26+
"/usr/lib/wsl/lib/libnvoptix.so.1"
27+
"/usr/lib/wsl/lib/libnvwgf2umx.so"
28+
"/usr/lib/wsl/lib/nvidia-ngx-updater"
29+
"/usr/lib/wsl/lib/nvidia-smi"
30+
];
31+
32+
mkWslLib = extraLinks:
33+
assert cfg.useWindowsDriver;
34+
pkgs.runCommand "wsl-lib" { } ''
35+
mkdir -p "$out/lib"
36+
37+
${concatMapStrings (path: ''
38+
ln -s ${escapeShellArg path} "$out/lib"
39+
'') (defaultLinks ++ extraLinks)}
40+
'';
741
in
842
{
9-
1043
options.wsl = with types; {
1144
enable = mkEnableOption "support for running NixOS as a WSL distribution";
1245
useWindowsDriver = mkEnableOption "OpenGL driver from the Windows host";
46+
47+
wslLibExtraLinks = mkOption {
48+
type = listOf str;
49+
default = [ ];
50+
description = "Additional /usr/lib/wsl/lib/ paths to symlink into wsl-lib";
51+
};
52+
53+
wslLib = mkOption {
54+
type = package;
55+
default = mkWslLib cfg.wslLibExtraLinks;
56+
defaultText = literalExpression "mkWslLib config.wsl.wslLibExtraLinks";
57+
description = "WSL GPU driver library package with symlinks to Windows host drivers";
58+
};
59+
1360
binShPkg = mkOption {
1461
type = package;
1562
internal = true;
@@ -80,30 +127,7 @@ in
80127
hardware.graphics = {
81128
enable = true; # Enable GPU acceleration
82129

83-
extraPackages = mkIf cfg.useWindowsDriver [
84-
(pkgs.runCommand "wsl-lib" { } ''
85-
mkdir -p "$out/lib"
86-
# # we cannot just symlink the lib directory because it breaks merging with other drivers that provide the same directory
87-
ln -s /usr/lib/wsl/lib/libcudadebugger.so.1 "$out/lib"
88-
ln -s /usr/lib/wsl/lib/libcuda.so "$out/lib"
89-
ln -s /usr/lib/wsl/lib/libcuda.so.1 "$out/lib"
90-
ln -s /usr/lib/wsl/lib/libcuda.so.1.1 "$out/lib"
91-
ln -s /usr/lib/wsl/lib/libd3d12core.so "$out/lib"
92-
ln -s /usr/lib/wsl/lib/libd3d12.so "$out/lib"
93-
ln -s /usr/lib/wsl/lib/libdxcore.so "$out/lib"
94-
ln -s /usr/lib/wsl/lib/libnvcuvid.so "$out/lib"
95-
ln -s /usr/lib/wsl/lib/libnvcuvid.so.1 "$out/lib"
96-
ln -s /usr/lib/wsl/lib/libnvdxdlkernels.so "$out/lib"
97-
ln -s /usr/lib/wsl/lib/libnvidia-encode.so "$out/lib"
98-
ln -s /usr/lib/wsl/lib/libnvidia-encode.so.1 "$out/lib"
99-
ln -s /usr/lib/wsl/lib/libnvidia-ml.so.1 "$out/lib"
100-
ln -s /usr/lib/wsl/lib/libnvidia-opticalflow.so "$out/lib"
101-
ln -s /usr/lib/wsl/lib/libnvidia-opticalflow.so.1 "$out/lib"
102-
ln -s /usr/lib/wsl/lib/libnvoptix.so.1 "$out/lib"
103-
ln -s /usr/lib/wsl/lib/libnvwgf2umx.so "$out/lib"
104-
ln -s /usr/lib/wsl/lib/nvidia-smi "$out/lib"
105-
'')
106-
];
130+
extraPackages = mkIf cfg.useWindowsDriver [ cfg.wslLib ];
107131
};
108132

109133
environment = {

0 commit comments

Comments
 (0)