mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-12-23 18:19:49 +01:00
9a9d89b96a
* clear-up nixos installation * Nix: clear up wording * Nix: add example config for HM Co-authored-by: Mihai Fufezan <fufexan@protonmail.com>
2.7 KiB
2.7 KiB
You can use the Home Manager module by adding it to your configuration:
For a list of available options, check the module file.
Installation
The following snippets of code try to show how to bring the Hyprland flake from the flake input and import it into the module system. Feel free to make any adjustment for your setup.
{{< tabs "uniqueid" >}}
{{< tab "Flakes" >}}
Don't forget to replace user@hostname
with your username and hostname!
# flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland.url = "github:hyprwm/Hyprland";
};
outputs = {nixpkgs, home-manager, hyprland, ...}: {
homeConfigurations."user@hostname" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
modules = [
hyprland.homeManagerModules.default
{wayland.windowManager.hyprland.enable = true;}
# ...
];
};
};
}
{{< /tab >}}
{{< tab "No flakes (with flake-compat)" >}}
# home config
{pkgs, ...}: let
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
hyprland = (import flake-compat {
src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/master.tar.gz";
}).defaultNix;
in {
imports = [
hyprland.homeManagerModules.default
];
wayland.windowManager.hyprland = {
enable = true;
extraConfig = ''
bind = SUPER, Return, exec, kitty
# ...
'';
};
}
{{< /tab >}}
{{< /tabs >}}
Usage
Once the module is enabled, you can use it to declaratively configure Hyprland:
# home.nix
{config, pkgs, ...}: {
wayland.windowManager.hyprland.extraConfig = ''
$mod = SUPER
bind = $mod, F, exec, firefox
bind = , Print, exec, grimblast copy area
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
${builtins.concatStringsSep "\n" (builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in ''
bind = $mod, ${ws}, workspace, ${toString (x + 1)}
bind = $mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}
''
)
10)}
# ...
'';
}
Plugins
Hyprland plugins can be added through an option:
wayland.windowManager.hyprland.plugins = [
inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars
"/absolute/path/to/plugin.so"
];
For examples on how to build hyprland plugins using nix see the official plugins.