Compare commits
2 commits
996ba1cdda
...
1aed654aaa
Author | SHA1 | Date | |
---|---|---|---|
Antoine Martin | 1aed654aaa | ||
Antoine Martin | e0336d1367 |
|
@ -103,6 +103,14 @@ in
|
||||||
};
|
};
|
||||||
my.displayManager.sddm.enable = true;
|
my.displayManager.sddm.enable = true;
|
||||||
|
|
||||||
|
my.wakeonwlan.interfaces.phy0.methods = [
|
||||||
|
"magic-packet"
|
||||||
|
"disconnect"
|
||||||
|
"gtk-rekey-failure"
|
||||||
|
"eap-identity-request"
|
||||||
|
"rfkill-release"
|
||||||
|
];
|
||||||
|
|
||||||
services.udev.packages = with pkgs; [
|
services.udev.packages = with pkgs; [
|
||||||
packages.kaleidoscope-udev-rules
|
packages.kaleidoscope-udev-rules
|
||||||
];
|
];
|
||||||
|
|
|
@ -2,5 +2,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./sddm.nix
|
./sddm.nix
|
||||||
|
./wakeonwlan.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
63
modules/wakeonwlan.nix
Normal file
63
modules/wakeonwlan.nix
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.my.wakeonwlan;
|
||||||
|
|
||||||
|
mkWowlanService = name: cfg:
|
||||||
|
nameValuePair "wowlan-${name}" {
|
||||||
|
description = "Enable WoWLAN for interface ${name}";
|
||||||
|
requires = [ "network.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
${pkgs.iw}/bin/iw ${name} wowlan enable ${concatStringsSep " " cfg.methods}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.wakeonwlan = {
|
||||||
|
interfaces = mkOption {
|
||||||
|
default = { };
|
||||||
|
description = "Wireless interfaces where you want to enable WoWLAN";
|
||||||
|
example = literalExample ''
|
||||||
|
{
|
||||||
|
phy0.methods = [
|
||||||
|
"magic-packet"
|
||||||
|
"disconnect"
|
||||||
|
"gtk-rekey-failure"
|
||||||
|
"eap-identity-request"
|
||||||
|
"rfkill-release"
|
||||||
|
];
|
||||||
|
phy2.methods = [ "any" ];
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
type = types.attrsOf (
|
||||||
|
types.submodule {
|
||||||
|
options = {
|
||||||
|
methods = mkOption {
|
||||||
|
type = types.listOf (types.enum [
|
||||||
|
"4way-handshake"
|
||||||
|
"any"
|
||||||
|
"disconnect"
|
||||||
|
"eap-identity-request"
|
||||||
|
"gtk-rekey-failure"
|
||||||
|
"magic-packet"
|
||||||
|
"rfkill-release"
|
||||||
|
]);
|
||||||
|
description = "Wake-On-WiFiLan methods for this interface.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (cfg.interfaces != {}) {
|
||||||
|
systemd.services = mapAttrs' mkWowlanService cfg.interfaces;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue