nixconf/modules/features/hyprland/default.nix
2026-03-26 22:55:57 -05:00

60 lines
1.6 KiB
Nix

{ self, inputs, ... }: {
flake.nixosModules.hyprland = { pkgs, lib, config, ... }: {
imports = [ self.nixosModules.cursors ];
options.hyprland-users = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = "List of users to configure hyprland for";
};
config = {
# System-level configuration
programs.hyprland.enable = true;
environment.systemPackages = with pkgs; [
waybar
hyprpaper
wofi
kitty
firefox
dolphin
wl-clipboard
brightnessctl
playerctl
grim
xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk
gnome-keyring
seahorse
];
services.gnome.gnome-keyring.enable = true;
services.dbus.packages = [ pkgs.gnome-keyring pkgs.gcr ];
programs.seahorse.enable = true;
xdg.portal = {
enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-hyprland
];
configPackages = [ pkgs.xdg-desktop-portal-gnome ];
};
# Configure hjem for specified users
hjem = lib.mkIf (config.hyprland-users != []) {
users = lib.genAttrs config.hyprland-users (username: {
enable = true;
files = {
".config/hypr/hyprland.conf".source = ./hyprland.conf;
".config/hypr/hyprpaper.conf".source = ./hyprpaper.conf;
};
});
};
# Enable cursors for hyprland users
cursor-users = lib.mkDefault config.hyprland-users;
};
};
}