nixos/udev: allow /bin/sh in udev rules
Using `/bin/sh` in udev rules is fine (as it's guaranteed to point to a (bash) shell on NixOS), and actually is better than hardcoding absolute paths, at least in cases where these rules are also added to the (systemd-based) initrd (via boot.initrd.services.udev.rules). To allow this, we need to update the check routine that assembles the list of files needing fixup, to explicitly exclude `/bin/sh` occurences. To do this, we convert the pattern to a PCRE regex (which requires "/" to be escaped), and add `(?!/bin/sh\b)` as a negative lookahead. This subsequently allows udev rules to (start using) `/bin/sh` again, so they'll work in-initrd.
This commit is contained in:
parent
8e23dec5ac
commit
fe446f8bb4
@ -112,7 +112,8 @@ let
|
|||||||
echo "OK"
|
echo "OK"
|
||||||
|
|
||||||
filesToFixup="$(for i in "$out"/*; do
|
filesToFixup="$(for i in "$out"/*; do
|
||||||
grep -l '\B\(/usr\)\?/s\?bin' "$i" || :
|
# list all files referring to (/usr)/bin paths, but allow references to /bin/sh.
|
||||||
|
grep -P -l '\B(?!\/bin\/sh\b)(\/usr)?\/bin(?:\/.*)?' "$i" || :
|
||||||
done)"
|
done)"
|
||||||
|
|
||||||
if [ -n "$filesToFixup" ]; then
|
if [ -n "$filesToFixup" ]; then
|
||||||
|
Loading…
Reference in New Issue
Block a user