Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions pkgs/by-name/ud/udevCheckHook/hook.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# shellcheck shell=bash

udevCheckHook() {
runHook preUdevCheck
echo Executing udevCheckPhase

# as per nixos/modules/services/hardware/udev.nix:
# - both /lib and /etc is valid paths for udev rules
# - udev rules are expected to be part of the $bin output
# However, not all udev rules are actually in $bin (some are in $lib or $out).
# This means we have to actually check all outputs here.
for output in $(getAllOutputNames); do
for path in etc lib ; do
if [ -d "${!output}/$path/udev/rules.d" ]; then
@udevadm@ verify --resolve-names=never --no-style "${!output}/$path/udev/rules.d"
fi
done
done

runHook postUdevCheck
echo Finished udevCheckPhase
}

if [[ -z "${dontUdevCheck-}" ]]; then
echo "Using udevCheckHook"
preInstallCheckHooks+=(udevCheckHook)
fi
16 changes: 16 additions & 0 deletions pkgs/by-name/ud/udevCheckHook/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
lib,
makeSetupHook,
systemdMinimal,
}:

makeSetupHook {
name = "udev-check-hook";
substitutions = {
udevadm = lib.getExe' systemdMinimal "udevadm";
};
meta = {
description = "check validity of udev rules in outputs";
maintainers = with lib.maintainers; [ grimmauld ];
};
} ./hook.sh