args@{ lib, config, pkgs, ... }: with lib; 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 ./waybar.nix ./mako.nix ]; 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; environment = { systemPackages = with pkgs; [ gtk-engine-murrine gtk_engines gsettings-desktop-schemas matcha-gtk-theme papirus-maia-icon-theme glib xdg-utils xorg.xbacklight ]; variables = sessionVariables; }; services.getty.autologinUser = psCfg.user.name; # 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; # This actually lowers security and is # required to run electron apps with the hardened kernel boot.kernel.sysctl."kernel.unprivileged_userns_clone" = 1; fonts = { packages = with pkgs; [ dejavu_fonts powerline-fonts ]; 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 gnome.adwaita-icon-theme gnome.eog gnome.nautilus gnome.seahorse gnome.yelp keepassxc libnotify toggle-kbd-layout vlc wcwd wdisplays wl-mirror ]; qt = { enable = true; platformTheme = "gtk2"; style = "gtk2"; }; home-manager.users."${psCfg.user.name}" = { home.file."xinitrc".source = ./.xinitrc; xdg.configFile."alacritty/alacritty.toml".source = tomlFormat.generate "alacritty.toml" ((import ./alacritty.nix) args); xdg.configFile."xmodmap".source = ./.config/xmodmap; xdg.configFile."user-dirs.locale".source = ./.config/user-dirs.locale; xdg.configFile."libinput-gestures.conf".source = ./.config/libinput-gestures.conf; xdg.configFile."wallpaper.jpg".source = ./assets/wallpaper.jpg; programs.firefox = { enable = true; package = pkgs.firefox-wayland; }; dconf.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 = "1"; }; }; xresources.extraConfig = builtins.readFile ./.Xdefaults; services.network-manager-applet.enable = true; systemd.user.services.network-manager-applet = { Unit = { BindsTo = ["sway-session.target"]; After = lib.mkForce ["sway-session.target"]; Requires = lib.mkForce [ ]; }; Install.WantedBy = [ "sway-session.target" ]; }; home.sessionVariables = sessionVariables; systemd.user.sessionVariables = sessionVariables; }; }; }