Squashed commit of the following:
commit bf4873eb012235b4d82cd79c4f508064ead301ab Author: Joao Porta <jpedro.porta@gmail.com> Date: Fri Jul 17 17:24:26 2026 -0300 wake on lan
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.custom.wake-on-lan;
|
||||
|
||||
iface = "enp14s0";
|
||||
|
||||
mac = "d8:43:ae:5a:ae:12";
|
||||
|
||||
wake-jpporta-nixos = pkgs.writeShellScriptBin "wake-jpporta-nixos" ''
|
||||
exec ${pkgs.wakeonlan}/bin/wakeonlan -i "''${1:-255.255.255.255}" ${mac}
|
||||
'';
|
||||
in
|
||||
{
|
||||
options.custom.wake-on-lan = {
|
||||
enable = lib.mkEnableOption "Wake-on-LAN on the wired NIC (magic-packet mode)";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Keep `wol g` applied on the NIC after the link is up (boot path).
|
||||
systemd.services."wol-${iface}" = {
|
||||
description = "Enable Wake-on-LAN (magic packet) on ${iface}";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
wants = [
|
||||
"network-online.target"
|
||||
"NetworkManager.service"
|
||||
];
|
||||
after = [
|
||||
"network-online.target"
|
||||
"NetworkManager.service"
|
||||
"NetworkManager-wait-online.service"
|
||||
];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
ExecStart = "${pkgs.ethtool}/bin/ethtool -s ${iface} wol g";
|
||||
};
|
||||
};
|
||||
|
||||
# Re-apply `wol g` after resume from suspend / hibernate so NetworkManager
|
||||
# cannot silently drop the WOL flag on link renegotiation.
|
||||
systemd.services."wol-${iface}-resume" = {
|
||||
description = "Re-apply Wake-on-LAN (magic packet) on ${iface} after resume";
|
||||
wantedBy = [
|
||||
"suspend.target"
|
||||
"hibernate.target"
|
||||
"hybrid-sleep.target"
|
||||
];
|
||||
after = [
|
||||
"systemd-suspend.service"
|
||||
"systemd-hibernate.service"
|
||||
"systemd-hybrid-sleep.service"
|
||||
];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.ethtool}/bin/ethtool -s ${iface} wol g";
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.ethtool
|
||||
pkgs.wakeonlan
|
||||
wake-jpporta-nixos
|
||||
];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user