{ lib, config, pkgs, ... }: with lib; let psCfg = config.pub-solar; yamlFormat = pkgs.formats.yaml {}; 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 = mkOption { type = types.bool; default = false; description = "Feature flag enabling wlroots software renderer, useful in VMs"; }; }; config = { hardware.opengl.enable = true; # Needed for the udev rules for solaar hardware.logitech.wireless.enable = true; environment = { systemPackages = with pkgs; [ gtk-engine-murrine gtk_engines gsettings-desktop-schemas matcha-gtk-theme papirus-maia-icon-theme glib xdg-utils ]; etc = { "xdg/PubSolar.conf".text = '' [Qt] style=GTK+ ''; }; variables = sessionVariables; }; services.getty.autologinUser = psCfg.user.name; qt = { enable = true; platformTheme = "gtk2"; style = "gtk2"; }; # Required for running Gnome apps outside the Gnome DE, see https://nixos.wiki/wiki/GNOME#Running_GNOME_programs_outside_of_GNOME programs.dconf.enable = true; services.udev.packages = with pkgs; [gnome3.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 = { fonts = with pkgs; [ dejavu_fonts fira-code fira-code-symbols google-fonts lato montserrat nerdfonts noto-fonts noto-fonts-cjk open-sans powerline-fonts source-sans-pro ]; enableDefaultFonts = true; fontconfig.enable = true; fontconfig.defaultFonts = { monospace = ["DejaVu Sans Mono for Powerline"]; sansSerif = ["DejaVu Sans"]; }; }; users.users."${psCfg.user.name}".packages = with pkgs; [ alacritty ungoogled-chromium firefox-wayland flameshot libnotify gnome.adwaita-icon-theme gnome.eog gnome.nautilus gnome.yelp hicolor-icon-theme wine toggle-kbd-layout wcwd vlc gimp ]; home-manager.users."${psCfg.user.name}" = { home.file."xinitrc".source = ./.xinitrc; xdg.configFile."alacritty/alacritty.yml".source = yamlFormat.generate "alacritty.yml" (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."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; 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"; }; }; 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; }; }; }