diff --git a/hosts/lilac/default.nix b/hosts/lilac/default.nix index 6e78387..b32714a 100644 --- a/hosts/lilac/default.nix +++ b/hosts/lilac/default.nix @@ -32,14 +32,42 @@ in (llama-cpp.override { vulkanSupport = true; }) ]; - boot.kernelModules = [ "thunderbolt-net" ]; - - networking.interfaces.thunderbolt0.ipv4.addresses = [{ + networking.interfaces.bnep0.ipv4.addresses = [{ address = "10.0.0.1"; prefixLength = 24; }]; - networking.firewall.interfaces."thunderbolt0".allowedUDPPorts = [ 4242 ]; + networking.firewall.interfaces."bnep0".allowedUDPPorts = [ 4242 ]; + + systemd = { + services = { + # 1. Start the listening server profile + bt-pan-server = { + description = "Bluetooth PAN GN Server"; + after = [ "bluetooth.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${pkgs.bluez-tools}/bin/bt-network -s gn pan0"; + Restart = "always"; + RestartSec = 5; + }; + }; + + # 2. Trust and persistently attempt connection to Device B + bt-pan-client = { + description = "Bluetooth PAN Client Connection to Device B"; + after = [ "bluetooth.service" "bt-pan-server.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + # Replace XX:XX:XX:XX:XX:XX with Device B's actual Bluetooth MAC Address + ExecStartPre = "${pkgs.bluez}/bin/bluetoothctl trust 70:A6:CC:47:E7:75"; + ExecStart = "${pkgs.bluez-tools}/bin/bt-network -c 70:A6:CC:47:E7:75 gn"; + Restart = "always"; + RestartSec = 10; # Retry every 10 seconds if Device B goes out of range + }; + }; + }; + }; hardware.graphics = { enable = true; diff --git a/hosts/violet/default.nix b/hosts/violet/default.nix index b9e442f..4470586 100644 --- a/hosts/violet/default.nix +++ b/hosts/violet/default.nix @@ -25,12 +25,42 @@ boot.kernelModules = [ "thunderbolt-net" ]; - networking.interfaces.thunderbolt0.ipv4.addresses = [{ + networking.interfaces.bnep0.ipv4.addresses = [{ address = "10.0.0.2"; prefixLength = 24; }]; - networking.firewall.interfaces."thunderbolt0".allowedUDPPorts = [ 4242 ]; + networking.firewall.interfaces."bnep0".allowedUDPPorts = [ 4242 ]; + + systemd = { + services = { + # 1. Start the listening server profile + bt-pan-server = { + description = "Bluetooth PAN GN Server"; + after = [ "bluetooth.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${pkgs.bluez-tools}/bin/bt-network -s gn pan0"; + Restart = "always"; + RestartSec = 5; + }; + }; + + # 2. Trust and persistently attempt connection to Device A + bt-pan-client = { + description = "Bluetooth PAN Client Connection to Device A"; + after = [ "bluetooth.service" "bt-pan-server.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + # Replace XX:XX:XX:XX:XX:XX with Device B's actual Bluetooth MAC Address + ExecStartPre = "${pkgs.bluez}/bin/bluetoothctl trust 84:D1:C1:A9:EE:52"; + ExecStart = "${pkgs.bluez-tools}/bin/bt-network -c 84:D1:C1:A9:EE:52 gn"; + Restart = "always"; + RestartSec = 10; # Retry every 10 seconds if Device B goes out of range + }; + }; + }; + }; services.tlp = { enable = false; diff --git a/system/network/default.nix b/system/network/default.nix index 343c883..660aa46 100644 --- a/system/network/default.nix +++ b/system/network/default.nix @@ -17,6 +17,11 @@ }; }; + hardware.bluetooth = { + powerOnBoot = true; + settings.General.Enable = "Source,Sink,Media,Socket,Network"; + }; + boot.extraModprobeConfig = '' options iwlwifi power_save=0 '';