hyprland-wiki/pages/Nix/Hyprland on NixOS.md

115 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

---
title: Hyprland on NixOS
---
2022-12-18 14:20:19 +01:00
The NixOS module enables critical components needed to run Hyprland properly,
such as: polkit,
[xdg-desktop-portal-hyprland](https://github.com/hyprwm/xdg-desktop-portal-hyprland),
graphics drivers, fonts, dconf, xwayland, and adding a proper Desktop Entry to
your Display Manager.
Make sure to check out the options of the
2023-04-09 14:02:54 +02:00
[NixOS module](https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=hyprland).
2022-12-18 14:20:19 +01:00
{{< callout >}}
- _(Required) NixOS Module_: enables critical components needed to run Hyprland
properly
- _(Optional) Home-manager module_: lets you declaratively configure Hyprland
{{< /callout >}}
{{< tabs items="Nixpkgs,Flake Package, No Flakes (with flake-compat)" >}}
{{< tab "Nixpkgs" >}}
2022-12-18 14:20:19 +01:00
2023-04-09 14:02:54 +02:00
```nix
# configuration.nix
{pkgs, ...}: {
programs.hyprland.enable = true;
}
```
This will use the Hyprland version that Nixpkgs has.
{{< /tab >}}
{{< tab "Flake package" >}}
{{< callout >}}
Please enable [Cachix](../cachix) before using the flake package, so you don't
have to compile Hyprland yourself.
2023-04-09 14:02:54 +02:00
{{< /callout >}}
In case you want to use the development version of Hyprland, you can add it like
this:
2023-04-09 14:02:54 +02:00
```nix
# flake.nix
{
inputs.hyprland.url = "github:hyprwm/Hyprland";
# ...
outputs = {nixpkgs, ...} @ inputs: {
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; }; # this is the important part
modules = [
./configuration.nix
];
2023-04-09 14:02:54 +02:00
};
}
}
# configuration.nix
{inputs, pkgs, ...}: {
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
2022-12-18 14:20:19 +01:00
};
2022-12-28 16:31:43 +01:00
}
2022-12-18 14:20:19 +01:00
```
Don't forget to change the `HOSTNAME` to your actual hostname!
2022-12-18 14:20:19 +01:00
{{< /tab >}}
2022-12-18 14:20:19 +01:00
{{< tab "Flake package, Nix stable" >}}
2022-12-18 14:20:19 +01:00
{{< callout >}}
Please enable [Cachix](../cachix) before using the flake package, so you don't
have to compile Hyprland yourself.
{{< /callout >}}
2022-12-18 14:20:19 +01:00
```nix
# configuration.nix
2023-02-14 14:30:40 +01:00
{pkgs, ...}: let
2022-12-18 14:20:19 +01:00
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
2023-02-14 14:30:40 +01:00
hyprland-flake = (import flake-compat {
2022-12-18 14:20:19 +01:00
src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/master.tar.gz";
}).defaultNix;
in {
programs.hyprland = {
enable = true;
package = hyprland-flake.packages.${pkgs.system}.hyprland;
2022-12-18 14:20:19 +01:00
};
}
```
{{< /tab >}}
{{< /tabs >}}
## Fixing problems with themes
If your themes for mouse cursor, icons or windows don't load correctly, see the
relevant section in [Hyprland on Home Manager](../hyprland-on-home-manager).