1{
2 callPackage,
3 fetchFromGitHub,
4 nixos,
5 conmon,
6}:
7let
8 apptainer =
9 callPackage
10 (import ./generic.nix rec {
11 pname = "apptainer";
12 version = "1.4.1";
13 projectName = "apptainer";
14
15 src = fetchFromGitHub {
16 owner = "apptainer";
17 repo = "apptainer";
18 tag = "v${version}";
19 hash = "sha256-1deSlDNk8ZI/z1eWmslesXO0ypCoMxCJMdihFPCSPIc=";
20 };
21
22 # Override vendorHash with overrideAttrs.
23 # See https://nixos.org/manual/nixpkgs/unstable/#buildGoModule-vendorHash
24 vendorHash = "sha256-HP5XJ74ELaZT/bZgAPqe7vBPvJhHwyZVSNrUa+KToIE=";
25
26 extraDescription = " (previously known as Singularity)";
27 extraMeta.homepage = "https://apptainer.org";
28 })
29 {
30 # Apptainer doesn't depend on conmon
31 conmon = null;
32
33 # Apptainer builders require explicit --with-suid / --without-suid flag
34 # when building on a system with disabled unprivileged namespace.
35 # See https://github.com/NixOS/nixpkgs/pull/215690#issuecomment-1426954601
36 defaultToSuid = null;
37
38 sourceFilesWithDefaultPaths = {
39 "cmd/internal/cli/actions.go" = [ "/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin" ];
40 "e2e/env/env.go" = [ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ];
41 "internal/pkg/util/env/env.go" = [ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ];
42 };
43 };
44
45 singularity =
46 callPackage
47 (import ./generic.nix rec {
48 pname = "singularity-ce";
49 version = "4.3.2";
50 projectName = "singularity";
51
52 src = fetchFromGitHub {
53 owner = "sylabs";
54 repo = "singularity";
55 tag = "v${version}";
56 hash = "sha256-lYYY449agINk1cwRl06gstGhkwQKaeZdLnwT6bW6HY4=";
57 };
58
59 # Override vendorHash with overrideAttrs.
60 # See https://nixos.org/manual/nixpkgs/unstable/#buildGoModule-vendorHash
61 vendorHash = "sha256-3CEkaG8k6W1/8v8tsVLXdSV68QHUgn5/BEd8qjkW7ik=";
62
63 extraConfigureFlags = [
64 # Do not build squashfuse from the Git submodule sources, use Nixpkgs provided version
65 "--without-squashfuse"
66 # Disable subid as it requires (unavailable?) libsubid headers:
67 "--without-libsubid"
68 ];
69
70 extraDescription = " (Sylabs Inc's fork of Singularity, a.k.a. SingularityCE)";
71 extraMeta.homepage = "https://sylabs.io/";
72 })
73 {
74 # Sylabs SingularityCE builders defaults to set the SUID flag
75 # on UNIX-like platforms,
76 # and only have --without-suid but not --with-suid.
77 defaultToSuid = true;
78
79 sourceFilesWithDefaultPaths = {
80 "cmd/internal/cli/actions.go" = [ "/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin" ];
81 "e2e/env/env.go" = [ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ];
82 "internal/pkg/util/env/clean.go" = [
83 "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
84 ];
85 };
86 };
87
88 genOverridenNixos =
89 package: packageName:
90 (nixos {
91 programs.singularity = {
92 enable = true;
93 inherit package;
94 };
95 }).config.programs.singularity.packageOverriden.overrideAttrs
96 (oldAttrs: {
97 meta = oldAttrs.meta // {
98 description = "";
99 longDescription = ''
100 This package produces identical store derivations to `pkgs.${packageName}`
101 overriden and installed by the NixOS module `programs.singularity`
102 with default configuration.
103
104 This is for binary substitutes only. Use pkgs.${packageName} instead.
105 '';
106 };
107 });
108in
109{
110 inherit apptainer singularity;
111
112 apptainer-overriden-nixos = genOverridenNixos apptainer "apptainer";
113 singularity-overriden-nixos = genOverridenNixos singularity "singularity";
114}