{ lib, pkgs, config, namespace, ... }: let inherit (lib) mkIf; cfg = config.${namespace}.programs.hyprland; in { options.${namespace}.programs.hyprland = { enable = lib.mkEnableOption "Hyprland"; }; config = mkIf cfg.enable { wayland.windowManager.hyprland = { enable = true; # systemd.enable = false; extraConfig = builtins.readFile ./config/hyprland.conf; }; programs.waybar = { enable = true; style = builtins.readFile ./config/waybar-style.css; settings = [{ layer = "top"; position = "top"; mod = "dock"; exclusive = true; passtrough = false; gtk-layer-shell = true; height = 0; modules-left = [ "hyprland/workspaces" "custom/divider" "custom/divider" "cpu" "custom/divider" "memory" ]; modules-center = [ "hyprland/window" ]; modules-right = [ "tray" "network" "custom/divider" "backlight" "custom/divider" "pulseaudio" "custom/divider" "battery" "custom/divider" "clock" ]; "hyprland/window" = { format = "{}"; }; "wlr/workspaces" = { on-scroll-up = "hyprctl dispatch workspace e+1"; on-scroll-down = "hyprctl dispatch workspace e-1"; all-outputs = true; on-click = "activate"; }; battery = { format = "󰁹 {}%"; }; cpu = { interval = 10; format = "󰻠 {}%"; max-length = 10; on-click = ""; }; memory = { interval = 30; format = "  {}%"; format-alt = " {used:0.1f}G"; max-length = 10; }; backlight = { format = "󰖨 {}"; device = "acpi_video0"; }; tray = { icon-size = 13; tooltip = false; spacing = 10; }; network = { format = "󰖩 {essid}"; format-disconnected = "󰖪 disconnected"; }; clock = { format = " {:%I:%M %p  %m/%d} "; tooltip-format = '' {:%Y %B} {calendar}''; }; pulseaudio = { format = "{icon} {volume}%"; tooltip = false; format-muted = " Muted"; on-click = "pamixer -t"; on-scroll-up = "pamixer -i 5"; on-scroll-down = "pamixer -d 5"; scroll-step = 5; format-icons = { headphone = ""; hands-free = ""; headset = ""; phone = ""; portable = ""; car = ""; default = [ "" "" "" ]; }; }; "pulseaudio#microphone" = { format = "{format_source}"; tooltip = false; format-source = " {volume}%"; format-source-muted = " Muted"; on-click = "pamixer --default-source -t"; on-scroll-up = "pamixer --default-source -i 5"; on-scroll-down = "pamixer --default-source -d 5"; scroll-step = 5; }; "custom/divider" = { format = " | "; interval = "once"; tooltip = false; }; "custom/endright" = { format = "_"; interval = "once"; tooltip = false; }; }]; }; home.packages = with pkgs; [ hyprshot wofi wofi-emoji brightnessctl ]; xdg.configFile = { "wofi/config".source = ./config/wofi.conf; "wofi/style.css".source = ./config/wofi-style.css; }; }; }