summary refs log tree commit diff
path: root/nixos/modules/services/networking/fan.nix
diff options
context:
space:
mode:
authorCharles Strahan <charles.c.strahan@gmail.com>2015-08-21 16:18:09 -0400
committerCharles Strahan <charles.c.strahan@gmail.com>2015-08-22 14:05:35 -0400
commit648973d6419992c28322954ad0205cb05ef87997 (patch)
treed1fa2409226db81db431062cf7b49fa932e277b9 /nixos/modules/services/networking/fan.nix
parent1be2b63d2704e82c9f2188b070b62aa0a8c36404 (diff)
downloadnixlib-648973d6419992c28322954ad0205cb05ef87997.tar
nixlib-648973d6419992c28322954ad0205cb05ef87997.tar.gz
nixlib-648973d6419992c28322954ad0205cb05ef87997.tar.bz2
nixlib-648973d6419992c28322954ad0205cb05ef87997.tar.lz
nixlib-648973d6419992c28322954ad0205cb05ef87997.tar.xz
nixlib-648973d6419992c28322954ad0205cb05ef87997.tar.zst
nixlib-648973d6419992c28322954ad0205cb05ef87997.zip
nixos: rename service 'ubuntu-fan' as 'fan'
Diffstat (limited to 'nixos/modules/services/networking/fan.nix')
-rw-r--r--nixos/modules/services/networking/fan.nix60
1 files changed, 60 insertions, 0 deletions
diff --git a/nixos/modules/services/networking/fan.nix b/nixos/modules/services/networking/fan.nix
new file mode 100644
index 000000000000..3170567e5b4a
--- /dev/null
+++ b/nixos/modules/services/networking/fan.nix
@@ -0,0 +1,60 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+  cfg = config.networking.fan;
+  modprobe = "${config.system.sbin.modprobe}/sbin/modprobe";
+
+in
+
+{
+
+  ###### interface
+
+  options = {
+
+    networking.fan = {
+
+      enable = mkEnableOption "FAN Networking";
+
+    };
+
+  };
+
+
+  ###### implementation
+
+  config = mkIf cfg.enable {
+
+    environment.systemPackages = [ pkgs.fanctl ];
+
+    systemd.services.fan = {
+      description = "FAN Networking";
+      wantedBy = [ "multi-user.target" ];
+      after = [ "network-online.target" ];
+      before = [ "docker.service" ];
+      restartIfChanged = false;
+      preStart = ''
+        if [ ! -f /proc/sys/net/fan/version ]; then
+          ${modprobe} ipip
+          if [ ! -f /proc/sys/net/fan/version ]; then
+            echo "The Fan Networking patches have not been applied to this kernel!" 1>&2
+            exit 1
+          fi
+        fi
+
+        mkdir -p /var/lib/fan-networking
+      '';
+      serviceConfig = {
+        Type = "oneshot";
+        RemainAfterExit = true;
+        ExecStart = "${pkgs.fanctl}/bin/fanctl up -a";
+        ExecStop = "${pkgs.fanctl}/bin/fanctl down -a";
+      };
+    };
+
+  };
+
+}