mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-11-25 22:15:59 +01:00
Nix: revise docs
This commit is contained in:
parent
cacf4442d3
commit
51ec7b739b
1 changed files with 47 additions and 26 deletions
|
@ -10,6 +10,9 @@ work as intended. Please use the
|
||||||
|
|
||||||
# Install and configure Hyprland on NixOS
|
# Install and configure Hyprland on NixOS
|
||||||
|
|
||||||
|
First of all, it is a good idea to set up [Cachix](#cachix) before enabling
|
||||||
|
any of the modules/installing Hyprland.
|
||||||
|
|
||||||
Make sure to check out the options of the
|
Make sure to check out the options of the
|
||||||
[Nix module](https://github.com/hyprwm/Hyprland/blob/main/nix/module.nix).
|
[Nix module](https://github.com/hyprwm/Hyprland/blob/main/nix/module.nix).
|
||||||
|
|
||||||
|
@ -23,19 +26,15 @@ As such, installation using the Flake is recommended.
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
hyprland = {
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
url = "github:hyprwm/Hyprland";
|
|
||||||
# build with your own instance of nixpkgs
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, hyprland }: {
|
outputs = {self, nixpkgs, hyprland, ...}: {
|
||||||
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
|
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
|
||||||
# ...
|
# ...
|
||||||
modules = [
|
modules = [
|
||||||
hyprland.nixosModules.default
|
hyprland.nixosModules.default
|
||||||
{ programs.hyprland.enable = true; }
|
{programs.hyprland.enable = true;}
|
||||||
# ...
|
# ...
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -81,37 +80,37 @@ You can use the Home Manager module by adding it to your configuration:
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
hyprland = {
|
|
||||||
url = "github:hyprwm/Hyprland";
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
# build with your own instance of nixpkgs
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, home-manager, hyprland }: {
|
outputs = {self, nixpkgs, home-manager, hyprland, ...}: {
|
||||||
homeConfigurations."USER@HOSTNAME"= home-manager.lib.homeManagerConfiguration {
|
homeConfigurations."user@hostname" = home-manager.lib.homeManagerConfiguration {
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
hyprland.homeManagerModules.default
|
hyprland.homeManagerModules.default
|
||||||
{ wayland.windowManager.hyprland.enable = true; }
|
{wayland.windowManager.hyprland.enable = true;}
|
||||||
# ...
|
# ...
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
Don't forget to replace `USER@HOSTNAME` with your username and hostname!
|
Don't forget to replace `user@hostname` with your username and hostname!
|
||||||
|
|
||||||
## Without flakes
|
## Without flakes
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
# home config
|
# home config
|
||||||
{ config, pkgs, inputs, ... }: let
|
{config, pkgs, inputs, ...}: let
|
||||||
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
|
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
|
||||||
|
|
||||||
hyprland = (import flake-compat {
|
hyprland = (import flake-compat {
|
||||||
src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/master.tar.gz";
|
src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/master.tar.gz";
|
||||||
}).defaultNix;
|
}).defaultNix;
|
||||||
|
@ -130,8 +129,8 @@ For a list of available options, check the
|
||||||
|
|
||||||
# Modules mix'n'match
|
# Modules mix'n'match
|
||||||
|
|
||||||
- If you plan on using the HM module alongside the NixOS module, set the NixOS
|
- If you're on NixOS and also use HM it's a good idea to use Hyprland modules
|
||||||
`programs.hyprland.package = null;`.
|
for both. Make sure the package options are the same for both modules.
|
||||||
|
|
||||||
- If you don't plan on using the NixOS module, but want to use the HM module, you
|
- If you don't plan on using the NixOS module, but want to use the HM module, you
|
||||||
will have to enable all the options the NixOS module enables.
|
will have to enable all the options the NixOS module enables.
|
||||||
|
@ -185,7 +184,7 @@ command documentation for other upgrade options.
|
||||||
# XWayland
|
# XWayland
|
||||||
|
|
||||||
XWayland is enabled by default in the Nix package. You can disable it either
|
XWayland is enabled by default in the Nix package. You can disable it either
|
||||||
in the package itself, or through the Home Manager module.
|
in the package itself, or through the module options.
|
||||||
|
|
||||||
## Package
|
## Package
|
||||||
|
|
||||||
|
@ -204,6 +203,15 @@ wayland.windowManager.hyprland = {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### NixOS module
|
||||||
|
|
||||||
|
```nix
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
xwayland.enable = false;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## HiDPI
|
## HiDPI
|
||||||
|
|
||||||
By default, the Nix package includes a patched wlroots that can render HiDPI
|
By default, the Nix package includes a patched wlroots that can render HiDPI
|
||||||
|
@ -215,7 +223,7 @@ In order to enable the functionality, you have to add:
|
||||||
exec-once=xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 2
|
exec-once=xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 2
|
||||||
```
|
```
|
||||||
|
|
||||||
This will make XWL programs look as if they were unscaled. To fix this, you
|
This will make XWayland programs look as if they were unscaled. To fix this, you
|
||||||
have to export different environment variables to make the specific toolkits
|
have to export different environment variables to make the specific toolkits
|
||||||
render at the proper scaling. For example
|
render at the proper scaling. For example
|
||||||
|
|
||||||
|
@ -238,11 +246,24 @@ or by passing the `hidpiXWayland = false;` flag, the same way as
|
||||||
|
|
||||||
# Cachix
|
# Cachix
|
||||||
|
|
||||||
A [Hyprland Cachix](https://app.cachix.org/cache/hyprland) exists to cache the
|
Hyprland often needs dependencies which aren't yet cached in `cache.nixos.org`.
|
||||||
`wlroots` package and speed up builds.
|
Instead of requiring you to build those dependencies (which may include `mesa`,
|
||||||
|
`ffmpeg`, etc), we provide a Cachix cache that you can add to your Nix
|
||||||
|
substituters.
|
||||||
|
|
||||||
In case you don't plan on changing the Nixpkgs input of Hyprland, you can use
|
The [Hyprland Cachix](https://app.cachix.org/cache/hyprland) exists to cache the
|
||||||
this cache to download the binary directly, instead of building locally.
|
`hyprland` packages and any dependencies not found in `cache.nixos.org`.
|
||||||
|
|
||||||
|
{{< hint >}}
|
||||||
|
In order for Nix to take advantage of the cache, it has to be enabled **before**
|
||||||
|
enabling the Hyprland module(s) or adding the package.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
{{< hint type=important >}}
|
||||||
|
Overriding Hyprland's `nixpkgs` input
|
||||||
|
(`inputs.hyprland.inputs.nixpkgs.follows = "nixpkgs";`) will make the cache
|
||||||
|
useless, since you're building from a different Nixpkgs commit.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
# configuration.nix
|
# configuration.nix
|
||||||
|
@ -265,7 +286,7 @@ you can do it like this
|
||||||
```sh
|
```sh
|
||||||
$ nix repl
|
$ nix repl
|
||||||
nix-repl> :lf "github:hyprwm/Hyprland"
|
nix-repl> :lf "github:hyprwm/Hyprland"
|
||||||
nix-repl> :bl outputs.packages.x86_64-linux.hyprland.override { nvidiaPatches = true; } # option = value
|
nix-repl> :bl outputs.packages.x86_64-linux.hyprland.override {nvidiaPatches = true;} # option = value
|
||||||
```
|
```
|
||||||
|
|
||||||
Then you can run Hyprland from the built path.
|
Then you can run Hyprland from the built path.
|
||||||
|
|
Loading…
Reference in a new issue