474 lines
13 KiB
Nix
474 lines
13 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
colorpickle,
|
|
withNSFW,
|
|
lib,
|
|
self,
|
|
nixpkgs,
|
|
...
|
|
}: let
|
|
theme = import ../../extra/theme.nix;
|
|
inherit (config.lib.formats.rasi) mkLiteral;
|
|
|
|
prepBGs = [
|
|
["${pkgs.lotte-art}/2021-01-27-ceeza-lottedonut.jxl" "-crop" "2048x1152+0+106"]
|
|
["${pkgs.lotte-art}/2021-09-15-cloverhare-lotteplush.jxl" "-crop" "1774x997+0+173"]
|
|
["${pkgs.lotte-art}/2022-11-15-wolfsifi-maff-me-leashed.jxl" "-crop" "1699x956+0+88"]
|
|
];
|
|
|
|
prepBGsNSFW = [
|
|
["${pkgs.lotte-art}/2021-11-27-theroguez-lottegassyvore1.jxl" "-crop" "1233x694+0+65"]
|
|
["${pkgs.lotte-art}/2021-12-12-baltnwolf-christmas-diaper.jxl" "-crop" "2599x1462+0+294"]
|
|
["${pkgs.lotte-art}/2021-12-12-baltnwolf-christmas-diaper-messy.jxl" "-crop" "2599x1462+0+294"]
|
|
["${pkgs.lotte-art}/2022-04-20-cloverhare-mxbatty-maffsie-train-plush.jxl" "-crop" "3377x1900+0+211"]
|
|
["${pkgs.lotte-art}/2022-04-20-cloverhare-mxbatty-me-train-maffsie-plush.jxl" "-crop" "3377x1900+0+211"]
|
|
["${pkgs.lotte-art}/2022-12-27-rexyi-scatych.jxl" "-crop" "2000x1120+0+0"]
|
|
["${pkgs.lotte-art}/2023-03-09-rexyi-voredisposal-ych.jxl" "-crop" "2000x1120+0+0"]
|
|
["${pkgs.lotte-art}/2023-04-16-baltnwolf-lottediaperplushies.jxl" "-gravity" "center" "-background" "white" "-extent" "5333x3000"]
|
|
["${pkgs.lotte-art}/2023-04-16-baltnwolf-lottediaperplushies-messy.jxl" "-gravity" "center" "-background" "white" "-extent" "5333x3000"]
|
|
];
|
|
|
|
fixupImage = instructions:
|
|
pkgs.stdenv.mkDerivation {
|
|
name = "bg.jxl";
|
|
src = pkgs.emptyDirectory;
|
|
nativeBuildInputs = [pkgs.imagemagick];
|
|
buildPhase = ''
|
|
convert ${toString instructions} $out
|
|
'';
|
|
installPhase = "true";
|
|
};
|
|
|
|
validBGs = ["${pkgs.lotte-art}/2020-07-24-urbankitsune-bna-ych.jxl" "${pkgs.lotte-art}/2022-05-02-anonfurryartist-giftart.jxl" "${pkgs.lotte-art}/2022-06-21-sammythetanuki-lotteplushpride.jxl"] ++ (map fixupImage prepBGs);
|
|
validBGsNSFW = ["${pkgs.lotte-art}/2021-10-29-butterskunk-lotte-scat-buffet.jxl" "${pkgs.lotte-art}/2022-08-12-deathtoaster-funpit-scat.jxl" "${pkgs.lotte-art}/2022-08-15-deathtoaster-funpit-mud.jxl"] ++ (map fixupImage prepBGsNSFW) ++ validBGs;
|
|
|
|
mod = a: b: a - (a / b * b);
|
|
choose = l: rand: let len = builtins.length l; in builtins.elemAt l (mod rand len);
|
|
hexToIntList = {
|
|
"0" = 0;
|
|
"1" = 1;
|
|
"2" = 2;
|
|
"3" = 3;
|
|
"4" = 4;
|
|
"5" = 5;
|
|
"6" = 6;
|
|
"7" = 7;
|
|
"8" = 8;
|
|
"9" = 9;
|
|
"a" = 10;
|
|
"b" = 11;
|
|
"c" = 12;
|
|
"d" = 13;
|
|
"e" = 14;
|
|
"f" = 15;
|
|
"A" = 10;
|
|
"B" = 11;
|
|
"C" = 12;
|
|
"D" = 13;
|
|
"E" = 14;
|
|
"F" = 15;
|
|
};
|
|
hexToInt = s: lib.foldl (state: new: state * 16 + hexToIntList.${new}) 0 (lib.strings.stringToCharacters s);
|
|
|
|
seed = hexToInt (self.shortRev or nixpkgs.shortRev);
|
|
bg =
|
|
choose (
|
|
if withNSFW
|
|
then validBGsNSFW
|
|
else validBGs
|
|
)
|
|
seed;
|
|
|
|
color = n:
|
|
config.environment.graphical.colors.main."${builtins.toString n}";
|
|
color' = n: mkLiteral (color n);
|
|
bgPng = pkgs.stdenv.mkDerivation {
|
|
name = "bg.png";
|
|
src = pkgs.emptyDirectory;
|
|
nativeBuildInputs = [pkgs.imagemagick];
|
|
buildPhase = ''
|
|
convert ${bg} $out
|
|
'';
|
|
installPhase = "true";
|
|
};
|
|
in {
|
|
imports = [
|
|
colorpickle.nixosModules.default
|
|
];
|
|
environment.graphical.colorschemes.main = {
|
|
image = bgPng;
|
|
#params = ["--lighten" "0.1"];
|
|
};
|
|
wayland.windowManager.sway.config.output."*".bg = "${bgPng} fill";
|
|
dconf.settings."org/gnome/desktop/interface" = {
|
|
gtk-theme = "Breeze-Dark";
|
|
icon-theme = "breeze-dark";
|
|
cursor-theme = "Vanilla-DMZ";
|
|
};
|
|
gtk = {
|
|
enable = true;
|
|
gtk2.extraConfig = ''
|
|
gtk-cursor-theme-name = "Vanilla-DMZ"
|
|
gtk-cursor-theme-size = 0
|
|
'';
|
|
gtk3.extraConfig = {
|
|
gtk-cursor-theme-name = "Vanilla-DMZ";
|
|
gtk-cursor-theme-size = 0;
|
|
};
|
|
font = {
|
|
package = pkgs.noto-fonts;
|
|
name = "Noto Sans";
|
|
size = 10;
|
|
};
|
|
iconTheme = {
|
|
package = pkgs.libsForQt5.breeze-icons;
|
|
name = "breeze-dark";
|
|
};
|
|
theme = {
|
|
package = pkgs.libsForQt5.breeze-gtk;
|
|
name = "Breeze-Dark";
|
|
};
|
|
};
|
|
qt = {
|
|
enable = true;
|
|
style = {
|
|
name = "Breeze";
|
|
package = pkgs.libsForQt5.breeze-qt5;
|
|
};
|
|
};
|
|
home.file = {
|
|
".icons/default/index.theme".text = ''
|
|
[Icon Theme]
|
|
Name=Default
|
|
Comment=Default Cursor Theme
|
|
Inherits=Vanilla-DMZ
|
|
'';
|
|
};
|
|
programs.kitty.settings = with theme; {
|
|
background_opacity = "0.85";
|
|
background = color 0;
|
|
foreground = color 15;
|
|
cursor = color 15;
|
|
selection_background = "#4f414c";
|
|
color0 = color 0;
|
|
color1 = color 9;
|
|
color2 = color 10;
|
|
color3 = color 11;
|
|
color4 = color 12;
|
|
color5 = color 13;
|
|
color6 = color 14;
|
|
color7 = color 7;
|
|
color8 = color 8;
|
|
color9 = color 9;
|
|
color10 = color 10;
|
|
color11 = color 11;
|
|
color12 = color 12;
|
|
color13 = color 13;
|
|
color14 = color 14;
|
|
color15 = color 15;
|
|
};
|
|
# Taken from https://github.com/jakehamilton/dotfiles/blob/master/waybar/style.css
|
|
programs.waybar.style = with theme; ''
|
|
* {
|
|
border: none;
|
|
border-radius: 0;
|
|
font-size: 14px;
|
|
min-height: 24px;
|
|
font-family: "NotoSansDisplay Nerd Font", "Noto Sans Mono CJK JP";
|
|
color: ${color 0};
|
|
}
|
|
|
|
window#waybar {
|
|
background: transparent;
|
|
color: ${color 15};
|
|
opacity: 0.9;
|
|
}
|
|
|
|
window#waybar.hidden {
|
|
opacity: 0.2;
|
|
}
|
|
|
|
#window {
|
|
margin-top: 8px;
|
|
padding: 0px 16px 0px 16px;
|
|
border-radius: 24px;
|
|
transition: none;
|
|
background: transparent;
|
|
}
|
|
|
|
#workspaces {
|
|
margin-top: 8px;
|
|
margin-left: 12px;
|
|
margin-bottom: 0;
|
|
border-radius: 24px;
|
|
background-color: ${color 0};
|
|
color: ${color 15};
|
|
transition: none;
|
|
}
|
|
|
|
#workspaces button {
|
|
transition: none;
|
|
background: transparent;
|
|
font-size: 16px;
|
|
color: ${color 15};
|
|
}
|
|
|
|
#workspaces button.focused {
|
|
background: ${color 13};
|
|
color: ${color 0};
|
|
}
|
|
|
|
#workspaces button:hover {
|
|
background: ${color 10};
|
|
color: ${color 0};
|
|
}
|
|
|
|
#mpd {
|
|
margin-top: 8px;
|
|
margin-left: 8px;
|
|
padding-left: 16px;
|
|
padding-right: 16px;
|
|
margin-bottom: 0;
|
|
border-radius: 24px;
|
|
background: ${color 2};
|
|
transition: none;
|
|
}
|
|
|
|
#mpd.disconnected,
|
|
#mpd.stopped {
|
|
background: ${color 4};
|
|
}
|
|
|
|
#network {
|
|
margin-top: 8px;
|
|
margin-left: 8px;
|
|
padding-left: 16px;
|
|
padding-right: 16px;
|
|
margin-bottom: 0;
|
|
border-radius: 24px;
|
|
transition: none;
|
|
background: ${color 13};
|
|
}
|
|
|
|
#pulseaudio {
|
|
margin-top: 8px;
|
|
margin-left: 8px;
|
|
padding-left: 16px;
|
|
padding-right: 16px;
|
|
margin-bottom: 0;
|
|
border-radius: 24px;
|
|
transition: none;
|
|
background: ${color 11};
|
|
}
|
|
|
|
#temperature, #battery {
|
|
margin-top: 8px;
|
|
margin-left: 8px;
|
|
padding-left: 16px;
|
|
padding-right: 16px;
|
|
margin-bottom: 0;
|
|
border-radius: 24px;
|
|
transition: none;
|
|
background: ${color 2};
|
|
}
|
|
|
|
#cpu, #backlight, #battery.warning {
|
|
margin-top: 8px;
|
|
margin-left: 8px;
|
|
padding-left: 16px;
|
|
padding-right: 16px;
|
|
margin-bottom: 0;
|
|
border-radius: 24px;
|
|
transition: none;
|
|
background: ${color 14};
|
|
}
|
|
|
|
#memory, #battery.critical {
|
|
margin-top: 8px;
|
|
margin-left: 8px;
|
|
padding-left: 16px;
|
|
padding-right: 16px;
|
|
margin-bottom: 0;
|
|
border-radius: 24px;
|
|
transition: none;
|
|
background: ${color 12};
|
|
}
|
|
|
|
#clock {
|
|
margin-top: 8px;
|
|
margin-left: 8px;
|
|
margin-right: 12px;
|
|
padding-left: 16px;
|
|
padding-right: 16px;
|
|
margin-bottom: 0;
|
|
border-radius: 26px;
|
|
transition: none;
|
|
background: ${color 0};
|
|
color: ${color 15};
|
|
}
|
|
'';
|
|
|
|
wayland.windowManager.sway.extraConfig = with theme; ''
|
|
# target title bg text indicator border
|
|
client.focused ${color 5} ${color 0} ${color 15} ${color 12} ${color 5}
|
|
client.focused_inactive ${color 13} ${color 0} ${color 15} ${color 12} ${color 13}
|
|
client.unfocused ${color 13} ${color 0} ${color 15} ${color 12} ${color 13}
|
|
client.urgent ${color 14} ${color 0} ${color 14} ${color 8} ${color 14}
|
|
client.placeholder ${color 8} ${color 0} ${color 15} ${color 8} ${color 8}
|
|
client.background ${color 0}
|
|
seat seat0 xcursor_theme breeze-dark 24
|
|
'';
|
|
home.packages = with pkgs; [libsForQt5.breeze-icons libsForQt5.qt5ct vanilla-dmz];
|
|
|
|
programs.rofi.theme = with theme; let
|
|
element = {
|
|
background-color = mkLiteral "inherit";
|
|
text-color = mkLiteral "inherit";
|
|
};
|
|
in {
|
|
"*" = {
|
|
bg-col = color' 0;
|
|
bg-col-light = color' 0;
|
|
border-col = color' 0;
|
|
selected-col = color' 0;
|
|
blue = color' 1;
|
|
fg-col = color' 15;
|
|
fg-col2 = color' 12;
|
|
grey = color' 8;
|
|
width = 600;
|
|
};
|
|
element-text = element;
|
|
window = {
|
|
height = mkLiteral "360px";
|
|
border = mkLiteral "3px";
|
|
border-color = mkLiteral "@border-col";
|
|
background-color = mkLiteral "@bg-col";
|
|
opacity = mkLiteral "0.9";
|
|
};
|
|
mainbox = {
|
|
background-color = mkLiteral "@bg-col";
|
|
};
|
|
inputbar = {
|
|
children = map mkLiteral ["prompt" "entry"];
|
|
background-color = mkLiteral "@bg-col";
|
|
border-radius = mkLiteral "5px";
|
|
padding = mkLiteral "2px";
|
|
};
|
|
prompt = {
|
|
background-color = mkLiteral "@blue";
|
|
padding = mkLiteral "6px";
|
|
text-color = mkLiteral "@bg-col";
|
|
border-radius = mkLiteral "3px";
|
|
margin = mkLiteral "20px 0px 0px 20px";
|
|
};
|
|
|
|
textbox-prompt-colon = {
|
|
expand = mkLiteral "false";
|
|
str = ":";
|
|
};
|
|
|
|
entry = {
|
|
padding = mkLiteral "6px";
|
|
margin = mkLiteral "20px 0px 0px 10px";
|
|
text-color = mkLiteral "@fg-col";
|
|
background-color = mkLiteral "@bg-col";
|
|
};
|
|
|
|
listview = {
|
|
border = mkLiteral "0px 0px 0px";
|
|
padding = mkLiteral "6px 0px 0px";
|
|
margin = mkLiteral "10px 0px 0px 20px";
|
|
columns = 2;
|
|
lines = 5;
|
|
background-color = mkLiteral "@bg-col";
|
|
};
|
|
|
|
element = {
|
|
padding = mkLiteral "5px";
|
|
background-color = mkLiteral "@bg-col";
|
|
text-color = mkLiteral "@fg-col";
|
|
};
|
|
|
|
element-icon =
|
|
element
|
|
// {
|
|
size = mkLiteral "25px";
|
|
};
|
|
|
|
"element selected" = {
|
|
background-color = mkLiteral "@selected-col";
|
|
text-color = mkLiteral "@fg-col2";
|
|
};
|
|
|
|
mode-switcher =
|
|
element
|
|
// {
|
|
spacing = 0;
|
|
};
|
|
|
|
button = {
|
|
padding = mkLiteral "10px";
|
|
background-color = mkLiteral "@bg-col-light";
|
|
text-color = mkLiteral "@grey";
|
|
vertical-align = mkLiteral "0.5";
|
|
horizontal-align = mkLiteral "0.5";
|
|
};
|
|
|
|
"button selected" = {
|
|
background-color = mkLiteral "@bg-col";
|
|
text-color = mkLiteral "@blue";
|
|
};
|
|
|
|
message = {
|
|
background-color = mkLiteral "@bg-col-light";
|
|
margin = mkLiteral "2px";
|
|
padding = mkLiteral "2px";
|
|
border-radius = mkLiteral "5px";
|
|
};
|
|
|
|
textbox = {
|
|
padding = mkLiteral "6px";
|
|
margin = mkLiteral "20px 0px 0px 20px";
|
|
text-color = mkLiteral "@blue";
|
|
background-color = mkLiteral "@bg-col-light";
|
|
};
|
|
};
|
|
programs.neomutt.extraConfig = ''
|
|
color normal default default # Text is "Text"
|
|
color index color2 default ~N # New Messages are Green
|
|
color index color1 default ~F # Flagged messages are Red
|
|
color index color13 default ~T # Tagged Messages are Red
|
|
color index color1 default ~D # Messages to delete are Red
|
|
color attachment color5 default # Attachments are Pink
|
|
color signature color8 default # Signatures are Surface 2
|
|
color search color4 default # Highlighted results are Blue
|
|
|
|
color indicator default color8 # currently highlighted message Surface 2=Background Text=Foreground
|
|
color error color1 default # error messages are Red
|
|
color status color15 default # status line "Subtext 0"
|
|
color tree color15 default # thread tree arrows Subtext 0
|
|
color tilde color15 default # blank line padding Subtext 0
|
|
|
|
color hdrdefault color13 default # default headers Pink
|
|
color header color13 default "^From:"
|
|
color header color13 default "^Subject:"
|
|
|
|
color quoted color15 default # Subtext 0
|
|
color quoted1 color7 default # Subtext 1
|
|
color quoted2 color8 default # Surface 2
|
|
color quoted3 color0 default # Surface 1
|
|
color quoted4 color0 default
|
|
color quoted5 color0 default
|
|
|
|
color body color2 default [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ # email addresses Green
|
|
color body color2 default (https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ # URLs Green
|
|
color body color4 default (^|[[:space:]])\\*[^[:space:]]+\\*([[:space:]]|$) # *bold* text Blue
|
|
color body color4 default (^|[[:space:]])_[^[:space:]]+_([[:space:]]|$) # _underlined_ text Blue
|
|
color body color4 default (^|[[:space:]])/[^[:space:]]+/([[:space:]]|$) # /italic/ text Blue
|
|
|
|
color sidebar_flagged color1 default # Mailboxes with flagged mails are Red
|
|
color sidebar_new color10 default # Mailboxes with new mail are Green
|
|
'';
|
|
home.file.".local/share/mc/skins/catppuccin.ini".source = ../../extra/mc-catppuccin.ini;
|
|
}
|