Add NetworkManager module
It works but it doesn't respect ignoredInterfaces etc. Probably I forgotten to create some directories (all of them exist on my laptop). Feel free to fix this module. svn path=/nixos/trunk/; revision=33097
This commit is contained in:
parent
34c2f2cf58
commit
339d5b2b48
@ -128,6 +128,7 @@
|
||||
./services/networking/ifplugd.nix
|
||||
./services/networking/ircd-hybrid/default.nix
|
||||
./services/networking/nat.nix
|
||||
./services/networking/networkmanager.nix
|
||||
./services/networking/ntpd.nix
|
||||
./services/networking/oidentd.nix
|
||||
./services/networking/openfire.nix
|
||||
|
80
modules/services/networking/networkmanager.nix
Normal file
80
modules/services/networking/networkmanager.nix
Normal file
@ -0,0 +1,80 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
|
||||
stateDir = "/var/lib/NetworkManager";
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
networking.networkmanager.enable = mkOption {
|
||||
default = false;
|
||||
merge = mergeEnableOption;
|
||||
description = ''
|
||||
Whether to use NetworkManager to obtain an IP adress and other
|
||||
configuration for all network interfaces that are not manually
|
||||
configured.
|
||||
'';
|
||||
};
|
||||
|
||||
networking.networkmanager.packages = mkOption {
|
||||
default = [ pkgs.networkmanager ];
|
||||
description =
|
||||
''
|
||||
Packages providing NetworkManager plugins.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.networking.networkmanager.enable {
|
||||
|
||||
jobs.networkmanager =
|
||||
{ startOn = "started network-interfaces";
|
||||
stopOn = "stopping network-interfaces";
|
||||
|
||||
script =
|
||||
''
|
||||
mkdir -m 755 -p /etc/NetworkManager
|
||||
mkdir -m 700 -p /etc/NetworkManager/system-connections
|
||||
mkdir -m 755 -p ${stateDir}
|
||||
|
||||
if [[ ! -f /etc/NetworkManager/NetworkManager.conf ]]; then
|
||||
cat <<-EOF > /etc/NetworkManager/NetworkManager.conf
|
||||
[main]
|
||||
plugins=keyfile
|
||||
EOF
|
||||
fi
|
||||
|
||||
exec ${pkgs.networkmanager}/sbin/NetworkManager --no-daemon
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = config.networking.networkmanager.packages;
|
||||
services.dbus.packages = config.networking.networkmanager.packages;
|
||||
networking.useDHCP = false;
|
||||
|
||||
environment.etc = [
|
||||
{
|
||||
source = pkgs.writeScript "01nixos-ip-up"
|
||||
''
|
||||
#!/bin/sh
|
||||
if test "$2" = "up"; then
|
||||
${pkgs.upstart}/sbin/initctl emit ip-up
|
||||
fi
|
||||
'';
|
||||
target = "NetworkManager/dispatcher.d/01nixos-ip-up";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user