Files
nixos/henrovnix_ok/home/desktop/hyprscrolling.nix
T
2026-02-25 06:44:46 +01:00

56 lines
1.6 KiB
Nix

{
config,
lib,
pkgs,
flakeRoot,
...
}:
let
cfg = config.programs.hyprscrolling;
# Read configuration from your repo (as requested)
confSrc = flakeRoot + "/assets/conf/desktop/hypr/hyprscrolling.conf";
# Where we place the generated/symlinked config inside ~/.config
confTarget = "hypr/conf.d/90-hyprscrolling.conf";
in
{
options.programs.hyprscrolling = {
enable = lib.mkEnableOption "Hyprscrolling plugin (scrolling layout) for Hyprland";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.hyprlandPlugins.hyprscrolling;
description = "hyprscrolling plugin package to load via wayland.windowManager.hyprland.plugins.";
};
};
config = lib.mkIf cfg.enable {
assertions = [
{
assertion = config.wayland.windowManager.hyprland.enable or false;
message = "programs.hyprscrolling.enable requires wayland.windowManager.hyprland.enable = true (Home-Manager Hyprland module).";
}
{
assertion = builtins.pathExists confSrc;
message = "Missing hyprscrolling.conf at: ${toString confSrc}";
}
];
# Ensure plugin is installed + loaded (HM will add the needed plugin loading lines)
wayland.windowManager.hyprland.plugins = [
cfg.package
];
# Put your config file into ~/.config/hypr/conf.d/...
xdg.configFile."${confTarget}".source = confSrc;
# Ensure Hyprland reads it (even if your main config doesn't source conf.d)
wayland.windowManager.hyprland.extraConfig = ''
# Loaded by Home-Manager: hyprscrolling
source = ${config.xdg.configHome}/${confTarget}
'';
};
}