From bb3ea37eeed0da6dbd2c6a6c08abbdd16cf5f875 Mon Sep 17 00:00:00 2001 From: legendofmiracles Date: Fri, 1 Oct 2021 18:08:39 -0600 Subject: [PATCH 1/2] nixos/networking: add the wakeonlan option --- nixos/doc/manual/from_md/release-notes/rl-2111.section.xml | 7 +++++++ nixos/doc/manual/release-notes/rl-2111.section.md | 2 ++ nixos/modules/tasks/network-interfaces-scripted.nix | 2 ++ nixos/modules/tasks/network-interfaces.nix | 7 +++++++ 4 files changed, 18 insertions(+) diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml index 0688de77af68..64ada2c75344 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml @@ -326,6 +326,13 @@
Backward Incompatibilities + + + The services.wakeonlan option was removed, + and replaced with + networking.interfaces.<name>.wakeOnLan. + + The security.wrappers option now requires diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index 56babf8ac006..3018a26d520f 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -101,6 +101,8 @@ In addition to numerous new and upgraded packages, this release has the followin ## Backward Incompatibilities {#sec-release-21.11-incompatibilities} +- The `services.wakeonlan` option was removed, and replaced with `networking.interfaces..wakeOnLan`. + - The `security.wrappers` option now requires to always specify an owner, group and whether the setuid/setgid bit should be set. This is motivated by the fact that before NixOS 21.11, specifying either setuid or setgid but not owner/group resulted in wrappers owned by nobody/nogroup, which is unsafe. diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix index 11bd159319a3..79624ec7072c 100644 --- a/nixos/modules/tasks/network-interfaces-scripted.nix +++ b/nixos/modules/tasks/network-interfaces-scripted.nix @@ -61,6 +61,8 @@ let MACAddress = i.macAddress; } // optionalAttrs (i.mtu != null) { MTUBytes = toString i.mtu; + } // optionalAttrs (i.wakeOnLan.enable == true) { + WakeOnLan = "magic"; }; }; in listToAttrs (map createNetworkLink interfaces); diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix index 34a44b383a49..82893d91fbba 100644 --- a/nixos/modules/tasks/network-interfaces.nix +++ b/nixos/modules/tasks/network-interfaces.nix @@ -284,6 +284,13 @@ let ''; }; + wakeOnLan = { + enable = mkOption { + type = types.bool; + default = false; + description = "Wether to enable wol on this interface."; + }; + }; }; config = { From 31f04fec3c4c993d75ea4c7243fbc57103525282 Mon Sep 17 00:00:00 2001 From: legendofmiracles Date: Sat, 2 Oct 2021 09:41:02 -0600 Subject: [PATCH 2/2] nixos/wakeonlan: remove --- nixos/modules/module-list.nix | 1 - .../modules/services/networking/wakeonlan.nix | 70 ------------------- 2 files changed, 71 deletions(-) delete mode 100644 nixos/modules/services/networking/wakeonlan.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index bff7b83ea711..16a863a649c3 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -878,7 +878,6 @@ ./services/video/unifi-video.nix ./services/networking/v2ray.nix ./services/networking/vsftpd.nix - ./services/networking/wakeonlan.nix ./services/networking/wasabibackend.nix ./services/networking/websockify.nix ./services/networking/wg-quick.nix diff --git a/nixos/modules/services/networking/wakeonlan.nix b/nixos/modules/services/networking/wakeonlan.nix deleted file mode 100644 index c6291366b0f1..000000000000 --- a/nixos/modules/services/networking/wakeonlan.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let - interfaces = config.services.wakeonlan.interfaces; - - ethtool = "${pkgs.ethtool}/sbin/ethtool"; - - passwordParameter = password : if (password == "") then "" else - "sopass ${password}"; - - methodParameter = {method, password} : - if method == "magicpacket" then "wol g" - else if method == "password" then "wol s so ${passwordParameter password}" - else throw "Wake-On-Lan method not supported"; - - line = { interface, method ? "magicpacket", password ? "" }: '' - ${ethtool} -s ${interface} ${methodParameter {inherit method password;}} - ''; - - concatStrings = foldr (x: y: x + y) ""; - lines = concatStrings (map (l: line l) interfaces); - -in -{ - - ###### interface - - options = { - - services.wakeonlan.interfaces = mkOption { - default = [ ]; - type = types.listOf (types.submodule { options = { - interface = mkOption { - type = types.str; - description = "Interface to enable for Wake-On-Lan."; - }; - method = mkOption { - type = types.enum [ "magicpacket" "password"]; - description = "Wake-On-Lan method for this interface."; - }; - password = mkOption { - type = types.strMatching "[a-fA-F0-9]{2}:([a-fA-F0-9]{2}:){4}[a-fA-F0-9]{2}"; - description = "The password has the shape of six bytes in hexadecimal separated by a colon each."; - }; - };}); - example = [ - { - interface = "eth0"; - method = "password"; - password = "00:11:22:33:44:55"; - } - ]; - description = '' - Interfaces where to enable Wake-On-LAN, and how. Two methods available: - "magicpacket" and "password". The password has the shape of six bytes - in hexadecimal separated by a colon each. For more information, - check the ethtool manual. - ''; - }; - - }; - - - ###### implementation - - config.powerManagement.powerUpCommands = lines; - -}