{ lib, config, pkgs, ... }: let psCfg = config.pub-solar; tomlFormat = pkgs.formats.toml { }; sessionVariables = { WLR_RENDERER = if psCfg.graphical.wayland.software-renderer.enable then "pixman" else "gles2"; # Fix KeepassXC rendering issue # https://github.com/void-linux/void-packages/issues/23517 QT_AUTO_SCREEN_SCALE_FACTOR = "0"; }; in { imports = [ ./sway ]; options.pub-solar.graphical = { wayland.software-renderer.enable = lib.mkOption { type = lib.types.bool; default = false; description = "Feature flag enabling wlroots software renderer, useful in VMs"; }; }; config = { hardware.graphics.enable = true; environment = { systemPackages = with pkgs; [ gtk-engine-murrine gtk_engines gsettings-desktop-schemas matcha-gtk-theme papirus-maia-icon-theme glib ]; etc = { "xdg/PubSolar.conf".text = '' [Qt] style=GTK+ ''; }; variables = sessionVariables; }; services.getty.autologinUser = psCfg.user.name; qt = { enable = true; platformTheme = "gtk2"; style = "gtk2"; }; services.udev.packages = with pkgs; [ gnome-settings-daemon ]; # Enable Sushi, a quick previewer for nautilus services.gnome.sushi.enable = true; # Enable GVfs, a userspace virtual filesystem services.gvfs.enable = true; services.yubikey-agent.enable = true; fonts = { packages = with pkgs; [ dejavu_fonts powerline-fonts tt2020 ]; enableDefaultPackages = true; fontconfig.enable = true; fontconfig.defaultFonts = { monospace = [ "DejaVu Sans Mono for Powerline" ]; sansSerif = [ "DejaVu Sans" ]; }; }; users.users."${psCfg.user.name}".packages = with pkgs; [ alacritty firefox-wayland flameshot adwaita-icon-theme eog nautilus seahorse yelp hicolor-icon-theme keepassxc qMasterPassword-wayland libnotify vlc ]; home-manager.users."${psCfg.user.name}" = { home.file."xinitrc".source = ./.xinitrc; xdg.configFile."alacritty/alacritty.toml".source = tomlFormat.generate "alacritty.toml" (import ./alacritty.nix); xdg.configFile."xmodmap".source = ./.config/xmodmap; xdg.configFile."user-dirs.dirs".source = ./.config/user-dirs.dirs; xdg.configFile."user-dirs.locale".source = ./.config/user-dirs.locale; xdg.configFile."xsettingsd/xsettingsd.conf".source = ./.config/xsettingsd/xsettingsd.conf; xdg.configFile."mako/config".source = ./.config/mako/config; xdg.configFile."libinput-gestures.conf".source = ./.config/libinput-gestures.conf; xdg.configFile."swaync/config.json".source = ./.config/swaync/config.json; xdg.configFile."swaync/style.css".source = ./.config/swaync/style.css; xdg.configFile."waybar/config".source = ./.config/waybar/config; xdg.configFile."waybar/style.css".source = ./.config/waybar/style.css; xdg.configFile."waybar/colorscheme.css".source = ./.config/waybar/colorscheme.css; xdg.configFile."wallpaper.jpg".source = ./assets/wallpaper.jpg; # Required for running Gnome apps outside the Gnome DE, see # https://nixos.wiki/wiki/GNOME#Running_GNOME_programs_outside_of_GNOME dconf = { enable = true; settings = { "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; }; }; }; gtk = { enable = true; font.name = "Lato"; iconTheme = { package = pkgs.papirus-icon-theme; name = "Papirus-Adapta-Nokto-Maia"; }; theme = { package = pkgs.matcha-gtk-theme; name = "Matcha-dark-aliz"; }; gtk3.extraConfig = { gtk-xft-antialias = "1"; gtk-xft-hinting = "1"; gtk-xft-hintstyle = "hintfull"; gtk-xft-rgba = "rgb"; gtk-application-prefer-dark-theme = "true"; }; gtk4.extraConfig = { gtk-xft-antialias = "1"; gtk-xft-hinting = "1"; gtk-xft-hintstyle = "hintfull"; gtk-xft-rgba = "rgb"; gtk-application-prefer-dark-theme = "true"; }; }; xresources.extraConfig = builtins.readFile ./.Xdefaults; systemd.user.services.network-manager-applet = import ./network-manager-applet.service.nix pkgs; home.sessionVariables = sessionVariables; systemd.user.sessionVariables = sessionVariables; }; }; }