diff --git a/pkgs/applications/virtualization/singularity/generic.nix b/pkgs/applications/virtualization/singularity/generic.nix index 1d681883eb03..29191dba702d 100644 --- a/pkgs/applications/virtualization/singularity/generic.nix +++ b/pkgs/applications/virtualization/singularity/generic.nix @@ -46,6 +46,7 @@ in libseccomp, libuuid, mount, + versionCheckHook, # This is for nvidia-container-cli nvidia-docker, openssl, @@ -217,11 +218,6 @@ in ] ) originalDefaultPaths} '') sourceFilesWithDefaultPaths} - - substituteInPlace internal/pkg/util/gpu/nvidia.go \ - --replace \ - 'return fmt.Errorf("/usr/bin not writable in the container")' \ - "" ''; postConfigure = '' @@ -250,20 +246,22 @@ in postFixup = '' substituteInPlace "$out/bin/run-singularity" \ - --replace "/usr/bin/env ${projectName}" "$out/bin/${projectName}" + --replace-fail "/usr/bin/env ${projectName}" "$out/bin/${projectName}" + # Respect PATH from the environment/the user. # Fallback to bin paths provided by Nixpkgs packages. wrapProgram "$out/bin/${projectName}" \ --suffix PATH : "$systemDefaultPath" \ --suffix PATH : "$inputsDefaultPath" + # Make changes in the config file ${lib.optionalString forceNvcCli '' substituteInPlace "$out/etc/${projectName}/${projectName}.conf" \ - --replace "use nvidia-container-cli = no" "use nvidia-container-cli = yes" + --replace-fail "use nvidia-container-cli = no" "use nvidia-container-cli = yes" ''} ${lib.optionalString (enableNvidiaContainerCli && projectName == "singularity") '' substituteInPlace "$out/etc/${projectName}/${projectName}.conf" \ - --replace "# nvidia-container-cli path =" "nvidia-container-cli path = ${nvidia-docker}/bin/nvidia-container-cli" + --replace-fail "# nvidia-container-cli path =" "nvidia-container-cli path = ${nvidia-docker}/bin/nvidia-container-cli" ''} ${lib.optionalString (removeCompat && (projectName != "singularity")) '' unlink "$out/bin/singularity" @@ -290,6 +288,13 @@ in ''} ''; + nativeInstallCheckInputs = [ + versionCheckHook + ]; + versionCheckProgram = "${placeholder "out"}/bin/${projectName}"; + versionCheckProgramArg = "--version"; + doInstallCheck = true; + meta = { description = "Application containers for linux" + extraDescription; longDescription = ''