at 17.09-beta 1.1 kB view raw
1{ config, lib, pkgs, ... }: 2 3with lib; 4 5let 6 cfg = config.services.zerotierone; 7in 8{ 9 options.services.zerotierone.enable = mkEnableOption "ZeroTierOne"; 10 options.services.zerotierone.package = mkOption { 11 default = pkgs.zerotierone; 12 defaultText = "pkgs.zerotierone"; 13 type = types.package; 14 description = '' 15 ZeroTier One package to use. 16 ''; 17 }; 18 19 config = mkIf cfg.enable { 20 systemd.services.zerotierone = { 21 description = "ZeroTierOne"; 22 path = [ cfg.package ]; 23 after = [ "network.target" ]; 24 wantedBy = [ "multi-user.target" ]; 25 preStart = 26 '' 27 mkdir -p /var/lib/zerotier-one 28 chmod 700 /var/lib/zerotier-one 29 chown -R root:root /var/lib/zerotier-one 30 ''; 31 serviceConfig = { 32 ExecStart = "${cfg.package}/bin/zerotier-one"; 33 Restart = "always"; 34 KillMode = "process"; 35 }; 36 }; 37 38 # ZeroTier does not issue DHCP leases, but some strangers might... 39 networking.dhcpcd.denyInterfaces = [ "zt0" ]; 40 41 environment.systemPackages = [ cfg.package ]; 42 }; 43}