at 15.09-beta 2.3 kB view raw
1{ config, lib, pkgs, ... }: 2 3with pkgs; 4with lib; 5 6let 7 cfg = config.networking.connman; 8 9in { 10 11 ###### interface 12 13 options = { 14 15 networking.connman = { 16 17 enable = mkOption { 18 type = types.bool; 19 default = false; 20 description = '' 21 Whether to use ConnMan for managing your network connections. 22 ''; 23 }; 24 25 }; 26 27 }; 28 29 ###### implementation 30 31 config = mkIf cfg.enable { 32 33 assertions = [{ 34 assertion = config.networking.useDHCP == false; 35 message = "You can not use services.networking.connman with services.networking.useDHCP"; 36 }{ 37 assertion = config.networking.wireless.enable == true; 38 message = "You must use services.networking.connman with services.networking.wireless"; 39 }{ 40 assertion = config.networking.networkmanager.enable == false; 41 message = "You can not use services.networking.connman with services.networking.networkmanager"; 42 }]; 43 44 environment.systemPackages = [ connman ]; 45 46 systemd.services."connman" = { 47 description = "Connection service"; 48 wantedBy = [ "multi-user.target" ]; 49 after = [ "syslog.target" ]; 50 serviceConfig = { 51 Type = "dbus"; 52 BusName = "net.connman"; 53 Restart = "on-failure"; 54 ExecStart = "${pkgs.connman}/sbin/connmand --nodaemon"; 55 StandardOutput = "null"; 56 }; 57 }; 58 59 systemd.services."connman-vpn" = { 60 description = "ConnMan VPN service"; 61 wantedBy = [ "multi-user.target" ]; 62 after = [ "syslog.target" ]; 63 before = [ "connman" ]; 64 serviceConfig = { 65 Type = "dbus"; 66 BusName = "net.connman.vpn"; 67 ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n"; 68 StandardOutput = "null"; 69 }; 70 }; 71 72 systemd.services."net-connman-vpn" = { 73 description = "D-BUS Service"; 74 serviceConfig = { 75 Name = "net.connman.vpn"; 76 before = [ "connman" ]; 77 ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n"; 78 User = "root"; 79 SystemdService = "connman-vpn.service"; 80 }; 81 }; 82 83 networking = { 84 useDHCP = false; 85 wireless.enable = true; 86 networkmanager.enable = false; 87 }; 88 89 powerManagement.resumeCommands = '' 90 systemctl restart connman 91 ''; 92 93 }; 94}