Hyprland on Home Manager
For a list of available options, check the Home Manager options.
- (Required) NixOS Module: enables critical components needed to run
Hyprland properly.
- Without this, you may have issues with XDG Portals, or missing session files in your Display Manager.
- (Optional) Home Manager module: lets you configure Hyprland declaratively
through Home Manager.
- This module configures Hyprland and adds it to your user’s
$PATH, but does not make certain system-level changes such as adding a desktop session file for your display manager. This is handled by the NixOS module once you enable it.
- This module configures Hyprland and adds it to your user’s
Installation
Usage
Once the module is enabled, you can use it to declaratively configure Hyprland. Here is an example config:
# home.nix
{
wayland.windowManager.hyprland.settings = {
"$mod" = "SUPER";
bind =
[
"$mod, F, exec, firefox"
", Print, exec, grimblast copy area"
]
++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists (builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
"$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
]
)
10)
);
};
}Plugins
Hyprland plugins can be added through the plugins option:
{
wayland.windowManager.hyprland.plugins = [
inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars
"/absolute/path/to/plugin.so"
];
}For examples on how to build Hyprland plugins using Nix, see the Nix/Plugins page.
FAQ
Fixing problems with themes
If your themes for mouse cursors, icons or windows don’t load correctly, try
setting them with home.pointerCursor and gtk.theme, which enable a bunch of
compatibility options that should make the themes load in all situations.
Example configuration:
{
home.pointerCursor = {
gtk.enable = true;
# x11.enable = true;
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 16;
};
gtk = {
enable = true;
theme = {
package = pkgs.flat-remix-gtk;
name = "Flat-Remix-GTK-Grey-Darkest";
};
iconTheme = {
package = pkgs.gnome.adwaita-icon-theme;
name = "Adwaita";
};
font = {
name = "Sans";
size = 11;
};
};
}Programs don’t work in systemd services, but do on the terminal
This problem is related to systemd not importing the environment by default. It
will not have knowledge of PATH, so it cannot run the commands in the
services. This is the most common with user-configured services such as
hypridle or swayidle.
To fix it, add to your config:
wayland.windowManager.hyprland.systemd.variables = ["--all"];This setting will produce the following entry in the Hyprland config:
exec-once = dbus-update-activation-environment --systemd --allMake sure to use the above command if you do not use the Home Manager module.