56 lines
1.6 KiB
Nix
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}
|
|
'';
|
|
};
|
|
}
|