diff --git a/nixos/modules/installer/cd-dvd/system-tarball-fuloong2f.nix b/nixos/modules/installer/cd-dvd/system-tarball-fuloong2f.nix
index f0351d12718..6fe490b02bf 100644
--- a/nixos/modules/installer/cd-dvd/system-tarball-fuloong2f.nix
+++ b/nixos/modules/installer/cd-dvd/system-tarball-fuloong2f.nix
@@ -149,8 +149,7 @@ in
# not be started by default on the installation CD because the
# default root password is empty.
services.openssh.enable = true;
-
- jobs.openssh.startOn = lib.mkOverride 50 "";
+ systemd.services.openssh.wantedBy = lib.mkOverride 50 [];
boot.loader.grub.enable = false;
boot.loader.generationsDir.enable = false;
diff --git a/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix b/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix
index cdacc56f7ab..de0cc604bf3 100644
--- a/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix
+++ b/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix
@@ -164,7 +164,7 @@ in
# not be started by default on the installation CD because the
# default root password is empty.
services.openssh.enable = true;
- jobs.openssh.startOn = lib.mkOverride 50 "";
+ systemd.services.openssh.wantedBy = lib.mkOverride 50 [];
# cpufrequtils fails to build on non-pc
powerManagement.enable = false;
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 81daad099a8..78cd587db81 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -100,8 +100,6 @@
./services/amqp/activemq/default.nix
./services/amqp/rabbitmq.nix
./services/audio/alsa.nix
- # Disabled as fuppes no longer builds.
- # ./services/audio/fuppes.nix
./services/audio/icecast.nix
./services/audio/liquidsoap.nix
./services/audio/mpd.nix
@@ -477,7 +475,6 @@
./system/boot/timesyncd.nix
./system/boot/tmp.nix
./system/etc/etc.nix
- ./system/upstart/upstart.nix
./tasks/bcache.nix
./tasks/cpu-freq.nix
./tasks/encrypted-devices.nix
diff --git a/nixos/modules/services/audio/fuppes.nix b/nixos/modules/services/audio/fuppes.nix
deleted file mode 100644
index 4a975ed5f53..00000000000
--- a/nixos/modules/services/audio/fuppes.nix
+++ /dev/null
@@ -1,115 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-let
- cfg = config.services.fuppesd;
-in
-
-with lib;
-
-{
- options = {
- services.fuppesd = {
- enable = mkOption {
- default = false;
- type = with types; bool;
- description = ''
- Enables Fuppes (UPnP A/V Media Server). Can be used to watch
- photos, video and listen to music from a phone/tv connected to the
- local network.
- '';
- };
-
- name = mkOption {
- example = "Media Center";
- type = types.str;
- description = ''
- Enables Fuppes (UPnP A/V Media Server). Can be used to watch
- photos, video and listen to music from a phone/tv connected to the
- local network.
- '';
- };
-
- log = {
- level = mkOption {
- default = 0;
- example = 3;
- type = with types; uniq int;
- description = ''
- Logging level of fuppes, An integer between 0 and 3.
- '';
- };
-
- file = mkOption {
- default = "/var/log/fuppes.log";
- type = types.str;
- description = ''
- File which will contains the log produced by the daemon.
- '';
- };
- };
-
- config = mkOption {
- example = "/etc/fuppes/fuppes.cfg";
- type = types.str;
- description = ''
- Mutable configuration file which can be edited with the web
- interface. Due to possible modification, double quote the full
- path of the filename stored in your filesystem to avoid attempts
- to modify the content of the nix store.
- '';
- };
-
- vfolder = mkOption {
- example = literalExample "/etc/fuppes/vfolder.cfg";
- description = ''
- XML file describing the layout of virtual folder visible by the
- client.
- '';
- };
-
- database = mkOption {
- default = "/var/lib/fuppes/fuppes.db";
- type = types.str;
- description = ''
- Database file which index all shared files.
- '';
- };
-
- ## At the moment, no plugins are packaged.
- /*
- plugins = mkOption {
- type = with types; listOf package;
- description = ''
- List of Fuppes plugins.
- '';
- };
- */
-
- user = mkOption {
- default = "root"; # The default is not secure.
- example = "fuppes";
- type = types.str;
- description = ''
- Name of the user which own the configuration files and under which
- the fuppes daemon will be executed.
- '';
- };
-
- };
- };
-
- config = mkIf cfg.enable {
- jobs.fuppesd = {
- description = "UPnP A/V Media Server. (${cfg.name})";
- startOn = "ip-up";
- daemonType = "fork";
- exec = ''/var/setuid-wrappers/sudo -u ${cfg.user} -- ${pkgs.fuppes}/bin/fuppesd --friendly-name ${cfg.name} --log-level ${toString cfg.log.level} --log-file ${cfg.log.file} --config-file ${cfg.config} --vfolder-config-file ${cfg.vfolder} --database-file ${cfg.database}'';
- };
-
- services.fuppesd.name = mkDefault config.networking.hostName;
-
- services.fuppesd.vfolder = mkDefault ./fuppes/vfolder.cfg;
-
- security.sudo.enable = true;
- };
-}
diff --git a/nixos/modules/services/audio/fuppes/vfolder.cfg b/nixos/modules/services/audio/fuppes/vfolder.cfg
deleted file mode 100644
index 35ec3bffeb0..00000000000
--- a/nixos/modules/services/audio/fuppes/vfolder.cfg
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/nixos/modules/services/databases/4store-endpoint.nix b/nixos/modules/services/databases/4store-endpoint.nix
index a0379043371..5c55ef406d5 100644
--- a/nixos/modules/services/databases/4store-endpoint.nix
+++ b/nixos/modules/services/databases/4store-endpoint.nix
@@ -60,11 +60,9 @@ with lib;
services.avahi.enable = true;
- jobs.fourStoreEndpoint = {
- name = "4store-endpoint";
- startOn = "ip-up";
-
- exec = ''
+ systemd.services."4store-endpoint" = {
+ wantedBy = [ "ip-up.target" ];
+ script = ''
${run} '${pkgs.rdf4store}/bin/4s-httpd -D ${cfg.options} ${if cfg.listenAddress!=null then "-H ${cfg.listenAddress}" else "" } -p ${toString cfg.port} ${cfg.database}'
'';
};
diff --git a/nixos/modules/services/databases/4store.nix b/nixos/modules/services/databases/4store.nix
index 807317d2745..33e731e9681 100644
--- a/nixos/modules/services/databases/4store.nix
+++ b/nixos/modules/services/databases/4store.nix
@@ -52,9 +52,8 @@ with lib;
services.avahi.enable = true;
- jobs.fourStore = {
- name = "4store";
- startOn = "ip-up";
+ systemd.services."4store" = {
+ wantedBy = [ "ip-up.target" ];
preStart = ''
mkdir -p ${stateDir}/
@@ -64,11 +63,9 @@ with lib;
fi
'';
- exec = ''
+ script = ''
${run} -c '${pkgs.rdf4store}/bin/4s-backend -D ${cfg.options} ${cfg.database}'
'';
};
-
};
-
}
diff --git a/nixos/modules/services/databases/virtuoso.nix b/nixos/modules/services/databases/virtuoso.nix
index 8a49e13395c..bdd210a2550 100644
--- a/nixos/modules/services/databases/virtuoso.nix
+++ b/nixos/modules/services/databases/virtuoso.nix
@@ -29,20 +29,20 @@ with lib;
};
listenAddress = mkOption {
- default = "1111";
- example = "myserver:1323";
+ default = "1111";
+ example = "myserver:1323";
description = "ip:port or port to listen on.";
};
httpListenAddress = mkOption {
- default = null;
- example = "myserver:8080";
+ default = null;
+ example = "myserver:8080";
description = "ip:port or port for Virtuoso HTTP server to listen on.";
};
dirsAllowed = mkOption {
- default = null;
- example = "/www, /home/";
+ default = null;
+ example = "/www, /home/";
description = "A list of directories Virtuoso is allowed to access";
};
};
@@ -61,18 +61,17 @@ with lib;
home = stateDir;
};
- jobs.virtuoso = {
- name = "virtuoso";
- startOn = "ip-up";
+ systemd.services.virtuoso = {
+ wantedBy = [ "ip-up.target" ];
preStart = ''
- mkdir -p ${stateDir}
- chown ${virtuosoUser} ${stateDir}
+ mkdir -p ${stateDir}
+ chown ${virtuosoUser} ${stateDir}
'';
script = ''
- cd ${stateDir}
- ${pkgs.virtuoso}/bin/virtuoso-t +foreground +configfile ${pkgs.writeText "virtuoso.ini" cfg.config}
+ cd ${stateDir}
+ ${pkgs.virtuoso}/bin/virtuoso-t +foreground +configfile ${pkgs.writeText "virtuoso.ini" cfg.config}
'';
};
diff --git a/nixos/modules/services/games/ghost-one.nix b/nixos/modules/services/games/ghost-one.nix
index 07d7287ed88..5762148df2b 100644
--- a/nixos/modules/services/games/ghost-one.nix
+++ b/nixos/modules/services/games/ghost-one.nix
@@ -78,8 +78,8 @@ in
bot_replaypath = replays
'';
- jobs.ghostOne = {
- name = "ghost-one";
+ systemd.services."ghost-one" = {
+ wantedBy = [ "multi-user.target" ];
script = ''
mkdir -p ${stateDir}
cd ${stateDir}
diff --git a/nixos/modules/services/hardware/acpid.nix b/nixos/modules/services/hardware/acpid.nix
index a20b1a1ee3a..e3421899d36 100644
--- a/nixos/modules/services/hardware/acpid.nix
+++ b/nixos/modules/services/hardware/acpid.nix
@@ -98,22 +98,26 @@ in
config = mkIf config.services.acpid.enable {
- jobs.acpid =
- { description = "ACPI Daemon";
+ systemd.services.acpid = {
+ description = "ACPI Daemon";
- wantedBy = [ "multi-user.target" ];
- after = [ "systemd-udev-settle.service" ];
+ wantedBy = [ "multi-user.target" ];
+ after = [ "systemd-udev-settle.service" ];
- path = [ pkgs.acpid ];
+ path = [ pkgs.acpid ];
- daemonType = "fork";
-
- exec = "acpid --confdir ${acpiConfDir}";
-
- unitConfig.ConditionVirtualization = "!systemd-nspawn";
- unitConfig.ConditionPathExists = [ "/proc/acpi" ];
+ serviceConfig = {
+ Type = "forking";
};
+ unitConfig = {
+ ConditionVirtualization = "!systemd-nspawn";
+ ConditionPathExists = [ "/proc/acpi" ];
+ };
+
+ script = "acpid --confdir ${acpiConfDir}";
+ };
+
};
}
diff --git a/nixos/modules/services/hardware/pommed.nix b/nixos/modules/services/hardware/pommed.nix
index a24557b40ba..7be4dc1e846 100644
--- a/nixos/modules/services/hardware/pommed.nix
+++ b/nixos/modules/services/hardware/pommed.nix
@@ -35,18 +35,13 @@ with lib;
services.dbus.packages = [ pkgs.pommed ];
- jobs.pommed = { name = "pommed";
-
+ systemd.services.pommed = {
description = "Pommed hotkey management";
-
- startOn = "started dbus";
-
+ wantedBy = [ "multi-user.target" ];
+ after = [ "dbus.service" ];
postStop = "rm -f /var/run/pommed.pid";
-
- exec = "${pkgs.pommed}/bin/pommed";
-
- daemonType = "fork";
-
+ script = "${pkgs.pommed}/bin/pommed";
+ serviceConfig.Type = "forking";
path = [ pkgs.eject ];
};
};
diff --git a/nixos/modules/services/logging/klogd.nix b/nixos/modules/services/logging/klogd.nix
index f69e08152b5..2d1f515da92 100644
--- a/nixos/modules/services/logging/klogd.nix
+++ b/nixos/modules/services/logging/klogd.nix
@@ -24,21 +24,14 @@ with lib;
###### implementation
config = mkIf config.services.klogd.enable {
-
- jobs.klogd =
- { description = "Kernel Log Daemon";
-
- wantedBy = [ "multi-user.target" ];
-
- path = [ pkgs.sysklogd ];
-
- unitConfig.ConditionVirtualization = "!systemd-nspawn";
-
- exec =
- "klogd -c 1 -2 -n " +
- "-k $(dirname $(readlink -f /run/booted-system/kernel))/System.map";
- };
-
+ systemd.services.klogd = {
+ description = "Kernel Log Daemon";
+ wantedBy = [ "multi-user.target" ];
+ path = [ pkgs.sysklogd ];
+ unitConfig.ConditionVirtualization = "!systemd-nspawn";
+ script =
+ "klogd -c 1 -2 -n " +
+ "-k $(dirname $(readlink -f /run/booted-system/kernel))/System.map";
+ };
};
-
}
diff --git a/nixos/modules/services/mail/freepops.nix b/nixos/modules/services/mail/freepops.nix
index 2dd27a2033a..e8c30a36923 100644
--- a/nixos/modules/services/mail/freepops.nix
+++ b/nixos/modules/services/mail/freepops.nix
@@ -72,15 +72,16 @@ in
};
config = mkIf cfg.enable {
- jobs.freepopsd = {
+ systemd.services.freepopsd = {
description = "Freepopsd (webmail over POP3)";
- startOn = "ip-up";
- exec = ''${pkgs.freepops}/bin/freepopsd \
- -p ${toString cfg.port} \
- -t ${toString cfg.threads} \
- -b ${cfg.bind} \
- -vv -l ${cfg.logFile} \
- -s ${cfg.suid.user}.${cfg.suid.group}
+ wantedBy = [ "ip-up.target" ];
+ script = ''
+ ${pkgs.freepops}/bin/freepopsd \
+ -p ${toString cfg.port} \
+ -t ${toString cfg.threads} \
+ -b ${cfg.bind} \
+ -vv -l ${cfg.logFile} \
+ -s ${cfg.suid.user}.${cfg.suid.group}
'';
};
};
diff --git a/nixos/modules/services/mail/spamassassin.nix b/nixos/modules/services/mail/spamassassin.nix
index a3ac9e37242..08953134b3b 100644
--- a/nixos/modules/services/mail/spamassassin.nix
+++ b/nixos/modules/services/mail/spamassassin.nix
@@ -50,15 +50,13 @@ in
gid = config.ids.gids.spamd;
};
- jobs.spamd = {
+ systemd.services.spamd = {
description = "Spam Assassin Server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
- exec = "${pkgs.spamassassin}/bin/spamd ${optionalString cfg.debug "-D"} --username=spamd --groupname=spamd --nouser-config --virtual-config-dir=/var/lib/spamassassin/user-%u --allow-tell --pidfile=/var/run/spamd.pid";
+ script = "${pkgs.spamassassin}/bin/spamd ${optionalString cfg.debug "-D"} --username=spamd --groupname=spamd --nouser-config --virtual-config-dir=/var/lib/spamassassin/user-%u --allow-tell --pidfile=/var/run/spamd.pid";
};
-
};
-
}
diff --git a/nixos/modules/services/misc/dictd.nix b/nixos/modules/services/misc/dictd.nix
index 552e0a435ef..118d299042d 100644
--- a/nixos/modules/services/misc/dictd.nix
+++ b/nixos/modules/services/misc/dictd.nix
@@ -51,13 +51,12 @@ with lib;
gid = config.ids.gids.dictd;
};
- jobs.dictd =
- { description = "DICT.org Dictionary Server";
- startOn = "startup";
- environment = { LOCALE_ARCHIVE = "/run/current-system/sw/lib/locale/locale-archive"; };
- daemonType = "fork";
- exec = "${pkgs.dict}/sbin/dictd -s -c ${dictdb}/share/dictd/dictd.conf --locale en_US.UTF-8";
- };
+ systemd.services.dictd = {
+ description = "DICT.org Dictionary Server";
+ wantedBy = [ "multi-user.target" ];
+ environment = { LOCALE_ARCHIVE = "/run/current-system/sw/lib/locale/locale-archive"; };
+ serviceConfig.Type = "forking";
+ script = "${pkgs.dict}/sbin/dictd -s -c ${dictdb}/share/dictd/dictd.conf --locale en_US.UTF-8";
+ };
};
-
}
diff --git a/nixos/modules/services/misc/disnix.nix b/nixos/modules/services/misc/disnix.nix
index 0534c4fc942..469a2a7ce3b 100644
--- a/nixos/modules/services/misc/disnix.nix
+++ b/nixos/modules/services/misc/disnix.nix
@@ -91,7 +91,7 @@ in
( { hostname = config.networking.hostName;
#targetHost = config.deployment.targetHost;
system = if config.nixpkgs.system == "" then builtins.currentSystem else config.nixpkgs.system;
-
+
supportedTypes = (import "${pkgs.stdenv.mkDerivation {
name = "supportedtypes";
buildCommand = ''
@@ -117,63 +117,61 @@ in
services.disnix.publishInfrastructure.enable = cfg.publishAvahi;
- jobs = {
- disnix =
- { description = "Disnix server";
-
- wants = [ "dysnomia.target" ];
- wantedBy = [ "multi-user.target" ];
- after = [ "dbus.service" ]
- ++ optional config.services.httpd.enable "httpd.service"
- ++ optional config.services.mysql.enable "mysql.service"
- ++ optional config.services.postgresql.enable "postgresql.service"
- ++ optional config.services.tomcat.enable "tomcat.service"
- ++ optional config.services.svnserve.enable "svnserve.service"
- ++ optional config.services.mongodb.enable "mongodb.service";
+ systemd.services = {
+ disnix = {
+ description = "Disnix server";
+ wants = [ "dysnomia.target" ];
+ wantedBy = [ "multi-user.target" ];
+ after = [ "dbus.service" ]
+ ++ optional config.services.httpd.enable "httpd.service"
+ ++ optional config.services.mysql.enable "mysql.service"
+ ++ optional config.services.postgresql.enable "postgresql.service"
+ ++ optional config.services.tomcat.enable "tomcat.service"
+ ++ optional config.services.svnserve.enable "svnserve.service"
+ ++ optional config.services.mongodb.enable "mongodb.service";
- restartIfChanged = false;
-
- path = [ pkgs.nix pkgs.disnix dysnomia "/run/current-system/sw" ];
-
- environment = {
- HOME = "/root";
- };
-
- preStart = ''
- mkdir -p /etc/systemd-mutable/system
- if [ ! -f /etc/systemd-mutable/system/dysnomia.target ]
- then
- ( echo "[Unit]"
- echo "Description=Services that are activated and deactivated by Dysnomia"
- echo "After=final.target"
- ) > /etc/systemd-mutable/system/dysnomia.target
- fi
- '';
+ restartIfChanged = false;
- exec = "disnix-service";
+ path = [ pkgs.nix pkgs.disnix dysnomia "/run/current-system/sw" ];
+
+ environment = {
+ HOME = "/root";
};
+
+ preStart = ''
+ mkdir -p /etc/systemd-mutable/system
+ if [ ! -f /etc/systemd-mutable/system/dysnomia.target ]
+ then
+ ( echo "[Unit]"
+ echo "Description=Services that are activated and deactivated by Dysnomia"
+ echo "After=final.target"
+ ) > /etc/systemd-mutable/system/dysnomia.target
+ fi
+ '';
+
+ script = "disnix-service";
+ };
} // optionalAttrs cfg.publishAvahi {
- disnixAvahi =
- { description = "Disnix Avahi publisher";
+ disnixAvahi = {
+ description = "Disnix Avahi publisher";
+ wants = [ "avahi-daemon.service" ];
+ wantedBy = [ "multi-user.target" ];
- startOn = "started avahi-daemon";
-
- exec =
- ''
- ${pkgs.avahi}/bin/avahi-publish-service disnix-${config.networking.hostName} _disnix._tcp 22 \
- "mem=$(grep 'MemTotal:' /proc/meminfo | sed -e 's/kB//' -e 's/MemTotal://' -e 's/ //g')" \
- ${concatMapStrings (infrastructureAttrName:
- let infrastructureAttrValue = getAttr infrastructureAttrName (cfg.infrastructure);
- in
- if isInt infrastructureAttrValue then
- ''${infrastructureAttrName}=${toString infrastructureAttrValue} \
- ''
- else
- ''${infrastructureAttrName}=\"${infrastructureAttrValue}\" \
- ''
- ) (attrNames (cfg.infrastructure))}
- '';
- };
+ script = ''
+ ${pkgs.avahi}/bin/avahi-publish-service disnix-${config.networking.hostName} _disnix._tcp 22 \
+ "mem=$(grep 'MemTotal:' /proc/meminfo | sed -e 's/kB//' -e 's/MemTotal://' -e 's/ //g')" \
+ ${concatMapStrings (infrastructureAttrName:
+ let infrastructureAttrValue = getAttr infrastructureAttrName (cfg.infrastructure);
+ in
+ if isInt infrastructureAttrValue then
+ ''${infrastructureAttrName}=${toString infrastructureAttrValue} \
+ ''
+ else
+ ''${infrastructureAttrName}=\"${infrastructureAttrValue}\" \
+ ''
+ ) (attrNames (cfg.infrastructure))}
+ '';
+ };
};
};
}
diff --git a/nixos/modules/services/misc/felix.nix b/nixos/modules/services/misc/felix.nix
index a01c7f08b91..08a8581711f 100644
--- a/nixos/modules/services/misc/felix.nix
+++ b/nixos/modules/services/misc/felix.nix
@@ -57,54 +57,51 @@ in
home = "/homeless-shelter";
};
- jobs.felix =
- { description = "Felix server";
+ systemd.services.felix = {
+ description = "Felix server";
+ wantedBy = [ "multi-user.target" ];
- preStart =
- ''
- # Initialise felix instance on first startup
- if [ ! -d /var/felix ]
- then
- # Symlink system files
+ preStart = ''
+ # Initialise felix instance on first startup
+ if [ ! -d /var/felix ]
+ then
+ # Symlink system files
- mkdir -p /var/felix
- chown ${cfg.user}:${cfg.group} /var/felix
+ mkdir -p /var/felix
+ chown ${cfg.user}:${cfg.group} /var/felix
- for i in ${pkgs.felix}/*
- do
- if [ "$i" != "${pkgs.felix}/bundle" ]
- then
- ln -sfn $i /var/felix/$(basename $i)
- fi
- done
+ for i in ${pkgs.felix}/*
+ do
+ if [ "$i" != "${pkgs.felix}/bundle" ]
+ then
+ ln -sfn $i /var/felix/$(basename $i)
+ fi
+ done
- # Symlink bundles
- mkdir -p /var/felix/bundle
- chown ${cfg.user}:${cfg.group} /var/felix/bundle
+ # Symlink bundles
+ mkdir -p /var/felix/bundle
+ chown ${cfg.user}:${cfg.group} /var/felix/bundle
- for i in ${pkgs.felix}/bundle/* ${toString cfg.bundles}
- do
- if [ -f $i ]
- then
- ln -sfn $i /var/felix/bundle/$(basename $i)
- elif [ -d $i ]
- then
- for j in $i/bundle/*
- do
- ln -sfn $j /var/felix/bundle/$(basename $j)
- done
- fi
- done
- fi
- '';
-
- script =
- ''
- cd /var/felix
- ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c '${pkgs.jre}/bin/java -jar bin/felix.jar'
- '';
- };
+ for i in ${pkgs.felix}/bundle/* ${toString cfg.bundles}
+ do
+ if [ -f $i ]
+ then
+ ln -sfn $i /var/felix/bundle/$(basename $i)
+ elif [ -d $i ]
+ then
+ for j in $i/bundle/*
+ do
+ ln -sfn $j /var/felix/bundle/$(basename $j)
+ done
+ fi
+ done
+ fi
+ '';
+ script = ''
+ cd /var/felix
+ ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c '${pkgs.jre}/bin/java -jar bin/felix.jar'
+ '';
+ };
};
-
}
diff --git a/nixos/modules/services/misc/folding-at-home.nix b/nixos/modules/services/misc/folding-at-home.nix
index 392d2d1f002..4f09cbfdd79 100644
--- a/nixos/modules/services/misc/folding-at-home.nix
+++ b/nixos/modules/services/misc/folding-at-home.nix
@@ -49,26 +49,20 @@ in {
home = stateDir;
};
- jobs.foldingAtHome =
- { name = "foldingathome";
-
- startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
-
- preStart =
- ''
- mkdir -m 0755 -p ${stateDir}
- chown ${fahUser} ${stateDir}
- cp -f ${pkgs.writeText "client.cfg" cfg.config} ${stateDir}/client.cfg
- '';
- exec = "${pkgs.su}/bin/su -s ${pkgs.stdenv.shell} ${fahUser} -c 'cd ${stateDir}; ${pkgs.foldingathome}/bin/fah6'";
- };
-
- services.foldingAtHome.config = ''
- [settings]
- username=${cfg.nickname}
+ systemd.services.foldingathome = {
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
+ preStart = ''
+ mkdir -m 0755 -p ${stateDir}
+ chown ${fahUser} ${stateDir}
+ cp -f ${pkgs.writeText "client.cfg" cfg.config} ${stateDir}/client.cfg
'';
+ script = "${pkgs.su}/bin/su -s ${pkgs.stdenv.shell} ${fahUser} -c 'cd ${stateDir}; ${pkgs.foldingathome}/bin/fah6'";
+ };
+ services.foldingAtHome.config = ''
+ [settings]
+ username=${cfg.nickname}
+ '';
};
-
}
diff --git a/nixos/modules/services/misc/svnserve.nix b/nixos/modules/services/misc/svnserve.nix
index 848905ca457..37dd133e137 100644
--- a/nixos/modules/services/misc/svnserve.nix
+++ b/nixos/modules/services/misc/svnserve.nix
@@ -34,13 +34,11 @@ in
###### implementation
config = mkIf cfg.enable {
- jobs.svnserve = {
- startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
-
+ systemd.services.svnserve = {
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
preStart = "mkdir -p ${cfg.svnBaseDir}";
-
- exec = "${pkgs.subversion}/bin/svnserve -r ${cfg.svnBaseDir} -d --foreground --pid-file=/var/run/svnserve.pid";
+ script = "${pkgs.subversion}/bin/svnserve -r ${cfg.svnBaseDir} -d --foreground --pid-file=/var/run/svnserve.pid";
};
};
}
diff --git a/nixos/modules/services/monitoring/monit.nix b/nixos/modules/services/monitoring/monit.nix
index 642fac3b3a0..704693969a3 100644
--- a/nixos/modules/services/monitoring/monit.nix
+++ b/nixos/modules/services/monitoring/monit.nix
@@ -19,10 +19,6 @@ in
default = "";
description = "monit.conf content";
};
- startOn = mkOption {
- default = "started network-interfaces";
- description = "What Monit supposes to be already present";
- };
};
};
@@ -39,14 +35,12 @@ in
}
];
- jobs.monit = {
+ systemd.services.monit = {
description = "Monit system watcher";
-
- startOn = config.services.monit.startOn;
-
- exec = "${pkgs.monit}/bin/monit -I -c /etc/monit.conf";
-
- respawn = true;
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
+ script = "${pkgs.monit}/bin/monit -I -c /etc/monit.conf";
+ serviceConfig.Restart = "always";
};
};
}
diff --git a/nixos/modules/services/monitoring/ups.nix b/nixos/modules/services/monitoring/ups.nix
index eb478f7da65..5f80d547dbc 100644
--- a/nixos/modules/services/monitoring/ups.nix
+++ b/nixos/modules/services/monitoring/ups.nix
@@ -180,31 +180,36 @@ in
environment.systemPackages = [ pkgs.nut ];
- jobs.upsmon = {
+ systemd.services.upsmon = {
description = "Uninterruptible Power Supplies (Monitor)";
- startOn = "ip-up";
- daemonType = "fork";
- exec = ''${pkgs.nut}/sbin/upsmon'';
+ wantedBy = [ "ip-up.target" ];
+ serviceConfig.Type = "forking";
+ script = "${pkgs.nut}/sbin/upsmon";
environment.NUT_CONFPATH = "/etc/nut/";
environment.NUT_STATEPATH = "/var/lib/nut/";
};
- jobs.upsd = {
+ systemd.services.upsd = {
description = "Uninterruptible Power Supplies (Daemon)";
- startOn = "started network-interfaces and started upsmon";
- daemonType = "fork";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network-interfaces.target" "upsmon.service" ];
+ serviceConfig.Type = "forking";
# TODO: replace 'root' by another username.
- exec = ''${pkgs.nut}/sbin/upsd -u root'';
+ script = "${pkgs.nut}/sbin/upsd -u root";
environment.NUT_CONFPATH = "/etc/nut/";
environment.NUT_STATEPATH = "/var/lib/nut/";
};
- jobs.upsdrv = {
+ systemd.services.upsdrv = {
description = "Uninterruptible Power Supplies (Register all UPS)";
- startOn = "started upsd";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "upsd.service" ];
# TODO: replace 'root' by another username.
- exec = ''${pkgs.nut}/bin/upsdrvctl -u root start'';
- task = true;
+ script = ''${pkgs.nut}/bin/upsdrvctl -u root start'';
+ serviceConfig = {
+ Type = "oneshot";
+ RemainAfterExit = true;
+ };
environment.NUT_CONFPATH = "/etc/nut/";
environment.NUT_STATEPATH = "/var/lib/nut/";
};
diff --git a/nixos/modules/services/network-filesystems/drbd.nix b/nixos/modules/services/network-filesystems/drbd.nix
index 1bd67206444..9896a93b189 100644
--- a/nixos/modules/services/network-filesystems/drbd.nix
+++ b/nixos/modules/services/network-filesystems/drbd.nix
@@ -31,13 +31,13 @@ let cfg = config.services.drbd; in
};
-
+
###### implementation
config = mkIf cfg.enable {
-
+
environment.systemPackages = [ pkgs.drbd ];
-
+
services.udev.packages = [ pkgs.drbd ];
boot.kernelModules = [ "drbd" ];
@@ -52,26 +52,16 @@ let cfg = config.services.drbd; in
target = "drbd.conf";
};
- jobs.drbd_up =
- { name = "drbd-up";
- startOn = "stopped udevtrigger or ip-up";
- task = true;
- script =
- ''
- ${pkgs.drbd}/sbin/drbdadm up all
- '';
- };
-
- jobs.drbd_down =
- { name = "drbd-down";
- startOn = "starting shutdown";
- task = true;
- script =
- ''
- ${pkgs.drbd}/sbin/drbdadm down all
- '';
- };
-
+ systemd.services.drbd = {
+ after = [ "systemd-udev.settle.service" ];
+ wants = [ "systemd-udev.settle.service" ];
+ wantedBy = [ "ip-up.target" ];
+ script = ''
+ ${pkgs.drbd}/sbin/drbdadm up all
+ '';
+ serviceConfig.ExecStop = ''
+ ${pkgs.drbd}/sbin/drbdadm down all
+ '';
+ };
};
-
}
diff --git a/nixos/modules/services/network-filesystems/openafs-client/default.nix b/nixos/modules/services/network-filesystems/openafs-client/default.nix
index 0297da9e865..7a44fc1ea5e 100644
--- a/nixos/modules/services/network-filesystems/openafs-client/default.nix
+++ b/nixos/modules/services/network-filesystems/openafs-client/default.nix
@@ -72,34 +72,28 @@ in
}
];
- jobs.openafsClient =
- { name = "afsd";
+ systemd.services.afsd = {
+ description = "AFS client";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network-interfaces.target" ];
- description = "AFS client";
-
- startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
-
- preStart = ''
- mkdir -p -m 0755 /afs
- mkdir -m 0700 -p ${cfg.cacheDirectory}
- ${pkgs.module_init_tools}/sbin/insmod ${openafsPkgs}/lib/openafs/libafs-*.ko || true
- ${openafsPkgs}/sbin/afsd -confdir ${afsConfig} -cachedir ${cfg.cacheDirectory} ${if cfg.sparse then "-dynroot-sparse" else "-dynroot"} -fakestat -afsdb
- ${openafsPkgs}/bin/fs setcrypt ${if cfg.crypt then "on" else "off"}
- '';
-
- # Doing this in preStop, because after these commands AFS is basically
- # stopped, so systemd has nothing to do, just noticing it. If done in
- # postStop, then we get a hang + kernel oops, because AFS can't be
- # stopped simply by sending signals to processes.
- preStop = ''
- ${pkgs.utillinux}/bin/umount /afs
- ${openafsPkgs}/sbin/afsd -shutdown
- ${pkgs.module_init_tools}/sbin/rmmod libafs
- '';
-
- };
+ preStart = ''
+ mkdir -p -m 0755 /afs
+ mkdir -m 0700 -p ${cfg.cacheDirectory}
+ ${pkgs.module_init_tools}/sbin/insmod ${openafsPkgs}/lib/openafs/libafs-*.ko || true
+ ${openafsPkgs}/sbin/afsd -confdir ${afsConfig} -cachedir ${cfg.cacheDirectory} ${if cfg.sparse then "-dynroot-sparse" else "-dynroot"} -fakestat -afsdb
+ ${openafsPkgs}/bin/fs setcrypt ${if cfg.crypt then "on" else "off"}
+ '';
+ # Doing this in preStop, because after these commands AFS is basically
+ # stopped, so systemd has nothing to do, just noticing it. If done in
+ # postStop, then we get a hang + kernel oops, because AFS can't be
+ # stopped simply by sending signals to processes.
+ preStop = ''
+ ${pkgs.utillinux}/bin/umount /afs
+ ${openafsPkgs}/sbin/afsd -shutdown
+ ${pkgs.module_init_tools}/sbin/rmmod libafs
+ '';
+ };
};
-
}
diff --git a/nixos/modules/services/networking/amuled.nix b/nixos/modules/services/networking/amuled.nix
index 516238fdddf..bc488d0e910 100644
--- a/nixos/modules/services/networking/amuled.nix
+++ b/nixos/modules/services/networking/amuled.nix
@@ -57,22 +57,19 @@ in
gid = config.ids.gids.amule;
} ];
- jobs.amuled =
- { description = "AMule daemon";
+ systemd.services.amuled = {
+ description = "AMule daemon";
+ wantedBy = [ "ip-up.target" ];
- startOn = "ip-up";
-
- preStart = ''
- mkdir -p ${cfg.dataDir}
- chown ${user} ${cfg.dataDir}
- '';
-
- exec = ''
- ${pkgs.su}/bin/su -s ${pkgs.stdenv.shell} ${user} \
- -c 'HOME="${cfg.dataDir}" ${pkgs.amuleDaemon}/bin/amuled'
- '';
- };
+ preStart = ''
+ mkdir -p ${cfg.dataDir}
+ chown ${user} ${cfg.dataDir}
+ '';
+ script = ''
+ ${pkgs.su}/bin/su -s ${pkgs.stdenv.shell} ${user} \
+ -c 'HOME="${cfg.dataDir}" ${pkgs.amuleDaemon}/bin/amuled'
+ '';
+ };
};
-
}
diff --git a/nixos/modules/services/networking/bind.nix b/nixos/modules/services/networking/bind.nix
index 34e7470dfc6..dc11524ffeb 100644
--- a/nixos/modules/services/networking/bind.nix
+++ b/nixos/modules/services/networking/bind.nix
@@ -142,20 +142,17 @@ in
description = "BIND daemon user";
};
- jobs.bind =
- { description = "BIND name server job";
+ systemd.services.bind = {
+ description = "BIND name server job";
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
- startOn = "started network-interfaces";
-
- preStart =
- ''
- ${pkgs.coreutils}/bin/mkdir -p /var/run/named
- chown ${bindUser} /var/run/named
- '';
-
- exec = "${pkgs.bind}/sbin/named -u ${bindUser} ${optionalString cfg.ipv4Only "-4"} -c ${cfg.configFile} -f";
- };
+ preStart = ''
+ ${pkgs.coreutils}/bin/mkdir -p /var/run/named
+ chown ${bindUser} /var/run/named
+ '';
+ script = "${pkgs.bind}/sbin/named -u ${bindUser} ${optionalString cfg.ipv4Only "-4"} -c ${cfg.configFile} -f";
+ };
};
-
}
diff --git a/nixos/modules/services/networking/ejabberd.nix b/nixos/modules/services/networking/ejabberd.nix
index 28b8e234a5c..97360396c79 100644
--- a/nixos/modules/services/networking/ejabberd.nix
+++ b/nixos/modules/services/networking/ejabberd.nix
@@ -56,81 +56,73 @@ in
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.ejabberd ];
- jobs.ejabberd =
- { description = "EJabberd server";
+ systemd.services.ejabberd = {
+ description = "EJabberd server";
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
+ path = with pkgs; [ ejabberd coreutils bash gnused ];
- startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
+ preStart = ''
+ # Initialise state data
+ mkdir -p ${cfg.logsDir}
- environment = {
- PATH = "$PATH:${pkgs.ejabberd}/sbin:${pkgs.ejabberd}/bin:${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.gnused}/bin";
- };
+ if ! test -d ${cfg.spoolDir}
+ then
+ initialize=1
+ cp -av ${pkgs.ejabberd}/var/lib/ejabberd /var/lib
+ fi
- preStart =
+ if ! test -d ${cfg.confDir}
+ then
+ mkdir -p ${cfg.confDir}
+ cp ${pkgs.ejabberd}/etc/ejabberd/* ${cfg.confDir}
+ sed -e 's|{hosts, \["localhost"\]}.|{hosts, \[${cfg.virtualHosts}\]}.|' ${pkgs.ejabberd}/etc/ejabberd/ejabberd.cfg > ${cfg.confDir}/ejabberd.cfg
+ fi
+
+ ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} start
+
+ ${if cfg.loadDumps == [] then "" else
''
- PATH="$PATH:${pkgs.ejabberd}/sbin:${pkgs.ejabberd}/bin:${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.gnused}/bin";
-
- # Initialise state data
- mkdir -p ${cfg.logsDir}
-
- if ! test -d ${cfg.spoolDir}
+ if [ "$initialize" = "1" ]
then
- initialize=1
- cp -av ${pkgs.ejabberd}/var/lib/ejabberd /var/lib
+ # Wait until the ejabberd server is available for use
+ count=0
+ while ! ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} status
+ do
+ if [ $count -eq 30 ]
+ then
+ echo "Tried 30 times, giving up..."
+ exit 1
+ fi
+
+ echo "Ejabberd daemon not yet started. Waiting for 1 second..."
+ count=$((count++))
+ sleep 1
+ done
+
+ ${concatMapStrings (dump:
+ ''
+ echo "Importing dump: ${dump}"
+
+ if [ -f ${dump} ]
+ then
+ ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} load ${dump}
+ elif [ -d ${dump} ]
+ then
+ for i in ${dump}/ejabberd-dump/*
+ do
+ ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} load $i
+ done
+ fi
+ '') cfg.loadDumps}
fi
+ ''}
+ '';
- if ! test -d ${cfg.confDir}
- then
- mkdir -p ${cfg.confDir}
- cp ${pkgs.ejabberd}/etc/ejabberd/* ${cfg.confDir}
- sed -e 's|{hosts, \["localhost"\]}.|{hosts, \[${cfg.virtualHosts}\]}.|' ${pkgs.ejabberd}/etc/ejabberd/ejabberd.cfg > ${cfg.confDir}/ejabberd.cfg
- fi
-
- ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} start
-
- ${if cfg.loadDumps == [] then "" else
- ''
- if [ "$initialize" = "1" ]
- then
- # Wait until the ejabberd server is available for use
- count=0
- while ! ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} status
- do
- if [ $count -eq 30 ]
- then
- echo "Tried 30 times, giving up..."
- exit 1
- fi
-
- echo "Ejabberd daemon not yet started. Waiting for 1 second..."
- count=$((count++))
- sleep 1
- done
-
- ${concatMapStrings (dump:
- ''
- echo "Importing dump: ${dump}"
-
- if [ -f ${dump} ]
- then
- ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} load ${dump}
- elif [ -d ${dump} ]
- then
- for i in ${dump}/ejabberd-dump/*
- do
- ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} load $i
- done
- fi
- '') cfg.loadDumps}
- fi
- ''}
- '';
-
- postStop =
- ''
- ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} stop
- '';
- };
+ postStop = ''
+ ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} stop
+ '';
+ };
security.pam.services.ejabberd = {};
diff --git a/nixos/modules/services/networking/git-daemon.nix b/nixos/modules/services/networking/git-daemon.nix
index 566936a7d0f..215ffe48a56 100644
--- a/nixos/modules/services/networking/git-daemon.nix
+++ b/nixos/modules/services/networking/git-daemon.nix
@@ -16,7 +16,7 @@ in
type = types.bool;
default = false;
description = ''
- Enable Git daemon, which allows public hosting of git repositories
+ Enable Git daemon, which allows public hosting of git repositories
without any access controls. This is mostly intended for read-only access.
You can allow write access by setting daemon.receivepack configuration
@@ -115,10 +115,9 @@ in
gid = config.ids.gids.git;
};
- jobs.gitDaemon = {
- name = "git-daemon";
- startOn = "ip-up";
- exec = "${pkgs.git}/bin/git daemon --reuseaddr "
+ systemd.services."git-daemon" = {
+ wantedBy = [ "ip-up.target" ];
+ script = "${pkgs.git}/bin/git daemon --reuseaddr "
+ (optionalString (cfg.basePath != "") "--base-path=${cfg.basePath} ")
+ (optionalString (cfg.listenAddress != "") "--listen=${cfg.listenAddress} ")
+ "--port=${toString cfg.port} --user=${cfg.user} --group=${cfg.group} ${cfg.options} "
diff --git a/nixos/modules/services/networking/gvpe.nix b/nixos/modules/services/networking/gvpe.nix
index c633ffedef4..27b64b5bb95 100644
--- a/nixos/modules/services/networking/gvpe.nix
+++ b/nixos/modules/services/networking/gvpe.nix
@@ -37,13 +37,6 @@ let
'';
executable = true;
});
-
- exec = "${pkgs.gvpe}/sbin/gvpe -c /var/gvpe -D ${cfg.nodename} "
- + " ${cfg.nodename}.pid-file=/var/gvpe/gvpe.pid"
- + " ${cfg.nodename}.if-up=if-up"
- + " &> /var/log/gvpe";
-
- inherit (cfg) startOn stopOn;
in
{
@@ -55,18 +48,6 @@ in
Whether to run gvpe
'';
};
- startOn = mkOption {
- default = "started network-interfaces";
- description = ''
- Condition to start GVPE
- '';
- };
- stopOn = mkOption {
- default = "stopping network-interfaces";
- description = ''
- Condition to stop GVPE
- '';
- };
nodename = mkOption {
default = null;
description =''
@@ -122,10 +103,10 @@ in
};
};
config = mkIf cfg.enable {
- jobs.gvpe = {
+ systemd.services.gvpe = {
description = "GNU Virtual Private Ethernet node";
-
- inherit startOn stopOn;
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
preStart = ''
mkdir -p /var/gvpe
@@ -136,9 +117,12 @@ in
cp ${ifupScript} /var/gvpe/if-up
'';
- inherit exec;
+ script = "${pkgs.gvpe}/sbin/gvpe -c /var/gvpe -D ${cfg.nodename} "
+ + " ${cfg.nodename}.pid-file=/var/gvpe/gvpe.pid"
+ + " ${cfg.nodename}.if-up=if-up"
+ + " &> /var/log/gvpe";
- respawn = true;
+ serviceConfig.Restart = "always";
};
};
}
diff --git a/nixos/modules/services/networking/ifplugd.nix b/nixos/modules/services/networking/ifplugd.nix
index 20bfca8f872..00b94fe2284 100644
--- a/nixos/modules/services/networking/ifplugd.nix
+++ b/nixos/modules/services/networking/ifplugd.nix
@@ -66,23 +66,17 @@ in
###### implementation
config = mkIf cfg.enable {
-
- jobs.ifplugd =
- { description = "Network interface connectivity monitor";
-
- startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
-
- exec =
- ''
- ${ifplugd}/sbin/ifplugd --no-daemon --no-startup --no-shutdown \
- ${if config.networking.interfaceMonitor.beep then "" else "--no-beep"} \
- --run ${plugScript}
- '';
- };
+ systemd.services.ifplugd = {
+ description = "Network interface connectivity monitor";
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
+ script = ''
+ ${ifplugd}/sbin/ifplugd --no-daemon --no-startup --no-shutdown \
+ ${if config.networking.interfaceMonitor.beep then "" else "--no-beep"} \
+ --run ${plugScript}
+ '';
+ };
environment.systemPackages = [ ifplugd ];
-
};
-
}
diff --git a/nixos/modules/services/networking/ircd-hybrid/default.nix b/nixos/modules/services/networking/ircd-hybrid/default.nix
index 2c397f94d23..ede57c5046d 100644
--- a/nixos/modules/services/networking/ircd-hybrid/default.nix
+++ b/nixos/modules/services/networking/ircd-hybrid/default.nix
@@ -121,17 +121,11 @@ in
users.extraGroups.ircd.gid = config.ids.gids.ircd;
- jobs.ircd_hybrid =
- { name = "ircd-hybrid";
-
- description = "IRCD Hybrid server";
-
- startOn = "started networking";
- stopOn = "stopping networking";
-
- exec = "${ircdService}/bin/control start";
- };
-
+ systemd.services."ircd-hybrid" = {
+ description = "IRCD Hybrid server";
+ after = [ "started networking" ];
+ wantedBy = [ "multi-user.target" ];
+ script = "${ircdService}/bin/control start";
+ };
};
-
}
diff --git a/nixos/modules/services/networking/oidentd.nix b/nixos/modules/services/networking/oidentd.nix
index 738ab8313a5..651bb8e967c 100644
--- a/nixos/modules/services/networking/oidentd.nix
+++ b/nixos/modules/services/networking/oidentd.nix
@@ -20,18 +20,17 @@ with lib;
};
-
+
###### implementation
config = mkIf config.services.oidentd.enable {
-
- jobs.oidentd =
- { startOn = "started network-interfaces";
- daemonType = "fork";
- exec = "${pkgs.oidentd}/sbin/oidentd -u oidentd -g nogroup" +
- optionalString config.networking.enableIPv6 " -a ::"
- ;
- };
+ systemd.services.oidentd = {
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig.Type = "forking";
+ script = "${pkgs.oidentd}/sbin/oidentd -u oidentd -g nogroup" +
+ optionalString config.networking.enableIPv6 " -a ::";
+ };
users.extraUsers.oidentd = {
description = "Ident Protocol daemon user";
diff --git a/nixos/modules/services/networking/openfire.nix b/nixos/modules/services/networking/openfire.nix
index c3b4ba90b4e..ed91b45ec94 100644
--- a/nixos/modules/services/networking/openfire.nix
+++ b/nixos/modules/services/networking/openfire.nix
@@ -2,17 +2,7 @@
with lib;
-let
-
- inherit (pkgs) jre openfire coreutils which gnugrep gawk gnused;
-
- extraStartDependency =
- if config.services.openfire.usePostgreSQL then "and started postgresql" else "";
-
-in
-
{
-
###### interface
options = {
@@ -47,26 +37,24 @@ in
message = "OpenFire assertion failed.";
};
- jobs.openfire =
- { description = "OpenFire XMPP server";
-
- startOn = "started networking ${extraStartDependency}";
-
- script =
- ''
- export PATH=${jre}/bin:${openfire}/bin:${coreutils}/bin:${which}/bin:${gnugrep}/bin:${gawk}/bin:${gnused}/bin
- export HOME=/tmp
- mkdir /var/log/openfire || true
- mkdir /etc/openfire || true
- for i in ${openfire}/conf.inst/*; do
- if ! test -f /etc/openfire/$(basename $i); then
- cp $i /etc/openfire/
- fi
- done
- openfire start
- ''; # */
- };
-
+ systemd.services.openfire = {
+ description = "OpenFire XMPP server";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "networking.target" ] ++
+ optional config.services.openfire.usePostgreSQL "postgresql.service";
+ path = with pkgs; [ jre openfire coreutils which gnugrep gawk gnused ];
+ script = ''
+ export HOME=/tmp
+ mkdir /var/log/openfire || true
+ mkdir /etc/openfire || true
+ for i in ${openfire}/conf.inst/*; do
+ if ! test -f /etc/openfire/$(basename $i); then
+ cp $i /etc/openfire/
+ fi
+ done
+ openfire start
+ ''; # */
+ };
};
}
diff --git a/nixos/modules/services/networking/prayer.nix b/nixos/modules/services/networking/prayer.nix
index ad0fb0af01c..cb8fe6bf4fe 100644
--- a/nixos/modules/services/networking/prayer.nix
+++ b/nixos/modules/services/networking/prayer.nix
@@ -83,21 +83,14 @@ in
gid = config.ids.gids.prayer;
};
- jobs.prayer =
- { name = "prayer";
-
- startOn = "startup";
-
- preStart =
- ''
- mkdir -m 0755 -p ${stateDir}
- chown ${prayerUser}.${prayerGroup} ${stateDir}
- '';
-
- daemonType = "daemon";
-
- exec = "${prayer}/sbin/prayer --config-file=${prayerCfg}";
- };
+ systemd.services.prayer = {
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig.Type = "forking";
+ preStart = ''
+ mkdir -m 0755 -p ${stateDir}
+ chown ${prayerUser}.${prayerGroup} ${stateDir}
+ '';
+ script = "${prayer}/sbin/prayer --config-file=${prayerCfg}";
+ };
};
-
}
diff --git a/nixos/modules/services/networking/radicale.nix b/nixos/modules/services/networking/radicale.nix
index fc9afc70aca..4b77ef22ac1 100644
--- a/nixos/modules/services/networking/radicale.nix
+++ b/nixos/modules/services/networking/radicale.nix
@@ -33,16 +33,14 @@ in
};
config = mkIf cfg.enable {
-
environment.systemPackages = [ pkgs.pythonPackages.radicale ];
- jobs.radicale = {
+ systemd.services.radicale = {
description = "A Simple Calendar and Contact Server";
- startOn = "started network-interfaces";
- exec = "${pkgs.pythonPackages.radicale}/bin/radicale -C ${confFile} -d";
- daemonType = "fork";
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
+ script = "${pkgs.pythonPackages.radicale}/bin/radicale -C ${confFile} -d";
+ serviceConfig.Type = "forking";
};
-
};
-
}
diff --git a/nixos/modules/services/networking/softether.nix b/nixos/modules/services/networking/softether.nix
index 49538af7d35..a421b32f02c 100644
--- a/nixos/modules/services/networking/softether.nix
+++ b/nixos/modules/services/networking/softether.nix
@@ -61,9 +61,10 @@ in
dataDir = cfg.dataDir;
}))
];
- jobs.softether = {
+ systemd.services.softether = {
description = "SoftEther VPN services initial job";
- startOn = "started network-interfaces";
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
preStart = ''
for d in vpnserver vpnbridge vpnclient vpncmd; do
if ! test -e ${cfg.dataDir}/$d; then
@@ -74,7 +75,6 @@ in
rm -rf ${cfg.dataDir}/vpncmd/vpncmd
ln -s ${pkg}${cfg.dataDir}/vpncmd/vpncmd ${cfg.dataDir}/vpncmd/vpncmd
'';
- exec = "true";
};
}
diff --git a/nixos/modules/services/networking/ssh/lshd.nix b/nixos/modules/services/networking/ssh/lshd.nix
index 81e523fd2a5..661a6a52463 100644
--- a/nixos/modules/services/networking/ssh/lshd.nix
+++ b/nixos/modules/services/networking/ssh/lshd.nix
@@ -117,62 +117,60 @@ in
services.lshd.subsystems = [ ["sftp" "${pkgs.lsh}/sbin/sftp-server"] ];
- jobs.lshd =
- { description = "GNU lshd SSH2 daemon";
+ systemd.services.lshd = {
+ description = "GNU lshd SSH2 daemon";
- startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
+ after = [ "network-interfaces.target" ];
- environment =
- { LD_LIBRARY_PATH = config.system.nssModules.path; };
+ wantedBy = [ "multi-user.target" ];
- preStart =
- ''
- test -d /etc/lsh || mkdir -m 0755 -p /etc/lsh
- test -d /var/spool/lsh || mkdir -m 0755 -p /var/spool/lsh
-
- if ! test -f /var/spool/lsh/yarrow-seed-file
- then
- # XXX: It would be nice to provide feedback to the
- # user when this fails, so that they can retry it
- # manually.
- ${lsh}/bin/lsh-make-seed --sloppy \
- -o /var/spool/lsh/yarrow-seed-file
- fi
-
- if ! test -f "${cfg.hostKey}"
- then
- ${lsh}/bin/lsh-keygen --server | \
- ${lsh}/bin/lsh-writekey --server -o "${cfg.hostKey}"
- fi
- '';
-
- exec = with cfg;
- ''
- ${lsh}/sbin/lshd --daemonic \
- --password-helper="${lsh}/sbin/lsh-pam-checkpw" \
- -p ${toString portNumber} \
- ${if interfaces == [] then ""
- else (concatStrings (map (i: "--interface=\"${i}\"")
- interfaces))} \
- -h "${hostKey}" \
- ${if !syslog then "--no-syslog" else ""} \
- ${if passwordAuthentication then "--password" else "--no-password" } \
- ${if publicKeyAuthentication then "--publickey" else "--no-publickey" } \
- ${if rootLogin then "--root-login" else "--no-root-login" } \
- ${if loginShell != null then "--login-shell=\"${loginShell}\"" else "" } \
- ${if srpKeyExchange then "--srp-keyexchange" else "--no-srp-keyexchange" } \
- ${if !tcpForwarding then "--no-tcpip-forward" else "--tcpip-forward"} \
- ${if x11Forwarding then "--x11-forward" else "--no-x11-forward" } \
- --subsystems=${concatStringsSep ","
- (map (pair: (head pair) + "=" +
- (head (tail pair)))
- subsystems)}
- '';
+ environment = {
+ LD_LIBRARY_PATH = config.system.nssModules.path;
};
+ preStart = ''
+ test -d /etc/lsh || mkdir -m 0755 -p /etc/lsh
+ test -d /var/spool/lsh || mkdir -m 0755 -p /var/spool/lsh
+
+ if ! test -f /var/spool/lsh/yarrow-seed-file
+ then
+ # XXX: It would be nice to provide feedback to the
+ # user when this fails, so that they can retry it
+ # manually.
+ ${lsh}/bin/lsh-make-seed --sloppy \
+ -o /var/spool/lsh/yarrow-seed-file
+ fi
+
+ if ! test -f "${cfg.hostKey}"
+ then
+ ${lsh}/bin/lsh-keygen --server | \
+ ${lsh}/bin/lsh-writekey --server -o "${cfg.hostKey}"
+ fi
+ '';
+
+ script = with cfg; ''
+ ${lsh}/sbin/lshd --daemonic \
+ --password-helper="${lsh}/sbin/lsh-pam-checkpw" \
+ -p ${toString portNumber} \
+ ${if interfaces == [] then ""
+ else (concatStrings (map (i: "--interface=\"${i}\"")
+ interfaces))} \
+ -h "${hostKey}" \
+ ${if !syslog then "--no-syslog" else ""} \
+ ${if passwordAuthentication then "--password" else "--no-password" } \
+ ${if publicKeyAuthentication then "--publickey" else "--no-publickey" } \
+ ${if rootLogin then "--root-login" else "--no-root-login" } \
+ ${if loginShell != null then "--login-shell=\"${loginShell}\"" else "" } \
+ ${if srpKeyExchange then "--srp-keyexchange" else "--no-srp-keyexchange" } \
+ ${if !tcpForwarding then "--no-tcpip-forward" else "--tcpip-forward"} \
+ ${if x11Forwarding then "--x11-forward" else "--no-x11-forward" } \
+ --subsystems=${concatStringsSep ","
+ (map (pair: (head pair) + "=" +
+ (head (tail pair)))
+ subsystems)}
+ '';
+ };
+
security.pam.services.lshd = {};
-
};
-
}
diff --git a/nixos/modules/services/networking/tcpcrypt.nix b/nixos/modules/services/networking/tcpcrypt.nix
index fbd581cc4b4..267653abce0 100644
--- a/nixos/modules/services/networking/tcpcrypt.nix
+++ b/nixos/modules/services/networking/tcpcrypt.nix
@@ -35,11 +35,11 @@ in
description = "tcpcrypt daemon user";
};
- jobs.tcpcrypt = {
+ systemd.services.tcpcrypt = {
description = "tcpcrypt";
- wantedBy = ["multi-user.target"];
- after = ["network-interfaces.target"];
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network-interfaces.target" ];
path = [ pkgs.iptables pkgs.tcpcrypt pkgs.procps ];
@@ -58,7 +58,7 @@ in
iptables -t mangle -I POSTROUTING -j nixos-tcpcrypt
'';
- exec = "tcpcryptd -x 0x10";
+ script = "tcpcryptd -x 0x10";
postStop = ''
if [ -f /run/pre-tcpcrypt-ecn-state ]; then
diff --git a/nixos/modules/services/networking/wicd.nix b/nixos/modules/services/networking/wicd.nix
index 18258084fc2..9e5a437b485 100644
--- a/nixos/modules/services/networking/wicd.nix
+++ b/nixos/modules/services/networking/wicd.nix
@@ -25,17 +25,13 @@ with lib;
environment.systemPackages = [pkgs.wicd];
- jobs.wicd =
- { startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
-
- script =
- "${pkgs.wicd}/sbin/wicd -f";
- };
+ systemd.services.wicd = {
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
+ script = "${pkgs.wicd}/sbin/wicd -f";
+ };
services.dbus.enable = true;
services.dbus.packages = [pkgs.wicd];
-
};
-
}
diff --git a/nixos/modules/services/networking/xinetd.nix b/nixos/modules/services/networking/xinetd.nix
index 14ee52ae52e..08680b51780 100644
--- a/nixos/modules/services/networking/xinetd.nix
+++ b/nixos/modules/services/networking/xinetd.nix
@@ -6,8 +6,6 @@ let
cfg = config.services.xinetd;
- inherit (pkgs) xinetd;
-
configFile = pkgs.writeText "xinetd.conf"
''
defaults
@@ -141,18 +139,12 @@ in
###### implementation
config = mkIf cfg.enable {
-
- jobs.xinetd =
- { description = "xinetd server";
-
- startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
-
- path = [ xinetd ];
-
- exec = "xinetd -syslog daemon -dontfork -stayalive -f ${configFile}";
- };
-
+ systemd.services.xinetd = {
+ description = "xinetd server";
+ after = [ "network-interfaces.target" ];
+ wantedBy = [ "multi-user.target" ];
+ path = [ pkgs.xinetd ];
+ script = "xinetd -syslog daemon -dontfork -stayalive -f ${configFile}";
+ };
};
-
}
diff --git a/nixos/modules/services/scheduling/atd.nix b/nixos/modules/services/scheduling/atd.nix
index c6f128ec402..2070b2ffa01 100644
--- a/nixos/modules/services/scheduling/atd.nix
+++ b/nixos/modules/services/scheduling/atd.nix
@@ -66,49 +66,47 @@ in
gid = config.ids.gids.atd;
};
- jobs.atd =
- { description = "Job Execution Daemon (atd)";
+ systemd.services.atd = {
+ description = "Job Execution Daemon (atd)";
+ after = [ "systemd-udev-settle.service" ];
+ wants = [ "systemd-udev-settle.service" ];
+ wantedBy = [ "multi-user.target" ];
- startOn = "stopped udevtrigger";
+ path = [ at ];
- path = [ at ];
+ preStart = ''
+ # Snippets taken and adapted from the original `install' rule of
+ # the makefile.
- preStart =
- ''
- # Snippets taken and adapted from the original `install' rule of
- # the makefile.
+ # We assume these values are those actually used in Nixpkgs for
+ # `at'.
+ spooldir=/var/spool/atspool
+ jobdir=/var/spool/atjobs
+ etcdir=/etc/at
- # We assume these values are those actually used in Nixpkgs for
- # `at'.
- spooldir=/var/spool/atspool
- jobdir=/var/spool/atjobs
- etcdir=/etc/at
+ for dir in "$spooldir" "$jobdir" "$etcdir"; do
+ if [ ! -d "$dir" ]; then
+ mkdir -p "$dir"
+ chown atd:atd "$dir"
+ fi
+ done
+ chmod 1770 "$spooldir" "$jobdir"
+ ${if cfg.allowEveryone then ''chmod a+rwxt "$spooldir" "$jobdir" '' else ""}
+ if [ ! -f "$etcdir"/at.deny ]; then
+ touch "$etcdir"/at.deny
+ chown root:atd "$etcdir"/at.deny
+ chmod 640 "$etcdir"/at.deny
+ fi
+ if [ ! -f "$jobdir"/.SEQ ]; then
+ touch "$jobdir"/.SEQ
+ chown atd:atd "$jobdir"/.SEQ
+ chmod 600 "$jobdir"/.SEQ
+ fi
+ '';
- for dir in "$spooldir" "$jobdir" "$etcdir"; do
- if [ ! -d "$dir" ]; then
- mkdir -p "$dir"
- chown atd:atd "$dir"
- fi
- done
- chmod 1770 "$spooldir" "$jobdir"
- ${if cfg.allowEveryone then ''chmod a+rwxt "$spooldir" "$jobdir" '' else ""}
- if [ ! -f "$etcdir"/at.deny ]; then
- touch "$etcdir"/at.deny
- chown root:atd "$etcdir"/at.deny
- chmod 640 "$etcdir"/at.deny
- fi
- if [ ! -f "$jobdir"/.SEQ ]; then
- touch "$jobdir"/.SEQ
- chown atd:atd "$jobdir"/.SEQ
- chmod 600 "$jobdir"/.SEQ
- fi
- '';
-
- exec = "atd";
-
- daemonType = "fork";
- };
+ script = "atd";
+ serviceConfig.Type = "forking";
+ };
};
-
}
diff --git a/nixos/modules/services/scheduling/fcron.nix b/nixos/modules/services/scheduling/fcron.nix
index ade8c19329c..7b4665a8204 100644
--- a/nixos/modules/services/scheduling/fcron.nix
+++ b/nixos/modules/services/scheduling/fcron.nix
@@ -108,29 +108,25 @@ in
security.setuidPrograms = [ "fcrontab" ];
- jobs.fcron =
- { description = "fcron daemon";
+ systemd.services.fcron = {
+ description = "fcron daemon";
+ after = [ "local-fs.target" ];
+ wantedBy = [ "multi-user.target" ];
- startOn = "startup";
-
- after = [ "local-fs.target" ];
-
- environment =
- { PATH = "/run/current-system/sw/bin";
- };
-
- preStart =
- ''
- ${pkgs.coreutils}/bin/mkdir -m 0700 -p /var/spool/fcron
- # load system crontab file
- ${pkgs.fcron}/bin/fcrontab -u systab ${pkgs.writeText "systab" cfg.systab}
- '';
-
- daemonType = "fork";
-
- exec = "${pkgs.fcron}/sbin/fcron -m ${toString cfg.maxSerialJobs} ${queuelen}";
+ # FIXME use specific path
+ environment = {
+ PATH = "/run/current-system/sw/bin";
};
- };
+ preStart = ''
+ ${pkgs.coreutils}/bin/mkdir -m 0700 -p /var/spool/fcron
+ # load system crontab file
+ ${pkgs.fcron}/bin/fcrontab -u systab ${pkgs.writeText "systab" cfg.systab}
+ '';
+ serviceConfig.Type = "forking";
+
+ script = "${pkgs.fcron}/sbin/fcron -m ${toString cfg.maxSerialJobs} ${queuelen}";
+ };
+ };
}
diff --git a/nixos/modules/services/security/fprot.nix b/nixos/modules/services/security/fprot.nix
index 7270a9f9814..a12aa01503e 100644
--- a/nixos/modules/services/security/fprot.nix
+++ b/nixos/modules/services/security/fprot.nix
@@ -67,24 +67,22 @@ in {
services.cron.systemCronJobs = [ "*/${toString cfg.updater.frequency} * * * * root start fprot-updater" ];
- jobs = {
- fprot_updater = {
- name = "fprot-updater";
- task = true;
-
- # have to copy fpupdate executable because it insists on storing the virus database in the same dir
- preStart = ''
- mkdir -m 0755 -p ${stateDir}
- chown ${fprotUser}:${fprotGroup} ${stateDir}
- cp ${pkgs.fprot}/opt/f-prot/fpupdate ${stateDir}
- ln -sf ${cfg.updater.productData} ${stateDir}/product.data
- '';
- #setuid = fprotUser;
- #setgid = fprotGroup;
- exec = "/var/lib/fprot/fpupdate --keyfile ${cfg.updater.licenseKeyfile}";
+ systemd.services."fprot-updater" = {
+ serviceConfig = {
+ Type = "oneshot";
+ RemainAfterExit = false;
};
+ wantedBy = [ "multi-user.target" ];
+
+ # have to copy fpupdate executable because it insists on storing the virus database in the same dir
+ preStart = ''
+ mkdir -m 0755 -p ${stateDir}
+ chown ${fprotUser}:${fprotGroup} ${stateDir}
+ cp ${pkgs.fprot}/opt/f-prot/fpupdate ${stateDir}
+ ln -sf ${cfg.updater.productData} ${stateDir}/product.data
+ '';
+
+ script = "/var/lib/fprot/fpupdate --keyfile ${cfg.updater.licenseKeyfile}";
};
-
};
-
}
diff --git a/nixos/modules/services/system/kerberos.nix b/nixos/modules/services/system/kerberos.nix
index 3a0171ca1b9..e0c3f95c3cc 100644
--- a/nixos/modules/services/system/kerberos.nix
+++ b/nixos/modules/services/system/kerberos.nix
@@ -45,27 +45,20 @@ in
serverArgs = "${pkgs.heimdal}/sbin/kadmind";
};
- jobs.kdc =
- { description = "Kerberos Domain Controller daemon";
+ systemd.services.kdc = {
+ description = "Kerberos Domain Controller daemon";
+ wantedBy = [ "multi-user.target" ];
+ preStart = ''
+ mkdir -m 0755 -p ${stateDir}
+ '';
+ script = "${heimdal}/sbin/kdc";
+ };
- startOn = "ip-up";
-
- preStart =
- ''
- mkdir -m 0755 -p ${stateDir}
- '';
-
- exec = "${heimdal}/sbin/kdc";
-
- };
-
- jobs.kpasswdd =
- { description = "Kerberos Domain Controller daemon";
-
- startOn = "ip-up";
-
- exec = "${heimdal}/sbin/kpasswdd";
- };
+ systemd.services.kpasswdd = {
+ description = "Kerberos Domain Controller daemon";
+ wantedBy = [ "multi-user.target" ];
+ script = "${heimdal}/sbin/kpasswdd";
+ };
};
}
diff --git a/nixos/modules/services/system/uptimed.nix b/nixos/modules/services/system/uptimed.nix
index ab46c508914..5f8916bbf9a 100644
--- a/nixos/modules/services/system/uptimed.nix
+++ b/nixos/modules/services/system/uptimed.nix
@@ -45,23 +45,21 @@ in
home = stateDir;
};
- jobs.uptimed =
- { description = "Uptimed daemon";
+ systemd.services.uptimed = {
+ description = "Uptimed daemon";
+ wantedBy = [ "multi-user.target" ];
- startOn = "startup";
+ preStart = ''
+ mkdir -m 0755 -p ${stateDir}
+ chown ${uptimedUser} ${stateDir}
- preStart =
- ''
- mkdir -m 0755 -p ${stateDir}
- chown ${uptimedUser} ${stateDir}
+ if ! test -f ${stateDir}/bootid ; then
+ ${uptimed}/sbin/uptimed -b
+ fi
+ '';
- if ! test -f ${stateDir}/bootid ; then
- ${uptimed}/sbin/uptimed -b
- fi
- '';
-
- exec = "${uptimed}/sbin/uptimed";
- };
+ script = "${uptimed}/sbin/uptimed";
+ };
};
diff --git a/nixos/modules/services/web-servers/jboss/default.nix b/nixos/modules/services/web-servers/jboss/default.nix
index 8a292ad6791..583fe56eb5e 100644
--- a/nixos/modules/services/web-servers/jboss/default.nix
+++ b/nixos/modules/services/web-servers/jboss/default.nix
@@ -71,13 +71,10 @@ in
###### implementation
config = mkIf config.services.jboss.enable {
-
- jobs.jboss =
- { description = "JBoss server";
-
- exec = "${jbossService}/bin/control start";
- };
-
+ systemd.services.jboss = {
+ description = "JBoss server";
+ script = "${jbossService}/bin/control start";
+ wantedBy = [ "multi-user.target" ];
+ };
};
-
}
diff --git a/nixos/modules/services/web-servers/tomcat.nix b/nixos/modules/services/web-servers/tomcat.nix
index 99460a48835..9f1be5a8290 100644
--- a/nixos/modules/services/web-servers/tomcat.nix
+++ b/nixos/modules/services/web-servers/tomcat.nix
@@ -127,124 +127,205 @@ in
extraGroups = cfg.extraGroups;
};
- jobs.tomcat =
- { description = "Apache Tomcat server";
+ systemd.services.tomcat = {
+ description = "Apache Tomcat server";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network-interfaces.target" ];
+ serviceConfig.Type = "daemon";
- startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
+ preStart = ''
+ # Create the base directory
+ mkdir -p ${cfg.baseDir}
- daemonType = "daemon";
+ # Create a symlink to the bin directory of the tomcat component
+ ln -sfn ${tomcat}/bin ${cfg.baseDir}/bin
+
+ # Create a conf/ directory
+ mkdir -p ${cfg.baseDir}/conf
+ chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/conf
+
+ # Symlink the config files in the conf/ directory (except for catalina.properties and server.xml)
+ for i in $(ls ${tomcat}/conf | grep -v catalina.properties | grep -v server.xml)
+ do
+ ln -sfn ${tomcat}/conf/$i ${cfg.baseDir}/conf/`basename $i`
+ done
+
+ # Create subdirectory for virtual hosts
+ mkdir -p ${cfg.baseDir}/virtualhosts
+
+ # Create a modified catalina.properties file
+ # Change all references from CATALINA_HOME to CATALINA_BASE and add support for shared libraries
+ sed -e 's|''${catalina.home}|''${catalina.base}|g' \
+ -e 's|shared.loader=|shared.loader=''${catalina.base}/shared/lib/*.jar|' \
+ ${tomcat}/conf/catalina.properties > ${cfg.baseDir}/conf/catalina.properties
+
+ # Create a modified server.xml which also includes all virtual hosts
+ sed -e "//a\ ${
+ toString (map (virtualHost: ''${if cfg.logPerVirtualHost then '''' else ""}'') cfg.virtualHosts)}" \
+ ${tomcat}/conf/server.xml > ${cfg.baseDir}/conf/server.xml
+
+ # Create a logs/ directory
+ mkdir -p ${cfg.baseDir}/logs
+ chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/logs
+ ${if cfg.logPerVirtualHost then
+ toString (map (h: ''
+ mkdir -p ${cfg.baseDir}/logs/${h.name}
+ chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/logs/${h.name}
+ '') cfg.virtualHosts) else ''''}
+
+ # Create a temp/ directory
+ mkdir -p ${cfg.baseDir}/temp
+ chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/temp
+
+ # Create a lib/ directory
+ mkdir -p ${cfg.baseDir}/lib
+ chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/lib
+
+ # Create a shared/lib directory
+ mkdir -p ${cfg.baseDir}/shared/lib
+ chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/shared/lib
+
+ # Create a webapps/ directory
+ mkdir -p ${cfg.baseDir}/webapps
+ chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/webapps
+
+ # Symlink all the given common libs files or paths into the lib/ directory
+ for i in ${tomcat} ${toString cfg.commonLibs}
+ do
+ if [ -f $i ]
+ then
+ # If the given web application is a file, symlink it into the common/lib/ directory
+ ln -sfn $i ${cfg.baseDir}/lib/`basename $i`
+ elif [ -d $i ]
+ then
+ # If the given web application is a directory, then iterate over the files
+ # in the special purpose directories and symlink them into the tomcat tree
+
+ for j in $i/lib/*
+ do
+ ln -sfn $j ${cfg.baseDir}/lib/`basename $j`
+ done
+ fi
+ done
+
+ # Symlink all the given shared libs files or paths into the shared/lib/ directory
+ for i in ${toString cfg.sharedLibs}
+ do
+ if [ -f $i ]
+ then
+ # If the given web application is a file, symlink it into the common/lib/ directory
+ ln -sfn $i ${cfg.baseDir}/shared/lib/`basename $i`
+ elif [ -d $i ]
+ then
+ # If the given web application is a directory, then iterate over the files
+ # in the special purpose directories and symlink them into the tomcat tree
+
+ for j in $i/shared/lib/*
+ do
+ ln -sfn $j ${cfg.baseDir}/shared/lib/`basename $j`
+ done
+ fi
+ done
+
+ # Symlink all the given web applications files or paths into the webapps/ directory
+ for i in ${toString cfg.webapps}
+ do
+ if [ -f $i ]
+ then
+ # If the given web application is a file, symlink it into the webapps/ directory
+ ln -sfn $i ${cfg.baseDir}/webapps/`basename $i`
+ elif [ -d $i ]
+ then
+ # If the given web application is a directory, then iterate over the files
+ # in the special purpose directories and symlink them into the tomcat tree
+
+ for j in $i/webapps/*
+ do
+ ln -sfn $j ${cfg.baseDir}/webapps/`basename $j`
+ done
+
+ # Also symlink the configuration files if they are included
+ if [ -d $i/conf/Catalina ]
+ then
+ for j in $i/conf/Catalina/*
+ do
+ mkdir -p ${cfg.baseDir}/conf/Catalina/localhost
+ ln -sfn $j ${cfg.baseDir}/conf/Catalina/localhost/`basename $j`
+ done
+ fi
+ fi
+ done
+
+ ${toString (map (virtualHost: ''
+ # Create webapps directory for the virtual host
+ mkdir -p ${cfg.baseDir}/virtualhosts/${virtualHost.name}/webapps
+
+ # Modify ownership
+ chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/virtualhosts/${virtualHost.name}/webapps
+
+ # Symlink all the given web applications files or paths into the webapps/ directory
+ # of this virtual host
+ for i in "${if virtualHost ? webapps then toString virtualHost.webapps else ""}"
+ do
+ if [ -f $i ]
+ then
+ # If the given web application is a file, symlink it into the webapps/ directory
+ ln -sfn $i ${cfg.baseDir}/virtualhosts/${virtualHost.name}/webapps/`basename $i`
+ elif [ -d $i ]
+ then
+ # If the given web application is a directory, then iterate over the files
+ # in the special purpose directories and symlink them into the tomcat tree
+
+ for j in $i/webapps/*
+ do
+ ln -sfn $j ${cfg.baseDir}/virtualhosts/${virtualHost.name}/webapps/`basename $j`
+ done
+
+ # Also symlink the configuration files if they are included
+ if [ -d $i/conf/Catalina ]
+ then
+ for j in $i/conf/Catalina/*
+ do
+ mkdir -p ${cfg.baseDir}/conf/Catalina/${virtualHost.name}
+ ln -sfn $j ${cfg.baseDir}/conf/Catalina/${virtualHost.name}/`basename $j`
+ done
+ fi
+ fi
+ done
- preStart =
''
- # Create the base directory
- mkdir -p ${cfg.baseDir}
+ ) cfg.virtualHosts) }
- # Create a symlink to the bin directory of the tomcat component
- ln -sfn ${tomcat}/bin ${cfg.baseDir}/bin
+ # Create a work/ directory
+ mkdir -p ${cfg.baseDir}/work
+ chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/work
- # Create a conf/ directory
- mkdir -p ${cfg.baseDir}/conf
- chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/conf
+ ${if cfg.axis2.enable then
+ ''
+ # Copy the Axis2 web application
+ cp -av ${pkgs.axis2}/webapps/axis2 ${cfg.baseDir}/webapps
- # Symlink the config files in the conf/ directory (except for catalina.properties and server.xml)
- for i in $(ls ${tomcat}/conf | grep -v catalina.properties | grep -v server.xml)
- do
- ln -sfn ${tomcat}/conf/$i ${cfg.baseDir}/conf/`basename $i`
- done
+ # Turn off addressing, which causes many errors
+ sed -i -e 's%%%' ${cfg.baseDir}/webapps/axis2/WEB-INF/conf/axis2.xml
- # Create subdirectory for virtual hosts
- mkdir -p ${cfg.baseDir}/virtualhosts
+ # Modify permissions on the Axis2 application
+ chown -R ${cfg.user}:${cfg.group} ${cfg.baseDir}/webapps/axis2
- # Create a modified catalina.properties file
- # Change all references from CATALINA_HOME to CATALINA_BASE and add support for shared libraries
- sed -e 's|''${catalina.home}|''${catalina.base}|g' \
- -e 's|shared.loader=|shared.loader=''${catalina.base}/shared/lib/*.jar|' \
- ${tomcat}/conf/catalina.properties > ${cfg.baseDir}/conf/catalina.properties
-
- # Create a modified server.xml which also includes all virtual hosts
- sed -e "//a\ ${
- toString (map (virtualHost: ''${if cfg.logPerVirtualHost then '''' else ""}'') cfg.virtualHosts)}" \
- ${tomcat}/conf/server.xml > ${cfg.baseDir}/conf/server.xml
-
- # Create a logs/ directory
- mkdir -p ${cfg.baseDir}/logs
- chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/logs
- ${if cfg.logPerVirtualHost then
- toString (map (h: ''
- mkdir -p ${cfg.baseDir}/logs/${h.name}
- chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/logs/${h.name}
- '') cfg.virtualHosts) else ''''}
-
- # Create a temp/ directory
- mkdir -p ${cfg.baseDir}/temp
- chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/temp
-
- # Create a lib/ directory
- mkdir -p ${cfg.baseDir}/lib
- chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/lib
-
- # Create a shared/lib directory
- mkdir -p ${cfg.baseDir}/shared/lib
- chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/shared/lib
-
- # Create a webapps/ directory
- mkdir -p ${cfg.baseDir}/webapps
- chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/webapps
-
- # Symlink all the given common libs files or paths into the lib/ directory
- for i in ${tomcat} ${toString cfg.commonLibs}
+ # Symlink all the given web service files or paths into the webapps/axis2/WEB-INF/services directory
+ for i in ${toString cfg.axis2.services}
do
if [ -f $i ]
then
- # If the given web application is a file, symlink it into the common/lib/ directory
- ln -sfn $i ${cfg.baseDir}/lib/`basename $i`
+ # If the given web service is a file, symlink it into the webapps/axis2/WEB-INF/services
+ ln -sfn $i ${cfg.baseDir}/webapps/axis2/WEB-INF/services/`basename $i`
elif [ -d $i ]
then
# If the given web application is a directory, then iterate over the files
# in the special purpose directories and symlink them into the tomcat tree
- for j in $i/lib/*
+ for j in $i/webapps/axis2/WEB-INF/services/*
do
- ln -sfn $j ${cfg.baseDir}/lib/`basename $j`
- done
- fi
- done
-
- # Symlink all the given shared libs files or paths into the shared/lib/ directory
- for i in ${toString cfg.sharedLibs}
- do
- if [ -f $i ]
- then
- # If the given web application is a file, symlink it into the common/lib/ directory
- ln -sfn $i ${cfg.baseDir}/shared/lib/`basename $i`
- elif [ -d $i ]
- then
- # If the given web application is a directory, then iterate over the files
- # in the special purpose directories and symlink them into the tomcat tree
-
- for j in $i/shared/lib/*
- do
- ln -sfn $j ${cfg.baseDir}/shared/lib/`basename $j`
- done
- fi
- done
-
- # Symlink all the given web applications files or paths into the webapps/ directory
- for i in ${toString cfg.webapps}
- do
- if [ -f $i ]
- then
- # If the given web application is a file, symlink it into the webapps/ directory
- ln -sfn $i ${cfg.baseDir}/webapps/`basename $i`
- elif [ -d $i ]
- then
- # If the given web application is a directory, then iterate over the files
- # in the special purpose directories and symlink them into the tomcat tree
-
- for j in $i/webapps/*
- do
- ln -sfn $j ${cfg.baseDir}/webapps/`basename $j`
+ ln -sfn $j ${cfg.baseDir}/webapps/axis2/WEB-INF/services/`basename $j`
done
# Also symlink the configuration files if they are included
@@ -252,110 +333,25 @@ in
then
for j in $i/conf/Catalina/*
do
- mkdir -p ${cfg.baseDir}/conf/Catalina/localhost
ln -sfn $j ${cfg.baseDir}/conf/Catalina/localhost/`basename $j`
done
fi
fi
done
+ ''
+ else ""}
+ '';
- ${toString (map (virtualHost: ''
- # Create webapps directory for the virtual host
- mkdir -p ${cfg.baseDir}/virtualhosts/${virtualHost.name}/webapps
+ script = ''
+ ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${tomcat}/bin/startup.sh'
+ '';
- # Modify ownership
- chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/virtualhosts/${virtualHost.name}/webapps
+ postStop = ''
+ echo "Stopping tomcat..."
+ CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c ${tomcat}/bin/shutdown.sh
+ '';
- # Symlink all the given web applications files or paths into the webapps/ directory
- # of this virtual host
- for i in "${if virtualHost ? webapps then toString virtualHost.webapps else ""}"
- do
- if [ -f $i ]
- then
- # If the given web application is a file, symlink it into the webapps/ directory
- ln -sfn $i ${cfg.baseDir}/virtualhosts/${virtualHost.name}/webapps/`basename $i`
- elif [ -d $i ]
- then
- # If the given web application is a directory, then iterate over the files
- # in the special purpose directories and symlink them into the tomcat tree
-
- for j in $i/webapps/*
- do
- ln -sfn $j ${cfg.baseDir}/virtualhosts/${virtualHost.name}/webapps/`basename $j`
- done
-
- # Also symlink the configuration files if they are included
- if [ -d $i/conf/Catalina ]
- then
- for j in $i/conf/Catalina/*
- do
- mkdir -p ${cfg.baseDir}/conf/Catalina/${virtualHost.name}
- ln -sfn $j ${cfg.baseDir}/conf/Catalina/${virtualHost.name}/`basename $j`
- done
- fi
- fi
- done
-
- ''
- ) cfg.virtualHosts) }
-
- # Create a work/ directory
- mkdir -p ${cfg.baseDir}/work
- chown ${cfg.user}:${cfg.group} ${cfg.baseDir}/work
-
- ${if cfg.axis2.enable then
- ''
- # Copy the Axis2 web application
- cp -av ${pkgs.axis2}/webapps/axis2 ${cfg.baseDir}/webapps
-
- # Turn off addressing, which causes many errors
- sed -i -e 's%%%' ${cfg.baseDir}/webapps/axis2/WEB-INF/conf/axis2.xml
-
- # Modify permissions on the Axis2 application
- chown -R ${cfg.user}:${cfg.group} ${cfg.baseDir}/webapps/axis2
-
- # Symlink all the given web service files or paths into the webapps/axis2/WEB-INF/services directory
- for i in ${toString cfg.axis2.services}
- do
- if [ -f $i ]
- then
- # If the given web service is a file, symlink it into the webapps/axis2/WEB-INF/services
- ln -sfn $i ${cfg.baseDir}/webapps/axis2/WEB-INF/services/`basename $i`
- elif [ -d $i ]
- then
- # If the given web application is a directory, then iterate over the files
- # in the special purpose directories and symlink them into the tomcat tree
-
- for j in $i/webapps/axis2/WEB-INF/services/*
- do
- ln -sfn $j ${cfg.baseDir}/webapps/axis2/WEB-INF/services/`basename $j`
- done
-
- # Also symlink the configuration files if they are included
- if [ -d $i/conf/Catalina ]
- then
- for j in $i/conf/Catalina/*
- do
- ln -sfn $j ${cfg.baseDir}/conf/Catalina/localhost/`basename $j`
- done
- fi
- fi
- done
- ''
- else ""}
- '';
-
- script = ''
- ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${tomcat}/bin/startup.sh'
- '';
-
- postStop =
- ''
- echo "Stopping tomcat..."
- CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c ${tomcat}/bin/shutdown.sh
- '';
-
- };
+ };
};
diff --git a/nixos/modules/services/x11/xfs.nix b/nixos/modules/services/x11/xfs.nix
index 196f3beb41e..ea7cfa1aa43 100644
--- a/nixos/modules/services/x11/xfs.nix
+++ b/nixos/modules/services/x11/xfs.nix
@@ -30,20 +30,17 @@ in
###### implementation
config = mkIf config.services.xfs.enable {
-
assertions = singleton
{ assertion = config.fonts.enableFontDir;
message = "Please enable fonts.enableFontDir to use the X Font Server.";
};
- jobs.xfs =
- { description = "X Font Server";
-
- startOn = "started networking";
-
- exec = "${pkgs.xorg.xfs}/bin/xfs -config ${configFile}";
- };
-
+ systemd.services.xfs = {
+ description = "X Font Server";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+ path = [ pkgs.xorg.xfs ];
+ script = "xfs -config ${configFile}";
+ };
};
-
}
diff --git a/nixos/modules/system/upstart/upstart.nix b/nixos/modules/system/upstart/upstart.nix
deleted file mode 100644
index 5c046130407..00000000000
--- a/nixos/modules/system/upstart/upstart.nix
+++ /dev/null
@@ -1,290 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-with import ../boot/systemd-unit-options.nix { inherit config lib; };
-
-let
-
- userExists = u:
- (u == "") || any (uu: uu.name == u) (attrValues config.users.extraUsers);
-
- groupExists = g:
- (g == "") || any (gg: gg.name == g) (attrValues config.users.extraGroups);
-
- makeJobScript = name: content: "${pkgs.writeScriptBin name content}/bin/${name}";
-
- # From a job description, generate an systemd unit file.
- makeUnit = job:
-
- let
- hasMain = job.script != "" || job.exec != "";
-
- env = job.environment;
-
- preStartScript = makeJobScript "${job.name}-pre-start"
- ''
- #! ${pkgs.stdenv.shell} -e
- ${job.preStart}
- '';
-
- startScript = makeJobScript "${job.name}-start"
- ''
- #! ${pkgs.stdenv.shell} -e
- ${if job.script != "" then job.script else ''
- exec ${job.exec}
- ''}
- '';
-
- postStartScript = makeJobScript "${job.name}-post-start"
- ''
- #! ${pkgs.stdenv.shell} -e
- ${job.postStart}
- '';
-
- preStopScript = makeJobScript "${job.name}-pre-stop"
- ''
- #! ${pkgs.stdenv.shell} -e
- ${job.preStop}
- '';
-
- postStopScript = makeJobScript "${job.name}-post-stop"
- ''
- #! ${pkgs.stdenv.shell} -e
- ${job.postStop}
- '';
- in {
-
- inherit (job) description requires before partOf environment path restartIfChanged unitConfig;
-
- after =
- (if job.startOn == "stopped udevtrigger" then [ "systemd-udev-settle.service" ] else
- if job.startOn == "started udev" then [ "systemd-udev.service" ] else
- if job.startOn == "started network-interfaces" then [ "network-interfaces.target" ] else
- if job.startOn == "started networking" then [ "network.target" ] else
- if job.startOn == "ip-up" then [] else
- if job.startOn == "" || job.startOn == "startup" then [] else
- builtins.trace "Warning: job ‘${job.name}’ has unknown startOn value ‘${job.startOn}’." []
- ) ++ job.after;
-
- wants =
- (if job.startOn == "stopped udevtrigger" then [ "systemd-udev-settle.service" ] else []
- ) ++ job.wants;
-
- wantedBy =
- (if job.startOn == "" then [] else
- if job.startOn == "ip-up" then [ "ip-up.target" ] else
- [ "multi-user.target" ]) ++ job.wantedBy;
-
- serviceConfig =
- job.serviceConfig
- // optionalAttrs (job.preStart != "" && (job.script != "" || job.exec != ""))
- { ExecStartPre = preStartScript; }
- // optionalAttrs (job.preStart != "" && job.script == "" && job.exec == "")
- { ExecStart = preStartScript; }
- // optionalAttrs (job.script != "" || job.exec != "")
- { ExecStart = startScript; }
- // optionalAttrs (job.postStart != "")
- { ExecStartPost = postStartScript; }
- // optionalAttrs (job.preStop != "")
- { ExecStop = preStopScript; }
- // optionalAttrs (job.postStop != "")
- { ExecStopPost = postStopScript; }
- // (if job.script == "" && job.exec == "" then { Type = "oneshot"; RemainAfterExit = true; } else
- if job.daemonType == "fork" || job.daemonType == "daemon" then { Type = "forking"; GuessMainPID = true; } else
- if job.daemonType == "none" then { } else
- throw "invalid daemon type `${job.daemonType}'")
- // optionalAttrs (!job.task && !(job.script == "" && job.exec == "") && job.respawn)
- { Restart = "always"; }
- // optionalAttrs job.task
- { Type = "oneshot"; RemainAfterExit = false; };
- };
-
-
- jobOptions = serviceOptions // {
-
- name = mkOption {
- # !!! The type should ensure that this could be a filename.
- type = types.str;
- example = "sshd";
- description = ''
- Name of the job, mapped to the systemd unit
- name.service.
- '';
- };
-
- startOn = mkOption {
- #type = types.str;
- default = "";
- description = ''
- The Upstart event that triggers this job to be started. Some
- are mapped to systemd dependencies; otherwise you will get a
- warning. If empty, the job will not start automatically.
- '';
- };
-
- stopOn = mkOption {
- type = types.str;
- default = "starting shutdown";
- description = ''
- Ignored; this was the Upstart event that triggers this job to be stopped.
- '';
- };
-
- postStart = mkOption {
- type = types.lines;
- default = "";
- description = ''
- Shell commands executed after the job is started (i.e. after
- the job's main process is started), but before the job is
- considered “running”.
- '';
- };
-
- preStop = mkOption {
- type = types.lines;
- default = "";
- description = ''
- Shell commands executed before the job is stopped
- (i.e. before systemd kills the job's main process). This can
- be used to cleanly shut down a daemon.
- '';
- };
-
- postStop = mkOption {
- type = types.lines;
- default = "";
- description = ''
- Shell commands executed after the job has stopped
- (i.e. after the job's main process has terminated).
- '';
- };
-
- exec = mkOption {
- type = types.str;
- default = "";
- description = ''
- Command to start the job's main process. If empty, the
- job has no main process, but can still have pre/post-start
- and pre/post-stop scripts, and is considered “running”
- until it is stopped.
- '';
- };
-
- respawn = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Whether to restart the job automatically if its process
- ends unexpectedly.
- '';
- };
-
- task = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Whether this job is a task rather than a service. Tasks
- are executed only once, while services are restarted when
- they exit.
- '';
- };
-
- daemonType = mkOption {
- type = types.str;
- default = "none";
- description = ''
- Determines how systemd detects when a daemon should be
- considered “running”. The value none means
- that the daemon is considered ready immediately. The value
- fork means that the daemon will fork once.
- The value daemon means that the daemon will
- fork twice. The value stop means that the
- daemon will raise the SIGSTOP signal to indicate readiness.
- '';
- };
-
- setuid = mkOption {
- type = types.addCheck types.str userExists;
- default = "";
- description = ''
- Run the daemon as a different user.
- '';
- };
-
- setgid = mkOption {
- type = types.addCheck types.str groupExists;
- default = "";
- description = ''
- Run the daemon as a different group.
- '';
- };
-
- path = mkOption {
- default = [];
- description = ''
- Packages added to the job's PATH environment variable.
- Both the bin and sbin
- subdirectories of each package are added.
- '';
- };
-
- };
-
-
- upstartJob = { name, config, ... }: {
-
- options = {
-
- unit = mkOption {
- default = makeUnit config;
- description = "Generated definition of the systemd unit corresponding to this job.";
- };
-
- };
-
- config = {
-
- # The default name is the name extracted from the attribute path.
- name = mkDefault name;
-
- };
-
- };
-
-in
-
-{
-
- ###### interface
-
- options = {
-
- jobs = mkOption {
- default = {};
- description = ''
- This option is a legacy method to define system services,
- dating from the era where NixOS used Upstart instead of
- systemd. You should use
- instead. Services defined using are
- mapped automatically to , but
- may not work perfectly; in particular, most
- conditions are not supported.
- '';
- type = types.loaOf types.optionSet;
- options = [ jobOptions upstartJob ];
- };
-
- };
-
-
- ###### implementation
-
- config = {
-
- systemd.services =
- flip mapAttrs' config.jobs (name: job:
- nameValuePair job.name job.unit);
-
- };
-
-}
diff --git a/nixos/modules/tasks/filesystems/btrfs.nix b/nixos/modules/tasks/filesystems/btrfs.nix
index 2e5b34a3246..8cfa1b6921d 100644
--- a/nixos/modules/tasks/filesystems/btrfs.nix
+++ b/nixos/modules/tasks/filesystems/btrfs.nix
@@ -31,13 +31,5 @@ in
''
btrfs device scan
'';
-
- # !!! This is broken. There should be a udev rule to do this when
- # new devices are discovered.
- jobs.udev.postStart =
- ''
- ${pkgs.btrfs-progs}/bin/btrfs device scan
- '';
-
};
}
diff --git a/nixos/modules/virtualisation/libvirtd.nix b/nixos/modules/virtualisation/libvirtd.nix
index 16aedbbb185..3668d17ac89 100644
--- a/nixos/modules/virtualisation/libvirtd.nix
+++ b/nixos/modules/virtualisation/libvirtd.nix
@@ -166,33 +166,33 @@ in
'';
};
- jobs."libvirt-guests" =
- { description = "Libvirt Virtual Machines";
+ systemd.services."libvirt-guests" = {
+ description = "Libvirt Virtual Machines";
- wantedBy = [ "multi-user.target" ];
- wants = [ "libvirtd.service" ];
- after = [ "libvirtd.service" ];
+ wantedBy = [ "multi-user.target" ];
+ wants = [ "libvirtd.service" ];
+ after = [ "libvirtd.service" ];
- restartIfChanged = false;
+ restartIfChanged = false;
- path = [ pkgs.gettext pkgs.libvirt pkgs.gawk ];
+ path = with pkgs; [ gettext libvirt gawk ];
- preStart =
- ''
- mkdir -p /var/lock/subsys -m 755
- ${pkgs.libvirt}/etc/rc.d/init.d/libvirt-guests start || true
- '';
+ preStart = ''
+ mkdir -p /var/lock/subsys -m 755
+ ${pkgs.libvirt}/etc/rc.d/init.d/libvirt-guests start || true
+ '';
- postStop =
- ''
- export PATH=${pkgs.gettext}/bin:$PATH
- export ON_SHUTDOWN=${cfg.onShutdown}
- ${pkgs.libvirt}/etc/rc.d/init.d/libvirt-guests stop
- '';
+ postStop = ''
+ export PATH=${pkgs.gettext}/bin:$PATH
+ export ON_SHUTDOWN=${cfg.onShutdown}
+ ${pkgs.libvirt}/etc/rc.d/init.d/libvirt-guests stop
+ '';
- serviceConfig.Type = "oneshot";
- serviceConfig.RemainAfterExit = true;
+ serviceConfig = {
+ Type = "oneshot";
+ RemainAfterExit = true;
};
+ };
users.extraGroups.libvirtd.gid = config.ids.gids.libvirtd;
diff --git a/nixos/tests/quake3.nix b/nixos/tests/quake3.nix
index c72d94e11a8..d42f7471c83 100644
--- a/nixos/tests/quake3.nix
+++ b/nixos/tests/quake3.nix
@@ -34,9 +34,9 @@ rec {
{ server =
{ config, pkgs, ... }:
- { jobs."quake3-server" =
- { startOn = "startup";
- exec =
+ { systemd.services."quake3-server" =
+ { wantedBy = [ "multi-user.target" ];
+ script =
"${pkgs.quake3demo}/bin/quake3-server '+set g_gametype 0' " +
"'+map q3dm7' '+addbot grunt' '+addbot daemia' 2> /tmp/log";
};
diff --git a/pkgs/tools/networking/fuppes/default.nix b/pkgs/tools/networking/fuppes/default.nix
deleted file mode 100644
index 67e3b581f24..00000000000
--- a/pkgs/tools/networking/fuppes/default.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{stdenv, fetchurl, pkgconfig, pcre, libxml2, sqlite, ffmpeg, imagemagick,
-exiv2, mp4v2, lame, libvorbis, flac, libmad, faad2}:
-
-stdenv.mkDerivation rec {
- name = "fuppes-0.660";
- src = fetchurl {
- url = mirror://sourceforge/project/fuppes/fuppes/SVN-660/fuppes-0.660.tar.gz;
- sha256 = "1c385b29878927e5f1e55ae2c9ad284849d1522d9517a88e34feb92bd5195173";
- };
-
- patches = [
- ./fuppes-faad-exanpse-backward-symbols-macro.patch
- ];
-
- buildInputs = [
- pkgconfig pcre libxml2 sqlite ffmpeg imagemagick exiv2 mp4v2 lame
- libvorbis flac libmad faad2
- ];
-
- configureFlags = [
- "--enable-ffmpegthumbnailer"
- "--enable-magickwand"
- "--enable-exiv2"
- "--enable-transcoder-ffmpeg"
- "--enable-mp4v2"
- "--enable-lame"
- "--enable-vorbis"
- "--enable-flac"
- "--enable-mad"
- "--enable-faad"
- ];
-
- postFixup = ''
- patchelf --set-rpath "$(patchelf --print-rpath $out/bin/fuppes):${faad2}/lib" $out/bin/fuppes
- patchelf --set-rpath "$(patchelf --print-rpath $out/bin/fuppesd):${faad2}/lib" $out/bin/fuppesd
- '';
-
- meta = {
- description = "UPnP A/V Media Server";
- longDescription = ''
- FUPPES is a free, multiplatform UPnP A/V Media Server.
-
- FUPPES supports a wide range of UPnP MediaRenderers as well as
- on-the-fly transcoding of various audio, video and image formats.
-
- FUPPES also includes basic DLNA support.
- '';
- homepage = http://fuppes.ulrich-voelkel.de/;
- license = stdenv.lib.licenses.gpl2;
-
- maintainers = [ stdenv.lib.maintainers.pierron ];
- platforms = stdenv.lib.platforms.all;
-
- broken = true;
- };
-}
diff --git a/pkgs/tools/networking/fuppes/fuppes-faad-exanpse-backward-symbols-macro.patch b/pkgs/tools/networking/fuppes/fuppes-faad-exanpse-backward-symbols-macro.patch
deleted file mode 100644
index c88a6fb4427..00000000000
--- a/pkgs/tools/networking/fuppes/fuppes-faad-exanpse-backward-symbols-macro.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-diff -x _inst -x _build -x .svn -ur fuppes-0.660/src/lib/Transcoding/FaadWrapper.cpp fuppes-0.660.new/src/lib/Transcoding/FaadWrapper.cpp
---- fuppes-0.660/src/lib/Transcoding/FaadWrapper.cpp 2009-11-19 10:16:25.000000000 +0100
-+++ fuppes-0.660.new/src/lib/Transcoding/FaadWrapper.cpp 2011-01-30 22:25:34.171263052 +0100
-@@ -329,13 +329,19 @@
-
- CloseFile();
- }
--
-+
-+// These macros are used to convert old function names to new ones based on
-+// the #define declared in faad headers. The two-level macro are used to
-+// expanse the macro which are gave to to_str.
-+#define to_str_(fun) #fun
-+#define to_str(fun) to_str_(fun)
-+
- bool CFaadWrapper::LoadLib()
- {
- #ifdef WIN32
-- std::string sLibName = "libfaad-0.dll";
-+ std::string sLibName = "libfaad-2.dll";
- #else
-- std::string sLibName = "libfaad.so.0";
-+ std::string sLibName = "libfaad.so.2";
- #endif
-
- if(!CSharedConfig::Shared()->FaadLibName().empty()) {
-@@ -350,54 +356,54 @@
- return false;
- }
-
-- m_faacDecOpen = (faacDecOpen_t)FuppesGetProcAddress(m_LibHandle, "faacDecOpen");
-+ m_faacDecOpen = (faacDecOpen_t)FuppesGetProcAddress(m_LibHandle, to_str(faacDecOpen));
- if(!m_faacDecOpen) {
- CSharedLog::Shared()->Log(L_EXT, "cannot load symbol 'faacDecOpen'", __FILE__, __LINE__);
- return false;
- }
-
-- m_faacDecGetErrorMessage = (faacDecGetErrorMessage_t)FuppesGetProcAddress(m_LibHandle, "faacDecGetErrorMessage");
-+ m_faacDecGetErrorMessage = (faacDecGetErrorMessage_t)FuppesGetProcAddress(m_LibHandle, to_str(faacDecGetErrorMessage));
- if(!m_faacDecGetErrorMessage) {
- CSharedLog::Shared()->Log(L_EXT, "cannot load symbol 'faacDecGetErrorMessage'", __FILE__, __LINE__);
- return false;
- }
-
-- m_faacDecGetCurrentConfiguration = (faacDecGetCurrentConfiguration_t)FuppesGetProcAddress(m_LibHandle, "faacDecGetCurrentConfiguration");
-+ m_faacDecGetCurrentConfiguration = (faacDecGetCurrentConfiguration_t)FuppesGetProcAddress(m_LibHandle, to_str(faacDecGetCurrentConfiguration));
- if(!m_faacDecGetCurrentConfiguration) {
- CSharedLog::Shared()->Log(L_EXT, "cannot load symbol 'faacDecGetCurrentConfiguration'", __FILE__, __LINE__);
- }
-
-- m_faacDecSetConfiguration = (faacDecSetConfiguration_t)FuppesGetProcAddress(m_LibHandle, "faacDecSetConfiguration");
-+ m_faacDecSetConfiguration = (faacDecSetConfiguration_t)FuppesGetProcAddress(m_LibHandle, to_str(faacDecSetConfiguration));
- if(!m_faacDecSetConfiguration) {
- CSharedLog::Shared()->Log(L_EXT, "cannot load symbol 'faacDecSetConfiguration'", __FILE__, __LINE__);
- }
-
-- m_faacDecInit = (faacDecInit_t)FuppesGetProcAddress(m_LibHandle, "faacDecInit");
-+ m_faacDecInit = (faacDecInit_t)FuppesGetProcAddress(m_LibHandle, to_str(faacDecInit));
- if(!m_faacDecInit) {
- CSharedLog::Shared()->Log(L_EXT, "cannot load symbol 'faacDecInit'", __FILE__, __LINE__);
- }
-
-- m_faacDecInit2 = (faacDecInit2_t)FuppesGetProcAddress(m_LibHandle, "faacDecInit2");
-+ m_faacDecInit2 = (faacDecInit2_t)FuppesGetProcAddress(m_LibHandle, to_str(faacDecInit2));
- if(!m_faacDecInit2) {
- CSharedLog::Shared()->Log(L_EXT, "cannot load symbol 'faacDecInit2'", __FILE__, __LINE__);
- return false;
- }
-
-- m_faacDecDecode = (faacDecDecode_t)FuppesGetProcAddress(m_LibHandle, "faacDecDecode");
-+ m_faacDecDecode = (faacDecDecode_t)FuppesGetProcAddress(m_LibHandle, to_str(faacDecDecode));
- if(!m_faacDecDecode) {
- CSharedLog::Shared()->Log(L_EXT, "cannot load symbol 'faacDecDecode'", __FILE__, __LINE__);
- return false;
- }
-
-- m_faacDecClose = (faacDecClose_t)FuppesGetProcAddress(m_LibHandle, "faacDecClose");
-+ m_faacDecClose = (faacDecClose_t)FuppesGetProcAddress(m_LibHandle, to_str(faacDecClose));
- if(!m_faacDecClose) {
- CSharedLog::Shared()->Log(L_EXT, "cannot load symbol 'faacDecClose'", __FILE__, __LINE__);
- return false;
- }
-
-- m_AudioSpecificConfig = (AudioSpecificConfig_t)FuppesGetProcAddress(m_LibHandle, "AudioSpecificConfig");
-+ m_AudioSpecificConfig = (AudioSpecificConfig_t)FuppesGetProcAddress(m_LibHandle, to_str(AudioSpecificConfig));
- if(!m_AudioSpecificConfig) {
-- m_AudioSpecificConfig = (AudioSpecificConfig_t)FuppesGetProcAddress(m_LibHandle, "faacDecAudioSpecificConfig");
-+ m_AudioSpecificConfig = (AudioSpecificConfig_t)FuppesGetProcAddress(m_LibHandle, to_str(faacDecAudioSpecificConfig));
- if(!m_AudioSpecificConfig) {
- CSharedLog::Shared()->Log(L_EXT, "cannot load symbol '(faacDec)AudioSpecificConfig'", __FILE__, __LINE__);
- return false;
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5601fb7ca7e..bd7cc03dd91 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1564,8 +1564,6 @@ let
ftop = callPackage ../os-specific/linux/ftop { };
- fuppes = callPackage ../tools/networking/fuppes { };
-
fsfs = callPackage ../tools/filesystems/fsfs { };
fuseiso = callPackage ../tools/filesystems/fuseiso { };