diff --git a/systems/balrog/default.nix b/systems/balrog/default.nix index 9b63646..3ec88c5 100644 --- a/systems/balrog/default.nix +++ b/systems/balrog/default.nix @@ -67,5 +67,13 @@ }; hardware.bluetooth.enable = true; services.blueman.enable = true; + + home-manager.users.avravels.home.hyprland.monitors = [ + { + output = "eDP-1"; + mode = "1920x1200"; + } + ]; + system.stateVersion = "25.11"; # Did you read the comment? } diff --git a/systems/modules/home/wm/hyprland.nix b/systems/modules/home/wm/hyprland.nix index 3919ebc..569beba 100644 --- a/systems/modules/home/wm/hyprland.nix +++ b/systems/modules/home/wm/hyprland.nix @@ -9,13 +9,27 @@ let in { - options.home.hyprland = { - execOnce = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ "waybar" ]; - description = "Commands to run once when Hyprland starts (maps to Hyprland `exec-once`)."; - }; + options.home.hyprland.monitors = lib.mkOption { + type = lib.types.listOf (lib.types.submodule { + options = { + output = lib.mkOption { type = lib.types.str; }; + mode = lib.mkOption { + type = lib.types.str; + default = "preferred"; + }; + position = lib.mkOption { + type = lib.types.str; + default = "auto"; + }; + scale = lib.mkOption { + type = lib.types.number; + default = 1; + }; + }; + }); + default = [ ]; }; + config = { home.packages = with pkgs; [ bzmenu @@ -33,6 +47,12 @@ in mkLuaInline = lib.generators.mkLuaInline; toLua = lib.generators.toLua; mkArgs = args: { _args = args; }; + defaultMonitor = { + output = ""; + mode = "preferred"; + position = "auto"; + scale = 1; + }; bind = keys: dispatcher: options: mkArgs [ @@ -166,18 +186,12 @@ in (mkLuaInline '' function() hl.exec_cmd("waybar") - hl.monitor({ - output = "", - mode = "preferred", - position = "auto", - scale = 1, - }) - hl.monitor({ - output = "eDP-1", - mode = "1920x1200", - position = "auto", - scale = 1, - }) + + hl.monitor(${lib.generators.toLua {} defaultMonitor}) + + ${lib.concatMapStringsSep "\n" + (m: "hl.monitor(${lib.generators.toLua {} m})") + cfg.monitors} end'') ]; };