Refactor modules/themes/fluorescence
Extract functionality, remove redundant wallpaper logic, and simplify wallpaper options.
This commit is contained in:
parent
93b1a4bfed
commit
b7c00a985c
|
@ -9,13 +9,9 @@ let m = config.modules;
|
||||||
in {
|
in {
|
||||||
options.modules.themes.fluorescence = with types; {
|
options.modules.themes.fluorescence = with types; {
|
||||||
enable = mkBoolOpt false;
|
enable = mkBoolOpt false;
|
||||||
wallpaper = {
|
wallpaper = mkOpt (either path null) ./config/wallpaper.png;
|
||||||
path = mkOpt path ./config/wallpaper.png;
|
loginWallpaper = mkOpt (either path null)
|
||||||
filter = {
|
(toFilteredImage cfg.wallpaper "-gaussian-blur 0x2 -modulate 70 -level 5%");
|
||||||
enable = mkBoolOpt true;
|
|
||||||
options = mkOpt str "-gaussian-blur 0x2 -modulate 70 -level 5%";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
|
@ -27,30 +23,12 @@ in {
|
||||||
modules.shell.zsh.rcFiles = [ ./config/zsh/prompt.zsh ];
|
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
|
# Desktop (X11) theming
|
||||||
(mkIf config.services.xserver.enable {
|
(mkIf config.services.xserver.enable {
|
||||||
user.packages = with pkgs; [
|
user.packages = with pkgs; [
|
||||||
unstable.ant-dracula-theme
|
unstable.ant-dracula-theme
|
||||||
paper-icon-theme # for rofi
|
paper-icon-theme # for rofi
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts.fonts = [ pkgs.jetbrains-mono ];
|
fonts.fonts = [ pkgs.jetbrains-mono ];
|
||||||
|
|
||||||
# Compositor
|
# Compositor
|
||||||
|
@ -84,49 +62,32 @@ in {
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
# Use a blurred+dimmed version of my wallpaper for the login screen
|
(mkIf (cfg.loginWallpaper != null) {
|
||||||
(mkIf (pathExists cfg.wallpaper.path) {
|
background = cfg.loginWallpaper;
|
||||||
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}");
|
|
||||||
|
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
home.dataFile = mkIf (cfg.wallpaper != null) {
|
||||||
modules.desktop.browsers = {
|
"wallpaper".source = cfg.wallpaper;
|
||||||
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 = {
|
modules.desktop.browsers = {
|
||||||
configFile = mkMerge [
|
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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
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;
|
"xtheme/90-theme".source = ./config/Xresources;
|
||||||
# GTK
|
# GTK
|
||||||
"gtk-3.0/settings.ini".text = ''
|
"gtk-3.0/settings.ini".text = ''
|
||||||
|
@ -147,10 +108,7 @@ in {
|
||||||
gtk-font-name="Sans 10"
|
gtk-font-name="Sans 10"
|
||||||
'';
|
'';
|
||||||
# QT4/5 global theme
|
# QT4/5 global theme
|
||||||
"Trolltech.conf".text = ''
|
"Trolltech.conf".text = "[Qt]\nstyle=Ant-Dracula";
|
||||||
[Qt]
|
|
||||||
style=Ant-Dracula
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
(mkIf m.desktop.bspwm.enable {
|
(mkIf m.desktop.bspwm.enable {
|
||||||
"bspwm/rc.d/polybar".source = ./config/polybar/run.sh;
|
"bspwm/rc.d/polybar".source = ./config/polybar/run.sh;
|
||||||
|
@ -167,11 +125,6 @@ in {
|
||||||
"inkscape/templates/default.svg".source = ./config/inkscape/default-template.svg;
|
"inkscape/templates/default.svg".source = ./config/inkscape/default-template.svg;
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
dataFile = mkIf (pathExists cfg.wallpaper.path) {
|
|
||||||
"wallpaper".source = cfg.wallpaper.path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue