From b7c00a985c5eb69d3d702f98c443727cb6a0e2b3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 17 Oct 2020 23:38:02 -0400 Subject: [PATCH] Refactor modules/themes/fluorescence Extract functionality, remove redundant wallpaper logic, and simplify wallpaper options. --- modules/themes/fluorescence/default.nix | 167 +++++++++--------------- 1 file changed, 60 insertions(+), 107 deletions(-) diff --git a/modules/themes/fluorescence/default.nix b/modules/themes/fluorescence/default.nix index f096489a..09892ecd 100644 --- a/modules/themes/fluorescence/default.nix +++ b/modules/themes/fluorescence/default.nix @@ -9,13 +9,9 @@ let m = config.modules; in { options.modules.themes.fluorescence = with types; { enable = mkBoolOpt false; - wallpaper = { - path = mkOpt path ./config/wallpaper.png; - filter = { - enable = mkBoolOpt true; - options = mkOpt str "-gaussian-blur 0x2 -modulate 70 -level 5%"; - }; - }; + wallpaper = mkOpt (either path null) ./config/wallpaper.png; + loginWallpaper = mkOpt (either path null) + (toFilteredImage cfg.wallpaper "-gaussian-blur 0x2 -modulate 70 -level 5%"); }; config = mkIf cfg.enable (mkMerge [ @@ -27,30 +23,12 @@ in { modules.shell.zsh.rcFiles = [ ./config/zsh/prompt.zsh ]; } - # Use a blurred+dimmed version of my wallpaper for the login screen - (mkIf (pathExists cfg.wallpaper.path) { - services.xserver.displayManager.lightdm.background = - if cfg.wallpaper.filter.enable - then cfg.wallpaper.path - else (let options = cfg.wallpaper.filter.options; - wallpaperPath = cfg.wallpaper.path; - filteredPath = "wallpaper.filtered.png"; - filteredWallpaper = - pkgs.runCommand "filterWallpaper" - { buildInputs = [ pkgs.imagemagick ]; } '' - mkdir "$out" - convert ${options} ${wallpaperPath} $out/${filteredPath} - ''; - in "${filteredWallpaper}/${filteredPath}"); - }) - # Desktop (X11) theming (mkIf config.services.xserver.enable { user.packages = with pkgs; [ unstable.ant-dracula-theme paper-icon-theme # for rofi ]; - fonts.fonts = [ pkgs.jetbrains-mono ]; # Compositor @@ -84,94 +62,69 @@ in { ''; } - # Use a blurred+dimmed version of my wallpaper for the login screen - (mkIf (pathExists cfg.wallpaper.path) { - background = - if cfg.wallpaper.filter.enable - then cfg.wallpaper.path - else (let options = cfg.wallpaper.filter.options; - wallpaperPath = cfg.wallpaper.path; - filteredPath = "wallpaper.filtered.png"; - filteredWallpaper = - pkgs.runCommand "filterWallpaper" - { buildInputs = [ pkgs.imagemagick ]; } '' - mkdir "$out" - convert ${options} ${wallpaperPath} $out/${filteredPath} - ''; - in "${filteredWallpaper}/${filteredPath}"); - + (mkIf (cfg.loginWallpaper != null) { + background = cfg.loginWallpaper; }) ]; + home.dataFile = mkIf (cfg.wallpaper != null) { + "wallpaper".source = cfg.wallpaper; + }; modules.desktop.browsers = { - firefox.userChrome = - readFile ./config/firefox/userChrome.css; - qutebrowser.userStyles = - with pkgs; - let compiledStyles = - runCommand "compileUserStyles" - { buildInputs = [ sass ]; } '' - mkdir "$out" - for file in "${./config/userstyles/qutebrowser}"/*.scss; do - scss --sourcemap=none \ - --no-cache \ - --style compressed \ - --default-encoding utf-8 \ - "$file" \ - >>"$out/userstyles.css" - done - ''; - in readFile "${compiledStyles}/userstyles.css"; - }; - - home = { - configFile = mkMerge [ - { - "xtheme/90-theme".source = ./config/Xresources; - # GTK - "gtk-3.0/settings.ini".text = '' - [Settings] - gtk-theme-name=Ant-Dracula - gtk-icon-theme-name=Paper - gtk-fallback-icon-theme=gnome - gtk-application-prefer-dark-theme=true - gtk-cursor-theme-name=Paper - gtk-xft-hinting=1 - gtk-xft-hintstyle=hintfull - gtk-xft-rgba=none - ''; - # GTK2 global theme (widget and icon theme) - "gtk-2.0/gtkrc".text = '' - gtk-theme-name="Ant-Dracula" - gtk-icon-theme-name="Paper-Mono-Dark" - gtk-font-name="Sans 10" - ''; - # QT4/5 global theme - "Trolltech.conf".text = '' - [Qt] - style=Ant-Dracula - ''; - } - (mkIf m.desktop.bspwm.enable { - "bspwm/rc.d/polybar".source = ./config/polybar/run.sh; - "bspwm/rc.d/theme".source = ./config/bspwmrc; - }) - (mkIf m.desktop.apps.rofi.enable { - "rofi/theme" = { source = ./config/rofi; recursive = true; }; - }) - (mkIf (m.desktop.bspwm.enable || m.desktop.stumpwm.enable) { - "polybar" = { source = ./config/polybar; recursive = true; }; - "dunst/dunstrc".source = ./config/dunstrc; - }) - (mkIf m.desktop.media.graphics.vector.enable { - "inkscape/templates/default.svg".source = ./config/inkscape/default-template.svg; - }) + firefox.userChrome = concatMapStringsSep "\n" readFile [ + ./config/firefox/userChrome.css + ]; + qutebrowser.userStyles = concatMapStringsSep "\n" toCSSFile [ + ./config/qutebrowser/github.scss + ./config/qutebrowser/monospace-textareas.scss + ./config/qutebrowser/quora.scss + ./config/qutebrowser/stackoverflow.scss + ./config/qutebrowser/xkcd.scss + ./config/qutebrowser/youtube.scss ]; - - dataFile = mkIf (pathExists cfg.wallpaper.path) { - "wallpaper".source = cfg.wallpaper.path; - }; }; + + home.configFile = mkMerge [ + { + # This is sourced in the displayManager (see + # modules/desktop/default.nix) to modularize my Xresources config. + "xtheme/90-theme".source = ./config/Xresources; + # GTK + "gtk-3.0/settings.ini".text = '' + [Settings] + gtk-theme-name=Ant-Dracula + gtk-icon-theme-name=Paper + gtk-fallback-icon-theme=gnome + gtk-application-prefer-dark-theme=true + gtk-cursor-theme-name=Paper + gtk-xft-hinting=1 + gtk-xft-hintstyle=hintfull + gtk-xft-rgba=none + ''; + # GTK2 global theme (widget and icon theme) + "gtk-2.0/gtkrc".text = '' + gtk-theme-name="Ant-Dracula" + gtk-icon-theme-name="Paper-Mono-Dark" + gtk-font-name="Sans 10" + ''; + # QT4/5 global theme + "Trolltech.conf".text = "[Qt]\nstyle=Ant-Dracula"; + } + (mkIf m.desktop.bspwm.enable { + "bspwm/rc.d/polybar".source = ./config/polybar/run.sh; + "bspwm/rc.d/theme".source = ./config/bspwmrc; + }) + (mkIf m.desktop.apps.rofi.enable { + "rofi/theme" = { source = ./config/rofi; recursive = true; }; + }) + (mkIf (m.desktop.bspwm.enable || m.desktop.stumpwm.enable) { + "polybar" = { source = ./config/polybar; recursive = true; }; + "dunst/dunstrc".source = ./config/dunstrc; + }) + (mkIf m.desktop.media.graphics.vector.enable { + "inkscape/templates/default.svg".source = ./config/inkscape/default-template.svg; + }) + ]; }) ]); }