95 lines
2.2 KiB
Nix
95 lines
2.2 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
with pkgs.lib;
|
|
with pkgs;
|
|
|
|
let
|
|
cfg = config.networking.connman;
|
|
|
|
in {
|
|
|
|
###### interface
|
|
|
|
options = {
|
|
|
|
networking.connman = {
|
|
|
|
enable = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Whether to use ConnMan for managing your network connections.
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
###### implementation
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
assertions = [{
|
|
assertion = config.networking.useDHCP == false;
|
|
message = "You can not use services.networking.connman with services.networking.useDHCP";
|
|
}{
|
|
assertion = config.networking.wireless.enable == true;
|
|
message = "You must use services.networking.connman with services.networking.wireless";
|
|
}{
|
|
assertion = config.networking.networkmanager.enable == false;
|
|
message = "You can not use services.networking.connman with services.networking.networkmanager";
|
|
}];
|
|
|
|
environment.systemPackages = [ connman ];
|
|
|
|
systemd.services."connman" = {
|
|
description = "Connection service";
|
|
wantedBy = [ "multi-user.target" ];
|
|
after = [ "syslog.target" ];
|
|
serviceConfig = {
|
|
Type = "dbus";
|
|
BusName = "net.connman";
|
|
Restart = "on-failure";
|
|
ExecStart = "${pkgs.connman}/sbin/connmand --nodaemon";
|
|
StandardOutput = "null";
|
|
};
|
|
};
|
|
|
|
systemd.services."connman-vpn" = {
|
|
description = "ConnMan VPN service";
|
|
wantedBy = [ "multi-user.target" ];
|
|
after = [ "syslog.target" ];
|
|
before = [ "connman" ];
|
|
serviceConfig = {
|
|
Type = "dbus";
|
|
BusName = "net.connman.vpn";
|
|
ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n";
|
|
StandardOutput = "null";
|
|
};
|
|
};
|
|
|
|
systemd.services."net-connman-vpn" = {
|
|
description = "D-BUS Service";
|
|
serviceConfig = {
|
|
Name = "net.connman.vpn";
|
|
before = [ "connman" ];
|
|
ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n";
|
|
User = "root";
|
|
SystemdService = "connman-vpn.service";
|
|
};
|
|
};
|
|
|
|
networking = {
|
|
useDHCP = false;
|
|
wireless.enable = true;
|
|
networkmanager.enable = false;
|
|
};
|
|
|
|
powerManagement.resumeCommands = ''
|
|
systemctl restart connman
|
|
'';
|
|
|
|
};
|
|
}
|