diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/virtualization/singularity/default.nix')
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/applications/virtualization/singularity/default.nix | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/virtualization/singularity/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/virtualization/singularity/default.nix new file mode 100644 index 000000000000..b11f8d68189c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/virtualization/singularity/default.nix @@ -0,0 +1,75 @@ +{stdenv +, lib +, fetchurl +, util-linux +, gpgme +, openssl +, libuuid +, coreutils +, go +, which +, makeWrapper +, cryptsetup +, squashfsTools +, buildGoPackage}: + +with lib; + +buildGoPackage rec { + pname = "singularity"; + version = "3.7.0"; + + src = fetchurl { + url = "https://github.com/hpcng/singularity/releases/download/v${version}/singularity-${version}.tar.gz"; + sha256 = "0y6lm23g6a2ljm78w8iyak7yivxvpj3i55fjbd56m9b2ykssm5pv"; + }; + + goPackagePath = "github.com/sylabs/singularity"; + + buildInputs = [ gpgme openssl libuuid ]; + nativeBuildInputs = [ util-linux which makeWrapper cryptsetup ]; + propagatedBuildInputs = [ coreutils squashfsTools ]; + + postPatch = '' + substituteInPlace internal/pkg/build/files/copy.go \ + --replace /bin/cp ${coreutils}/bin/cp + ''; + + postConfigure = '' + cd go/src/github.com/sylabs/singularity + + patchShebangs . + sed -i 's|defaultPath := "[^"]*"|defaultPath := "${stdenv.lib.makeBinPath propagatedBuildInputs}"|' cmd/internal/cli/actions.go + + ./mconfig -V ${version} -p $out --localstatedir=/var + + # Don't install SUID binaries + sed -i 's/-m 4755/-m 755/g' builddir/Makefile + ''; + + buildPhase = '' + runHook preBuild + make -C builddir + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + make -C builddir install LOCALSTATEDIR=$out/var + chmod 755 $out/libexec/singularity/bin/starter-suid + + # Explicitly configure paths in the config file + sed -i 's|^# mksquashfs path =.*$|mksquashfs path = ${stdenv.lib.makeBinPath [squashfsTools]}/mksquashfs|' $out/etc/singularity/singularity.conf + sed -i 's|^# cryptsetup path =.*$|cryptsetup path = ${stdenv.lib.makeBinPath [cryptsetup]}/cryptsetup|' $out/etc/singularity/singularity.conf + + runHook postInstall + ''; + + meta = with stdenv.lib; { + homepage = "http://www.sylabs.io/"; + description = "Application containers for linux"; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = [ maintainers.jbedo ]; + }; +} |