summaryrefslogtreecommitdiffstats
path: root/nixos/modules/programs/singularity.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/programs/singularity.nix')
-rw-r--r--nixos/modules/programs/singularity.nix35
1 files changed, 17 insertions, 18 deletions
diff --git a/nixos/modules/programs/singularity.nix b/nixos/modules/programs/singularity.nix
index f4c0a6fe487e..bc989ad2dbaf 100644
--- a/nixos/modules/programs/singularity.nix
+++ b/nixos/modules/programs/singularity.nix
@@ -5,21 +5,20 @@
...
}:
-with lib;
let
cfg = config.programs.singularity;
in
{
options.programs.singularity = {
- enable = mkEnableOption "singularity" // {
+ enable = lib.mkEnableOption "singularity" // {
description = ''
Whether to install Singularity/Apptainer with system-level overriding such as SUID support.
'';
};
- package = mkPackageOption pkgs "singularity" { example = "apptainer"; };
- packageOverriden = mkOption {
- type = types.nullOr types.package;
+ package = lib.mkPackageOption pkgs "singularity" { example = "apptainer"; };
+ packageOverriden = lib.mkOption {
+ type = lib.types.nullOr lib.types.package;
default = null;
description = ''
This option provides access to the overridden result of `programs.singularity.package`.
@@ -42,8 +41,8 @@ in
Use `lib.mkForce` to forcefully specify the overridden package.
'';
};
- enableExternalLocalStateDir = mkOption {
- type = types.bool;
+ enableExternalLocalStateDir = lib.mkOption {
+ type = lib.types.bool;
default = true;
example = false;
description = ''
@@ -54,22 +53,22 @@ in
`/var/lib/''${projectName}/mnt/session`.
'';
};
- enableFakeroot = mkOption {
- type = types.bool;
+ enableFakeroot = lib.mkOption {
+ type = lib.types.bool;
default = true;
example = false;
description = ''
Whether to enable the `--fakeroot` support of Singularity/Apptainer.
'';
};
- enableSuid = mkOption {
- type = types.bool;
+ enableSuid = lib.mkOption {
+ type = lib.types.bool;
# SingularityCE requires SETUID for most things. Apptainer prefers user
# namespaces, e.g. `apptainer exec --nv` would fail if built
# `--with-suid`:
# > `FATAL: nvidia-container-cli not allowed in setuid mode`
default = cfg.package.projectName != "apptainer";
- defaultText = literalExpression ''config.services.singularity.package.projectName != "apptainer"'';
+ defaultText = lib.literalExpression ''config.services.singularity.package.projectName != "apptainer"'';
example = false;
description = ''
Whether to enable the SUID support of Singularity/Apptainer.
@@ -77,28 +76,28 @@ in
};
};
- config = mkIf cfg.enable {
+ config = lib.mkIf cfg.enable {
programs.singularity.packageOverriden = (
cfg.package.override (
- optionalAttrs cfg.enableExternalLocalStateDir { externalLocalStateDir = "/var/lib"; }
- // optionalAttrs cfg.enableFakeroot {
+ lib.optionalAttrs cfg.enableExternalLocalStateDir { externalLocalStateDir = "/var/lib"; }
+ // lib.optionalAttrs cfg.enableFakeroot {
newuidmapPath = "/run/wrappers/bin/newuidmap";
newgidmapPath = "/run/wrappers/bin/newgidmap";
}
- // optionalAttrs cfg.enableSuid {
+ // lib.optionalAttrs cfg.enableSuid {
enableSuid = true;
starterSuidPath = "/run/wrappers/bin/${cfg.package.projectName}-suid";
}
)
);
environment.systemPackages = [ cfg.packageOverriden ];
- security.wrappers."${cfg.packageOverriden.projectName}-suid" = mkIf cfg.enableSuid {
+ security.wrappers."${cfg.packageOverriden.projectName}-suid" = lib.mkIf cfg.enableSuid {
setuid = true;
owner = "root";
group = "root";
source = "${cfg.packageOverriden}/libexec/${cfg.packageOverriden.projectName}/bin/starter-suid.orig";
};
- systemd.tmpfiles.rules = mkIf cfg.enableExternalLocalStateDir [
+ systemd.tmpfiles.rules = lib.mkIf cfg.enableExternalLocalStateDir [
"d /var/lib/${cfg.packageOverriden.projectName}/mnt/session 0770 root root -"
];
};