{ config, options, lib, pkgs, ... }: let niriConf = config.modules.desktop.niri; device = config.modules.device; defaultApps = config.modules.desktop.defaultApplications.apps; configDir = config.nixosConfig.configDir; in { options.modules.desktop.niri = { enable = lib.mkOption { type = lib.types.bool; default = false; }; }; config = lib.mkIf (niriConf.enable) (lib.mkMerge [ { programs.niri.enable = true; programs.waybar.enable = true; programs.xwayland.enable = true; home.manager.services.polkit-gnome.enable = true; home.packages = with pkgs; [ libnotify killall wdisplays xwayland-satellite wofi mako jq swww ]; modules.device.displayProtocol = "wayland"; environment.sessionVariables.NIXOS_OZONE_WL = "1"; home.manager.xdg.configFile."niri/config.kdl".source = "${configDir}/niri/${config.networking.hostName}.kdl"; system.userActivationScripts.linkwaybar.text = '' if [[ ! -h "$HOME/.config/waybar" ]]; then ln -s "${configDir}/waybar" "$HOME/.config/waybar" fi ''; } (lib.mkIf (config.modules.desktop.greetd.enable) { services.greetd.settings = { default_session.command = '' ${pkgs.greetd.tuigreet}/bin/tuigreet \ --time \ --asterisks \ --user-menu \ --cmd niri-session ''; }; environment.etc."greetd/environments".text = '' Niri ''; }) ]); }