fc9111fadf
initialising network interfaces, etc.) to modules/tasks. This follows the Upstart terminology: a service is a job that doesn't usually terminate (e.g. a daemon), while a task is a job that does some work and then exits. svn path=/nixos/branches/modular-nixos/; revision=15771
45 lines
897 B
Nix
45 lines
897 B
Nix
{pkgs, config, ...}:
|
|
|
|
###### implementation
|
|
|
|
let
|
|
|
|
tempConf = "/var/run/mdadm.conf";
|
|
modprobe = config.system.sbin.modprobe;
|
|
inherit (pkgs) mdadm;
|
|
|
|
in
|
|
|
|
{
|
|
|
|
services = {
|
|
extraJobs = [{
|
|
name = "swraid";
|
|
|
|
job = ''
|
|
start on udev
|
|
#start on new-devices
|
|
|
|
script
|
|
|
|
# Load the necessary RAID personalities.
|
|
# !!! hm, doesn't the kernel load these automatically?
|
|
for mod in raid0 raid1 raid5; do
|
|
${modprobe}/sbin/modprobe $mod || true
|
|
done
|
|
|
|
# Scan /proc/partitions for RAID devices.
|
|
${mdadm}/sbin/mdadm --examine --brief --scan -c partitions > ${tempConf}
|
|
|
|
# Activate each device found.
|
|
${mdadm}/sbin/mdadm --assemble -c ${tempConf} --scan
|
|
|
|
initctl emit new-devices
|
|
|
|
end script
|
|
|
|
'';
|
|
}];
|
|
};
|
|
}
|