diff options
author | Silvan Mosberger <contact@infinisil.com> | 2023-11-23 01:37:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-23 01:37:54 +0100 |
commit | bf01ec00a0b196c84f84f153da2d14effa0867a7 (patch) | |
tree | a89b73e2b3e19e20aa375eca6df6a0b2695a77ad /nixos/modules/programs/singularity.nix | |
parent | c10d7026fbae24c51e87586c6b6e4c46c0365007 (diff) | |
parent | ac776695313a2da0ee99ba328da474f606a7a9d9 (diff) |
Merge pull request #250949 from ShamrockLee/apptainer-localstatedir
apptainer, singularity: use self-contained LOCALSTATEDIR by default
Diffstat (limited to 'nixos/modules/programs/singularity.nix')
-rw-r--r-- | nixos/modules/programs/singularity.nix | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/nixos/modules/programs/singularity.nix b/nixos/modules/programs/singularity.nix index 05fdb4842c543..79695b29becae 100644 --- a/nixos/modules/programs/singularity.nix +++ b/nixos/modules/programs/singularity.nix @@ -45,6 +45,18 @@ in Use `lib.mkForce` to forcefully specify the overridden package. ''; }; + enableExternalLocalStateDir = mkOption { + type = types.bool; + default = true; + example = false; + description = mdDoc '' + Whether to use top-level directories as LOCALSTATEDIR + instead of the store path ones. + This affects the SESSIONDIR of Apptainer/Singularity. + If set to true, the SESSIONDIR will become + `/var/lib/''${projectName}/mnt/session`. + ''; + }; enableFakeroot = mkOption { type = types.bool; default = true; @@ -65,7 +77,9 @@ in config = mkIf cfg.enable { programs.singularity.packageOverriden = (cfg.package.override ( - optionalAttrs cfg.enableFakeroot { + optionalAttrs cfg.enableExternalLocalStateDir { + externalLocalStateDir = "/var/lib"; + } // optionalAttrs cfg.enableFakeroot { newuidmapPath = "/run/wrappers/bin/newuidmap"; newgidmapPath = "/run/wrappers/bin/newgidmap"; } // optionalAttrs cfg.enableSuid { @@ -80,12 +94,8 @@ in group = "root"; source = "${cfg.packageOverriden}/libexec/${cfg.packageOverriden.projectName}/bin/starter-suid.orig"; }; - systemd.tmpfiles.rules = [ + systemd.tmpfiles.rules = mkIf cfg.enableExternalLocalStateDir [ "d /var/lib/${cfg.packageOverriden.projectName}/mnt/session 0770 root root -" - "d /var/lib/${cfg.packageOverriden.projectName}/mnt/final 0770 root root -" - "d /var/lib/${cfg.packageOverriden.projectName}/mnt/overlay 0770 root root -" - "d /var/lib/${cfg.packageOverriden.projectName}/mnt/container 0770 root root -" - "d /var/lib/${cfg.packageOverriden.projectName}/mnt/source 0770 root root -" ]; }; |