diff --git a/doc/hooks/index.md b/doc/hooks/index.md index 574b7eea8de3..cd04fd84495a 100644 --- a/doc/hooks/index.md +++ b/doc/hooks/index.md @@ -35,6 +35,7 @@ python.section.md scons.section.md tauri.section.md tetex-tex-live.section.md +udevCheckHook.section.md unzip.section.md validatePkgConfig.section.md versionCheckHook.section.md diff --git a/doc/hooks/udevCheckHook.section.md b/doc/hooks/udevCheckHook.section.md new file mode 100644 index 000000000000..1e84a1ee33d8 --- /dev/null +++ b/doc/hooks/udevCheckHook.section.md @@ -0,0 +1,36 @@ +# 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. diff --git a/doc/redirects.json b/doc/redirects.json index 4c243c6cc852..570c71ea705c 100644 --- a/doc/redirects.json +++ b/doc/redirects.json @@ -2429,6 +2429,9 @@ "tetex-tex-live": [ "index.html#tetex-tex-live" ], + "udevcheckhook": [ + "index.html#udevcheckhook" + ], "unzip": [ "index.html#unzip" ],