diff --git a/pkgs/by-name/ud/udevCheckHook/hook.sh b/pkgs/by-name/ud/udevCheckHook/hook.sh index 507e0292b8c89..bdb8e9c1f746f 100644 --- a/pkgs/by-name/ud/udevCheckHook/hook.sh +++ b/pkgs/by-name/ud/udevCheckHook/hook.sh @@ -21,7 +21,7 @@ udevCheckHook() { echo Finished udevCheckPhase } -if [[ -z "${dontUdevCheck-}" ]]; then +if [[ -z "${dontUdevCheck-}" && -n "@udevadm@" ]]; then echo "Using udevCheckHook" preInstallCheckHooks+=(udevCheckHook) fi diff --git a/pkgs/by-name/ud/udevCheckHook/package.nix b/pkgs/by-name/ud/udevCheckHook/package.nix index 61a82530cdd33..261a503595eab 100644 --- a/pkgs/by-name/ud/udevCheckHook/package.nix +++ b/pkgs/by-name/ud/udevCheckHook/package.nix @@ -2,12 +2,20 @@ lib, makeSetupHook, systemdMinimal, + udev, + stdenv, }: - +let + # udev rules can only be checked if systemd (specifically, 'udevadm') can be executed on build platform + # if udev is not available on hostPlatform, there is no point in checking rules + applyHook = + lib.meta.availableOn stdenv.hostPlatform udev + && lib.meta.availableOn stdenv.buildPlatform systemdMinimal; +in makeSetupHook { name = "udev-check-hook"; substitutions = { - udevadm = lib.getExe' systemdMinimal "udevadm"; + udevadm = if applyHook then lib.getExe' systemdMinimal "udevadm" else ""; }; meta = { description = "check validity of udev rules in outputs";