Files
Miguel PalhasandClaude Opus 5 88915d9cfd
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 1m53s
feat(hyprland): restore media-key OSD with swayosd
The XF86 binds survived the noctalia -> eww switch, but the popup they
drew did not, so volume and brightness changed with no feedback. swayosd
replaces it: swayosd-client both applies the change and draws the OSD.

Also fixes two binds that pointed at binaries no host installs any more:
XF86AudioMicMute called volumectl (avizo, removed) and the brightness
keys called brightnessctl, which only arrakis has.

Commands are referenced by store path because Hyprland execs binds with
the PATH the session was started with.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 18:35:27 +01:00

46 lines
1.7 KiB
Nix

{ inputs, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
wl-clipboard
];
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
# swayosd (the volume/brightness OSD, configured in home) writes
# /sys/class/backlight/*/brightness directly. The package ships a udev rule
# that chgrps those files to `video`; without both the rule and the group,
# brightness keys pop the OSD but change nothing.
services.udev.packages = [ pkgs.swayosd ];
users.users.naps62.extraGroups = [ "video" ];
# GTK/GNOME services still useful on Wayland
programs.dconf.enable = true;
# Route the Secret portal (org.freedesktop.portal.Secret) to gnome-keyring.
# Hyprland's portal doesn't implement Secret, and the preferred backend list
# (hyprland;gtk) has no Secret provider — so without this, the portal exposes
# no Secret interface at all. Electron apps (e.g. Claude Desktop) fetch their
# token-encryption key through this portal; when it's missing, os_crypt init
# fails (prev_init_success:false) and they can't persist a login across boots.
xdg.portal.config.common."org.freedesktop.impl.portal.Secret" = "gnome-keyring";
services = {
# thumbnail support for images
tumbler.enable = true;
gnome = {
glib-networking.enable = true;
gnome-keyring.enable = true;
};
};
nix.settings = {
substituters = [ "https://hyprland.cachix.org" ];
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
};
}