{ pkgs, lib, ... }: { # Desktop environment - Niri compositor programs.niri.enable = true; services.displayManager.defaultSession = "niri"; # Keyboard layout - change to your preference services.xserver.xkb = { layout = "us"; }; # Polkit for Niri security.polkit.enable = true; systemd.user.services.niri-flake-polkit.enable = false; systemd.user.services.polkit-gnome-authentication-agent-1 = { description = "polkit-gnome-authentication-agent-1"; wantedBy = ["graphical-session.target"]; wants = ["graphical-session.target"]; after = ["graphical-session.target"]; serviceConfig = { Type = "simple"; ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; Restart = "on-failure"; RestartSec = 1; TimeoutStopSec = 10; }; }; # Audio - Pipewire services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; environment.systemPackages = with pkgs; [ playerctl pulsemixer ]; # XDG portals xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-cosmic ]; xdg.portal.config.common.default = [ "gnome" ]; # Fonts fonts = { packages = with pkgs; [ nerd-fonts.fira-code noto-fonts-color-emoji inter ]; fontDir.enable = true; }; # Stylix - pick your scheme stylix = { enable = true; polarity = "dark"; base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml"; fonts = { sansSerif = { package = pkgs.inter; name = "Inter"; }; monospace = { package = pkgs.nerd-fonts.fira-code; name = "FiraCode Nerd Font"; }; emoji = { package = pkgs.noto-fonts-color-emoji; name = "Noto Color Emoji"; }; }; }; # Services services.upower.enable = true; }