diff options
author | Marc Weber <marco-oweber@gmx.de> | 2009-03-06 12:26:26 +0000 |
---|---|---|
committer | Marc Weber <marco-oweber@gmx.de> | 2009-03-06 12:26:26 +0000 |
commit | 931f68c924cbeaba418bb9d33229deb744f324cf (patch) | |
tree | ac6526d9683babe818ceb18bef29f3c8391933fa /upstart-jobs/gnunet.nix | |
parent | f9f61c0a1e3e744807b3323b6d558fb7c960293c (diff) | |
download | nixpkgs-931f68c924cbeaba418bb9d33229deb744f324cf.tar nixpkgs-931f68c924cbeaba418bb9d33229deb744f324cf.tar.gz nixpkgs-931f68c924cbeaba418bb9d33229deb744f324cf.tar.bz2 nixpkgs-931f68c924cbeaba418bb9d33229deb744f324cf.tar.lz nixpkgs-931f68c924cbeaba418bb9d33229deb744f324cf.tar.xz nixpkgs-931f68c924cbeaba418bb9d33229deb744f324cf.tar.zst nixpkgs-931f68c924cbeaba418bb9d33229deb744f324cf.zip |
Convert "gnunet"
svn path=/nixos/branches/fix-style/; revision=14377
Diffstat (limited to 'upstart-jobs/gnunet.nix')
-rw-r--r-- | upstart-jobs/gnunet.nix | 268 |
1 files changed, 211 insertions, 57 deletions
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} - - [GNUNETD] - HOSTLISTURL = ${lib.concatStringsSep " " hostLists} - APPLICATIONS = ${lib.concatStringsSep " " applications} - TRANSPORTS = ${lib.concatStringsSep " " transports} - - [LOAD] - MAXNETDOWNBPSTOTAL = ${toString load.maxNetDownBandwidth} - MAXNETUPBPSTOTAL = ${toString load.maxNetUpBandwidth} - HARDUPLIMIT = ${toString load.hardNetUpBandwidth} - MAXCPULOAD = ${toString load.maxCPULoad} - INTERFACES = ${lib.concatStringsSep " " load.interfaces} - - [FS] - QUOTA = ${toString fileSharing.quota} - ACTIVEMIGRATION = ${if fileSharing.activeMigration then "YES" else "NO"} - - [MODULES] - sqstore = sqstore_sqlite - dstore = dstore_sqlite - topology = topology_default - - ${extraOptions} - ''; - - in '' -description "The GNUnet Daemon" - -start on network-interfaces/started -stop on network-interfaces/stop - -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}" -''; + users = { + extraUsers = [ + { name = "gnunetd"; + uid = (import ../system/ids.nix).uids.gnunetd; + description = "GNUnet Daemon User"; + home = "/var/empty"; + } + ]; + }; + + services = { + extraJobs = [{ + name = "gnunetd"; + + job = + with config.services.gnunet; + let + inherit (pkgs) lib gnunet; + configFile = pkgs.writeText "gnunetd.conf" '' + [PATHS] + GNUNETD_HOME = ${home} + + [GNUNETD] + HOSTLISTURL = ${lib.concatStringsSep " " hostLists} + APPLICATIONS = ${lib.concatStringsSep " " applications} + TRANSPORTS = ${lib.concatStringsSep " " transports} + + [LOAD] + MAXNETDOWNBPSTOTAL = ${toString load.maxNetDownBandwidth} + MAXNETUPBPSTOTAL = ${toString load.maxNetUpBandwidth} + HARDUPLIMIT = ${toString load.hardNetUpBandwidth} + MAXCPULOAD = ${toString load.maxCPULoad} + INTERFACES = ${lib.concatStringsSep " " load.interfaces} + + [FS] + QUOTA = ${toString fileSharing.quota} + ACTIVEMIGRATION = ${if fileSharing.activeMigration then "YES" else "NO"} + + [MODULES] + sqstore = sqstore_sqlite + dstore = dstore_sqlite + topology = topology_default + + ${extraOptions} + ''; + in '' + description "The GNUnet Daemon" + + start on network-interfaces/started + stop on network-interfaces/stop + + 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}" + ''; + }]; + }; } |