# NixOS
## No flakes
This is the easy way to use/configure hyprshell.
### nixpkgs
`configuration.nix`:
```nix
{pkgs, ...}: {
environment.systemPackages = [pkgs.hyprland, pkgs.hyprshell];
}
```
### nixpkgs + Home manager
`./user.nix`:
All the settings are optional and can be found in the [config](CONFIGURE.md)
This config enables overview and switch, but is not type-save like the flake home-manager config.
```nix
{ inputs, ... } : {
services.hyprshell = {
enable = true;
settings = {
windows = {
scale = 8.0;
overview = {
launcher = {
max_items = 6;
};
};
switch = {
modifier = "alt";
};
};
};
};
}
```
## Flakes
A full example nixos config can be found in `test-files/nixos`
### With Home-manager [recommend]
**[Cachix Cache](https://app.cachix.org/cache/hyprshell#pull) should be added with `cachix use hyprshell`**
`flake.nix`:
```nix
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
hyprland.url = "github:hyprwm/Hyprland";
hyprshell.url = "github:H3rmt/hyprshell";
};
outputs = { nixpkgs, hyprshell }@inputs: {
nixosConfigurations.hostname = nixpkgs.lib.nixosSystem {
# passes inputs info ./home.nix file
specialArgs = { inherit inputs; };
system = "x86_64-linux";
modules = [
home-manager.nixosModules.home-manager
./home.nix
];
};
};
}
```
`./home.nix`:
```nix
{ inputs, ... } : {
home-manager = {
# passes inputs into user.nix file
extraSpecialArgs = { inherit inputs; };
user.test = import ./user.nix;
};
}
```
`./user.nix`:
All the settings are optional and can be found in the [module.nix](../nix/module.nix)
Everything is disabled by default, so you need to enable it (even settings.windows if settings.windows.overview is enabled).
```nix
{ inputs, ... } : {
imports = [
# includes the custom programs.hyprshell config
inputs.hyprshell.homeModules.default
];
programs.hyprshell = {
enable = true;
package = inputs.hyprshell.packages.${inputs.nixpkgs.stdenv.hostPlatform.system}.hyprshell;
# use this if you want the more minimal hyprshell (see Readme.md > Features)
package = inputs.hyprshell.packages.${inputs.nixpkgs.stdenv.hostPlatform.system}.hyprshell-slim;
settings = {
windows = {
enable = true; # please dont forget to enable windows if you want to use overview or switch
overview = {
enable = true;
key = "super_l";
modifier = "super";
launcher = {
max_items = 6;
};
};
switch.enable = true;
};
};
};
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.x86_64-linux.hyprland;
portalPackage = inputs.hyprland.packages.x86_64-linux.xdg-desktop-portal-hyprland;
};
}
```
### No Home-manager with hyprland from flake
**[Cachix Cache](https://app.cachix.org/cache/hyprshell#pull) should be added with `cachix use hyprshell`**
`flake.nix`:
```nix
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
hyprland.url = "github:hyprwm/Hyprland";
hyprshell.url = "github:H3rmt/hyprshell";
};
outputs = { nixpkgs, hyprland, hyprshell }@inputs: {
nixosConfigurations.hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [{
environment.systemPackages = [
hyprland.packages.${nixpkgs.stdenv.hostPlatform.system}.hyprland
hyprshell.packages.${nixpkgs.stdenv.hostPlatform.system}.hyprshell
# Use this if you want the more minimal hyprshell (see Readme.md > Features)
# hyprshell.packages.${nixpkgs.stdenv.hostPlatform.system}.hyprshell-slim
];
}];
};
};
}
```