{ config, lib, pkgs, ... }: with lib; let cfg = config.my.theming; background = "#282a36"; currentLine = "#44475a"; foreground = "#f8f8f2"; comment = "#6272a4"; cyan = "#8be9fd"; green = "#50fa7b"; orange = "#ffb86c"; pink = "#ff79c6"; purple = "#bd93f9"; red = "#ff5555"; yellow = "#f1fa8c"; in { config = mkIf (cfg.scheme == "dracula") { home-manager.users.moritz = { programs = { kitty.extraConfig = '' # https://draculatheme.com/kitty foreground #f8f8f2 background #282a36 selection_foreground #ffffff selection_background #44475a url_color #8be9fd # black color0 #21222c color8 #6272a4 # red color1 #ff5555 color9 #ff6e6e # green color2 #50fa7b color10 #69ff94 # yellow color3 #f1fa8c color11 #ffffa5 # blue color4 #bd93f9 color12 #d6acff # magenta color5 #ff79c6 color13 #ff92df # cyan color6 #8be9fd color14 #a4ffff # white color7 #f8f8f2 color15 #ffffff # Cursor colors cursor #f8f8f2 cursor_text_color background # Tab bar colors active_tab_foreground #282a36 active_tab_background #f8f8f2 inactive_tab_foreground #282a36 inactive_tab_background #6272a4 # Marks mark1_foreground #282a36 mark1_background #ff5555 # Splits/Windows active_border_color #f8f8f2 inactive_border_color #6272a4 ''; zathura.extraConfig = '' set window-title-basename "true" set selection-clipboard "clipboard" # Dracula color theme for Zathura # Swaps Foreground for Background to get a light version if the user prefers # # Dracula color theme # set notification-error-bg "#ff5555" # Red set notification-error-fg "#f8f8f2" # Foreground set notification-warning-bg "#ffb86c" # Orange set notification-warning-fg "#44475a" # Selection set notification-bg "#282a36" # Background set notification-fg "#f8f8f2" # Foreground set completion-bg "#282a36" # Background set completion-fg "#6272a4" # Comment set completion-group-bg "#282a36" # Background set completion-group-fg "#6272a4" # Comment set completion-highlight-bg "#44475a" # Selection set completion-highlight-fg "#f8f8f2" # Foreground set index-bg "#282a36" # Background set index-fg "#f8f8f2" # Foreground set index-active-bg "#44475a" # Current Line set index-active-fg "#f8f8f2" # Foreground set inputbar-bg "#282a36" # Background set inputbar-fg "#f8f8f2" # Foreground set statusbar-bg "#282a36" # Background set statusbar-fg "#f8f8f2" # Foreground set highlight-color "#ffb86c" # Orange set highlight-active-color "#ff79c6" # Pink set default-bg "#282a36" # Background set default-fg "#f8f8f2" # Foreground set render-loading true set render-loading-fg "#282a36" # Background set render-loading-bg "#f8f8f2" # Foreground # # Recolor mode settings # set recolor-lightcolor "#282a36" # Background set recolor-darkcolor "#f8f8f2" # Foreground # # Startup options # set adjust-open width set recolor true ''; rofi.theme = "dracula"; }; xsession.windowManager.bspwm = { settings = { focused_border_color = purple; normal_border_color = background; active_border_color = background; }; }; services = { dunst.settings = { # Defines color of the frame around the notification window. frame_color = "#282a36"; # Define a color for the separator. # possible values are: # * auto: dunst tries to find a color fitting to the background; # * foreground: use the same color as the foreground; # * frame: use the same color as the frame; # * anything else will be interpreted as a X color. separator_color = "frame"; urgency_low = { background = "#282a36"; foreground = "#6272a4"; timeout = 10; }; urgency_normal = { background = "#282a36"; foreground = "#bd93f9"; timeout = 10; }; urgency_critical = { background = "#ff5555"; foreground = "#f8f8f2"; timeout = 0; }; }; polybar = { config = { "bar/bottom" = { inherit background foreground; border-color = background; }; "module/bspwm" = { label-focused-foreground = pink; label-occupied-foreground = comment; label-urgent-foreground = red; label-empty-foreground = currentLine; label-separator-foreground = background; }; "module/cpu" = { format-foreground = background; format-background = green; }; "module/time" = { format-foreground = background; format-background = cyan; }; "module/date" = { format-foreground = background; format-background = yellow; }; "module/memory" = { format-foreground = background; format-background = cyan; }; "module/pulseaudio" = { format-volume-foreground = background; format-volume-background = purple; label-muted = "%{F${red}}婢 %{F${background}}muted"; format-muted-foreground = background; format-muted-background = red; }; "module/network" = { format-connected-foreground = background; format-connected-background = purple; }; }; }; }; xdg.configFile."rofi/dracula.rasi".text = '' * { /* Dracula theme colour palette */ drac-bgd: #282a36; drac-cur: #44475a; drac-fgd: #f8f8f2; drac-cmt: #6272a4; drac-cya: #8be9fd; drac-grn: #50fa7b; drac-ora: #ffb86c; drac-pnk: #ff79c6; drac-pur: #bd93f9; drac-red: #ff5555; drac-yel: #f1fa8c; font: "FiraCode Nerd Font Mono 13"; foreground: @drac-fgd; background-color: @drac-bgd; active-background: @drac-pnk; urgent-foreground: @foreground; urgent-background: @drac-red; selected-background: @active-background; selected-urgent-background: @urgent-background; selected-active-background: @active-background; separatorcolor: @active-background; bordercolor: #6272a4; } #window { background-color: @background-color; border: 3; border-radius: 6; border-color: @bordercolor; padding: 5; } #mainbox { border: 0; padding: 5; } #message { border: 1px dash 0px 0px ; border-color: @separatorcolor; padding: 1px ; } #textbox { text-color: @foreground; } #listview { fixed-height: 0; border: 2px dash 0px 0px ; border-color: @bordercolor; spacing: 2px ; scrollbar: false; padding: 2px 0px 0px ; } #element { border: 0; padding: 1px ; } #element.normal.normal { background-color: @background-color; text-color: @foreground; } #element.normal.urgent { background-color: @urgent-background; text-color: @urgent-foreground; } #element.normal.active { background-color: @active-background; text-color: @background-color; } #element.selected.normal { background-color: @selected-background; text-color: @foreground; } #element.selected.urgent { background-color: @selected-urgent-background; text-color: @foreground; } #element.selected.active { background-color: @selected-active-background; text-color: @background-color; } #element.alternate.normal { background-color: @background-color; text-color: @foreground; } #element.alternate.urgent { background-color: @urgent-background; text-color: @foreground; } #element.alternate.active { background-color: @active-background; text-color: @foreground; } #scrollbar { width: 2px ; border: 0; handle-width: 8px ; padding: 0; } #sidebar { border: 2px dash 0px 0px ; border-color: @separatorcolor; } #button.selected { background-color: @selected-background; text-color: @foreground; } #inputbar { spacing: 0; text-color: @foreground; padding: 1px ; } #case-indicator { spacing: 0; text-color: @foreground; } #entry { spacing: 0; text-color: @drac-cya; } #prompt { spacing: 0; text-color: @drac-grn; } #inputbar { children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; } #textbox-prompt-colon { expand: false; str: ":"; margin: 0px 0.3em 0em 0em ; text-color: @drac-grn; } element-text, element-icon { background-color: inherit; text-color: inherit; } ''; }; }; }