Home Explore Blog CI



nixpkgs

doc/hooks/udevCheckHook.section.md
8bc15f22cb56436ecfca3df858844ab4ef389e30bb11352b0000000300000570
# udevCheckHook {#udevcheckhook}

The `udevCheckHook` derivation adds `udevCheckPhase` to the [`preInstallCheckHooks`](#ssec-installCheck-phase),
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:
```nix
{
  lib,
  stdenv,
  udevCheckHook,
# ...
}:

stdenv.mkDerivation (finalAttrs: {
  # ...

  nativeInstallCheckInputs = [
    udevCheckHook
  ];
  doInstallCheck = true;

  # ...
})
```
Note that for [`buildPythonPackage`](#buildpythonpackage-function) and [`buildPythonApplication`](#buildpythonapplication-function), `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.

Chunks
2c506803 (1st chunk of `doc/hooks/udevCheckHook.section.md`)
Title: udevCheckHook: Verifying udev Rules in Nix Packages
Summary
The `udevCheckHook` derivation is used to verify udev rules within Nix packages. It adds the `udevCheckPhase` to `preInstallCheckHooks`, ensuring that all udev rules are valid using `udevadm verify`. This hook is automatically enabled for `buildPythonPackage` and `buildPythonApplication`. It scans the `/{etc,lib}/udev/rules.d` paths of all outputs and depends on `systemdMinimal`. The hook can be disabled using `dontUdevCheck` if a different task needs to be performed during the `installCheckPhase`.