python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / os-specific / solo5 / default.nix
blob545a73e397fae47165d2fae758c6cafb9d707ef9
1 { lib, stdenv, fetchurl, dosfstools, libseccomp, makeWrapper, mtools, parted
2 , pkg-config, qemu, syslinux, util-linux }:
4 let
5   version = "0.7.4";
6   # list of all theoretically available targets
7   targets = [
8     "genode"
9     "hvt"
10     "muen"
11     "spt"
12     "virtio"
13     "xen"
14   ];
15 in stdenv.mkDerivation {
16   pname = "solo5";
17   inherit version;
19   nativeBuildInputs = [ makeWrapper pkg-config ];
20   buildInputs = lib.optional (stdenv.hostPlatform.isLinux) libseccomp;
22   src = fetchurl {
23     url = "https://github.com/Solo5/solo5/releases/download/v${version}/solo5-v${version}.tar.gz";
24     sha256 = "sha256-ovDdaS2cDufe5gTgi+t2C8waWiRC40/2flLLJlz+NvU=";
25   };
27   hardeningEnable = [ "pie" ];
29   configurePhase = ''
30     runHook preConfigure
31     sh configure.sh --prefix=/
32     runHook postConfigure
33   '';
35   enableParallelBuilding = true;
37   installPhase = ''
38     runHook preInstall
39     export DESTDIR=$out
40     export PREFIX=$out
41     make install
43     substituteInPlace $out/bin/solo5-virtio-mkimage \
44       --replace "/usr/lib/syslinux" "${syslinux}/share/syslinux" \
45       --replace "/usr/share/syslinux" "${syslinux}/share/syslinux" \
46       --replace "cp " "cp --no-preserve=mode "
48     wrapProgram $out/bin/solo5-virtio-mkimage \
49       --prefix PATH : ${lib.makeBinPath [ dosfstools mtools parted syslinux ]}
51     runHook postInstall
52   '';
54   doCheck = stdenv.hostPlatform.isLinux;
55   checkInputs = [ util-linux qemu ];
56   checkPhase = ''
57     runHook preCheck
58     patchShebangs tests
59     ./tests/bats-core/bats ./tests/tests.bats
60     runHook postCheck
61   '';
63   meta = with lib; {
64     description = "Sandboxed execution environment";
65     homepage = "https://github.com/solo5/solo5";
66     license = licenses.isc;
67     maintainers = [ maintainers.ehmry ];
68     platforms = builtins.map ({arch, os}: "${arch}-${os}")
69       (cartesianProductOfSets {
70         arch = [ "aarch64" "x86_64" ];
71         os = [ "freebsd" "genode" "linux" "openbsd" ];
72       });
73   };