35 lines
954 B
Nix
35 lines
954 B
Nix
{ config, pkgs, lib, namespace, host, ... }:
|
|
let
|
|
inherit (lib) types mkIf;
|
|
inherit (lib.${namespace}) mkOpt;
|
|
|
|
cfg = config.${namespace}.services.openiscsi;
|
|
in
|
|
{
|
|
options.${namespace}.services.openiscsi = {
|
|
enable = lib.mkEnableOption "Open iSCSI support";
|
|
name = mkOpt types.str "iqn.2025.reichard.io:${host}" "iSCSI name";
|
|
symlink = mkOpt types.bool false "Create a symlink to the iSCSI binaries";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
boot.kernelModules = [ "iscsi_tcp" "libiscsi" "scsi_transport_iscsi" ];
|
|
|
|
services.openiscsi = {
|
|
enable = true;
|
|
name = cfg.name;
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
openiscsi
|
|
];
|
|
|
|
# Predominately used for RKE2 & Democratic CSI
|
|
system.activationScripts.iscsi-symlink = mkIf cfg.symlink ''
|
|
mkdir -p /usr/bin
|
|
ln -sf ${pkgs.openiscsi}/bin/iscsiadm /usr/bin/iscsiadm
|
|
ln -sf ${pkgs.openiscsi}/bin/iscsid /usr/bin/iscsid
|
|
'';
|
|
};
|
|
}
|