2025-12-15 22:32:32 -05:00
|
|
|
{
|
|
|
|
|
config,
|
|
|
|
|
lib,
|
|
|
|
|
pkgs,
|
|
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
|
2025-12-18 22:28:03 -05:00
|
|
|
let
|
|
|
|
|
my-cni-plugins = pkgs.buildEnv {
|
|
|
|
|
name = "my-cni-plugins";
|
|
|
|
|
paths = with pkgs; [
|
|
|
|
|
cni-plugins
|
|
|
|
|
cni-plugin-flannel
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
my-cni-configs = pkgs.callPackage ./package/cni_conf/package.nix { };
|
|
|
|
|
in
|
2025-12-15 22:32:32 -05:00
|
|
|
{
|
|
|
|
|
imports = [ ];
|
|
|
|
|
|
|
|
|
|
options.me = {
|
|
|
|
|
containerd.enable = lib.mkOption {
|
|
|
|
|
type = lib.types.bool;
|
|
|
|
|
default = false;
|
|
|
|
|
example = true;
|
|
|
|
|
description = "Whether we want to install containerd.";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
config = lib.mkIf config.me.containerd.enable {
|
|
|
|
|
virtualisation.containerd.enable = true;
|
2025-12-18 22:28:03 -05:00
|
|
|
virtualisation.containerd.settings = {
|
|
|
|
|
"plugins" = {
|
|
|
|
|
"io.containerd.grpc.v1.cri" = {
|
|
|
|
|
"cni" = {
|
|
|
|
|
"bin_dir" = "/opt/cni/bin";
|
|
|
|
|
"conf_dir" = "/etc/cni/net.d";
|
|
|
|
|
# "bin_dir" = "${my-cni-plugins}/bin";
|
|
|
|
|
# "conf_dir" = "${my-cni-configs}";
|
|
|
|
|
};
|
|
|
|
|
"containerd" = {
|
|
|
|
|
"default_runtime_name" = "runc";
|
|
|
|
|
"runtimes" = {
|
|
|
|
|
"runc" = {
|
|
|
|
|
"options" = {
|
|
|
|
|
"SystemdCgroup" = true;
|
2025-12-15 22:32:32 -05:00
|
|
|
};
|
2025-12-18 22:28:03 -05:00
|
|
|
"runtime_type" = "io.containerd.runc.v2";
|
2025-12-15 22:32:32 -05:00
|
|
|
};
|
|
|
|
|
};
|
2025-12-18 22:28:03 -05:00
|
|
|
"snapshotter" = "overlayfs";
|
2025-12-15 22:32:32 -05:00
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-12-18 22:28:03 -05:00
|
|
|
"version" = 2;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
systemd.services.containerd.preStart = ''
|
|
|
|
|
${pkgs.toybox}/bin/install -d -m 0755 /opt/cni/bin /etc/cni/net.d
|
|
|
|
|
${pkgs.toybox}/bin/install ${my-cni-plugins}/bin/* /opt/cni/bin/
|
|
|
|
|
${pkgs.toybox}/bin/install ${my-cni-configs}/* /etc/cni/net.d/
|
|
|
|
|
echo "Copied CNI plugins/config."
|
|
|
|
|
'';
|
2025-12-19 21:21:57 -05:00
|
|
|
|
|
|
|
|
environment.persistence."/persist" = lib.mkIf (config.me.mountPersistence) {
|
|
|
|
|
hideMounts = lib.mkForce false;
|
|
|
|
|
directories = [
|
|
|
|
|
"/var/lib/containerd"
|
|
|
|
|
];
|
|
|
|
|
};
|
2025-12-15 22:32:32 -05:00
|
|
|
};
|
|
|
|
|
}
|