2008-12-04 16:48:27 +01:00
|
|
|
{config, pkgs, ...}:
|
2008-11-18 19:00:09 +01:00
|
|
|
|
|
|
|
###### interface
|
|
|
|
let
|
2008-12-07 13:27:46 +01:00
|
|
|
inherit (pkgs.lib) mkOption mapAttrs getAttr fold
|
|
|
|
mergeListOption mergeTypedOption mergeAttrsWithFunc;
|
|
|
|
|
|
|
|
mergeTags = mergeTypedOption "jobs tag" (x: true)
|
|
|
|
(fold (mergeAttrsWithFunc (a: b:
|
|
|
|
if builtins.lessThan a.priority b.priority then b else a
|
|
|
|
)) { priority = 100; });
|
|
|
|
|
|
|
|
applyTags = mapAttrs (attrName: value:
|
|
|
|
let name = getAttr ["name"] attrName value; in {
|
|
|
|
start = getAttr ["start"] (name + "/started") value;
|
|
|
|
stop = getAttr ["stop"] (name + "/stop") value;
|
|
|
|
});
|
2008-11-18 19:00:09 +01:00
|
|
|
|
|
|
|
options = {
|
|
|
|
services = {
|
|
|
|
extraJobs = mkOption {
|
|
|
|
default = [];
|
|
|
|
example = [
|
|
|
|
{ name = "test-job";
|
|
|
|
job = ''
|
|
|
|
description "nc"
|
|
|
|
start on started network-interfaces
|
|
|
|
respawn
|
|
|
|
env PATH=/var/run/current-system/sw/bin
|
|
|
|
exec sh -c "echo 'hello world' | ${pkgs.netcat}/bin/nc -l -p 9000"
|
|
|
|
'';
|
|
|
|
} ];
|
|
|
|
# should have some checks to everify the syntax
|
|
|
|
merge = pkgs.lib.mergeListOption;
|
|
|
|
description = "
|
|
|
|
Additional Upstart jobs.
|
|
|
|
";
|
|
|
|
};
|
2008-12-07 13:27:46 +01:00
|
|
|
|
|
|
|
# this attribute must be computed before extraJobs.
|
|
|
|
jobsTags = mkOption {
|
|
|
|
default = {};
|
|
|
|
example = {
|
|
|
|
newtworkInterface = {
|
|
|
|
name = "gw6c";
|
|
|
|
priority = 5;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
description = "
|
|
|
|
Allow jobs to overload jobs tags used by upstart jobs.
|
|
|
|
";
|
|
|
|
merge = mergeTags;
|
|
|
|
apply = applyTags;
|
|
|
|
};
|
2008-11-18 19:00:09 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
tests = {
|
|
|
|
upstartJobs = mkOption {
|
|
|
|
internal = true;
|
|
|
|
default = {};
|
|
|
|
description = "
|
|
|
|
Make it easier to build individual Upstart jobs. (e.g.,
|
|
|
|
<command>nix-build /etc/nixos/nixos -A
|
|
|
|
tests.upstartJobs.xserver</command>).
|
|
|
|
";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
in
|
|
|
|
|
|
|
|
###### implementation
|
|
|
|
let
|
|
|
|
# should be moved to the corresponding jobs.
|
|
|
|
nix = config.environment.nix;
|
|
|
|
nixEnvVars = config.nix.envVars;
|
|
|
|
kernelPackages = config.boot.kernelPackages;
|
|
|
|
nssModulesPath = config.system.nssModules.path;
|
|
|
|
modprobe = config.system.sbin.modprobe;
|
|
|
|
mount = config.system.sbin.mount;
|
2006-12-11 16:32:10 +01:00
|
|
|
|
|
|
|
makeJob = import ../upstart-jobs/make-job.nix {
|
|
|
|
inherit (pkgs) runCommand;
|
|
|
|
};
|
|
|
|
|
2007-11-09 19:49:45 +01:00
|
|
|
optional = cond: service: pkgs.lib.optional cond (makeJob service);
|
2006-12-16 19:24:49 +01:00
|
|
|
|
2007-04-04 19:10:38 +02:00
|
|
|
requiredTTYs =
|
2008-01-04 17:11:12 +01:00
|
|
|
config.services.mingetty.ttys
|
|
|
|
++ config.boot.extraTTYs
|
|
|
|
++ [config.services.syslogd.tty];
|
2007-04-04 19:10:38 +02:00
|
|
|
|
2008-03-16 02:05:40 +01:00
|
|
|
# looks for a job file foreach attr name found in services from config
|
|
|
|
# passes { thisConfig, config, pkgs }
|
|
|
|
# a job must return { options = {}; job =; }
|
|
|
|
# options is the same format as options.nix, but only contains documentation for this job
|
|
|
|
# TODO check validation
|
|
|
|
newProposalJobs =
|
2008-03-16 12:03:03 +01:00
|
|
|
(
|
2008-03-16 02:05:40 +01:00
|
|
|
let
|
|
|
|
inherit (pkgs.lib) getAttr;
|
|
|
|
inherit (builtins) attrNames pathExists map;
|
2008-03-16 12:03:03 +01:00
|
|
|
services = getAttr [ "servicesProposal" ] {} config;
|
2008-03-16 02:05:40 +01:00
|
|
|
nameToJobs = name : (
|
2008-03-16 12:03:03 +01:00
|
|
|
(
|
2008-03-16 16:52:52 +01:00
|
|
|
let p = ./new-proposal + "/${name}.nix";
|
|
|
|
p2 = ./new-proposal + "/${name}/default.nix";
|
2008-03-16 02:05:40 +01:00
|
|
|
thisConfig = getAttr [ name ] {} services;
|
|
|
|
path = [name];
|
|
|
|
args = confgiV : {
|
|
|
|
inherit config pkgs thisConfig path;
|
|
|
|
lib = pkgs.lib;
|
|
|
|
upstartHelpers = { # some useful functions
|
|
|
|
inherit configV; # the first time a error function is passed to get the option list
|
|
|
|
# the second time a function is passed getting the option for you automatically,
|
|
|
|
# either returning the default option or the user supplied value (the function apply is applied when given)
|
|
|
|
# maybe this is complicated, but easy to use (IMHO)
|
|
|
|
mkOption = pkgs.lib.mkOption; # the same function used in options.nix
|
|
|
|
autoGeneratedEtcFile = { name, commentChar ? "#", content } :
|
|
|
|
{ source = pkgs.writeText name
|
|
|
|
("${commentChar} nixos autogenerated etc file based on /etc/nixos/configuration.nix\n" + content);
|
|
|
|
target = name;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
jobFunc = if pathExists p
|
|
|
|
then import p
|
|
|
|
else if pathExists p2 then import p2
|
|
|
|
else abort "service ${name} requested but there is no ${p}.nix or ${p}/default.nix file!";
|
|
|
|
options = (jobFunc (args (abort "you can't use configV within options!"))).options;
|
2008-03-25 01:06:58 +01:00
|
|
|
errorWhere = name : "${name} of service ${builtins.toString path}";
|
2008-03-16 02:05:40 +01:00
|
|
|
configV = name : if (__hasAttr name options ) then
|
|
|
|
let opt = (__getAttr name options ); # this config option description
|
|
|
|
in if (__hasAttr name thisConfig )
|
|
|
|
then let v = (__getAttr name thisConfig); in if opt ? apply then opt.apply v else v
|
2008-03-25 01:06:58 +01:00
|
|
|
else if opt ? default then opt.default else abort "you need to specify the configuration option ${errorWhere name}"
|
|
|
|
else abort "unkown option ${errorWhere name}";
|
2008-11-18 19:00:09 +01:00
|
|
|
checkConfig = config.environment.checkConfigurationOptions;
|
2008-03-16 02:05:40 +01:00
|
|
|
in # TODO: pass path to checker so it can show full path in the abort case
|
|
|
|
pkgs.checker ( (jobFunc (args configV)).jobs )
|
|
|
|
checkConfig
|
|
|
|
options
|
|
|
|
thisConfig
|
|
|
|
|
|
|
|
));
|
|
|
|
in pkgs.lib.concatLists ( map nameToJobs (attrNames services)));
|
2007-11-23 11:56:12 +01:00
|
|
|
|
2008-03-16 02:05:40 +01:00
|
|
|
jobs = map makeJob
|
2008-05-08 14:27:01 +02:00
|
|
|
(newProposalJobs ++ [
|
|
|
|
|
2006-12-11 16:32:10 +01:00
|
|
|
# Syslogd.
|
|
|
|
(import ../upstart-jobs/syslogd.nix {
|
2008-04-01 14:50:47 +02:00
|
|
|
inherit (pkgs) sysklogd writeText;
|
2008-05-08 14:27:01 +02:00
|
|
|
inherit config;
|
2006-12-11 16:32:10 +01:00
|
|
|
})
|
|
|
|
|
2008-05-08 15:47:44 +02:00
|
|
|
# Klogd.
|
|
|
|
(import ../upstart-jobs/klogd.nix {
|
|
|
|
inherit (pkgs) sysklogd writeText;
|
|
|
|
inherit config;
|
|
|
|
})
|
|
|
|
|
2006-12-13 13:17:38 +01:00
|
|
|
# The udev daemon creates devices nodes and runs programs when
|
|
|
|
# hardware events occur.
|
|
|
|
(import ../upstart-jobs/udev.nix {
|
2008-07-03 12:45:14 +02:00
|
|
|
inherit modprobe config;
|
2007-03-04 00:20:08 +01:00
|
|
|
inherit (pkgs) stdenv writeText substituteAll udev procps;
|
2007-01-15 10:20:34 +01:00
|
|
|
inherit (pkgs.lib) cleanSource;
|
2007-03-04 00:20:08 +01:00
|
|
|
firmwareDirs =
|
2008-01-12 23:53:13 +01:00
|
|
|
pkgs.lib.optional config.networking.enableIntel2200BGFirmware pkgs.ipw2200fw
|
|
|
|
++ pkgs.lib.optional config.networking.enableIntel3945ABGFirmware pkgs.iwlwifi3945ucode
|
2008-02-18 17:50:08 +01:00
|
|
|
++ pkgs.lib.optional config.networking.enableIntel4965AGNFirmware pkgs.iwlwifi4965ucode
|
2008-02-20 10:01:26 +01:00
|
|
|
++ pkgs.lib.optional config.networking.enableZydasZD1211Firmware pkgs.zd1211fw
|
2008-06-20 18:10:20 +02:00
|
|
|
++ pkgs.lib.optional config.hardware.enableGo7007 "${kernelPackages.wis_go7007}/firmware"
|
2008-07-23 16:13:27 +02:00
|
|
|
++ config.services.udev.addFirmware;
|
2007-07-22 04:07:02 +02:00
|
|
|
extraUdevPkgs =
|
2008-11-23 02:28:52 +01:00
|
|
|
pkgs.lib.optional config.hardware.enableGo7007 kernelPackages.wis_go7007
|
2008-08-06 21:26:47 +02:00
|
|
|
++ config.services.udev.addUdevPkgs;
|
2006-12-13 13:17:38 +01:00
|
|
|
})
|
|
|
|
|
2006-12-24 02:07:28 +01:00
|
|
|
# Makes LVM logical volumes available.
|
|
|
|
(import ../upstart-jobs/lvm.nix {
|
2007-03-04 02:16:24 +01:00
|
|
|
inherit modprobe;
|
2007-06-28 11:57:36 +02:00
|
|
|
inherit (pkgs) lvm2 devicemapper;
|
2006-12-24 02:07:28 +01:00
|
|
|
})
|
|
|
|
|
2007-01-11 01:40:28 +01:00
|
|
|
# Activate software RAID arrays.
|
|
|
|
(import ../upstart-jobs/swraid.nix {
|
2007-03-04 02:16:24 +01:00
|
|
|
inherit modprobe;
|
|
|
|
inherit (pkgs) mdadm;
|
2007-01-11 01:40:28 +01:00
|
|
|
})
|
|
|
|
|
2006-12-21 15:22:40 +01:00
|
|
|
# Mount file systems.
|
|
|
|
(import ../upstart-jobs/filesystems.nix {
|
2008-08-09 14:03:08 +02:00
|
|
|
inherit mount;
|
2006-12-21 21:08:15 +01:00
|
|
|
inherit (pkgs) utillinux e2fsprogs;
|
2007-11-09 19:49:45 +01:00
|
|
|
fileSystems = config.fileSystems;
|
2006-12-21 15:22:40 +01:00
|
|
|
})
|
|
|
|
|
2006-12-21 02:07:23 +01:00
|
|
|
# Swapping.
|
|
|
|
(import ../upstart-jobs/swap.nix {
|
2008-02-11 12:51:51 +01:00
|
|
|
inherit (pkgs) utillinux lib;
|
2007-11-09 19:49:45 +01:00
|
|
|
swapDevices = config.swapDevices;
|
2006-12-21 02:07:23 +01:00
|
|
|
})
|
|
|
|
|
2006-12-11 16:32:10 +01:00
|
|
|
# Network interfaces.
|
|
|
|
(import ../upstart-jobs/network-interfaces.nix {
|
2007-11-23 18:12:37 +01:00
|
|
|
inherit modprobe config;
|
2007-05-24 16:50:17 +02:00
|
|
|
inherit (pkgs) nettools wirelesstools bash writeText;
|
2006-12-11 16:32:10 +01:00
|
|
|
})
|
|
|
|
|
|
|
|
# Nix daemon - required for multi-user Nix.
|
|
|
|
(import ../upstart-jobs/nix-daemon.nix {
|
2007-11-15 18:16:16 +01:00
|
|
|
inherit config pkgs nix nixEnvVars;
|
2006-12-11 16:32:10 +01:00
|
|
|
})
|
|
|
|
|
2007-01-12 00:55:25 +01:00
|
|
|
# Name service cache daemon.
|
|
|
|
(import ../upstart-jobs/nscd.nix {
|
2007-06-10 22:13:12 +02:00
|
|
|
inherit (pkgs) glibc;
|
2007-01-15 18:19:41 +01:00
|
|
|
inherit nssModulesPath;
|
2007-01-12 00:55:25 +01:00
|
|
|
})
|
|
|
|
|
2007-04-04 19:10:38 +02:00
|
|
|
# Console font and keyboard maps.
|
|
|
|
(import ../upstart-jobs/kbd.nix {
|
|
|
|
inherit (pkgs) glibc kbd gzip;
|
|
|
|
ttyNumbers = requiredTTYs;
|
2007-11-09 19:49:45 +01:00
|
|
|
defaultLocale = config.i18n.defaultLocale;
|
|
|
|
consoleFont = config.i18n.consoleFont;
|
|
|
|
consoleKeyMap = config.i18n.consoleKeyMap;
|
2007-04-04 19:10:38 +02:00
|
|
|
})
|
|
|
|
|
2006-12-11 16:32:10 +01:00
|
|
|
# Handles the maintenance/stalled event (single-user shell).
|
|
|
|
(import ../upstart-jobs/maintenance-shell.nix {
|
|
|
|
inherit (pkgs) bash;
|
|
|
|
})
|
|
|
|
|
|
|
|
# Ctrl-alt-delete action.
|
|
|
|
(import ../upstart-jobs/ctrl-alt-delete.nix)
|
|
|
|
|
2008-03-16 02:05:40 +01:00
|
|
|
])
|
2006-12-11 16:32:10 +01:00
|
|
|
|
2008-04-01 12:16:35 +02:00
|
|
|
# At daemon.
|
|
|
|
++ optional config.services.atd.enable
|
|
|
|
(import ../upstart-jobs/atd.nix {
|
|
|
|
at = pkgs.at;
|
2008-08-07 12:09:17 +02:00
|
|
|
config = config.services.atd;
|
2008-04-01 12:16:35 +02:00
|
|
|
})
|
|
|
|
|
2007-08-14 18:43:56 +02:00
|
|
|
# ifplugd daemon for monitoring Ethernet cables.
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.networking.interfaceMonitor.enable
|
2007-08-14 18:43:56 +02:00
|
|
|
(import ../upstart-jobs/ifplugd.nix {
|
|
|
|
inherit (pkgs) ifplugd writeScript bash;
|
|
|
|
inherit config;
|
|
|
|
})
|
|
|
|
|
2007-03-16 17:41:38 +01:00
|
|
|
# DHCP server.
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.services.dhcpd.enable
|
2007-03-16 17:41:38 +01:00
|
|
|
(import ../upstart-jobs/dhcpd.nix {
|
2007-12-04 15:53:37 +01:00
|
|
|
inherit pkgs config;
|
2007-03-16 17:41:38 +01:00
|
|
|
})
|
|
|
|
|
2006-12-16 19:24:49 +01:00
|
|
|
# SSH daemon.
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.services.sshd.enable
|
2006-12-16 19:24:49 +01:00
|
|
|
(import ../upstart-jobs/sshd.nix {
|
2007-06-10 22:13:12 +02:00
|
|
|
inherit (pkgs) writeText openssh glibc;
|
2007-01-07 11:19:16 +01:00
|
|
|
inherit (pkgs.xorg) xauth;
|
2007-01-15 18:19:41 +01:00
|
|
|
inherit nssModulesPath;
|
2007-11-09 19:49:45 +01:00
|
|
|
forwardX11 = config.services.sshd.forwardX11;
|
|
|
|
allowSFTP = config.services.sshd.allowSFTP;
|
2008-03-14 13:53:14 +01:00
|
|
|
permitRootLogin = config.services.sshd.permitRootLogin;
|
2006-12-16 19:24:49 +01:00
|
|
|
})
|
|
|
|
|
2008-03-05 17:03:09 +01:00
|
|
|
# GNU lshd SSH2 deamon.
|
|
|
|
++ optional config.services.lshd.enable
|
|
|
|
(import ../upstart-jobs/lshd.nix {
|
|
|
|
inherit (pkgs) lib;
|
|
|
|
inherit (pkgs) lsh;
|
|
|
|
inherit (pkgs.xorg) xauth;
|
|
|
|
inherit nssModulesPath;
|
|
|
|
lshdConfig = config.services.lshd;
|
|
|
|
})
|
|
|
|
|
2008-09-04 22:28:02 +02:00
|
|
|
# GNUnet daemon.
|
|
|
|
++ optional config.services.gnunet.enable
|
|
|
|
(import ../upstart-jobs/gnunet.nix {
|
|
|
|
inherit (pkgs) gnunet lib writeText;
|
|
|
|
gnunetConfig = config.services.gnunet;
|
|
|
|
})
|
|
|
|
|
2006-12-22 00:43:17 +01:00
|
|
|
# NTP daemon.
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.services.ntp.enable
|
2006-12-22 00:43:17 +01:00
|
|
|
(import ../upstart-jobs/ntpd.nix {
|
2007-03-04 02:16:24 +01:00
|
|
|
inherit modprobe;
|
2007-06-10 22:13:12 +02:00
|
|
|
inherit (pkgs) ntp glibc writeText;
|
2007-11-09 19:49:45 +01:00
|
|
|
servers = config.services.ntp.servers;
|
2006-12-22 00:43:17 +01:00
|
|
|
})
|
|
|
|
|
2008-03-16 00:40:44 +01:00
|
|
|
# portmap daemon.
|
|
|
|
++ optional config.services.portmap.enable
|
|
|
|
(import ../upstart-jobs/portmap.nix {
|
|
|
|
inherit (pkgs) makePortmap;
|
|
|
|
})
|
|
|
|
|
2006-12-16 19:24:49 +01:00
|
|
|
# X server.
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.services.xserver.enable
|
2006-12-16 19:24:49 +01:00
|
|
|
(import ../upstart-jobs/xserver.nix {
|
2008-06-06 11:13:16 +02:00
|
|
|
inherit config pkgs kernelPackages;
|
2007-09-25 21:00:20 +02:00
|
|
|
fontDirectories = import ../system/fonts.nix {inherit pkgs config;};
|
2006-12-16 19:24:49 +01:00
|
|
|
})
|
|
|
|
|
2006-12-18 20:20:03 +01:00
|
|
|
# Apache httpd.
|
2008-02-04 11:52:58 +01:00
|
|
|
++ optional (config.services.httpd.enable && !config.services.httpd.experimental)
|
2006-12-18 20:20:03 +01:00
|
|
|
(import ../upstart-jobs/httpd.nix {
|
2006-12-18 20:46:48 +01:00
|
|
|
inherit config pkgs;
|
2007-06-10 22:13:12 +02:00
|
|
|
inherit (pkgs) glibc;
|
2007-11-23 11:56:12 +01:00
|
|
|
extraConfig = pkgs.lib.concatStringsSep "\n"
|
|
|
|
(map (job: job.extraHttpdConfig) jobs);
|
2006-12-18 20:20:03 +01:00
|
|
|
})
|
|
|
|
|
2008-01-04 11:36:14 +01:00
|
|
|
# Apache httpd (new style).
|
2008-02-04 11:52:58 +01:00
|
|
|
++ optional (config.services.httpd.enable && config.services.httpd.experimental)
|
2008-01-04 11:36:14 +01:00
|
|
|
(import ../upstart-jobs/apache-httpd {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2008-01-28 15:30:18 +01:00
|
|
|
# MySQL server
|
|
|
|
++ optional config.services.mysql.enable
|
|
|
|
(import ../upstart-jobs/mysql.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2007-12-03 05:48:31 +01:00
|
|
|
# Postgres SQL server
|
|
|
|
++ optional config.services.postgresql.enable
|
|
|
|
(import ../upstart-jobs/postgresql.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2008-02-04 14:40:01 +01:00
|
|
|
# EJabberd service
|
|
|
|
++ optional config.services.ejabberd.enable
|
|
|
|
(import ../upstart-jobs/ejabberd.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2008-03-03 20:28:10 +01:00
|
|
|
# OpenFire XMPP server
|
|
|
|
++ optional config.services.openfire.enable
|
|
|
|
(import ../upstart-jobs/openfire.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2008-01-28 16:16:14 +01:00
|
|
|
# JBoss service
|
|
|
|
++ optional config.services.jboss.enable
|
|
|
|
(import ../upstart-jobs/jboss.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2008-01-30 12:00:00 +01:00
|
|
|
# Apache Tomcat service
|
|
|
|
++ optional config.services.tomcat.enable
|
|
|
|
(import ../upstart-jobs/tomcat.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2007-05-28 17:39:25 +02:00
|
|
|
# Samba service.
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.services.samba.enable
|
2007-05-28 17:39:25 +02:00
|
|
|
(import ../upstart-jobs/samba.nix {
|
|
|
|
inherit pkgs;
|
2007-06-10 22:13:12 +02:00
|
|
|
inherit (pkgs) glibc samba;
|
2007-05-28 17:39:25 +02:00
|
|
|
})
|
|
|
|
|
2007-04-02 19:31:58 +02:00
|
|
|
# CUPS (printing) daemon.
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.services.printing.enable
|
2007-04-02 19:31:58 +02:00
|
|
|
(import ../upstart-jobs/cupsd.nix {
|
2008-11-07 14:37:28 +01:00
|
|
|
inherit config pkgs;
|
2007-04-02 19:31:58 +02:00
|
|
|
})
|
|
|
|
|
2007-07-09 13:21:04 +02:00
|
|
|
# Gateway6
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.services.gw6c.enable
|
2007-07-09 13:21:04 +02:00
|
|
|
(import ../upstart-jobs/gw6c.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2008-02-07 13:41:18 +01:00
|
|
|
# VSFTPd server
|
|
|
|
++ optional config.services.vsftpd.enable
|
|
|
|
(import ../upstart-jobs/vsftpd.nix {
|
|
|
|
inherit (pkgs) vsftpd;
|
2008-08-04 11:36:11 +02:00
|
|
|
inherit (config.services.vsftpd) anonymousUser
|
|
|
|
writeEnable anonymousUploadEnable anonymousMkdirEnable;
|
2008-02-07 13:41:18 +01:00
|
|
|
})
|
|
|
|
|
2007-11-05 09:54:30 +01:00
|
|
|
# X Font Server
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.services.xfs.enable
|
2008-01-04 11:54:33 +01:00
|
|
|
(import ../upstart-jobs/xfs.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
2007-11-05 09:54:30 +01:00
|
|
|
|
2007-11-09 19:49:45 +01:00
|
|
|
++ optional config.services.ircdHybrid.enable
|
2007-08-08 22:42:25 +02:00
|
|
|
(import ../upstart-jobs/ircd-hybrid.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2008-02-18 10:15:10 +01:00
|
|
|
++ optional config.services.bitlbee.enable
|
|
|
|
(import ../upstart-jobs/bitlbee.nix {
|
|
|
|
inherit (pkgs) bitlbee;
|
|
|
|
inherit (config.services.bitlbee) portNumber interface;
|
|
|
|
})
|
|
|
|
|
2008-06-30 17:13:02 +02:00
|
|
|
# Postfix mail server.
|
|
|
|
++ optional config.services.postfix.enable
|
|
|
|
(import ../upstart-jobs/postfix.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
2008-06-06 11:13:16 +02:00
|
|
|
|
2008-06-30 23:12:02 +02:00
|
|
|
# Dovecot POP3/IMAP server.
|
|
|
|
++ optional config.services.dovecot.enable
|
|
|
|
(import ../upstart-jobs/dovecot.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2008-07-01 14:15:56 +02:00
|
|
|
# ISC BIND domain name server.
|
|
|
|
++ optional config.services.bind.enable
|
|
|
|
(import ../upstart-jobs/bind.nix {
|
|
|
|
inherit config pkgs;
|
|
|
|
})
|
|
|
|
|
2006-12-11 16:32:10 +01:00
|
|
|
# Handles the reboot/halt events.
|
|
|
|
++ (map
|
|
|
|
(event: makeJob (import ../upstart-jobs/halt.nix {
|
|
|
|
inherit (pkgs) bash utillinux;
|
|
|
|
inherit event;
|
|
|
|
}))
|
|
|
|
["reboot" "halt" "system-halt" "power-off"]
|
|
|
|
)
|
|
|
|
|
|
|
|
# The terminals on ttyX.
|
|
|
|
++ (map
|
|
|
|
(ttyNumber: makeJob (import ../upstart-jobs/mingetty.nix {
|
2007-01-08 23:41:41 +01:00
|
|
|
inherit (pkgs) mingetty;
|
|
|
|
inherit ttyNumber;
|
|
|
|
loginProgram = "${pkgs.pam_login}/bin/login";
|
2006-12-11 16:32:10 +01:00
|
|
|
}))
|
2007-11-09 19:49:45 +01:00
|
|
|
(config.services.mingetty.ttys)
|
2006-12-11 16:32:10 +01:00
|
|
|
)
|
|
|
|
|
2007-01-08 23:41:41 +01:00
|
|
|
# Transparent TTY backgrounds.
|
2008-06-10 18:10:23 +02:00
|
|
|
++ optional (config.services.ttyBackgrounds.enable && kernelPackages.splashutils != null)
|
2007-01-08 23:41:41 +01:00
|
|
|
(import ../upstart-jobs/tty-backgrounds.nix {
|
2008-05-22 13:59:46 +02:00
|
|
|
inherit (pkgs) stdenv;
|
|
|
|
inherit (kernelPackages) splashutils;
|
2007-01-08 23:41:41 +01:00
|
|
|
|
|
|
|
backgrounds =
|
|
|
|
|
|
|
|
let
|
|
|
|
|
|
|
|
specificThemes =
|
2007-11-09 19:49:45 +01:00
|
|
|
config.services.ttyBackgrounds.defaultSpecificThemes
|
|
|
|
++ config.services.ttyBackgrounds.specificThemes;
|
2007-01-08 23:41:41 +01:00
|
|
|
|
|
|
|
overridenTTYs = map (x: x.tty) specificThemes;
|
|
|
|
|
|
|
|
# Use the default theme for all the mingetty ttys and for the
|
|
|
|
# syslog tty, except those for which a specific theme is
|
|
|
|
# specified.
|
|
|
|
defaultTTYs =
|
2008-02-11 12:51:51 +01:00
|
|
|
pkgs.lib.filter (x: !(pkgs.lib.elem x overridenTTYs)) requiredTTYs;
|
2007-01-08 23:41:41 +01:00
|
|
|
|
|
|
|
in
|
|
|
|
(map (ttyNumber: {
|
|
|
|
tty = ttyNumber;
|
2007-11-09 19:49:45 +01:00
|
|
|
theme = config.services.ttyBackgrounds.defaultTheme;
|
2007-01-08 23:41:41 +01:00
|
|
|
}) defaultTTYs)
|
|
|
|
++ specificThemes;
|
|
|
|
|
|
|
|
})
|
|
|
|
|
2006-12-18 18:41:46 +01:00
|
|
|
# User-defined events.
|
2007-11-09 19:49:45 +01:00
|
|
|
++ (map makeJob (config.services.extraJobs))
|
2006-12-18 18:41:46 +01:00
|
|
|
|
2006-12-18 20:46:48 +01:00
|
|
|
# For the built-in logd job.
|
2007-06-08 17:41:12 +02:00
|
|
|
++ [(makeJob { jobDrv = pkgs.upstart; })];
|
2007-11-23 11:56:12 +01:00
|
|
|
|
2008-11-18 19:00:09 +01:00
|
|
|
|
|
|
|
command = import ../upstart-jobs/gather.nix {
|
|
|
|
inherit (pkgs) runCommand;
|
|
|
|
inherit jobs;
|
|
|
|
};
|
2006-12-18 20:46:48 +01:00
|
|
|
|
2008-11-18 19:00:09 +01:00
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
require = [
|
|
|
|
options
|
|
|
|
];
|
|
|
|
|
|
|
|
environment = {
|
|
|
|
etc = [{ # The Upstart events defined above.
|
|
|
|
source = command + "/etc/event.d";
|
|
|
|
target = "event.d";
|
|
|
|
}]
|
|
|
|
++ pkgs.lib.concatLists (map (job: job.extraEtc) jobs);
|
|
|
|
|
|
|
|
extraPackages =
|
|
|
|
pkgs.lib.concatLists (map (job: job.extraPath) jobs);
|
|
|
|
};
|
|
|
|
|
|
|
|
users = {
|
|
|
|
extraUsers =
|
|
|
|
pkgs.lib.concatLists (map (job: job.users) jobs);
|
|
|
|
|
|
|
|
extraGroups =
|
|
|
|
pkgs.lib.concatLists (map (job: job.groups) jobs);
|
|
|
|
};
|
|
|
|
|
2008-12-07 13:27:46 +01:00
|
|
|
services = {
|
|
|
|
jobsTags = {
|
|
|
|
system = {
|
|
|
|
priority = 0;
|
|
|
|
start = "startup";
|
|
|
|
stop = "shutdown";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2008-11-18 19:00:09 +01:00
|
|
|
tests = {
|
|
|
|
# see test/test-upstart-job.sh
|
|
|
|
upstartJobs = { recurseForDerivations = true; } //
|
|
|
|
builtins.listToAttrs (map (job:
|
|
|
|
{ name = if job ? jobName then job.jobName else job.name; value = job; }
|
|
|
|
) jobs);
|
|
|
|
};
|
|
|
|
}
|