50 lines
1.3 KiB
Nix
50 lines
1.3 KiB
Nix
|
{ lib, makeImpureTest, coreutils, amdvlk, vulkan-tools }:
|
||
|
makeImpureTest {
|
||
|
name = "amdvlk";
|
||
|
testedPackage = "amdvlk";
|
||
|
|
||
|
sandboxPaths = [ "/sys" "/dev/dri" ];
|
||
|
|
||
|
nativeBuildInputs = [ vulkan-tools ];
|
||
|
|
||
|
VK_ICD_FILENAMES = "${amdvlk}/share/vulkan/icd.d/amd_icd64.json";
|
||
|
XDG_RUNTIME_DIR = "/tmp";
|
||
|
|
||
|
# AMDVLK needs access to /dev/dri/card0 (or another card), but normally it is rw-rw----
|
||
|
# Change the permissions to be rw for everyone
|
||
|
prepareRunCommands = ''
|
||
|
function reset_perms()
|
||
|
{
|
||
|
# Reset permissions to previous state
|
||
|
for card in /dev/dri/card*; do
|
||
|
sudo ${coreutils}/bin/chmod "0''${cardPerms[$card]}" $card
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# Save permissions on /dev/dri/card*
|
||
|
declare -A cardPerms
|
||
|
for card in /dev/dri/card*; do
|
||
|
cardPerms[$card]=$(stat -c "%a" $card)
|
||
|
done
|
||
|
|
||
|
sudo ${coreutils}/bin/chmod o+rw /dev/dri/card*
|
||
|
trap reset_perms EXIT
|
||
|
'';
|
||
|
|
||
|
testScript = ''
|
||
|
# Check that there is at least one card with write-access
|
||
|
if ! ls -l /dev/dri/card* | cut -b8-9 | grep -q rw; then
|
||
|
echo 'AMDVLK needs rw access to /dev/dri/card0 or a fitting card, please run `sudo chmod o+rw /dev/dri/card*`'
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
vulkaninfo --summary
|
||
|
echo "Checking version"
|
||
|
vulkaninfo --summary | grep '= ${amdvlk.version}'
|
||
|
'';
|
||
|
|
||
|
meta = with lib.maintainers; {
|
||
|
maintainers = [ Flakebi ];
|
||
|
};
|
||
|
}
|