Add support for nvidia

This commit is contained in:
2025-09-22 20:39:01 +08:00
parent 300abfff49
commit b363cc4405
3 changed files with 46 additions and 24 deletions

View File

@@ -19,7 +19,7 @@ in
home.packages = with pkgs; [
zsh-completions
fd
htop
btop
ripgrep
wget
delta

View File

@@ -6,7 +6,12 @@
}:
let
cfg = config.my_k3s;
inherit (lib) mkEnableOption mkIf mkOption;
inherit (lib)
mkEnableOption
mkIf
mkOption
mkMerge
;
types = lib.types;
in
{
@@ -29,26 +34,44 @@ in
};
extraFlags = mkOption {
type = types.listOf types.str;
default = [];
default = [ ];
};
nvidia = mkOption {
type = types.bool;
default = false;
};
};
config = mkIf cfg.enable {
services.k3s = {
enable = true;
role = cfg.role;
tokenFile = cfg.tokenFile;
clusterInit = cfg.clusterInit;
serverAddr = cfg.serverAddr;
extraFlags = cfg.extraFlags;
};
environment.systemPackages = [ pkgs.nfs-utils ];
services.openiscsi = {
enable = true;
name = "iqn.2016-04.com.open-iscsi:${config.networking.hostName}";
};
systemd.tmpfiles.rules = [
"L+ /usr/local/bin - - - - /run/current-system/sw/bin/"
];
};
config = mkIf cfg.enable (mkMerge [
{
services.k3s = {
enable = true;
role = cfg.role;
tokenFile = cfg.tokenFile;
clusterInit = cfg.clusterInit;
serverAddr = cfg.serverAddr;
extraFlags = cfg.extraFlags;
};
environment.systemPackages = [ pkgs.nfs-utils ];
services.openiscsi = {
enable = true;
name = "iqn.2016-04.com.open-iscsi:${config.networking.hostName}";
};
systemd.tmpfiles.rules = [
"L+ /usr/local/bin - - - - /run/current-system/sw/bin/"
];
}
(mkIf cfg.nvidia {
hardware.nvidia-container-toolkit.enable = true;
hardware.nvidia-container-toolkit.mount-nvidia-executables = true;
# virtualisation.docker = {
# enable = true;
# enableNvidia = true;
# };
environment.systemPackages = with pkgs; [
nvidia-container-toolkit
];
})
]);
}

View File

@@ -34,6 +34,7 @@ in
"--flannel-backend=host-gw"
"--tls-san 10.222.0.249"
];
nvidia = true;
};
networking.hostName = "penguin";
@@ -98,12 +99,11 @@ in
environment.systemPackages = with pkgs; [
git
neovim
nvidia-container-toolkit
];
virtualisation.podman = {
enable = true;
dockerCompat = true;
dockerCompat = false;
defaultNetwork.settings.dns_enabled = true;
};
@@ -116,6 +116,5 @@ in
joinNetworks = [ "23992b9a659115b6" ];
};
system.stateVersion = "25.11";
};
}