The [NixOS] module installs [Hyprland] onto the system.

Whilst the [Home Manager] module generates the dotfiles for [Hyprland] and optionally [hyprlock] and [hypridle].

It can be configured through `modules.hyprland`.

## Module options

### extraConfig

`modules.hyprland.extraConfig` when set will be appended to the top of the configuration I generate, you can see where
that is [here](./home-manager.nix#L189).

There are no monitors configured by default, so you should use this option to do so.

### hypridle.enable

Whether to configure and enable the [hypridle] package. Be mindful that it may not auto-start, I have yet to find why but
even though it configures to start after `graphical-session.target`, that isn't reached in Hyprland sometimes.

### hyprlock.enable

Whether to configure and enable the [hyprlock] package, by itself it does nothing but when [hypridle] is also enabled it
will automatically call [hyprlock] after a 120 second timeout.

### hyprlock.background

A path to an image that will be used as background when [hyprlock] is invoked.

### scripts.screenshot.enable

When enabled it will create two script files in `$XDG_DATA_HOME/scripts/hyprland` and two keybinds for you to run these
scripts, allowing you to take screenshots of a region and the entire screen of your first monitor.

### scripts.startup.enable

Not my proudest option, this will add two packages containing a startup script for apps that I use in the daily &
services. If this module ever gets actually used by someone, then I'll refine it.

## Visuals

### Active window

![image](/assets/screenshots/hyprland-active.png)

### Inactive window

![image](/assets/screenshots/hyprland-inactive.png)

### Gaps

![image](/assets/screenshots/hyprland-gaps.png)


<!-- REFERENCES -->
[hyprland]: https://hyprland.org/
[hyprlock]: https://github.com/hyprwm/hyprlock
[hypridle]: https://github.com/hyprwm/hypridle
[home manager]: https://github.com/nix-community/home-manager
[nixos]: https://nixos.org
