Hyprland
Hyprland is a wlroots-based tiling Wayland compositor written in C++. Noteworthy features of Hyprland include dynamic tiling, tabbed windows, a clean and readable C++ code-base, and a custom renderer that provides window animations, rounded corners, and Dual-Kawase Blur on transparent windows. General usage and configuration is thoroughly documented at Hyprland wiki.
Installation
To run Hyprland properly you need to enables critical components, such as:
- polkit
- xdg-desktop-portal-hyprland
- graphics drivers : Nvidia, AMD GPU
- fonts
- dconf
- xwayland
- display manager
If you use gdm or ldm: add a proper Desktop Entry to your Display Manager.
Using NixOS
/etc/nixos/configuration.nix
{pkgs, ...}:
{
programs.hyprland = {
# Install the packages from nixpkgs
enable = true;
# Whether to enable XWayland
xwayland.enable = true;
};
# ...
}
Using Home Manager
/etc/nixos/home.nix or ~/.config/home-manager/home.nix
{config, pkgs, ... }:
{
wayland.windowManager.hyprland = {
# Whether to enable Hyprland wayland compositor
enable = true;
# The hyprland package to use
package = pkgs.hyprland;
# Whether to enable XWayland
xwayland.enable = true;
# Optional
# Whether to enable hyprland-session.target on hyprland startup
systemd.enable = true;
};
# ...
}
See all modules for Home Manager
Using Flake
Configuration
Using Home Manager
You have two options for configuring the settings:
1. Compose the configuration using Nix syntax:
/etc/nixos/home.nix or ~/.config/home-manager/home.nix
{config, pkgs, ... }:
{
wayland.windowManager.hyprland.settings = {
decoration = {
shadow_offset = "0 5";
"col.shadow" = "rgba(00000099)";
};
"$mod" = "SUPER";
bindm = [
# mouse movements
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow"
];
};
# ...
}
2. You can also use Hyprland's syntax to write the file like this: :
/etc/nixos/home.nix or ~/.config/home-manager/home.nix
{config, pkgs, ... }:
{
home.file."~/.config/hypr/hyprland.conf".text = ''
decoration {
shadow_offset = 0 5
col.shadow = rgba(00000099)
}
$mod = SUPER
bindm = $mod, mouse:272, movewindow
bindm = $mod, mouse:273, resizewindow
bindm = $mod ALT, mouse:272, resizewindow
'';
# ...
}
Plugin
You need use flake for her, example:
put this in your flake.nix
/etc/nixos/flake.nix or ~/.config/home-manager/flake.nix
{
inputs = {
# ...
hyprland.url = "github:hyprwm/Hyprland";
plugin_name = {
url = "github:maintener/plugin_name";
inputs.hyprland.follows = "hyprland"; # IMPORTANT
};
};
}
then, inside your home-manager module:
/etc/nixos/flake.nix or ~/.config/home-manager/flake.nix
{
wayland.windowManager.hyprland = {
plugins = [
inputs.plugin_name.packages.${pkgs.system}.default
];
};
}
Usage
Troubleshooting
Swaylock
If swaylock cannot be unlocked with the correct password:
security.pam.services.swaylock = {};