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