95 lines
4.0 KiB
Nix
95 lines
4.0 KiB
Nix
{ config, lib, ... }:
|
|
|
|
# Behavior Configuration Module
|
|
#
|
|
# This module deploys non-visual configuration files (keybindings, input settings,
|
|
# window rules, etc.) with lib.mkDefault, allowing downstream users to override.
|
|
#
|
|
# Visual/theme configs are handled separately by theme-loader.nix and stylix.nix.
|
|
#
|
|
# Behavior configs include:
|
|
# - Keybindings (bindings, media keys, clipboard)
|
|
# - Input settings (keyboard, mouse, touchpad)
|
|
# - Window rules and layouts
|
|
# - Autostart applications
|
|
# - Environment variables
|
|
|
|
let
|
|
configDir = ./config;
|
|
overridesDir = "${config.home.homeDirectory}/.config/nomarchy/overrides";
|
|
|
|
# Behavior config categories with their source paths
|
|
behaviorConfigs = {
|
|
# Hyprland behavior (non-visual)
|
|
"nomarchy/default/hypr/bindings.conf" = "hypr/bindings.conf";
|
|
"nomarchy/default/hypr/bindings/media.conf" = "hypr/bindings/media.conf";
|
|
"nomarchy/default/hypr/bindings/clipboard.conf" = "hypr/bindings/clipboard.conf";
|
|
"nomarchy/default/hypr/bindings/tiling-v2.conf" = "hypr/bindings/tiling-v2.conf";
|
|
"nomarchy/default/hypr/bindings/utilities.conf" = "hypr/bindings/utilities.conf";
|
|
"nomarchy/default/hypr/input.conf" = "hypr/input.conf";
|
|
"nomarchy/default/hypr/windows.conf" = "hypr/windows.conf";
|
|
"nomarchy/default/hypr/autostart.conf" = "hypr/autostart.conf";
|
|
"nomarchy/default/hypr/envs.conf" = "hypr/envs.conf";
|
|
"nomarchy/default/hypr/looknfeel.conf" = "hypr/looknfeel.conf";
|
|
|
|
# App-specific window rules (behavior, not visual)
|
|
"nomarchy/default/hypr/apps.conf" = "hypr/apps.conf";
|
|
"nomarchy/default/hypr/apps/qemu.conf" = "hypr/apps/qemu.conf";
|
|
"nomarchy/default/hypr/apps/steam.conf" = "hypr/apps/steam.conf";
|
|
"nomarchy/default/hypr/apps/terminals.conf" = "hypr/apps/terminals.conf";
|
|
"nomarchy/default/hypr/apps/walker.conf" = "hypr/apps/walker.conf";
|
|
"nomarchy/default/hypr/apps/browser.conf" = "hypr/apps/browser.conf";
|
|
"nomarchy/default/hypr/apps/1password.conf" = "hypr/apps/1password.conf";
|
|
"nomarchy/default/hypr/apps/bitwarden.conf" = "hypr/apps/bitwarden.conf";
|
|
"nomarchy/default/hypr/apps/pip.conf" = "hypr/apps/pip.conf";
|
|
"nomarchy/default/hypr/apps/system.conf" = "hypr/apps/system.conf";
|
|
"nomarchy/default/hypr/apps/localsend.conf" = "hypr/apps/localsend.conf";
|
|
"nomarchy/default/hypr/apps/telegram.conf" = "hypr/apps/telegram.conf";
|
|
"nomarchy/default/hypr/apps/geforce.conf" = "hypr/apps/geforce.conf";
|
|
"nomarchy/default/hypr/apps/moonlight.conf" = "hypr/apps/moonlight.conf";
|
|
"nomarchy/default/hypr/apps/retroarch.conf" = "hypr/apps/retroarch.conf";
|
|
"nomarchy/default/hypr/apps/webcam-overlay.conf" = "hypr/apps/webcam-overlay.conf";
|
|
"nomarchy/default/hypr/apps/davinci-resolve.conf" = "hypr/apps/davinci-resolve.conf";
|
|
"nomarchy/default/hypr/apps/hyprshot.conf" = "hypr/apps/hyprshot.conf";
|
|
};
|
|
|
|
in
|
|
{
|
|
options.nomarchy.behavior = {
|
|
hyprland = {
|
|
bindings = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "Whether to deploy default Hyprland keybindings.";
|
|
};
|
|
input = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "Whether to deploy default input settings.";
|
|
};
|
|
windowRules = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "Whether to deploy default window rules.";
|
|
};
|
|
autostart = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "Whether to deploy default autostart configuration.";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = {
|
|
# Note: The actual config deployment is handled by configs.nix
|
|
# This module provides the options and documentation for behavior configs
|
|
# The separation allows users to selectively disable behavior categories
|
|
|
|
# Ensure behavior config directories exist in overrides
|
|
home.activation.createBehaviorOverrideDirs = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
mkdir -p "${overridesDir}/hypr/bindings"
|
|
mkdir -p "${overridesDir}/hypr/apps"
|
|
'';
|
|
};
|
|
}
|