summaryrefslogtreecommitdiffstats
path: root/nixos/tests/nix-required-mounts/test-require-feature.nix
blob: c5a13f2a749ff3659e9edd0d0274e5a83a5ee578 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
  pkgs ? import <nixpkgs> { },
  feature,
}:

pkgs.runCommand "${feature}-present" { requiredSystemFeatures = [ feature ]; } ''
  if [[ ! -e /${feature}-files ]]; then
    echo "The host declares ${feature} support, but doesn't expose /${feature}-files" >&2
    exit 1
  fi
  libcudaLocation=/run/opengl-driver/lib/libcuda.so
  if [[ -e "$libcudaLocation" || -h "$libcudaLocation" ]] ; then
    true # we're good
  else
    echo "The host declares ${feature} support, but it the hook fails to handle the hostPath != guestPath cases" >&2
    exit 1
  fi
  if cat "$libcudaLocation" | xargs test fakeContent = ; then
    true # we're good
  else
    echo "The host declares ${feature} support, but it seems to fail to follow symlinks" >&2
    echo "The content of /run/opengl-driver/lib/libcuda.so is: $(cat /run/opengl-driver/lib/libcuda.so)" >&2
    exit 1
  fi
  touch $out
''