From 931f68c924cbeaba418bb9d33229deb744f324cf Mon Sep 17 00:00:00 2001 From: Marc Weber Date: Fri, 6 Mar 2009 12:26:26 +0000 Subject: [PATCH] Convert "gnunet" svn path=/nixos/branches/fix-style/; revision=14377 --- system/options.nix | 137 +-------------------- upstart-jobs/default.nix | 7 -- upstart-jobs/gnunet.nix | 250 +++++++++++++++++++++++++++++++-------- 3 files changed, 203 insertions(+), 191 deletions(-) diff --git a/system/options.nix b/system/options.nix index 2e841e6c7b7..f33e7cdd805 100644 --- a/system/options.nix +++ b/system/options.nix @@ -480,142 +480,6 @@ in }; - gnunet = { - - enable = mkOption { - default = false; - description = '' - Whether to run the GNUnet daemon. GNUnet is GNU's anonymous - peer-to-peer communication and file sharing framework. - ''; - }; - - home = mkOption { - default = "/var/lib/gnunet"; - description = '' - Directory where the GNUnet daemon will store its data. - ''; - }; - - debug = mkOption { - default = false; - description = '' - When true, run in debug mode; gnunetd will not daemonize and - error messages will be written to stderr instead of a - logfile. - ''; - }; - - logLevel = mkOption { - default = "ERROR"; - example = "INFO"; - description = '' - Log level of the deamon (see `gnunetd(1)' for details). - ''; - }; - - hostLists = mkOption { - default = [ - "http://gnunet.org/hostlist.php" - "http://gnunet.mine.nu:8081/hostlist" - "http://vserver1236.vserver-on.de/hostlist-074" - ]; - description = '' - URLs of host lists. - ''; - }; - - - applications = mkOption { - default = [ "advertising" "getoption" "fs" "stats" "traffic" ]; - example = [ "chat" "fs" ]; - description = '' - List of GNUnet applications supported by the daemon. Note that - `fs', which means "file sharing", is probably the one you want. - ''; - }; - - transports = mkOption { - default = [ "udp" "tcp" "http" "nat" ]; - example = [ "smtp" "http" ]; - description = '' - List of transport methods used by the server. - ''; - }; - - fileSharing = { - quota = mkOption { - default = 1024; - description = '' - Maximum file system usage (in MiB) for file sharing. - ''; - }; - - activeMigration = mkOption { - default = false; - description = '' - Whether to allow active migration of content originating - from other nodes. - ''; - }; - }; - - load = { - maxNetDownBandwidth = mkOption { - default = 50000; - description = '' - Maximum bandwidth usage (in bits per second) for GNUnet - when downloading data. - ''; - }; - - maxNetUpBandwidth = mkOption { - default = 50000; - description = '' - Maximum bandwidth usage (in bits per second) for GNUnet - when downloading data. - ''; - }; - - hardNetUpBandwidth = mkOption { - default = 0; - description = '' - Hard bandwidth limit (in bits per second) when uploading - data. - ''; - }; - - maxCPULoad = mkOption { - default = 100; - description = '' - Maximum CPU load (percentage) authorized for the GNUnet - daemon. - ''; - }; - - interfaces = mkOption { - default = [ "eth0" ]; - example = [ "wlan0" "eth1" ]; - description = '' - List of network interfaces to use. - ''; - }; - }; - - extraOptions = mkOption { - default = ""; - example = '' - [NETWORK] - INTERFACE = eth3 - ''; - description = '' - Additional options that will be copied verbatim in `gnunetd.conf'. - See `gnunetd.conf(5)' for details. - ''; - }; - }; - - ejabberd = { enable = mkOption { default = false; @@ -1504,6 +1368,7 @@ in (import ../upstart-jobs/ntpd.nix) (import ../upstart-jobs/portmap.nix) (import ../upstart-jobs/bitlbee.nix) + (import ../upstart-jobs/gnunet.nix) # nix (import ../upstart-jobs/nix.nix) # nix options and daemon diff --git a/upstart-jobs/default.nix b/upstart-jobs/default.nix index 79338c2c598..03c3fa32822 100644 --- a/upstart-jobs/default.nix +++ b/upstart-jobs/default.nix @@ -141,13 +141,6 @@ let inherit config; }) - # GNUnet daemon. - ++ optional config.services.gnunet.enable - (import ../upstart-jobs/gnunet.nix { - inherit (pkgs) gnunet lib writeText; - gnunetConfig = config.services.gnunet; - }) - # Apache httpd. ++ optional (config.services.httpd.enable && !config.services.httpd.experimental) (import ../upstart-jobs/httpd.nix { diff --git a/upstart-jobs/gnunet.nix b/upstart-jobs/gnunet.nix index 3b3de2d97b3..5fe7579d8fe 100644 --- a/upstart-jobs/gnunet.nix +++ b/upstart-jobs/gnunet.nix @@ -1,64 +1,218 @@ -{ gnunet, gnunetConfig, lib, writeText }: +{pkgs, config, ...}: -assert gnunetConfig.enable; +###### interface +let + inherit (pkgs.lib) mkOption mkIf; -{ - name = "gnunetd"; + options = { + services = { + gnunet = { + + enable = mkOption { + default = false; + description = '' + Whether to run the GNUnet daemon. GNUnet is GNU's anonymous + peer-to-peer communication and file sharing framework. + ''; + }; - users = [ - { name = "gnunetd"; - uid = (import ../system/ids.nix).uids.gnunetd; - description = "GNUnet Daemon User"; - home = "/var/empty"; - } + home = mkOption { + default = "/var/lib/gnunet"; + description = '' + Directory where the GNUnet daemon will store its data. + ''; + }; + + debug = mkOption { + default = false; + description = '' + When true, run in debug mode; gnunetd will not daemonize and + error messages will be written to stderr instead of a + logfile. + ''; + }; + + logLevel = mkOption { + default = "ERROR"; + example = "INFO"; + description = '' + Log level of the deamon (see `gnunetd(1)' for details). + ''; + }; + + hostLists = mkOption { + default = [ + "http://gnunet.org/hostlist.php" + "http://gnunet.mine.nu:8081/hostlist" + "http://vserver1236.vserver-on.de/hostlist-074" + ]; + description = '' + URLs of host lists. + ''; + }; + + + applications = mkOption { + default = [ "advertising" "getoption" "fs" "stats" "traffic" ]; + example = [ "chat" "fs" ]; + description = '' + List of GNUnet applications supported by the daemon. Note that + `fs', which means "file sharing", is probably the one you want. + ''; + }; + + transports = mkOption { + default = [ "udp" "tcp" "http" "nat" ]; + example = [ "smtp" "http" ]; + description = '' + List of transport methods used by the server. + ''; + }; + + fileSharing = { + quota = mkOption { + default = 1024; + description = '' + Maximum file system usage (in MiB) for file sharing. + ''; + }; + + activeMigration = mkOption { + default = false; + description = '' + Whether to allow active migration of content originating + from other nodes. + ''; + }; + }; + + load = { + maxNetDownBandwidth = mkOption { + default = 50000; + description = '' + Maximum bandwidth usage (in bits per second) for GNUnet + when downloading data. + ''; + }; + + maxNetUpBandwidth = mkOption { + default = 50000; + description = '' + Maximum bandwidth usage (in bits per second) for GNUnet + when downloading data. + ''; + }; + + hardNetUpBandwidth = mkOption { + default = 0; + description = '' + Hard bandwidth limit (in bits per second) when uploading + data. + ''; + }; + + maxCPULoad = mkOption { + default = 100; + description = '' + Maximum CPU load (percentage) authorized for the GNUnet + daemon. + ''; + }; + + interfaces = mkOption { + default = [ "eth0" ]; + example = [ "wlan0" "eth1" ]; + description = '' + List of network interfaces to use. + ''; + }; + }; + + extraOptions = mkOption { + default = ""; + example = '' + [NETWORK] + INTERFACE = eth3 + ''; + description = '' + Additional options that will be copied verbatim in `gnunetd.conf'. + See `gnunetd.conf(5)' for details. + ''; + }; + }; + }; + }; +in + +###### implementation + +mkIf config.services.gnunet.enable { + require = [ + options ]; - job = - with gnunetConfig; - let configFile = writeText "gnunetd.conf" '' - [PATHS] - GNUNETD_HOME = ${home} + users = { + extraUsers = [ + { name = "gnunetd"; + uid = (import ../system/ids.nix).uids.gnunetd; + description = "GNUnet Daemon User"; + home = "/var/empty"; + } + ]; + }; - [GNUNETD] - HOSTLISTURL = ${lib.concatStringsSep " " hostLists} - APPLICATIONS = ${lib.concatStringsSep " " applications} - TRANSPORTS = ${lib.concatStringsSep " " transports} + services = { + extraJobs = [{ + name = "gnunetd"; - [LOAD] - MAXNETDOWNBPSTOTAL = ${toString load.maxNetDownBandwidth} - MAXNETUPBPSTOTAL = ${toString load.maxNetUpBandwidth} - HARDUPLIMIT = ${toString load.hardNetUpBandwidth} - MAXCPULOAD = ${toString load.maxCPULoad} - INTERFACES = ${lib.concatStringsSep " " load.interfaces} + job = + with config.services.gnunet; + let + inherit (pkgs) lib gnunet; + configFile = pkgs.writeText "gnunetd.conf" '' + [PATHS] + GNUNETD_HOME = ${home} - [FS] - QUOTA = ${toString fileSharing.quota} - ACTIVEMIGRATION = ${if fileSharing.activeMigration then "YES" else "NO"} + [GNUNETD] + HOSTLISTURL = ${lib.concatStringsSep " " hostLists} + APPLICATIONS = ${lib.concatStringsSep " " applications} + TRANSPORTS = ${lib.concatStringsSep " " transports} - [MODULES] - sqstore = sqstore_sqlite - dstore = dstore_sqlite - topology = topology_default + [LOAD] + MAXNETDOWNBPSTOTAL = ${toString load.maxNetDownBandwidth} + MAXNETUPBPSTOTAL = ${toString load.maxNetUpBandwidth} + HARDUPLIMIT = ${toString load.hardNetUpBandwidth} + MAXCPULOAD = ${toString load.maxCPULoad} + INTERFACES = ${lib.concatStringsSep " " load.interfaces} - ${extraOptions} - ''; + [FS] + QUOTA = ${toString fileSharing.quota} + ACTIVEMIGRATION = ${if fileSharing.activeMigration then "YES" else "NO"} - in '' -description "The GNUnet Daemon" + [MODULES] + sqstore = sqstore_sqlite + dstore = dstore_sqlite + topology = topology_default -start on network-interfaces/started -stop on network-interfaces/stop + ${extraOptions} + ''; + in '' + description "The GNUnet Daemon" -start script - test -d "${home}" || \ - ( mkdir -m 755 -p "${home}" && chown -R gnunetd:users "${home}") -end script + start on network-interfaces/started + stop on network-interfaces/stop -respawn ${gnunet}/bin/gnunetd \ - ${if debug then "--debug" else "" } \ - --user="gnunetd" \ - --config="${configFile}" \ - --log="${logLevel}" -''; + start script + test -d "${home}" || \ + ( mkdir -m 755 -p "${home}" && chown -R gnunetd:users "${home}") + end script + respawn ${gnunet}/bin/gnunetd \ + ${if debug then "--debug" else "" } \ + --user="gnunetd" \ + --config="${configFile}" \ + --log="${logLevel}" + ''; + }]; + }; }