mirror of
https://github.com/MagicBOTAlex/nixos-server.git
synced 2026-05-25 01:12:31 +02:00
69 lines
2.2 KiB
Nix
69 lines
2.2 KiB
Nix
{ config, lib, pkgs, ... }: let
|
|
nvidiaEnabled = builtins.elem "nvidia" config.services.xserver.videoDrivers;
|
|
in {
|
|
config = lib.mkMerge [
|
|
(lib.mkIf nvidiaEnabled {
|
|
virtualisation.docker.enableNvidia = true;
|
|
virtualisation.docker.enable = true;
|
|
hardware.nvidia-container-toolkit = {
|
|
enable = true;
|
|
mount-nvidia-executables = true;
|
|
mount-nvidia-docker-1-directories = true;
|
|
extraArgs = [ "--device-name-strategy=uuid" ];
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [ nvidia-docker (lib.getOutput "tools" config.hardware.nvidia-container-toolkit.package) runc ];
|
|
services.envfs.enable = true;
|
|
virtualisation.docker.daemon.settings.features.cdi = true;
|
|
|
|
virtualisation.containerd = {
|
|
enable = true;
|
|
settings = {
|
|
plugins = {
|
|
"io.containerd.grpc.v1.cri" = {
|
|
# enable_cdi = true;
|
|
# cdi_spec_dirs = [ "/etc/cdi" "/var/run/cdi" ];
|
|
containerd = {
|
|
# default_runtime_name = "runc";
|
|
runtimes.runc.options = { SystemdCgroup = false; };
|
|
default_runtime_name = "nvidia";
|
|
runtimes = {
|
|
nvidia = {
|
|
privileged_without_host_devices = false;
|
|
runtime_type = "io.containerd.runc.v2";
|
|
options = {
|
|
BinaryName = "${lib.getOutput "tools" config.hardware.nvidia-container-toolkit.package}/bin/nvidia-container-runtime";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
})
|
|
(lib.mkIf (!nvidiaEnabled ) {
|
|
virtualisation.containerd = {
|
|
enable = true;
|
|
settings = {
|
|
version = 2;
|
|
plugins."io.containerd.grpc.v1.cri" = {
|
|
# This is the critical part for Kubeadm
|
|
containerd.runtimes.runc = {
|
|
runtime_type = "io.containerd.runc.v2";
|
|
options.SystemdCgroup = true;
|
|
};
|
|
|
|
# # Keep your existing settings
|
|
# containerd.snapshotter = lib.mkIf config.boot.zfs.enabled (lib.mkOptionDefault "zfs");
|
|
# cni.bin_dir = lib.mkOptionDefault "${pkgs.cni-plugins}/bin";
|
|
};
|
|
};
|
|
};
|
|
})
|
|
];
|
|
|
|
|
|
# # Tell the Kubelet to use containerd
|
|
# services.kubernetes.kubelet.containerRuntimeEndpoint = "unix:///run/containerd/containerd.sock";
|
|
}
|