{ pkgs, lib, config, hyprland, wallpapers, ... }: let configure-gtk = pkgs.writeTextFile { name = "configure-gtk"; destination = "/bin/configure-gtk"; executable = true; text = let schema = pkgs.gsettings-desktop-schemas; datadir = "${schema}/share/gsettings-schemas/${schema.name}"; gtk-theme = config.gtk.theme.name; icon-theme = config.gtk.iconTheme.name; cursor-theme = config.gtk.cursorTheme.name; in '' export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS gnome_schema=org.gnome.desktop.interface gsettings set $gnome_schema gtk-theme '${gtk-theme}' gsettings set $gnome_schema icon-theme '${icon-theme}' gsettings set $gnome_schema cursor-theme '${cursor-theme}' ''; }; in { imports = [ hyprland.homeManagerModules.default ./waybar ./rofi ./swaylock.nix ./gtk.nix ./mako.nix ]; home.packages = with pkgs; [ hyprpaper configure-gtk pipewire wireplumber wl-clipboard grim slurp swayimg playerctl pamixer playerctl brightnessctl ]; programs = { firefox.package = pkgs.firefox-wayland; rofi.package = pkgs.rofi-wayland; }; wayland.windowManager.hyprland = { enable = true; package = null; # Use package from nixpkgs xwayland = { enable = true; hidpi = true; }; extraConfig = builtins.readFile ./hyprland.conf; }; xdg.configFile = { "hypr/hyprpaper.conf".text = lib.mkDefault '' preload = ${wallpapers.outputs.default} wallpaper = ,${wallpapers.outputs.default} ''; "hypr/macchiato.conf".source = ./macchiato.conf; "hypr/display.conf".text = lib.mkDefault ""; "hypr/autostart.conf".text = lib.mkDefault ""; }; }