hyprshell 4.10.2

A modern GTK4-based window switcher and application launcher for Hyprland
# 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
        ];
      }];
    };
  };
}
```