From b1b6a6c395ed67a65b64ac1f92be6a9edc956dd5 Mon Sep 17 00:00:00 2001 From: joshashtondev Date: Tue, 22 Sep 2026 15:39:56 -0600 Subject: [PATCH] =?UTF-8?q?nixos:=20gen=2067=20@=20lilac=20=E2=80=94=20202?= =?UTF-8?q?6-09-22=2015:39=2026.05.20260918.cf9d2fb=20(Yarara)=20-----=20I?= =?UTF-8?q?P=20over=20bluetooth=20for=20seamless=20LAN-Mouse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hosts/lilac/default.nix | 36 ++++++++++++++++++++++++++++++++---- hosts/violet/default.nix | 34 ++++++++++++++++++++++++++++++++-- system/network/default.nix | 5 +++++ 3 files changed, 69 insertions(+), 6 deletions(-) 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 '';