summary refs log tree commit diff
path: root/upstart-jobs/gnunet.nix
diff options
context:
space:
mode:
authorMarc Weber <marco-oweber@gmx.de>2009-03-06 12:26:26 +0000
committerMarc Weber <marco-oweber@gmx.de>2009-03-06 12:26:26 +0000
commit931f68c924cbeaba418bb9d33229deb744f324cf (patch)
treeac6526d9683babe818ceb18bef29f3c8391933fa /upstart-jobs/gnunet.nix
parentf9f61c0a1e3e744807b3323b6d558fb7c960293c (diff)
downloadnixpkgs-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.nix268
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}"
+            '';
+    }];
+  };
 }