| 
									
										
										
										
											2014-04-14 16:26:48 +02:00
										 |  |  | { config, lib, pkgs, ... }: | 
					
						
							| 
									
										
										
										
											2006-12-13 14:24:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-14 16:26:48 +02:00
										 |  |  | with lib; | 
					
						
							| 
									
										
										
										
											2009-03-06 12:26:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-15 13:09:22 -04:00
										 |  |  |   inherit (pkgs) stdenv writeText procps; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-16 13:17:57 +01:00
										 |  |  |   udev = config.systemd.package; | 
					
						
							| 
									
										
										
										
											2006-12-13 14:24:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-03 10:45:14 +00:00
										 |  |  |   cfg = config.services.udev; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 19:05:20 +00:00
										 |  |  |   extraUdevRules = pkgs.writeTextFile { | 
					
						
							|  |  |  |     name = "extra-udev-rules"; | 
					
						
							|  |  |  |     text = cfg.extraRules; | 
					
						
							|  |  |  |     destination = "/etc/udev/rules.d/10-local.rules"; | 
					
						
							|  |  |  |   }; | 
					
						
							| 
									
										
										
										
											2009-03-06 12:26:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 19:05:20 +00:00
										 |  |  |   nixosRules = ''
 | 
					
						
							| 
									
										
										
										
											2008-07-02 18:06:34 +00:00
										 |  |  |     # Miscellaneous devices. | 
					
						
							|  |  |  |     KERNEL=="kvm",                  MODE="0666" | 
					
						
							| 
									
										
										
										
											2010-05-16 09:39:41 +00:00
										 |  |  |     KERNEL=="kqemu",                MODE="0666" | 
					
						
							| 
									
										
										
										
											2014-04-28 19:12:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # Needed for gpm. | 
					
						
							| 
									
										
										
										
											2014-05-20 13:07:40 +02:00
										 |  |  |     SUBSYSTEM=="input", KERNEL=="mice", TAG+="systemd" | 
					
						
							| 
									
										
										
										
											2008-07-02 18:06:34 +00:00
										 |  |  |   '';
 | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-03 23:20:08 +00:00
										 |  |  |   # Perform substitutions in all udev rules files. | 
					
						
							|  |  |  |   udevRules = stdenv.mkDerivation { | 
					
						
							|  |  |  |     name = "udev-rules"; | 
					
						
							| 
									
										
										
										
											2015-07-07 15:01:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-19 10:51:49 +00:00
										 |  |  |     preferLocalBuild = true; | 
					
						
							| 
									
										
										
										
											2015-07-07 15:01:36 +02:00
										 |  |  |     allowSubstitutes = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-02 18:06:34 +00:00
										 |  |  |     buildCommand = ''
 | 
					
						
							| 
									
										
										
										
											2012-06-15 13:09:22 -04:00
										 |  |  |       mkdir -p $out | 
					
						
							| 
									
										
										
										
											2007-07-22 02:07:02 +00:00
										 |  |  |       shopt -s nullglob | 
					
						
							| 
									
										
										
										
											2014-10-19 19:29:28 +02:00
										 |  |  |       set +o pipefail | 
					
						
							| 
									
										
										
										
											2009-08-10 19:05:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  |       # Set a reasonable $PATH for programs called by udev rules. | 
					
						
							| 
									
										
										
										
											2010-09-16 15:23:12 +00:00
										 |  |  |       echo 'ENV{PATH}="${udevPath}/bin:${udevPath}/sbin"' > $out/00-path.rules | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-07 22:39:35 +00:00
										 |  |  |       # Add the udev rules from other packages. | 
					
						
							|  |  |  |       for i in ${toString cfg.packages}; do | 
					
						
							| 
									
										
										
										
											2010-08-27 15:32:49 +00:00
										 |  |  |         echo "Adding rules for package $i" | 
					
						
							| 
									
										
										
										
											2012-06-15 13:09:22 -04:00
										 |  |  |         for j in $i/{etc,lib}/udev/rules.d/*; do
 | 
					
						
							| 
									
										
										
										
											2011-08-24 21:24:39 +00:00
										 |  |  |           echo "Copying $j to $out/$(basename $j)" | 
					
						
							| 
									
										
										
										
											2013-02-11 16:01:01 +01:00
										 |  |  |           cat $j > $out/$(basename $j) | 
					
						
							| 
									
										
										
										
											2010-01-07 22:39:35 +00:00
										 |  |  |         done | 
					
						
							|  |  |  |       done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # Fix some paths in the standard udev rules.  Hacky. | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  |       for i in $out/*.rules; do
 | 
					
						
							|  |  |  |         substituteInPlace $i \ | 
					
						
							| 
									
										
										
										
											2012-03-17 17:26:17 +00:00
										 |  |  |           --replace \"/sbin/modprobe \"${config.system.sbin.modprobe}/sbin/modprobe \
 | 
					
						
							| 
									
										
										
										
											2011-08-24 21:24:39 +00:00
										 |  |  |           --replace \"/sbin/mdadm \"${pkgs.mdadm}/sbin/mdadm \
 | 
					
						
							|  |  |  |           --replace \"/sbin/blkid \"${pkgs.utillinux}/sbin/blkid \
 | 
					
						
							|  |  |  |           --replace \"/bin/mount \"${pkgs.utillinux}/bin/mount
 | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  |       done | 
					
						
							| 
									
										
										
										
											2009-08-10 19:05:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-28 14:19:38 -04:00
										 |  |  |       echo -n "Checking that all programs called by relative paths in udev rules exist in ${udev}/lib/udev... " | 
					
						
							| 
									
										
										
										
											2011-08-24 21:24:39 +00:00
										 |  |  |       import_progs=$(grep 'IMPORT{program}="[^/$]' $out/* |
 | 
					
						
							|  |  |  |         sed -e 's/.*IMPORT{program}="\([^ "]*\)[ "].*/\1/' | uniq)
 | 
					
						
							| 
									
										
										
										
											2011-12-05 16:53:58 +00:00
										 |  |  |       run_progs=$(grep -v '^[[:space:]]*#' $out/* | grep 'RUN+="[^/$]' | | 
					
						
							| 
									
										
										
										
											2011-08-24 21:24:39 +00:00
										 |  |  |         sed -e 's/.*RUN+="\([^ "]*\)[ "].*/\1/' | uniq)
 | 
					
						
							|  |  |  |       for i in $import_progs $run_progs; do | 
					
						
							| 
									
										
										
										
											2011-08-25 08:06:09 +00:00
										 |  |  |         if [[ ! -x ${pkgs.udev}/lib/udev/$i && ! $i =~ socket:.* ]]; then | 
					
						
							| 
									
										
										
										
											2011-08-24 21:24:39 +00:00
										 |  |  |           echo "FAIL" | 
					
						
							|  |  |  |           echo "$i is called in udev rules but not installed by udev" | 
					
						
							|  |  |  |           exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |       done | 
					
						
							|  |  |  |       echo "OK" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-28 14:19:38 -04:00
										 |  |  |       echo -n "Checking that all programs called by absolute paths in udev rules exist... " | 
					
						
							| 
									
										
										
										
											2012-06-27 20:41:07 +02:00
										 |  |  |       import_progs=$(grep 'IMPORT{program}="\/' $out/* |
 | 
					
						
							| 
									
										
										
										
											2011-08-24 21:24:39 +00:00
										 |  |  |         sed -e 's/.*IMPORT{program}="\([^ "]*\)[ "].*/\1/' | uniq)
 | 
					
						
							| 
									
										
										
										
											2011-12-05 16:53:58 +00:00
										 |  |  |       run_progs=$(grep -v '^[[:space:]]*#' $out/* | grep 'RUN+="/' | | 
					
						
							| 
									
										
										
										
											2011-08-24 21:24:39 +00:00
										 |  |  |         sed -e 's/.*RUN+="\([^ "]*\)[ "].*/\1/' | uniq)
 | 
					
						
							|  |  |  |       for i in $import_progs $run_progs; do | 
					
						
							|  |  |  |         if [[ ! -x $i ]]; then | 
					
						
							|  |  |  |           echo "FAIL" | 
					
						
							|  |  |  |           echo "$i is called in udev rules but not installed by udev" | 
					
						
							|  |  |  |           exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |       done | 
					
						
							|  |  |  |       echo "OK" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       echo "Consider fixing the following udev rules:" | 
					
						
							|  |  |  |       for i in ${toString cfg.packages}; do | 
					
						
							|  |  |  |         grep -l '\(RUN+\|IMPORT{program}\)="\(/usr\)\?/s\?bin' $i/*/udev/rules.d/* || true
 | 
					
						
							|  |  |  |       done | 
					
						
							| 
									
										
										
										
											2013-02-11 16:01:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-02 10:54:48 +01:00
										 |  |  |       ${optionalString config.networking.usePredictableInterfaceNames ''
 | 
					
						
							| 
									
										
										
										
											2014-11-30 10:37:18 +01:00
										 |  |  |         cp ${./80-net-setup-link.rules} $out/80-net-setup-link.rules | 
					
						
							| 
									
										
										
										
											2013-04-03 07:35:35 -04:00
										 |  |  |       ''}
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-21 11:32:51 +01:00
										 |  |  |       # If auto-configuration is disabled, then remove | 
					
						
							|  |  |  |       # udev's 80-drivers.rules file, which contains rules for | 
					
						
							|  |  |  |       # automatically calling modprobe. | 
					
						
							|  |  |  |       ${optionalString (!config.boot.hardwareScan) ''
 | 
					
						
							|  |  |  |         ln -s /dev/null $out/80-drivers.rules | 
					
						
							|  |  |  |       ''}
 | 
					
						
							| 
									
										
										
										
											2008-07-02 18:06:34 +00:00
										 |  |  |     ''; # */
 | 
					
						
							| 
									
										
										
										
											2007-03-03 23:20:08 +00:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-16 15:23:12 +00:00
										 |  |  |   # Udev has a 512-character limit for ENV{PATH}, so create a symlink | 
					
						
							|  |  |  |   # tree to work around this. | 
					
						
							|  |  |  |   udevPath = pkgs.buildEnv { | 
					
						
							|  |  |  |     name = "udev-path"; | 
					
						
							|  |  |  |     paths = cfg.path; | 
					
						
							|  |  |  |     pathsToLink = [ "/bin" "/sbin" ]; | 
					
						
							|  |  |  |     ignoreCollisions = true; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-12-13 14:24:33 +00:00
										 |  |  | in | 
					
						
							| 
									
										
										
										
											2006-12-13 12:17:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-06-20 16:09:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |   ###### interface | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |   options = { | 
					
						
							| 
									
										
										
										
											2008-06-20 16:09:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |     boot.hardwareScan = mkOption { | 
					
						
							| 
									
										
										
										
											2013-10-30 17:37:45 +01:00
										 |  |  |       type = types.bool; | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |       default = true; | 
					
						
							|  |  |  |       description = ''
 | 
					
						
							|  |  |  |         Whether to try to load kernel modules for all detected hardware. | 
					
						
							|  |  |  |         Usually this does a good job of providing you with the modules | 
					
						
							|  |  |  |         you need, but sometimes it can crash the system or cause other | 
					
						
							| 
									
										
										
										
											2011-11-03 00:46:29 +00:00
										 |  |  |         nasty effects. | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |       '';
 | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |     services.udev = { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 19:05:20 +00:00
										 |  |  |       packages = mkOption { | 
					
						
							| 
									
										
										
										
											2013-10-28 16:14:15 +01:00
										 |  |  |         type = types.listOf types.path; | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |         default = []; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							|  |  |  |           List of packages containing <command>udev</command> rules. | 
					
						
							|  |  |  |           All files found in | 
					
						
							| 
									
										
										
										
											2009-08-10 19:05:20 +00:00
										 |  |  |           <filename><replaceable>pkg</replaceable>/etc/udev/rules.d</filename> and | 
					
						
							|  |  |  |           <filename><replaceable>pkg</replaceable>/lib/udev/rules.d</filename> | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |           will be included. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2009-03-06 12:26:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-16 15:23:12 +00:00
										 |  |  |       path = mkOption { | 
					
						
							| 
									
										
										
										
											2013-10-28 16:14:15 +01:00
										 |  |  |         type = types.listOf types.path; | 
					
						
							| 
									
										
										
										
											2010-09-16 15:23:12 +00:00
										 |  |  |         default = []; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							|  |  |  |           Packages added to the <envar>PATH</envar> environment variable when | 
					
						
							|  |  |  |           executing programs from Udev rules. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |       extraRules = mkOption { | 
					
						
							|  |  |  |         default = ""; | 
					
						
							|  |  |  |         example = ''
 | 
					
						
							|  |  |  |           KERNEL=="eth*", ATTR{address}=="00:1D:60:B9:6D:4F", NAME="my_fast_network_card" | 
					
						
							|  |  |  |         '';
 | 
					
						
							| 
									
										
										
										
											2013-02-11 16:01:01 +01:00
										 |  |  |         type = types.lines; | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |         description = ''
 | 
					
						
							|  |  |  |           Additional <command>udev</command> rules. They'll be written | 
					
						
							|  |  |  |           into file <filename>10-local.rules</filename>. Thus they are | 
					
						
							|  |  |  |           read before all other rules. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2009-03-06 12:26:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  |     hardware.firmware = mkOption { | 
					
						
							| 
									
										
										
										
											2015-08-25 00:27:06 +02:00
										 |  |  |       type = types.listOf types.package; | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  |       default = []; | 
					
						
							|  |  |  |       description = ''
 | 
					
						
							| 
									
										
										
										
											2015-08-25 00:27:06 +02:00
										 |  |  |         List of packages containing firmware files.  Such files | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  |         will be loaded automatically if the kernel asks for them | 
					
						
							|  |  |  |         (i.e., when it has detected specific hardware that requires | 
					
						
							| 
									
										
										
										
											2015-08-25 00:27:06 +02:00
										 |  |  |         firmware to function).  If multiple packages contain firmware | 
					
						
							|  |  |  |         files with the same name, the first package in the list takes | 
					
						
							|  |  |  |         precedence.  Note that you must rebuild your system if you add | 
					
						
							| 
									
										
										
										
											2015-09-07 22:54:51 +02:00
										 |  |  |         files to any of these directories. | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  |       '';
 | 
					
						
							| 
									
										
										
										
											2010-04-25 18:26:56 +00:00
										 |  |  |       apply = list: pkgs.buildEnv { | 
					
						
							|  |  |  |         name = "firmware"; | 
					
						
							|  |  |  |         paths = list; | 
					
						
							| 
									
										
										
										
											2015-08-25 00:27:06 +02:00
										 |  |  |         pathsToLink = [ "/lib/firmware" ]; | 
					
						
							| 
									
										
										
										
											2012-02-21 10:02:58 +00:00
										 |  |  |         ignoreCollisions = true; | 
					
						
							| 
									
										
										
										
											2010-04-25 18:26:56 +00:00
										 |  |  |       }; | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-11 16:01:01 +01:00
										 |  |  |     networking.usePredictableInterfaceNames = mkOption { | 
					
						
							|  |  |  |       default = true; | 
					
						
							|  |  |  |       type = types.bool; | 
					
						
							|  |  |  |       description = ''
 | 
					
						
							|  |  |  |         Whether to assign <link | 
					
						
							|  |  |  |         xlink:href='http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames'>predictable | 
					
						
							|  |  |  |         names to network interfaces</link>.  If enabled, interfaces | 
					
						
							|  |  |  |         are assigned names that contain topology information | 
					
						
							|  |  |  |         (e.g. <literal>wlp3s0</literal>) and thus should be stable | 
					
						
							|  |  |  |         across reboots.  If disabled, names depend on the order in | 
					
						
							|  |  |  |         which interfaces are discovered by the kernel, which may | 
					
						
							|  |  |  |         change randomly across reboots; for instance, you may find | 
					
						
							|  |  |  |         <literal>eth0</literal> and <literal>eth1</literal> flipping | 
					
						
							|  |  |  |         unpredictably. | 
					
						
							|  |  |  |       '';
 | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  |   }; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   ###### implementation | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-27 16:54:20 +01:00
										 |  |  |   config = mkIf (!config.boot.isContainer) { | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 19:05:20 +00:00
										 |  |  |     services.udev.extraRules = nixosRules; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-15 13:09:22 -04:00
										 |  |  |     services.udev.packages = [ extraUdevRules ]; | 
					
						
							| 
									
										
										
										
											2009-03-06 12:26:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-15 13:09:22 -04:00
										 |  |  |     services.udev.path = [ pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.utillinux udev ]; | 
					
						
							| 
									
										
										
										
											2009-08-11 21:16:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-15 13:09:22 -04:00
										 |  |  |     environment.etc = | 
					
						
							|  |  |  |       [ { source = udevRules; | 
					
						
							|  |  |  |           target = "udev/rules.d"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       ]; | 
					
						
							| 
									
										
										
										
											2010-09-16 15:23:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-06 17:02:35 -04:00
										 |  |  |     system.requiredKernelConfig = with config.lib.kernelConfig; [ | 
					
						
							|  |  |  |       (isEnabled "UNIX") | 
					
						
							|  |  |  |       (isYes "INOTIFY_USER") | 
					
						
							|  |  |  |       (isYes "NET") | 
					
						
							|  |  |  |     ]; | 
					
						
							| 
									
										
										
										
											2009-08-10 18:41:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-25 00:27:06 +02:00
										 |  |  |     boot.extraModprobeConfig = "options firmware_class path=${config.hardware.firmware}/lib/firmware"; | 
					
						
							| 
									
										
										
										
											2013-03-27 22:08:25 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-27 16:54:20 +01:00
										 |  |  |     system.activationScripts.udevd = | 
					
						
							| 
									
										
										
										
											2013-03-27 22:08:25 +01:00
										 |  |  |       ''
 | 
					
						
							| 
									
										
										
										
											2015-04-06 09:14:54 +02:00
										 |  |  |         # The deprecated hotplug uevent helper is not used anymore | 
					
						
							|  |  |  |         if [ -e /proc/sys/kernel/hotplug ]; then | 
					
						
							|  |  |  |           echo "" > /proc/sys/kernel/hotplug | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2015-03-06 15:59:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-27 16:54:20 +01:00
										 |  |  |         # Regenerate the hardware database /var/lib/udev/hwdb.bin | 
					
						
							|  |  |  |         # whenever systemd changes. | 
					
						
							|  |  |  |         if [ ! -e /var/lib/udev/prev-systemd -o "$(readlink /var/lib/udev/prev-systemd)" != ${config.systemd.package} ]; then | 
					
						
							|  |  |  |           echo "regenerating udev hardware database..." | 
					
						
							|  |  |  |           ${config.systemd.package}/bin/udevadm hwdb --update && ln -sfn ${config.systemd.package} /var/lib/udev/prev-systemd | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2014-10-20 13:13:10 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # Allow the kernel to find our firmware. | 
					
						
							|  |  |  |         if [ -e /sys/module/firmware_class/parameters/path ]; then | 
					
						
							| 
									
										
										
										
											2015-08-25 00:27:06 +02:00
										 |  |  |           echo -n "${config.hardware.firmware}/lib/firmware" > /sys/module/firmware_class/parameters/path | 
					
						
							| 
									
										
										
										
											2014-10-20 13:13:10 +02:00
										 |  |  |         fi | 
					
						
							| 
									
										
										
										
											2013-03-27 22:08:25 +01:00
										 |  |  |       '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-17 12:22:24 +02:00
										 |  |  |     systemd.services.systemd-udevd = | 
					
						
							| 
									
										
										
										
											2014-04-17 18:52:31 +02:00
										 |  |  |       { environment.MODULE_DIR = "/run/booted-system/kernel-modules/lib/modules"; | 
					
						
							| 
									
										
										
										
											2014-04-17 12:22:24 +02:00
										 |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-04 09:42:03 -05:00
										 |  |  |   }; | 
					
						
							| 
									
										
										
										
											2006-12-13 12:17:38 +00:00
										 |  |  | } |