{ config, lib, pkgs, ... }: { options.homeconfig.hyprland.enable = lib.options.mkOption { type = lib.types.bool; default = false; }; config = lib.mkIf config.homeconfig.hyprland.enable { home.sessionVariables.NIX_OZONE_WL = "1"; programs.kitty.enable = lib.mkDefault true; home.packages = with pkgs; [ pyprland ]; home.activation.extraHyprFile = lib.hm.dag.entryAfter ["writeBoundary"] '' if [[ ! -f ${config.home.homeDirectory}/.config/hypr/otf.conf ]]; then touch ${config.home.homeDirectory}/.config/hypr/otf.conf fi if [[ ! -f ${config.home.homeDirectory}/.config/background ]]; then cp ${config.home.homeDirectory}/Pictures/Wallpaper/bluescape.jpg ${config.home.homeDirectory}/.config/background chmod 600 ${config.home.homeDirectory}/.config/background fi ''; wayland.windowManager.hyprland = { enable = true; systemd = { enable = true; variables = [ "--all" ]; }; extraConfig = (if config.homeconfig.host == "laptop" then '' bind = CTRL SHIFT, XF86Launch2, exec, kitty -e "if [[ $(hyprctl monitors | grep 0x0 | sed -n -e "s/\t*1920x1080@//" -e "s/.[1234567890]* at 0x0//p") == 300 ]]; then sudo /run/current-system/bin/switch-to-configuration switch; else sudo /run/current-system/specialisation/docked/bin/switch-to-configuration switch; fi" '' else if config.homeconfig.host == "homebox" then '' monitor=HDMI-A-2,1920x1080@60,0x0,1 monitor=HEADLESS-2,1920x1080@60,0x0,1 exec-once=hyprctl output create headless HEADLESS-2 exec-once=hyprctl keyword monitor HDMI-A-2,disable exec-once=${pkgs.wayvnc}/bin/wayvnc 0.0.0.0 -o HEADLESS-2 '' else if config.homeconfig.host == "container" then '' monitor=HEADLESS-2,1920x1080@60,0x0,1 exec-once=hyprctl output create headless HEADLESS-2 exec-once=${pkgs.wayvnc}/bin/wayvnc 0.0.0.0 -o HEADLESS-2 '' else '' monitor= , prefered, auto, 1 '') + (if config.homeconfig.hyprpanel.enable then '' bind = , Print, exec, bash -c ${pkgs.hyprpanel}/share/scripts/screenshot.sh" '' else '' bind = , Print, exec, grim -g "$(slurp)" '') + '' source = ${config.home.homeDirectory}/.config/hypr/main.conf exec-shutdown = if [[ -f ${config.home.homeDirectory}/.local/share/calcurse/.calcurse.pid ]]; then rm ${config.home.homeDirectory}/.local/share/calcurse/.calcurse.pid; fi ''; }; }; }