about summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-03-02 20:30:02 +0300
committerAzat Bahawi <azat@bahawi.net>2024-03-02 20:30:02 +0300
commit482bcef47a3b7ee63553c58d200065857ec42b1c (patch)
treeface7032b62c8957df4a84b2fc0c4adc47020f9e /modules
parent2024-03-01 (diff)
2024-03-02
Diffstat (limited to '')
-rw-r--r--modules/common/alacritty.nix96
-rw-r--r--modules/common/bat.nix1
-rw-r--r--modules/common/common/default.nix1
-rw-r--r--modules/common/common/nix.nix2
-rw-r--r--modules/common/common/stylix.nix68
-rw-r--r--modules/common/default.nix1
-rw-r--r--modules/common/emacs/default.nix8
-rw-r--r--modules/common/emacs/doom/config.el6
-rw-r--r--modules/common/fonts.nix95
-rw-r--r--modules/common/profiles/default.nix48
-rw-r--r--modules/common/profiles/dev/sql.nix33
-rw-r--r--modules/common/qutebrowser.nix202
-rw-r--r--modules/common/vim/default.nix2
-rw-r--r--modules/common/vscode.nix47
-rw-r--r--modules/common/zathura.nix125
-rw-r--r--modules/darwin/common/default.nix1
-rw-r--r--modules/darwin/common/stylix.nix11
-rw-r--r--modules/darwin/default.nix1
-rw-r--r--modules/darwin/fonts.nix16
-rw-r--r--modules/nixos/common/console.nix2
-rw-r--r--modules/nixos/common/default.nix1
-rw-r--r--modules/nixos/common/stylix.nix37
-rw-r--r--modules/nixos/default.nix1
-rw-r--r--modules/nixos/dwm.nix23
-rw-r--r--modules/nixos/firefox/default.nix57
-rw-r--r--modules/nixos/fonts.nix78
-rw-r--r--modules/nixos/git/default.nix2
-rw-r--r--modules/nixos/kde.nix21
-rw-r--r--modules/nixos/profiles/headful.nix1
-rw-r--r--modules/nixos/thunderbird.nix8
-rw-r--r--modules/nixos/x11.nix44
31 files changed, 286 insertions, 753 deletions
diff --git a/modules/common/alacritty.nix b/modules/common/alacritty.nix
index be3af21..892516b 100644
--- a/modules/common/alacritty.nix
+++ b/modules/common/alacritty.nix
@@ -12,104 +12,16 @@ in {
   config = mkIf cfg.enable {
     hm.programs.alacritty = {
       enable = true;
-      settings = with config.nixfiles.modules; {
+      settings = {
         window = {
-          padding = with config.fontScheme.monospaceFont; {
-            x = size;
-            y = size;
+          padding = with config.stylix.fonts.sizes; {
+            x = terminal;
+            y = terminal;
           };
           dynamic_padding = false;
           decorations = "Full";
           startup_mode = "Maximized";
         };
-        font = with config.fontScheme.monospaceFont; {
-          normal = {
-            inherit family;
-            style = "Regular";
-          };
-          bold = {
-            inherit family;
-            style = "Bold";
-          };
-          italic = {
-            inherit family;
-            style = "Italic";
-          };
-          bold_italic = {
-            inherit family;
-            style = "Bold Italic";
-          };
-          inherit size;
-        };
-        colors = with config.colourScheme; {
-          primary = {
-            inherit background foreground;
-            dim_foreground = "None";
-            bright_foreground = "None";
-          };
-          cursor = {
-            text = "CellBackground";
-            cursor = "CellForeground";
-          };
-          vi_mode_cursor = {
-            text = "CellBackground";
-            cursor = "CellForeground";
-          };
-          search = {
-            matches = {
-              foreground = white;
-              background = red;
-            };
-            focused_match = {
-              foreground = red;
-              background = black;
-            };
-          };
-          hints = {
-            start = {
-              foreground = black;
-              background = yellow;
-            };
-            end = {
-              foreground = yellow;
-              background = black;
-            };
-          };
-          line_indicator = {
-            foreground = "None";
-            background = "None";
-          };
-          footer_bar = {
-            foreground = black;
-            background = white;
-          };
-          selection = {
-            text = "CellBackground";
-            background = "CellForeground";
-          };
-          normal = {
-            inherit
-              black
-              red
-              green
-              yellow
-              blue
-              magenta
-              cyan
-              white
-              ;
-          };
-          bright = {
-            black = brightBlack;
-            red = brightRed;
-            green = brightGreen;
-            yellow = brightYellow;
-            blue = brightBlue;
-            magenta = brightMagenta;
-            cyan = brightCyan;
-            white = brightWhite;
-          };
-        };
         selection.save_to_clipboard = true;
         cursor = {
           style = {
diff --git a/modules/common/bat.nix b/modules/common/bat.nix
index 2dc0913..89444d9 100644
--- a/modules/common/bat.nix
+++ b/modules/common/bat.nix
@@ -21,7 +21,6 @@ in {
       config = {
         style = "plain";
         tabs = "4";
-        theme = "base16";
         wrap = "never";
       };
     };
diff --git a/modules/common/common/default.nix b/modules/common/common/default.nix
index 0087754..62e4a95 100644
--- a/modules/common/common/default.nix
+++ b/modules/common/common/default.nix
@@ -7,6 +7,7 @@ _: {
     ./nix.nix
     ./secrets.nix
     ./shell
+    ./stylix.nix
     ./users.nix
     ./xdg.nix
   ];
diff --git a/modules/common/common/nix.nix b/modules/common/common/nix.nix
index 78672a0..ecd5874 100644
--- a/modules/common/common/nix.nix
+++ b/modules/common/common/nix.nix
@@ -4,7 +4,6 @@
   lib,
   localUsername ? lib.my.username,
   pkgs,
-  pkgsPr,
   this,
   ...
 }:
@@ -90,7 +89,6 @@ with lib; {
   nixpkgs.overlays = with inputs; [
     self.overlays.default
     (_: _: {
-      inherit (pkgsPr 274745 "sha256-VqBdz6OERQ7dUxWVG+aAeKWuRoPIgfZPipfNdX122WM=") beets-unstable;
     })
   ];
 
diff --git a/modules/common/common/stylix.nix b/modules/common/common/stylix.nix
new file mode 100644
index 0000000..46b1f52
--- /dev/null
+++ b/modules/common/common/stylix.nix
@@ -0,0 +1,68 @@
+{
+  lib,
+  pkgs,
+  ...
+}:
+with lib; {
+  imports = [
+    (mkAliasOptionModule ["colors"] [
+      "lib"
+      "stylix"
+      "colors"
+    ])
+  ];
+
+  options.nixfiles.modules.common.stylix.fonts.extraPackages = mkOption {
+    description = "Font packages.";
+    default = with pkgs; [
+      font-awesome
+      noto-fonts
+      noto-fonts-emoji
+      sarasa-gothic
+      source-han-mono
+      source-han-sans
+      source-han-serif
+    ];
+    readOnly = true;
+  };
+
+  config = {
+    stylix = {
+      image = pkgs.fetchurl {
+        url = "https://upload.wikimedia.org/wikipedia/commons/a/a5/Bonaparte_ante_la_Esfinge%2C_por_Jean-Léon_Gérôme.jpg";
+        sha256 = "sha256-qWv52oT8cF9K4ZoeawmR3jgoGB2ARfjbKKc12IljUcM=";
+      };
+
+      base16Scheme = "${pkgs.base16-schemes}/share/themes/default-dark.yaml";
+
+      fonts = {
+        serif = {
+          package = pkgs.iosevka-bin.override {variant = "etoile";};
+          name = "Iosevka Etoile";
+        };
+
+        sansSerif = {
+          package = pkgs.iosevka-bin.override {variant = "aile";};
+          name = "Iosevka Aile";
+        };
+
+        monospace = {
+          package = pkgs.iosevka-bin;
+          name = "Iosevka";
+        };
+
+        sizes = {
+          desktop = 10;
+          applications = 10;
+          terminal = 12;
+        };
+      };
+
+      cursor = {
+        name = "phinger-cursors";
+        package = pkgs.phinger-cursors;
+        size = 32;
+      };
+    };
+  };
+}
diff --git a/modules/common/default.nix b/modules/common/default.nix
index c6c7c81..92f719d 100644
--- a/modules/common/default.nix
+++ b/modules/common/default.nix
@@ -9,7 +9,6 @@ _: {
     ./editorconfig.nix
     ./emacs
     ./eza.nix
-    ./fonts.nix
     ./git.nix
     ./gnupg.nix
     ./htop.nix
diff --git a/modules/common/emacs/default.nix b/modules/common/emacs/default.nix
index 4d17e92..6c5ee1e 100644
--- a/modules/common/emacs/default.nix
+++ b/modules/common/emacs/default.nix
@@ -19,7 +19,6 @@ in {
     };
 
     nixfiles.modules = {
-      fonts.enable = true;
       git.client.enable = true;
       gnupg.enable = true;
       password-store.enable = true;
@@ -28,6 +27,8 @@ in {
     };
 
     hm = {
+      stylix.targets.emacs.enable = false;
+
       xdg.configFile = mapAttrs (_: value:
         value
         // {
@@ -171,10 +172,9 @@ in {
 
                 (appendq! auth-sources '(("${config.secrets.authinfo.path}")))
 
-                ;; The font must be set to n+2, otherwise it looks too small.
                 (setq doom-font (font-spec
-                                  :family "${config.fontScheme.monospaceFont.family}"
-                                  :size ${toString (config.fontScheme.monospaceFont.size + 2)})
+                                  :family "${config.stylix.fonts.monospace.name}"
+                                  :size 16)
                       doom-unicode-font doom-font)
 
                 ;; :input japanese
diff --git a/modules/common/emacs/doom/config.el b/modules/common/emacs/doom/config.el
index 8fd2afc..9e3d603 100644
--- a/modules/common/emacs/doom/config.el
+++ b/modules/common/emacs/doom/config.el
@@ -9,7 +9,7 @@
   scroll-margin 10
   hscroll-margin 10)
 
-(when IS-LINUX
+(when (featurep :system 'linux)
   (setq browse-url-generic-program (executable-find "firefox")
         browse-url-browser-function 'browse-url-generic))
 
@@ -17,7 +17,7 @@
 ;;; Doom-specific
 ;;
 
-(setq doom-theme 'doom-tomorrow-night
+(setq doom-theme 'modus-vivendi
       doom-modeline-icon nil
       doom-modeline-indent-info t
       doom-modeline-total-line-number t
@@ -190,7 +190,7 @@
                   :tls t
                   :user ,(concat circe-default-user "/" server)
                   :pass ,(lambda (&rest _)
-                           (+pass-get-secret "server/soju.manwe.shire.net/azahi"))))
+                           (+pass-get-secret ""))))
               '("libera" "oftc" "hackint" "rizon")))
 
 ;;
diff --git a/modules/common/fonts.nix b/modules/common/fonts.nix
deleted file mode 100644
index 6bd3e71..0000000
--- a/modules/common/fonts.nix
+++ /dev/null
@@ -1,95 +0,0 @@
-{
-  lib,
-  pkgs,
-  ...
-}:
-with lib; {
-  imports = [
-    (mkAliasOptionModule ["fontScheme"] [
-      "nixfiles"
-      "modules"
-      "fonts"
-      "fontScheme"
-    ])
-  ];
-
-  options.nixfiles.modules.fonts = {
-    enable = mkEnableOption "fonts and their configurations";
-
-    packages = mkOption {
-      description = "Font packages to install.";
-      type = with types; listOf package;
-      default = with pkgs; [
-        (iosevka-bin.override {variant = "aile";})
-        (iosevka-bin.override {variant = "etoile";})
-        iosevka-bin
-        sarasa-gothic
-        source-han-mono
-        source-han-sans
-        source-han-serif
-        noto-fonts
-        font-awesome
-      ];
-    };
-
-    fontScheme = let
-      mkFont = {
-        family,
-        style,
-        size,
-      }: {
-        family = mkOption {
-          description = "Family of the font.";
-          type = types.str;
-          default = family;
-        };
-        style = mkOption {
-          description = "Style of the font.";
-          type = types.str;
-          default = style;
-        };
-        size = mkOption {
-          description = "Size of the font.";
-          type = types.int;
-          default = size;
-        };
-      };
-    in {
-      serifFont = mkFont {
-        family = "Iosevka Etoile";
-        style = "Regular";
-        size = 14;
-      };
-
-      serifFontFallback = mkFont {
-        family = "Sarasa Gothic J";
-        style = "Regular";
-        size = 14;
-      };
-
-      sansSerifFont = mkFont {
-        family = "Iosevka Aile";
-        style = "Regular";
-        size = 14;
-      };
-
-      sansSerifFontFallback = mkFont {
-        family = "Sarasa Gothic J";
-        style = "Regular";
-        size = 14;
-      };
-
-      monospaceFont = mkFont {
-        family = "Iosevka";
-        style = "Regular";
-        size = 14;
-      };
-
-      monospaceFontFallback = mkFont {
-        family = "Sarasa Mono J";
-        style = "Regular";
-        size = 14;
-      };
-    };
-  };
-}
diff --git a/modules/common/profiles/default.nix b/modules/common/profiles/default.nix
index 2b24752..a17ff08 100644
--- a/modules/common/profiles/default.nix
+++ b/modules/common/profiles/default.nix
@@ -13,53 +13,13 @@ in {
     ./email.nix
     ./headful.nix
     ./headless.nix
-    (mkAliasOptionModule ["colourScheme"] [
-      "nixfiles"
-      "modules"
-      "profiles"
-      "default"
-      "colourScheme"
-    ])
   ];
 
-  options.nixfiles.modules.profiles.default = {
-    enable =
-      mkEnableOption "The most default profile of them all."
-      // {
-        default = true;
-      };
-
-    colourScheme = let
-      mkColour = default:
-        mkOption {
-          type = types.str;
-          inherit default;
-          description = "Colour in a standard hexadecimal notation.";
-          example = "#000000";
-        };
-    in rec {
-      black = mkColour "#161719";
-      red = mkColour "#cc6666";
-      green = mkColour "#b5bd68";
-      yellow = mkColour "#f0c674";
-      blue = mkColour "#81a2be";
-      magenta = mkColour "#b294bb";
-      cyan = mkColour "#8abeb7";
-      white = mkColour "#c5c8c6";
-
-      brightBlack = mkColour "#969896";
-      brightRed = mkColour "#cc6666";
-      brightGreen = mkColour "#b5bd68";
-      brightYellow = mkColour "#f0c674";
-      brightBlue = mkColour "#81a2be";
-      brightMagenta = mkColour "#b294bb";
-      brightCyan = mkColour "#8abeb7";
-      brightWhite = mkColour "#ffffff";
-
-      background = black;
-      foreground = white;
+  options.nixfiles.modules.profiles.default.enable =
+    mkEnableOption "The most default profile of them all."
+    // {
+      default = true;
     };
-  };
 
   config = mkIf cfg.enable {
     assertions = [
diff --git a/modules/common/profiles/dev/sql.nix b/modules/common/profiles/dev/sql.nix
index b290c16..3e1c4b2 100644
--- a/modules/common/profiles/dev/sql.nix
+++ b/modules/common/profiles/dev/sql.nix
@@ -16,7 +16,6 @@ in {
   config = mkIf cfg.enable {
     hm = {
       home.packages = with pkgs; [
-        dbeaver
         pgcli
         litecli
       ];
@@ -34,26 +33,26 @@ in {
           table_format = "fancy_grid";
         };
 
-        colorsSection = with config.colourScheme; {
+        colorsSection = with config.colors.withHashtag; {
           "arg-toolbar" = "noinherit bold";
           "arg-toolbar.text" = "nobold";
-          "bottom-toolbar" = "bg:${black} ${white}";
-          "bottom-toolbar.off" = "bg:${black} ${brightBlack}";
-          "bottom-toolbar.on" = "bg:${black} ${brightWhite}";
-          "bottom-toolbar.transaction.failed" = "bg:${black} ${red} bold";
-          "bottom-toolbar.transaction.valid" = "bg:${black} ${green} bold";
-          "completion-menu.completion" = "bg:${black} ${white}";
-          "completion-menu.completion.current" = "bg:${white} ${black}";
-          "completion-menu.meta.completion" = "bg:${black} ${yellow}";
-          "completion-menu.meta.completion.current" = "bg:${yellow} ${black}";
-          "completion-menu.multi-column-meta" = "bg:${yellow} ${black}";
-          "scrollbar" = "bg:${black}";
-          "scrollbar.arrow" = "bg:${black}";
-          "search" = "bg:${magenta} ${brightWhite}";
+          "bottom-toolbar" = "bg:${base01} ${base06}";
+          "bottom-toolbar.off" = "bg:${base01} ${base02}";
+          "bottom-toolbar.on" = "bg:${base01} ${base07}";
+          "bottom-toolbar.transaction.failed" = "bg:${base01} ${base08} bold";
+          "bottom-toolbar.transaction.valid" = "bg:${base01} ${base0B} bold";
+          "completion-menu.completion" = "bg:${base01} ${base06}";
+          "completion-menu.completion.current" = "bg:${base06} ${base01}";
+          "completion-menu.meta.completion" = "bg:${base01} ${base13}";
+          "completion-menu.meta.completion.current" = "bg:${base09} ${base01}";
+          "completion-menu.multi-column-meta" = "bg:${base09} ${base01}";
+          "scrollbar" = "bg:${base01}";
+          "scrollbar.arrow" = "bg:${base01}";
+          "search" = "bg:${base17} ${base07}";
           "search-toolbar" = "noinherit bold";
           "search-toolbar.text" = "nobold";
-          "search.current" = "bg:${green} ${brightWhite}";
-          "selected" = "bg:${blue} ${brightWhite}";
+          "search.current" = "bg:${base14} ${base07}";
+          "selected" = "bg:${base0D} ${base07}";
           "system-toolbar" = "noinherit bold";
         };
 
diff --git a/modules/common/qutebrowser.nix b/modules/common/qutebrowser.nix
index 9a919b7..a3b82d3 100644
--- a/modules/common/qutebrowser.nix
+++ b/modules/common/qutebrowser.nix
@@ -178,7 +178,6 @@ in {
           hints = {
             auto_follow = "unique-match";
             auto_follow_timeout = 0;
-            border = "0px";
             min_chars = 1;
             scatter = false;
             uppercase = false;
@@ -242,207 +241,6 @@ in {
             title_format = "{perc}{current_title}{title_sep}qutebrowser";
           };
 
-          colors = with config.colourScheme; {
-            completion = rec {
-              fg = white;
-              match.fg = red;
-              odd.bg = black;
-              even.bg = odd.bg;
-              category = {
-                fg = white;
-                bg = black;
-                border = {
-                  top = black;
-                  bottom = black;
-                };
-              };
-              item.selected = {
-                fg = black;
-                bg = white;
-                border = {
-                  top = white;
-                  bottom = white;
-                };
-              };
-              scrollbar = {
-                fg = white;
-                bg = black;
-              };
-            };
-            contextmenu = {
-              menu = {
-                fg = white;
-                bg = black;
-              };
-              selected = {
-                fg = black;
-                bg = white;
-              };
-              disabled = {
-                fg = brightBlack;
-                bg = black;
-              };
-            };
-            downloads = {
-              bar.bg = black;
-              start = {
-                fg = green;
-                bg = black;
-              };
-              stop = {
-                fg = yellow;
-                bg = black;
-              };
-              error = {
-                fg = red;
-                bg = black;
-              };
-              system = {
-                fg = "none";
-                bg = "none";
-              };
-            };
-            hints = {
-              fg = white;
-              match.fg = red;
-              bg = black;
-            };
-            keyhint = {
-              fg = white;
-              suffix.fg = red;
-              bg = black;
-            };
-            messages = {
-              error = rec {
-                bg = black;
-                fg = red;
-                border = bg;
-              };
-              info = rec {
-                fg = blue;
-                bg = black;
-                border = bg;
-              };
-              warning = rec {
-                fg = yellow;
-                bg = black;
-                border = bg;
-              };
-            };
-            prompts = rec {
-              fg = white;
-              bg = black;
-              selected = {
-                fg = black;
-                bg = white;
-              };
-              border = bg;
-            };
-            statusbar = {
-              normal = {
-                bg = black;
-                fg = white;
-              };
-              command = {
-                bg = black;
-                fg = white;
-              };
-              insert = {
-                bg = green;
-                fg = black;
-              };
-              passthrough = {
-                bg = blue;
-                fg = black;
-              };
-              private = {
-                bg = magenta;
-                fg = black;
-              };
-              url = {
-                fg = blue;
-                hover.fg = brightBlue;
-                success = {
-                  http.fg = brightGreen;
-                  https.fg = brightGreen;
-                };
-                warn.fg = brightYellow;
-                error.fg = brightRed;
-              };
-            };
-            tabs = rec {
-              bar.bg = black;
-              even = {
-                bg = black;
-                fg = white;
-              };
-              odd = with even; {inherit bg fg;};
-              selected = rec {
-                even = {
-                  bg = white;
-                  fg = black;
-                };
-                odd = with even; {inherit bg fg;};
-              };
-              pinned = rec {
-                even = {
-                  bg = brightBlack;
-                  fg = brightWhite;
-                };
-                odd = with even; {inherit bg fg;};
-              };
-              indicator = {
-                start = green;
-                stop = yellow;
-                error = red;
-                system = "none";
-              };
-            };
-            webpage = {
-              bg = "white";
-              darkmode.enabled = false;
-              preferred_color_scheme = "auto";
-            };
-          };
-
-          fonts =
-            (with config.fontScheme.monospaceFont; {
-              default_family = family;
-              default_size = (toString size) + "pt";
-            })
-            // {
-              web = with config.fontScheme; {
-                family = rec {
-                  standard = sans_serif;
-                  fixed = monospaceFont.family;
-                  serif = serifFont.family;
-                  sans_serif = sansSerifFont.family;
-                  cursive = null;
-                  fantasy = null;
-                };
-                size = rec {
-                  default = sansSerifFont.size;
-                  default_fixed = monospaceFont.size;
-                  minimum = 0;
-                  minimum_logical = default / 2;
-                };
-              };
-            }
-            // mapListToAttrs (_: "default_size default_family") [
-              "completion.category"
-              "completion.entry"
-              "contextmenu"
-              "debug_console"
-              "downloads"
-              "hints"
-              "keyhint"
-              "messages.error"
-              "messages.info"
-              "messages.warning"
-              "prompts"
-              "statusbar"
-            ];
-
           qt = mkIf kde.enable {
             force_platform = null;
             force_platformtheme = "KDE";
diff --git a/modules/common/vim/default.nix b/modules/common/vim/default.nix
index cd24768..e305cf1 100644
--- a/modules/common/vim/default.nix
+++ b/modules/common/vim/default.nix
@@ -32,6 +32,8 @@ in {
   };
 
   config = mkIf cfg.enable {
+    hm.stylix.targets.vim.enable = false;
+
     environment = with config.programs.vim; {
       systemPackages = [package];
       variables = rec {
diff --git a/modules/common/vscode.nix b/modules/common/vscode.nix
index 10d4bf6..0780b0b 100644
--- a/modules/common/vscode.nix
+++ b/modules/common/vscode.nix
@@ -69,30 +69,19 @@ in {
         ]
         ++ optional cfg.vim.enable vscodevim.vim;
 
-      userSettings = let
-        font = config.fontScheme.monospaceFont;
-        fontFamily = font.family;
-        fontSize = font.size;
-      in {
-        editor =
-          {
-            inherit fontFamily fontSize;
-            inlayHints = {inherit fontFamily fontSize;};
-            codeLens = false;
-            cursorStyle = "block";
-            detectIndentation = true;
-            minimap.enabled = false;
-            renderWhitespace = "trailing";
-            rulers = [80 120];
-            smoothScrolling = false;
-            tabCompletion = "on";
-          }
-          // (let
-            surround = 10;
-          in {
-            cursorSurroundingLines = surround;
-            scrollBeyondLastColumn = surround;
-          });
+      userSettings = {
+        editor = {
+          codeLens = false;
+          cursorStyle = "block";
+          detectIndentation = true;
+          minimap.enabled = false;
+          renderWhitespace = "trailing";
+          rulers = [80 120];
+          smoothScrolling = false;
+          tabCompletion = "on";
+          cursorSurroundingLines = 10;
+          scrollBeyondLastColumn = 10;
+        };
 
         keyboard.dispatch = "keyCode";
 
@@ -117,13 +106,6 @@ in {
           };
         };
 
-        debug.console = {inherit fontFamily fontSize;};
-
-        scm = {
-          inputFontFamily = fontFamily;
-          inputFontSize = fontSize;
-        };
-
         extensions = {
           autoCheckUpdates = false;
           autoUpdate = false;
@@ -131,7 +113,6 @@ in {
         };
 
         terminal.integrated = {
-          inherit fontFamily fontSize;
           enableBell = true;
         };
 
@@ -225,8 +206,6 @@ in {
 
         vim = mkIf cfg.vim.enable {
           easymotion = true;
-          easymotionMarkerFontFamily = fontFamily;
-          easymotionMarkerFontSize = fontSize;
 
           leader = " ";
 
diff --git a/modules/common/zathura.nix b/modules/common/zathura.nix
index f78a9e9..b13d2a6 100644
--- a/modules/common/zathura.nix
+++ b/modules/common/zathura.nix
@@ -10,111 +10,74 @@ in {
     mkEnableOption "Zathura PDF reader";
 
   config = mkIf cfg.enable {
-    hm.programs.zathura = with config.nixfiles.modules; {
+    hm.programs.zathura = {
       enable = true;
 
-      options =
-        (with config.colourScheme; {
-          default-fg = white;
-          default-bg = black;
+      options = {
+        recolor = true;
+        recolor-keephue = false;
+        recolor-reverse-video = false;
 
-          statusbar-fg = black;
-          statusbar-bg = white;
+        highlight-transparency = "0.3";
 
-          inputbar-fg = black;
-          inputbar-bg = brightGreen;
+        n-completion-items = 10;
 
-          notification-fg = black;
-          notification-bg = brightBlue;
+        guioptions = "";
 
-          notification-warning-fg = black;
-          notification-warning-bg = brightYellow;
+        statusbar-basename = true;
+        statusbar-home-tilde = true;
 
-          notification-error-fg = black;
-          notification-error-bg = brightRed;
+        statusbar-h-padding = 0;
+        statusbar-v-padding = 0;
 
-          highlight-color = brightYellow;
-          highlight-active-color = yellow;
+        window-height = 800;
+        window-width = 600;
 
-          completion-fg = brightWhite;
-          completion-bg = brightBlack;
+        window-icon = "";
 
-          completion-highlight-fg = black;
-          completion-highlight-bg = brightRed;
+        abort-clear-search = true;
 
-          completion-group-fg = black;
-          completion-group-bg = brightRed;
+        incremental-search = true;
 
-          recolor-darkcolor = black;
-          recolor-lightcolor = white;
-        })
-        // {
-          recolor = true;
-          recolor-keephue = false;
-          recolor-reverse-video = false;
+        adjust-open = "best-fit";
 
-          highlight-transparency = "0.3";
+        advance-pages-per-row = false;
 
-          font = config.fontScheme.monospaceFont.family;
+        database = "sqlite";
 
-          n-completion-items = 10;
+        dbus-service = false;
 
-          guioptions = "";
+        page-padding = 0;
 
-          statusbar-basename = true;
-          statusbar-home-tilde = true;
+        pages-per-row = 1;
 
-          statusbar-h-padding = 0;
-          statusbar-v-padding = 0;
+        render-loading = false;
 
-          window-height = 800;
-          window-width = 600;
+        show-directories = true;
+        show-hidden = true;
+        show-recent = 10;
 
-          window-icon = "";
+        link-zoom = true;
+        link-hadjust = true;
 
-          abort-clear-search = true;
+        window-title-basename = true;
+        window-title-home-tilde = true;
+        window-title-page = true;
 
-          incremental-search = true;
+        zoom-center = false;
+        zoom-max = 1000;
+        zoom-min = 10;
+        zoom-step = 10;
 
-          adjust-open = "best-fit";
+        scroll-hstep = -1;
+        scroll-step = 40;
+        scroll-full-overlap = 0;
+        scroll-wrap = true;
+        scroll-page-aware = false;
 
-          advance-pages-per-row = false;
-
-          database = "sqlite";
-
-          dbus-service = false;
-
-          page-padding = 0;
-
-          pages-per-row = 1;
-
-          render-loading = false;
-
-          show-directories = true;
-          show-hidden = true;
-          show-recent = 10;
-
-          link-zoom = true;
-          link-hadjust = true;
-
-          window-title-basename = true;
-          window-title-home-tilde = true;
-          window-title-page = true;
-
-          zoom-center = false;
-          zoom-max = 1000;
-          zoom-min = 10;
-          zoom-step = 10;
-
-          scroll-hstep = -1;
-          scroll-step = 40;
-          scroll-full-overlap = 0;
-          scroll-wrap = true;
-          scroll-page-aware = false;
-
-          selection-clipboard = "clipboard";
-          selection-notification = false;
-        };
+        selection-clipboard = "clipboard";
+        selection-notification = false;
+      };
     };
   };
 }
diff --git a/modules/darwin/common/default.nix b/modules/darwin/common/default.nix
index 4d4824f..04f7b29 100644
--- a/modules/darwin/common/default.nix
+++ b/modules/darwin/common/default.nix
@@ -6,6 +6,7 @@ _: {
     ./nix.nix
     ./secrets.nix
     ./shell.nix
+    ./stylix.nix
     ./users.nix
     ./xdg.nix
   ];
diff --git a/modules/darwin/common/stylix.nix b/modules/darwin/common/stylix.nix
new file mode 100644
index 0000000..b5bb119
--- /dev/null
+++ b/modules/darwin/common/stylix.nix
@@ -0,0 +1,11 @@
+{
+  config,
+  inputs,
+  lib,
+  ...
+}:
+with lib; {
+  imports = [inputs.stylix.darwinModules.stylix];
+
+  fonts.fonts = mkAfter config.modules.common.stylix.fonts.extraPackages;
+}
diff --git a/modules/darwin/default.nix b/modules/darwin/default.nix
index fbc5c1e..ba7a2a7 100644
--- a/modules/darwin/default.nix
+++ b/modules/darwin/default.nix
@@ -1,7 +1,6 @@
 _: {
   imports = [
     ./common
-    ./fonts.nix
     ./gnupg.nix
     ./homebrew.nix
     ./profiles
diff --git a/modules/darwin/fonts.nix b/modules/darwin/fonts.nix
deleted file mode 100644
index c52d73e..0000000
--- a/modules/darwin/fonts.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  config,
-  lib,
-  ...
-}:
-with lib; let
-  cfg = config.nixfiles.modules.fonts;
-in {
-  config = mkIf cfg.enable {
-    fonts = {
-      fonts = cfg.packages;
-
-      fontDir.enable = true;
-    };
-  };
-}
diff --git a/modules/nixos/common/console.nix b/modules/nixos/common/console.nix
index e280919..3491e37 100644
--- a/modules/nixos/common/console.nix
+++ b/modules/nixos/common/console.nix
@@ -3,6 +3,8 @@
   pkgs,
   ...
 }: {
+  stylix.targets.console.enable = false;
+
   console = {
     earlySetup = true;
     font = "${pkgs.terminus_font}/share/consolefonts/ter-v16b.psf.gz";
diff --git a/modules/nixos/common/default.nix b/modules/nixos/common/default.nix
index 54f8f51..4c192c9 100644
--- a/modules/nixos/common/default.nix
+++ b/modules/nixos/common/default.nix
@@ -12,6 +12,7 @@ _: {
     ./security.nix
     ./services.nix
     ./shell.nix
+    ./stylix.nix
     ./systemd.nix
     ./tmp.nix
     ./users.nix
diff --git a/modules/nixos/common/stylix.nix b/modules/nixos/common/stylix.nix
new file mode 100644
index 0000000..6249abf
--- /dev/null
+++ b/modules/nixos/common/stylix.nix
@@ -0,0 +1,37 @@
+{
+  config,
+  inputs,
+  lib,
+  ...
+}:
+with lib; {
+  imports = [inputs.stylix.nixosModules.stylix];
+
+  fonts = {
+    packages = mkAfter config.nixfiles.modules.common.stylix.fonts.extraPackages;
+
+    fontconfig.defaultFonts = {
+      serif = mkForce [
+        "Iosevka Etoile"
+        "Sarasa Gothic"
+        "Source Han Serif"
+        "Noto Serif"
+      ];
+      sansSerif = mkForce [
+        "Iosevka Aile"
+        "Sarasa Gothic"
+        "Source Han Sans"
+        "Noto Sans"
+      ];
+      monospace = mkForce [
+        "Iosevka"
+        "Sarasa Mono"
+        "Source Han Mono"
+        "Noto Sans Mono"
+      ];
+      emoji = mkForce [
+        "Noto Color Emoji"
+      ];
+    };
+  };
+}
diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix
index 93f0974..1a42517 100644
--- a/modules/nixos/default.nix
+++ b/modules/nixos/default.nix
@@ -15,7 +15,6 @@ _: {
     ./endlessh.nix
     ./fail2ban.nix
     ./firefox
-    ./fonts.nix
     ./games
     ./git
     ./gnupg.nix
diff --git a/modules/nixos/dwm.nix b/modules/nixos/dwm.nix
index 9c5e283..a32ed29 100644
--- a/modules/nixos/dwm.nix
+++ b/modules/nixos/dwm.nix
@@ -18,8 +18,7 @@ in {
       windowManager.command = let
         pkg = pkgs.dwm.override {
           conf = let
-            font = with config.fontScheme.monospaceFont; "${family}:size=${toString size}";
-            colour = config.colourScheme;
+            font = with config.stylix.fonts; "${monospace.name}:size=${toString sizes.terminal}";
           in ''
             static const unsigned int borderpx = 1;
             static const unsigned int snap = 32;
@@ -32,14 +31,14 @@ in {
 
             static const char *colors[][3] = {
               [SchemeNorm] = {
-                "${colour.white}",
-                "${colour.black}",
-                "${colour.black}",
+                "${config.color.base06}",
+                "${config.color.base01}",
+                "${config.color.base01}",
               },
               [SchemeSel] = {
-                "${colour.black}",
-                "${colour.white}",
-                "${colour.white}",
+                "${config.color.base01}",
+                "${config.color.base06}",
+                "${config.color.base06}",
               },
             };
 
@@ -82,10 +81,10 @@ in {
               "${pkgs.dmenu}/bin/dmenu_run",
               "-m", dmenumon,
               "-fn", "${font}",
-              "-nb", "${colour.black}",
-              "-nf", "${colour.white}",
-              "-sb", "${colour.white}",
-              "-sf", "${colour.black}",
+              "-nb", "${config.color.base01}",
+              "-nf", "${config.color.base06}",
+              "-sb", "${config.color.base06}",
+              "-sf", "${config.color.base01}",
               NULL,
             };
             static const char *termcmd[] = {
diff --git a/modules/nixos/firefox/default.nix b/modules/nixos/firefox/default.nix
index ce8b3ee..d192ae1 100644
--- a/modules/nixos/firefox/default.nix
+++ b/modules/nixos/firefox/default.nix
@@ -22,6 +22,11 @@ in {
 
       home.packages = with pkgs; [profile-cleaner];
 
+      stylix.targets.firefox = {
+        enable = true;
+        profileNames = ["default"];
+      };
+
       programs.firefox = {
         enable = true;
 
@@ -32,34 +37,34 @@ in {
         profiles.default = let
           mkCssWithRoot = css:
             mkMerge [
-              (with config.colourScheme; ''
+              (with config.colors.withHashtag; ''
                 :root {
-                  --black: ${black};
-                  --red: ${red};
-                  --green: ${green};
-                  --yellow: ${yellow};
-                  --blue: ${blue};
-                  --magenta: ${magenta};
-                  --cyan: ${cyan};
-                  --white: ${white};
-                  --bright-black: ${brightBlack};
-                  --bright-red: ${brightRed};
-                  --bright-green: ${brightGreen};
-                  --bright-yellow: ${brightYellow};
-                  --bright-blue: ${brightBlue};
-                  --bright-magenta: ${brightMagenta};
-                  --bright-cyan: ${brightCyan};
-                  --bright-white: ${brightWhite};
-                  --background: ${background};
-                  --foreground: ${foreground};
+                  --black: ${base01};
+                  --red: ${base08};
+                  --green: ${base0B};
+                  --yellow: ${base09};
+                  --blue: ${base0D};
+                  --magenta: ${base0E};
+                  --cyan: ${base0C};
+                  --white: ${base06};
+                  --bright-black: ${base02};
+                  --bright-red: ${base12};
+                  --bright-green: ${base14};
+                  --bright-yellow: ${base13};
+                  --bright-blue: ${base16};
+                  --bright-magenta: ${base17};
+                  --bright-cyan: ${base15};
+                  --bright-white: ${base07};
+                  --background: ${base00};
+                  --foreground: ${base02};
               '')
-              (with config.fontScheme; ''
-                  --sans-serif-font-family: "${sansSerifFont.family}", "${sansSerifFontFallback.family}", sans-serif;
-                  --sans-serif-font-size: ${toString sansSerifFont.size}px;
-                  --serif-font-family: "${serifFont.family}", "${serifFontFallback.family}", serif;
-                  --serif-font-size: ${toString serifFont.size}px;
-                  --monospace-font-family: "${monospaceFont.family}", "${monospaceFontFallback.family}", monospace;
-                  --monospace-font-size: ${toString monospaceFont.size}px;
+              (with config.stylix.fonts; ''
+                  --sans-serif-font-family: "${sansSerif.name}", sans-serif;
+                  --sans-serif-font-size: ${toString sizes.applications};
+                  --serif-font-family: "${serif.name}", serif;
+                  --serif-font-size: ${toString sizes.applications};
+                  --monospace-font-family: "${monospace.name}", monospace;
+                  --monospace-font-size: ${toString sizes.applications};
                 }
               '')
               (builtins.readFile css)
diff --git a/modules/nixos/fonts.nix b/modules/nixos/fonts.nix
deleted file mode 100644
index a333cb3..0000000
--- a/modules/nixos/fonts.nix
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-with lib; let
-  cfg = config.nixfiles.modules.fonts;
-in {
-  config = mkMerge [
-    (mkIf cfg.enable {
-      nixfiles.modules.common.nix.allowedUnfreePackages = ["symbola"];
-      hm.fonts.fontconfig.enable = true;
-      fonts = {
-        packages =
-          cfg.packages
-          ++ (with pkgs; [
-            noto-fonts-emoji
-            twitter-color-emoji
-            symbola
-          ]);
-
-        fontconfig = {
-          enable = true;
-
-          defaultFonts = {
-            emoji = mkForce [
-              "Twitter Color Emoji"
-              "Noto Color Emoji"
-              "Symbola"
-            ];
-            monospace = mkForce [
-              "Iosevka"
-              "Sarasa Mono"
-              "Source Han Mono"
-              "Noto Sans Mono"
-            ];
-            sansSerif = mkForce [
-              "Iosevka Aile"
-              "Sarasa Gothic"
-              "Source Han Sans"
-              "Noto Sans"
-            ];
-            serif = mkForce [
-              "Iosevka Etoile"
-              "Sarasa Gothic"
-              "Source Han Serif"
-              "Noto Serif"
-            ];
-          };
-
-          localConf = ''
-            <?xml version='1.0'?>
-            <!DOCTYPE fontconfig SYSTEM 'urn:fontconfig:fonts.dtd'>
-            <fontconfig>
-              <alias binding="same">
-                <family>Helvetica</family>
-                <prefer>
-                  <family>sans-serif</family>
-                </prefer>
-              </alias>
-              <alias binding="same">
-                <family>Arial</family>
-                <prefer>
-                  <family>sans-serif</family>
-                </prefer>
-              </alias>
-            </fontconfig>
-          '';
-        };
-      };
-    })
-    (mkIf (!cfg.enable) {
-      hm.fonts.fontconfig.enable = false;
-      fonts.fontconfig.enable = false;
-    })
-  ];
-}
diff --git a/modules/nixos/git/default.nix b/modules/nixos/git/default.nix
index adff240..cbeb48a 100644
--- a/modules/nixos/git/default.nix
+++ b/modules/nixos/git/default.nix
@@ -93,7 +93,7 @@ in {
               @import url("cgit.css");
 
               div#cgit {
-                font-family: "${config.fontScheme.monospaceFont.family}", monospace;
+                font-family: monospace;
                 -moz-tab-size: 4;
                 tab-size: 4;
               }
diff --git a/modules/nixos/kde.nix b/modules/nixos/kde.nix
index 58990f1..3822415 100644
--- a/modules/nixos/kde.nix
+++ b/modules/nixos/kde.nix
@@ -18,12 +18,29 @@ in {
     };
 
     hm = {
-      home.sessionVariables.GTK_USE_PORTAL = 1;
-
       programs.firefox.profiles.default.settings = {
         "widget.use-xdg-desktop-portal.file-picker" = 1;
         "widget.use-xdg-desktop-portal.mime-handler" = 1;
       };
+
+      gtk.theme = {
+        package = mkForce pkgs.breeze-gtk;
+        name = mkForce "Breeze";
+      };
+
+      xdg.configFile = {
+        "fontconfig/conf.d/10-hm-fonts.conf".force = mkForce true;
+        "mimeapps.list".force = mkForce true;
+        "kcminputrc".text = generators.toINI {} {
+          Keyboard = with config.services.xserver; {
+            RepeatDelay = autoRepeatDelay;
+            RepeatRate = autoRepeatInterval;
+          };
+        };
+        "baloofilerc".text = generators.toINI {} {
+          "Basic Settings"."Indexing-Enabled" = false;
+        };
+      };
     };
 
     services.xserver = {
diff --git a/modules/nixos/profiles/headful.nix b/modules/nixos/profiles/headful.nix
index 187c5a3..4bc7ed3 100644
--- a/modules/nixos/profiles/headful.nix
+++ b/modules/nixos/profiles/headful.nix
@@ -74,7 +74,6 @@ in {
 
     services = {
       upower.enable = true;
-
       psd.enable = true;
     };
 
diff --git a/modules/nixos/thunderbird.nix b/modules/nixos/thunderbird.nix
index b5f360a..d8ce4ad 100644
--- a/modules/nixos/thunderbird.nix
+++ b/modules/nixos/thunderbird.nix
@@ -24,11 +24,11 @@ in {
           config.hm.programs.firefox.profiles.default.settings
           // {
             "app.donation.eoy.version.viewed" = 999;
-            "browser.display.background_color" = config.colourScheme.black;
-            "browser.display.background_color.dark" = config.colourScheme.black;
+            "browser.display.background_color" = config.colors.withHashtag.base00;
+            "browser.display.background_color.dark" = config.colors.withHashtag.base00;
             "browser.display.document_color_use" = 2;
-            "browser.display.foreground_color" = config.colourScheme.white;
-            "browser.display.foreground_color.dark" = config.colourScheme.white;
+            "browser.display.foreground_color" = config.colors.withHashtag.base07;
+            "browser.display.foreground_color.dark" = config.colors.withHashtag.base07;
             "javascript.enabled" = false;
             "mail.chat.enabled" = false;
             "mail.cloud_files.enabled" = false;
diff --git a/modules/nixos/x11.nix b/modules/nixos/x11.nix
index b629aeb..bd35d87 100644
--- a/modules/nixos/x11.nix
+++ b/modules/nixos/x11.nix
@@ -25,40 +25,14 @@ in {
         XCOMPOSECACHE = "${config.dirs.cache}/libx11/compose";
       };
 
-      xresources.properties =
-        (let
-          font = with config.fontScheme.monospaceFont; "${family}:style=${style}:size=${toString size}";
-        in {
-          "*.font" = font;
-
-          "Xft.antialias" = mkDefault 1;
-          "Xft.autohint" = mkDefault 0;
-          "Xft.hinting" = mkDefault 1;
-          "Xft.hintstyle" = mkDefault "hintslight";
-          "Xft.lcdfilter" = mkDefault "lcddefault";
-          "Xft.rgba" = mkDefault "rgb";
-        })
-        // (with config.colourScheme; {
-          "*.color0" = black;
-          "*.color8" = brightBlack;
-          "*.color1" = red;
-          "*.color9" = brightRed;
-          "*.color2" = green;
-          "*.color10" = brightGreen;
-          "*.color3" = yellow;
-          "*.color11" = brightYellow;
-          "*.color4" = blue;
-          "*.color12" = brightBlue;
-          "*.color5" = magenta;
-          "*.color13" = brightMagenta;
-          "*.color6" = cyan;
-          "*.color14" = brightCyan;
-          "*.color7" = white;
-          "*.color15" = brightWhite;
-
-          "*.background" = background;
-          "*.foreground" = foreground;
-        });
+      xresources.properties = {
+        "Xft.antialias" = mkDefault 1;
+        "Xft.autohint" = mkDefault 0;
+        "Xft.hinting" = mkDefault 1;
+        "Xft.hintstyle" = mkDefault "hintslight";
+        "Xft.lcdfilter" = mkDefault "lcddefault";
+        "Xft.rgba" = mkDefault "rgb";
+      };
 
       services.xsettingsd = {
         enable = true;
@@ -87,7 +61,7 @@ in {
       tty = mkDefault 1;
 
       autoRepeatDelay = 200;
-      autoRepeatInterval = 25;
+      autoRepeatInterval = 50;
 
       libinput.enable = true;
 

Consider giving Nix/NixOS a try! <3