diff --git a/configuration/upstart.nix b/configuration/upstart.nix index 27696a2daa7a..256804ad5a41 100644 --- a/configuration/upstart.nix +++ b/configuration/upstart.nix @@ -20,7 +20,7 @@ import ../upstart-jobs/gather.nix { # The udev daemon creates devices nodes and runs programs when # hardware events occur. (import ../upstart-jobs/udev.nix { - inherit (pkgs) udev procps; + inherit (pkgs) writeText cleanSource udev procps; }) # Hardware scan; loads modules for PCI devices. diff --git a/upstart-jobs/udev-rules/50-udev.rules b/upstart-jobs/udev-rules/50-udev.rules new file mode 100644 index 000000000000..06bf21707f12 --- /dev/null +++ b/upstart-jobs/udev-rules/50-udev.rules @@ -0,0 +1,24 @@ +# Miscellaneous devices. +KERNEL=="mem|kmem", GROUP="kmem", MODE="640" +KERNEL=="port", GROUP="kmem", MODE="640" +KERNEL=="nvram", GROUP="kmem", MODE="600" +KERNEL=="null", MODE="666" +KERNEL=="zero", MODE="666" +KERNEL=="full", MODE="622" +KERNEL=="random", MODE="666" +KERNEL=="urandom", MODE="644" +KERNEL=="rtc", MODE="600" +KERNEL=="sonypi", MODE="0666" +KERNEL=="agpgart", MODE="0600", GROUP="video" + + +# Input devices go under /dev/input. +KERNEL=="mouse*|mice", NAME="input/%k", MODE="0640" +KERNEL=="event*", NAME="input/%k", MODE="0640" +KERNEL=="js*", NAME="input/%k", MODE="0644" +KERNEL=="ts*", NAME="input/%k", MODE="0600" +KERNEL=="uinput", NAME="input/%k", MODE="0600" + + +# Create a symlink for the CD-ROM device. +KERNEL=="hd[a-z]", BUS=="ide", SYSFS{removable}=="1", SYSFS{device/media}=="cdrom", SYMLINK+="cdrom cdrom-%k" diff --git a/upstart-jobs/udev.nix b/upstart-jobs/udev.nix index e218246c0463..892004c5d276 100644 --- a/upstart-jobs/udev.nix +++ b/upstart-jobs/udev.nix @@ -1,4 +1,12 @@ -{udev, procps}: +{writeText, cleanSource, udev, procps}: + +let + + conf = writeText "udev.conf" " + udev_rules=\"${cleanSource ./udev-rules}\" + "; + +in { name = "udev"; @@ -7,6 +15,8 @@ start on startup stop on shutdown +env UDEV_CONFIG_FILE=${conf} + start script echo '' > /proc/sys/kernel/hotplug