nixpkgs/doc/hooks/udevCheckHook.section.md
2025-05-29 10:15:33 +02:00

1.4 KiB

udevCheckHook

The udevCheckHook derivation adds udevCheckPhase to the preInstallCheckHooks, which finds all udev rules in all outputs and verifies them using udevadm verify --resolve-names=never --no-style. It should be used in any package that has udev rules outputs to ensure the rules are and stay valid.

The hook runs in installCheckPhase, requiring doInstallCheck is enabled for the hook to take effect:

{
  lib,
  stdenv,
  udevCheckHook,
# ...
}:

stdenv.mkDerivation (finalAttrs: {
  # ...

  nativeInstallCheckInputs = [
    udevCheckHook
  ];
  doInstallCheck = true;

  # ...
})

Note that for buildPythonPackage and buildPythonApplication, doInstallCheck is enabled by default.

All outputs are scanned for their /{etc,lib}/udev/rules.d paths. If no rule output is found, the hook is basically a no-op.

The udevCheckHook adds a dependency on systemdMinimal. It is internally guarded behind hostPlatform supporting udev and buildPlatform being able to execute udevadm. The hook does not need explicit platform checks in the places where it is used.

The hook can be disabled using dontUdevCheck, which is necessary if you want to run some different task in installCheckPhase on a package with broken udev rule outputs.