diff --git a/flake.lock b/flake.lock index d22245c..a8868fa 100644 --- a/flake.lock +++ b/flake.lock @@ -176,11 +176,11 @@ ] }, "locked": { - "lastModified": 1726325969, - "narHash": "sha256-Mlw7009cdFry9OHpS6jy294lXhb+gcRa0iS2hYhkC6s=", + "lastModified": 1723685519, + "narHash": "sha256-GkXQIoZmW2zCPp1YFtAYGg/xHNyFH/Mgm79lcs81rq0=", "owner": "nix-community", "repo": "disko", - "rev": "3632080c41d7a657995807689a08ef6c4bcb2c72", + "rev": "276a0d055a720691912c6a34abb724e395c8e38a", "type": "github" }, "original": { @@ -393,11 +393,11 @@ ] }, "locked": { - "lastModified": 1725703823, - "narHash": "sha256-tDgM4d8mLK0Hd6YMB2w1BqMto1XBXADOzPEaLl10VI4=", + "lastModified": 1720042825, + "narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=", "owner": "nix-community", "repo": "home-manager", - "rev": "208df2e558b73b6a1f0faec98493cb59a25f62ba", + "rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073", "type": "github" }, "original": { @@ -414,11 +414,11 @@ ] }, "locked": { - "lastModified": 1725765290, - "narHash": "sha256-hwX53i24KyWzp2nWpQsn8lfGQNCP0JoW/bvQmcR1DPY=", + "lastModified": 1723352546, + "narHash": "sha256-WTIrvp0yV8ODd6lxAq4F7EbrPQv0gscBnyfn559c3k8=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "642275444c5a9defce57219c944b3179bf2adaa9", + "rev": "ec78079a904d7d55e81a0468d764d0fffb50ac06", "type": "github" }, "original": { @@ -456,11 +456,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1726062281, - "narHash": "sha256-PyFVySdGj3enKqm8RQuo4v1KLJLmNLOq2yYOHsI6e2Q=", + "lastModified": 1723556749, + "narHash": "sha256-+CHVZnTnIYRLYsARInHYoWkujzcRkLY/gXm3s5bE52o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e65aa8301ba4f0ab8cb98f944c14aa9da07394f8", + "rev": "4a92571f9207810b559c9eac203d1f4d79830073", "type": "github" }, "original": { diff --git a/scripts/auto_connect_gamepad b/scripts/auto_connect_gamepad new file mode 100755 index 0000000..d373281 --- /dev/null +++ b/scripts/auto_connect_gamepad @@ -0,0 +1,27 @@ +#!/bin/sh + +list_paired_controllers() { + bluetoothctl devices Paired | grep 'Controller' | cut -d' ' -f2 +} + +count_connected_controllers() { + bluetoothctl devices Connected | grep 'Controller' | wc -l +} + +try_to_connect_to_all_controllers() { + list_paired_controllers | while read paired_controller; do + echo "Trying to connect to controller $paired_controller" + bluetoothctl connect "$paired_controller" + done +} + +while true; do + echo "looping" + if test "$(count_connected_controllers)" -ne 0 ; then + echo "there is a controller connected, not attempting to connect to any other" + sleep 10s + continue + fi + sleep 1s + try_to_connect_to_all_controllers +done diff --git a/scripts/default.nix b/scripts/default.nix index 0e88436..47aaac5 100644 --- a/scripts/default.nix +++ b/scripts/default.nix @@ -124,6 +124,11 @@ zbar wl-clipboard ]; + auto_connect_gamepad = [ + bluez + coreutils + gnugrep + ]; powerplay-led-idle = [ bash libinput diff --git a/system/bluetooth.nix b/system/bluetooth.nix index a5d00c0..1bcea1f 100644 --- a/system/bluetooth.nix +++ b/system/bluetooth.nix @@ -6,7 +6,7 @@ settings = { General = { DiscoverableTimeout = 0; - Discoverable = true; + # Discoverable = true; AlwaysPairable = true; }; Policy = { diff --git a/user/controller.nix b/user/controller.nix new file mode 100644 index 0000000..fe08a98 --- /dev/null +++ b/user/controller.nix @@ -0,0 +1,26 @@ +{ pkgs, lib, ... }: +{ + systemd.user.services = { + autoconnect-gamepad = { + Unit = { + Description = "Attempt to connect to game controllers"; + PartOf = [ "graphical-session.target" ]; + After = [ "graphical-session.target" ]; + }; + Service = { + ExecStart = lib.getExe pkgs.auto_connect_gamepad; + }; + Install = { + WantedBy = [ "sway-session.target" ]; + }; + }; + }; + + xdg.desktopEntries = { + disconnect-controller = { + name = "Disconnect Controller"; + exec = "bluetoothctl disconnect 84:30:95:97:1A:79"; + terminal = false; + }; + }; +} diff --git a/user/home.nix b/user/home.nix index 315ea4b..e606b4f 100644 --- a/user/home.nix +++ b/user/home.nix @@ -8,6 +8,7 @@ }: { imports = [ + ./controller.nix ./waybar ./helix.nix ./kakoune