Author: mkwik
Date: Sun Mar  4 12:58:22 2012
New Revision: 32767
URL: https://nixos.org/websvn/nix/?rev=32767&sc=1

Log:
gogoclient: ipv6 tunnel module

meant to replace the obsolete gw6c module
builds fine on stdenv-updates branch

Added:
   nixos/trunk/modules/services/networking/gogoclient.nix
Modified:
   nixos/trunk/modules/module-list.nix

Modified: nixos/trunk/modules/module-list.nix
==============================================================================
--- nixos/trunk/modules/module-list.nix Sun Mar  4 12:58:18 2012        (r32766)
+++ nixos/trunk/modules/module-list.nix Sun Mar  4 12:58:22 2012        (r32767)
@@ -121,6 +121,7 @@
   ./services/networking/flashpolicyd.nix
   ./services/networking/git-daemon.nix
   ./services/networking/gnunet.nix
+  ./services/networking/gogoclient.nix
   ./services/networking/gvpe.nix
   ./services/networking/gw6c/default.nix
   ./services/networking/ifplugd.nix

Added: nixos/trunk/modules/services/networking/gogoclient.nix
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ nixos/trunk/modules/services/networking/gogoclient.nix      Sun Mar  4 
12:58:22 2012        (r32767)
@@ -0,0 +1,88 @@
+{pkgs, config, ...}:
+
+with pkgs.lib;
+
+let cfg = config.services.gogoclient;
+in
+
+{
+
+  ###### interface
+
+  options = {
+    services.gogoclient = {
+      enable = mkOption {
+        default = false;
+        type =  types.bool;
+        description = ''
+          Enable the gogoclient ipv6 tunnel.
+        '';
+      };
+      autorun = mkOption {
+        default = true;
+        description = "
+          Switch to false to create upstart-job and configuration,
+          but not run it automatically
+        ";
+      };
+
+      username = mkOption {
+        default = "";
+        description = "
+          Your Gateway6 login name, if any.
+        ";
+      };
+
+      password = mkOption {
+        default = "";
+        type = types.string;
+        description = "
+          Path to a file (as a string), containing your gogonet password, if 
any.
+        ";
+      };
+
+      server = mkOption {
+        default = "anonymous.freenet6.net";
+        example = "broker.freenet6.net";
+        description = "
+          Used Gateway6 server.
+        ";
+      };
+    };
+  };
+
+  ###### implementation
+
+  config = mkIf cfg.enable {
+    boot.kernelModules = [ "tun" ];
+
+    # environment.systemPackages = [pkgs.gogoclient];
+
+    networking = {
+      enableIPv6 = true;
+      interfaceJobs = optional cfg.autorun config.jobs.gogoclient;
+    };
+
+    jobs.gogoclient = {
+      name = "gogoclient";
+      description = "ipv6 tunnel";
+      startOn = if cfg.autorun then "started network-interfaces" else "";
+      stopOn = "stopping network-interfaces";
+      script = "cd /var/lib/gogoc; exec gogoc -y -f /etc/gogoc.conf";
+      path = [pkgs.gogoclient];
+    };
+
+    system.activationScripts.gogoClientConf = ''
+      mkdir -p /var/lib/gogoc
+      chmod 700 /var/lib/gogoc
+      install -m400 
${pkgs.gogoclient}/share/${pkgs.gogoclient.name}/gogoc.conf.sample 
/etc/gogoc.conf.default
+      ${pkgs.gnused}/bin/sed -i -e "s|^userid=|&${cfg.username}|" 
/etc/gogoc.conf.default
+      ${pkgs.gnused}/bin/sed -i -e "s|^passwd=|&${if cfg.password == "" then 
"" else "$(cat ${cfg.password})"}|" /etc/gogoc.conf.default
+      ${pkgs.gnused}/bin/sed -i -e "s|^server=.*|server=${cfg.server}|" 
/etc/gogoc.conf.default
+      ${pkgs.gnused}/bin/sed -i -e "s|^auth_method=.*|auth_method=${if 
cfg.password == "" then "anonymous" else "any"}|" /etc/gogoc.conf.default
+      ${pkgs.gnused}/bin/sed -i -e "s|^#log_file=|log_file=1|" 
/etc/gogoc.conf.default
+      mv /etc/gogoc.conf.default /etc/gogoc.conf
+    '';
+  };
+
+}
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to