{ inputs, pkgs, lib, config, ... }: let hyprlandEnabled = config.mod.hyprland.enable; in { home-manager.users.alex = { wayland.windowManager.hyprland = lib.mkIf hyprlandEnabled { settings = { bind = let prev = "${pkgs.playerctl}/bin/playerctl -p naviterm,spotify previous"; next = "${pkgs.playerctl}/bin/playerctl -p naviterm,spotify next"; mkExec = key: cmd: { _args = [ key (lib.generators.mkLuaInline ''hl.dsp.exec_cmd("${cmd}")'') ]; }; in [ (mkExec "XF86AudioPrev" prev) (mkExec "XF86AudioNext" next) (mkExec "XF86AudioPlay" "${pkgs.playerctl}/bin/playerctl -p naviterm,spotify play-pause") (mkExec "XF86AudioPause" "${pkgs.playerctl}/bin/playerctl -p naviterm,spoitfy play-pause") (mkExec "SUPER + ALT + LEFT" prev) (mkExec "SUPER + ALT + RIGHT" next) (mkExec "SUPER + ALT + DOWN" "${pkgs.playerctl}/bin/playerctl -p naviterm,spotify play-pause") ]; }; }; home.packages = [ pkgs.playerctl pkgs.spotify inputs.naviterm.packages.${pkgs.stdenv.hostPlatform.system}.default ]; }; systemd.user.services.playerctld = { unitConfig = { Description = "starts playerctld daemon"; }; wantedBy = [ "default.target" ]; serviceConfig = { ExecStart = "${pkgs.playerctl}/bin/playerctld"; }; }; # Ensure the parent dir of the secret's path is owned by alex; otherwise # agenix creates it as root. systemd.tmpfiles.rules = [ "d /home/alex/.config/naviterm 0755 alex users -" ]; age.secrets."naviterm-config" = { file = ../../../../secrets/pinwheel/naviterm-config.age; path = "/home/alex/.config/naviterm/config.ini"; owner = "alex"; group = "users"; }; }