58 lines
1.4 KiB
Nix
58 lines
1.4 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 ];
|
|
};
|
|
}
|