Hyprland

From NixOS Wiki
Revision as of 18:30, 16 October 2023 by imported>Omgitsaheadcrab (fix: broken option)

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

For run Hyprland properly you need to enables critical components, such as:

If you use gdm or ldm: add a proper Desktop Entry to your her.

Using NixOS

 
/etc/nixos/configuration.nix
{pkgs, ...}: 
{
  programs.hyprland = {
    # Install the packages from nixpkgs
    enable = true;
    # Whether to enable XWayland
    xwayland.enable = true;

    # Optional
    # Whether to enable patching wlroots for better Nvidia support
    enableNvidiaPatches = true;
  };
  # ...
}

See all modules for NixOS

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;
    # Whether to enable patching wlroots for better Nvidia support
    enableNvidiaPatches = 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
    ];
  };
}

List of plugins


Usage

Troubleshooting

See also