diff options
| author | triethyl <triethylammonium@pm.me> | 2025-09-02 10:48:21 -0400 |
|---|---|---|
| committer | triethyl <triethylammonium@pm.me> | 2025-09-02 10:48:21 -0400 |
| commit | 31c316d19cd974bb81a5d6de62142ff24db1c78e (patch) | |
| tree | cb941422c76cb8953830a8d58c8e14dca1a10319 /home-manager/modules/aesthetics/default.nix | |
| parent | 1c21018347aa277caba74e554cb8d1b1e7fc6bed (diff) | |
reorganized directory structure
Diffstat (limited to 'home-manager/modules/aesthetics/default.nix')
| -rw-r--r-- | home-manager/modules/aesthetics/default.nix | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/home-manager/modules/aesthetics/default.nix b/home-manager/modules/aesthetics/default.nix new file mode 100644 index 0000000..c49a198 --- /dev/null +++ b/home-manager/modules/aesthetics/default.nix @@ -0,0 +1,101 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.aesthetics; +in { + imports = [ + ./targets + ./themes + ]; + options.aesthetics = { + enable = lib.mkEnableOption "aesthetics"; + theme = lib.mkOption { + type = lib.types.str; + description = "The name of the theme to use."; + default = "oxocarbon"; + }; + hasGui = lib.mkOption { + type = lib.types.bool; + description = "Whether to theme gui apps. (can break if no gui)"; + default = false; + }; + enableAllTargets = lib.mkEnableOption "all targets"; + wallpapersDir = lib.mkOption { + type = lib.types.path; + description = "Where to find wallpapers."; + }; + wallpaper = lib.mkOption { + type = lib.types.path; + description = "Where to find the default wallpaper."; + }; + font = { + name = lib.mkOption { + type = lib.types.str; + default = "CodeNewRoman Nerd Font"; + description = "The font to use."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nerd-fonts.code-new-roman; + description = "The font package to use."; + }; + size = { + small = lib.mkOption { + type = lib.types.str; + default = "10"; + description = "The size of the font to use for small text. (e.g. terminals)"; + }; + medium = lib.mkOption { + type = lib.types.str; + default = "14"; + description = "The size of the font to use for medium text. (e.g. waybar)"; + }; + large = lib.mkOption { + type = lib.types.str; + default = "18"; + description = "The size of the font to use for large text."; + }; + }; + }; + scheme = let + mkHexOption = {}: + lib.mkOption { + type = lib.types.str; + default = ""; + example = "ffffff"; + description = "A hex color"; + }; + in { + base00 = mkHexOption {}; + base01 = mkHexOption {}; + base02 = mkHexOption {}; + base03 = mkHexOption {}; + base04 = mkHexOption {}; + base05 = mkHexOption {}; + base06 = mkHexOption {}; + base07 = mkHexOption {}; + base08 = mkHexOption {}; + base09 = mkHexOption {}; + base0A = mkHexOption {}; + base0B = mkHexOption {}; + base0C = mkHexOption {}; + base0D = mkHexOption {}; + base0E = mkHexOption {}; + base0F = mkHexOption {}; + }; + opacity = lib.mkOption { + type = lib.types.float; + description = "Opacity"; + default = 1.0; + }; + }; + config = lib.mkIf cfg.enable { + aesthetics.themes.${cfg.theme}.enable = true; + + home.packages = [cfg.font.package]; + fonts.fontconfig.enable = true; + }; +} |
