diff --git a/src/home/default.nix b/src/home/default.nix index 2be179f..c640809 100644 --- a/src/home/default.nix +++ b/src/home/default.nix @@ -64,6 +64,7 @@ }; programs.home-manager.enable = true; + services.mpris-proxy.enable = true; xdg = { enable = true; diff --git a/src/home/gui/i3status-rust.nix b/src/home/gui/i3status-rust.nix index d1b8df7..f46f4bf 100644 --- a/src/home/gui/i3status-rust.nix +++ b/src/home/gui/i3status-rust.nix @@ -35,6 +35,10 @@ in blocks = [ { block = "sound"; + click = [{ + button = "left"; + cmd = lib.getExe' pkgs.pwvucontrol "pwvucontrol"; + }]; } { block = "net"; diff --git a/src/home/wm/common-i3.nix b/src/home/wm/common-i3.nix index 17aa224..b3fe0f7 100644 --- a/src/home/wm/common-i3.nix +++ b/src/home/wm/common-i3.nix @@ -1,9 +1,10 @@ { config , pkgs , lib -, light , menu , terminal +, light ? lib.getExe' pkgs.brightnessctl "brightnessctl" +, playerctl ? lib.getExe' pkgs.playerctl "playerctl" , sound ? "pactl" , alt ? "Mod1" , modifier ? "Mod4" @@ -137,8 +138,15 @@ in "${modifier}+Shift+k" = "move up"; "${modifier}+Shift+l" = "move right"; - "XF86MonBrightnessUp" = "exec --no-startup-id ${light} -A 10%"; - "XF86MonBrightnessDown" = "exec --no-startup-id ${light} -U 10%"; + # "XF86MonBrightnessUp" = "exec --no-startup-id ${light} -A 10%"; + # "XF86MonBrightnessDown" = "exec --no-startup-id ${light} -U 10%"; + "XF86MonBrightnessUp" = "exec --no-startup-id ${light} s +10%"; + "XF86MonBrightnessDown" = "exec --no-startup-id ${light} s 10%-"; + + "XF86AudioPlay" = "exec --no-startup-id ${playerctl} play-pause"; + "XF86AudioPause" = "exec --no-startup-id ${playerctl} play-pause"; + "XF86AudioNext" = "exec --no-startup-id ${playerctl} next"; + "XF86AudioPrev" = "exec --no-startup-id ${playerctl} previous"; }; modes = diff --git a/src/home/wm/i3.nix b/src/home/wm/i3.nix index ca8fcbc..09922e0 100644 --- a/src/home/wm/i3.nix +++ b/src/home/wm/i3.nix @@ -7,7 +7,6 @@ let clipboard-copy = lib.getExe' pkgs.xclip "xclip"; commonOptions = import ./common-i3.nix rec { inherit config lib pkgs; - light = lib.getExe' pkgs.light "light"; menu = lib.getExe' pkgs.dmenu "dmenu_run"; terminal = if config.programs.kitty.enable then @@ -38,10 +37,10 @@ in # modifier = "Mod4"; # terminal = "kitty"; keybindings = { - "XF86AudioRaiseVolume" = "exec --no-startup-id '${pactl} set-sink-volume @DEFAULT_SINK@ 1%'"; - "XF86AudioLowerVolume" = "exec --no-startup-id '${pactl} set-sink-volume @DEFAULT_SINK@ -1%'"; - "XF86AudioMute" = "exec --no-startup-id '${pactl} set-sink-volume @DEFAULT_SINK@ toggle'"; - "XF86AudioMicMute" = "exec --no-startup-id '${pactl} set-source-mute @DEFAULT_SOURCE@ toggle'"; + "XF86AudioRaiseVolume" = "exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ +1%"; + "XF86AudioLowerVolume" = "exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ -1%"; + "XF86AudioMute" = "exec --no-startup-id ${pactl} set-sink-mute @DEFAULT_SINK@ toggle"; + "XF86AudioMicMute" = "exec --no-startup-id ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"; "${commonOptions.modifier}+o" = "exec --no-startup-id ${maim} -s ~/pictures/screenshots/$(date +%Y-%m-%d-%H-%M-%S).png"; "${commonOptions.modifier}+Shift+o" = "exec --no-startup-id ${maim} -s | ${clipboard-copy} -selection clipboard -t image/png"; "PRINT" = "exec --no-startup-id ${maim} -s | ${clipboard-copy} -selection clipboard -t image/png"; diff --git a/src/home/wm/sway.nix b/src/home/wm/sway.nix index 704d7ad..2c7ea0c 100644 --- a/src/home/wm/sway.nix +++ b/src/home/wm/sway.nix @@ -8,7 +8,6 @@ let clipboard-copy = lib.getExe' pkgs.wl-clipboard "wl-copy"; commonOptions = import ./common-i3.nix rec { inherit config lib pkgs; - light = lib.getExe' pkgs.light "light"; menu = lib.getExe' pkgs.bemenu "bemenu-run"; terminal = if config.programs.kitty.enable then diff --git a/src/hosts/pickwick/default.nix b/src/hosts/pickwick/default.nix index c9741a7..977dc29 100644 --- a/src/hosts/pickwick/default.nix +++ b/src/hosts/pickwick/default.nix @@ -37,6 +37,7 @@ custom = { touchpad.enable = true; fingerprint.enable = true; + bluetooth.enable = true; wm = { i3.enable = true; sway.enable = true; diff --git a/src/nixos/bluetooth.nix b/src/nixos/bluetooth.nix new file mode 100644 index 0000000..173b9ba --- /dev/null +++ b/src/nixos/bluetooth.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, ... }: + +{ + options.custom = with lib; { + bluetooth = { + enable = mkEnableOption "Bluetooth"; + }; + }; + + config = lib.mkIf config.custom.bluetooth.enable { + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + settings = { + General = { + Enable = "Source,Sink,Media,Socket"; + Experimental = true; + }; + }; + }; + services.blueman = { + enable = true; + }; + custom.persist = { + root.directories = [ + "/var/lib/bluetooth" + ]; + }; + }; +} diff --git a/src/nixos/default.nix b/src/nixos/default.nix index bc28e42..28c2fa7 100644 --- a/src/nixos/default.nix +++ b/src/nixos/default.nix @@ -8,6 +8,7 @@ { imports = [ ./1password.nix + ./bluetooth.nix ./displaymanager.nix ./fonts.nix ./fingerprint.nix diff --git a/src/nixos/pipewire.nix b/src/nixos/pipewire.nix index 1de36da..fe3c85f 100644 --- a/src/nixos/pipewire.nix +++ b/src/nixos/pipewire.nix @@ -19,11 +19,23 @@ main."monitor.libcamera" = "disabled"; }; }; + "10-bluez" = { + "monitor.bluez.properties" = { + "bluez5.enable-sbc-xq" = true; + "bluez5.enable-msbc" = true; + "bluez5.enable-hw-volume" = true; + "bluez5.roles" = [ + "hsp_hs" + "hsp_ag" + "hfp_hf" + "hfp_ag" + ]; + }; + }; }; }; }; hardware.pulseaudio.enable = false; - environment.systemPackages = with pkgs; [ pwvucontrol ]; }