diff --git a/flake.lock b/flake.lock index 02567bc..397ec1e 100644 --- a/flake.lock +++ b/flake.lock @@ -60,6 +60,74 @@ "type": "github" } }, + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1754405784, + "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1752979451, + "narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "27cf1e66e50abc622fb76a3019012dc07c678fac", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, "brew-src": { "flake": false, "locked": { @@ -174,6 +242,22 @@ "type": "github" } }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1758112371, + "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -307,6 +391,27 @@ "type": "github" } }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "4524271976b625a4a605beefd893f270620fd751", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-schemas": { "locked": { "lastModified": 1721999734, @@ -397,6 +502,22 @@ "type": "github" } }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -440,6 +561,25 @@ "type": "github" } }, + "gnome-shell": { + "flake": false, + "locked": { + "host": "gitlab.gnome.org", + "lastModified": 1762869044, + "narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad", + "type": "gitlab" + }, + "original": { + "host": "gitlab.gnome.org", + "owner": "GNOME", + "ref": "gnome-49", + "repo": "gnome-shell", + "type": "gitlab" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -1222,6 +1362,31 @@ "type": "github" } }, + "nur": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1758998580, + "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=", + "owner": "nix-community", + "repo": "NUR", + "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "pre-commit-hooks-nix": { "inputs": { "flake-compat": [ @@ -1347,6 +1512,7 @@ "snowfall-lib": "snowfall-lib", "sops-nix": "sops-nix", "steam-rom-manager": "steam-rom-manager", + "stylix": "stylix", "treefmt-nix": "treefmt-nix" } }, @@ -1475,6 +1641,40 @@ "type": "github" } }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-parts": "flake-parts_3", + "gnome-shell": "gnome-shell", + "nixpkgs": [ + "nixpkgs" + ], + "nur": "nur", + "systems": "systems_4", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1764550443, + "narHash": "sha256-ArO2V1YEHmEILilTj4KPtqF4gqc1q2HBrrrmygQ/UyU=", + "owner": "nix-community", + "repo": "stylix", + "rev": "794b6e1fa75177ebfeb32967f135858a1ab1ba15", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "stylix", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1689347949, @@ -1520,6 +1720,102 @@ "type": "github" } }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1757716333, + "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1757811970, + "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1757811247, + "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index 12f87b7..5c94deb 100644 --- a/flake.nix +++ b/flake.nix @@ -91,6 +91,11 @@ url = "github:cpick/nix-rosetta-builder"; inputs.nixpkgs.follows = "nixpkgs"; }; + + stylix = { + url = "github:nix-community/stylix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; # We will handle this in the next section. @@ -117,6 +122,7 @@ sops-nix.nixosModules.sops home-manager.nixosModules.home-manager nix-index-database.nixosModules.nix-index + stylix.nixosModules.stylix ]; # common darwin modules @@ -126,6 +132,7 @@ nix-plist-manager.darwinModules.default nix-rosetta-builder.darwinModules.default nix-index-database.darwinModules.nix-index + stylix.darwinModules.stylix ]; # Host config diff --git a/homes/aarch64-darwin/mattjallen@macbook-pro/default.nix b/homes/aarch64-darwin/mattjallen@macbook-pro/default.nix index 9dccfbd..542c854 100755 --- a/homes/aarch64-darwin/mattjallen@macbook-pro/default.nix +++ b/homes/aarch64-darwin/mattjallen@macbook-pro/default.nix @@ -1,9 +1,11 @@ { lib, pkgs, + namespace, ... }: let + inherit (lib.${namespace}) enabled disabled; shellAliases = { update-switch = "darwin-rebuild switch --flake ~/nix-config"; update-flake = "nix flake update ~/nix-config"; @@ -135,9 +137,9 @@ in }; dock = { animateOpeningApplications = true; - automaticallyHideAndShowTheDock.enabled = false; + automaticallyHideAndShowTheDock = enabled; doubleClickAWindowsTitleBarTo = "Minimize"; - magnification.enabled = false; + magnification = disabled; minimizeWindowsIntoApplicationIcon = true; minimizeWindowsUsing = "Genie Effect"; positionOnScreen = "Bottom"; @@ -254,11 +256,11 @@ in }; # Manage bug in compilations - who uses manpages in 2024 anyways? :P - manual.manpages.enable = false; + manual.manpages = enabled; # Override defaults that arent supported programs = { - mangohud.enable = lib.mkForce false; + mangohud = lib.mkForce disabled; nh = { flake = lib.mkForce "/Users/mattjallen/nix-config"; @@ -266,8 +268,8 @@ in }; services = { - pass-secret-service.enable = lib.mkForce false; - nextcloud-client.enable = lib.mkForce false; + pass-secret-service = lib.mkForce disabled; + nextcloud-client = lib.mkForce disabled; kdeconnect = { enable = false; indicator = false; diff --git a/homes/aarch64-linux/matt@macbook-pro-nixos/default.nix b/homes/aarch64-linux/matt@macbook-pro-nixos/default.nix index 5b08b26..1243767 100755 --- a/homes/aarch64-linux/matt@macbook-pro-nixos/default.nix +++ b/homes/aarch64-linux/matt@macbook-pro-nixos/default.nix @@ -1,19 +1,17 @@ { + lib, pkgs, namespace, - config, ... }: let - theme = config.mjallen.theme.palette; + inherit (lib.${namespace}) enabled disabled; shellAliases = { update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3"; update-flake = "nix flake update mac-nixpkgs mac-nixos-apple-silicon mac-home-manager mac-impermanence mac-sops-nix --flake /etc/nixos"; update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.3 --build-host admin@10.0.1.3 --flake ~/nix-config#jallen-nas"; }; - fontName = "JetBrainsMono NFM"; - fontPackage = pkgs.nerd-fonts.jetbrains-mono; # Displays display = { input = "eDP-1"; @@ -77,20 +75,15 @@ in }; }; programs = { - btop.enable = true; + btop = enabled; kitty = { enable = true; - font = { - name = fontName; - package = fontPackage; - }; }; mako = { enable = true; - fontName = fontName; }; - nwg-dock.enable = true; - nwg-drawer.enable = true; + nwg-dock = enabled; + nwg-drawer = enabled; nwg-panel = { enable = true; defaultApps = { @@ -103,8 +96,8 @@ in layer = "bottom"; temperature = { - cpu.enable = true; - gpu.enable = true; + cpu = enabled; + gpu = enabled; }; extraModules = { @@ -120,21 +113,20 @@ in extraModulesStyle = '' #custom-lights { - color: ${theme.frost.nord8}; - background-color: ${theme.polarNight.nord0}; - ${theme.defaultOpacity} - ${theme.borderLeft} + color: @base0C; + opacity: 0.85; + background-color: @base00; } #custom-lights:hover { - background: ${theme.polarNight.nord3}; + background: @base03; } ''; windowOffset = 75; }; - wlogout.enable = true; - wofi.enable = true; + wlogout = enabled; + wofi = enabled; }; }; @@ -149,7 +141,7 @@ in ]; programs = { - password-store.enable = true; + password-store = enabled; zsh.shellAliases = shellAliases; }; diff --git a/homes/aarch64-linux/matt@pi4/default.nix b/homes/aarch64-linux/matt@pi4/default.nix index 252b2e3..34a6ebf 100755 --- a/homes/aarch64-linux/matt@pi4/default.nix +++ b/homes/aarch64-linux/matt@pi4/default.nix @@ -1,4 +1,7 @@ { lib, namespace, ... }: +let + inherit (lib.${namespace}) enabled disabled; +in { home.username = "matt"; @@ -53,11 +56,11 @@ }; programs = { - mangohud.enable = lib.mkForce true; + mangohud = lib.mkForce enabled; }; services = { - nextcloud-client.enable = lib.mkForce false; + nextcloud-client = lib.mkForce disabled; kdeconnect = { enable = false; indicator = false; diff --git a/homes/aarch64-linux/matt@pi5/default.nix b/homes/aarch64-linux/matt@pi5/default.nix index 8ddcabd..55d8acc 100755 --- a/homes/aarch64-linux/matt@pi5/default.nix +++ b/homes/aarch64-linux/matt@pi5/default.nix @@ -1,8 +1,11 @@ { config, + lib, + namespace, ... }: let + inherit (lib.${namespace}) enabled disabled; shellAliases = { update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3"; @@ -59,7 +62,7 @@ in }; services = { - nextcloud-client.enable = false; + nextcloud-client = lib.mkForce disabled; kdeconnect = { enable = false; indicator = false; diff --git a/homes/aarch64-linux/root@macbook-pro-nixos/default.nix b/homes/aarch64-linux/root@macbook-pro-nixos/default.nix new file mode 100644 index 0000000..b7675aa --- /dev/null +++ b/homes/aarch64-linux/root@macbook-pro-nixos/default.nix @@ -0,0 +1,18 @@ +{ + lib, + namespace, + ... +}: +let + inherit (lib.${namespace}) enabled disabled; +in +{ + home.username = "root"; + services = { + nextcloud-client = lib.mkForce disabled; + kdeconnect = { + enable = false; + indicator = false; + }; + }; +} diff --git a/homes/aarch64-linux/root@pi4/default.nix b/homes/aarch64-linux/root@pi4/default.nix new file mode 100644 index 0000000..b7675aa --- /dev/null +++ b/homes/aarch64-linux/root@pi4/default.nix @@ -0,0 +1,18 @@ +{ + lib, + namespace, + ... +}: +let + inherit (lib.${namespace}) enabled disabled; +in +{ + home.username = "root"; + services = { + nextcloud-client = lib.mkForce disabled; + kdeconnect = { + enable = false; + indicator = false; + }; + }; +} diff --git a/homes/aarch64-linux/root@pi5/default.nix b/homes/aarch64-linux/root@pi5/default.nix new file mode 100644 index 0000000..b7675aa --- /dev/null +++ b/homes/aarch64-linux/root@pi5/default.nix @@ -0,0 +1,18 @@ +{ + lib, + namespace, + ... +}: +let + inherit (lib.${namespace}) enabled disabled; +in +{ + home.username = "root"; + services = { + nextcloud-client = lib.mkForce disabled; + kdeconnect = { + enable = false; + indicator = false; + }; + }; +} diff --git a/homes/x86_64-linux/deck@steamdeck/default.nix b/homes/x86_64-linux/deck@steamdeck/default.nix index 6df2840..299ad88 100755 --- a/homes/x86_64-linux/deck@steamdeck/default.nix +++ b/homes/x86_64-linux/deck@steamdeck/default.nix @@ -1,5 +1,6 @@ -{ pkgs, namespace, ... }: +{ lib, pkgs, namespace, ... }: let + inherit (lib.${namespace}) enabled disabled; shellAliases = { update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; update-switch = "sudo nixos-rebuild switch --max-jobs 10"; @@ -10,7 +11,7 @@ in { home.username = "deck"; - ${namespace}.desktop.gnome.enable = true; + ${namespace}.desktop.gnome = enabled; sops = { age.keyFile = "/home/deck/.config/sops/age/keys.txt"; @@ -40,7 +41,7 @@ in }; emulators = { - ryujinx.enable = true; + ryujinx = enabled; dolphin-gamecube = { enable = true; @@ -58,8 +59,8 @@ in extraArgs = "-b -e \"\${filePath}\""; }; - pcsx2.enable = true; - mgba.enable = true; + pcsx2 = enabled; + mgba = enabled; "Non-SRM Shortcuts" = { enable = true; diff --git a/homes/x86_64-linux/matt@matt-nixos/default.nix b/homes/x86_64-linux/matt@matt-nixos/default.nix index 9672194..c541ed4 100755 --- a/homes/x86_64-linux/matt@matt-nixos/default.nix +++ b/homes/x86_64-linux/matt@matt-nixos/default.nix @@ -104,17 +104,8 @@ in }; }; btop = enabled; - kitty = { - enable = true; - font = { - name = "JetBrainsMono NFM"; - package = pkgs.nerd-fonts.jetbrains-mono; - }; - }; - mako = { - enable = true; - fontName = "JetBrainsMono NFM"; - }; + kitty = enabled; + mako = enabled; nwg-dock = enabled; nwg-drawer = enabled; nwg-panel = { @@ -130,8 +121,8 @@ in network.interface = "wlp9s0"; temperature = { - cpu.enable = true; - gpu.enable = true; + cpu = enabled; + gpu = enabled; }; extraModules = { @@ -147,14 +138,14 @@ in extraModulesStyle = '' #custom-lights { - color: ${theme.frost.nord8}; - background-color: ${theme.polarNight.nord0}; - ${theme.defaultOpacity} - border-left: 5px solid ${theme.frost.nord8}; + color: @base0C; + background-color: @base00; + opacity: 0.85; + border-left: 5px solid @base0C; } #custom-lights:hover { - background: ${theme.polarNight.nord3}; + background: @base03; } ''; }; diff --git a/homes/x86_64-linux/root@jallen-nas/default.nix b/homes/x86_64-linux/root@jallen-nas/default.nix new file mode 100644 index 0000000..b7675aa --- /dev/null +++ b/homes/x86_64-linux/root@jallen-nas/default.nix @@ -0,0 +1,18 @@ +{ + lib, + namespace, + ... +}: +let + inherit (lib.${namespace}) enabled disabled; +in +{ + home.username = "root"; + services = { + nextcloud-client = lib.mkForce disabled; + kdeconnect = { + enable = false; + indicator = false; + }; + }; +} diff --git a/homes/x86_64-linux/root@matt-nixos/default.nix b/homes/x86_64-linux/root@matt-nixos/default.nix new file mode 100644 index 0000000..b7675aa --- /dev/null +++ b/homes/x86_64-linux/root@matt-nixos/default.nix @@ -0,0 +1,18 @@ +{ + lib, + namespace, + ... +}: +let + inherit (lib.${namespace}) enabled disabled; +in +{ + home.username = "root"; + services = { + nextcloud-client = lib.mkForce disabled; + kdeconnect = { + enable = false; + indicator = false; + }; + }; +} diff --git a/homes/x86_64-linux/root@nuc-nixos/default.nix b/homes/x86_64-linux/root@nuc-nixos/default.nix new file mode 100644 index 0000000..b7675aa --- /dev/null +++ b/homes/x86_64-linux/root@nuc-nixos/default.nix @@ -0,0 +1,18 @@ +{ + lib, + namespace, + ... +}: +let + inherit (lib.${namespace}) enabled disabled; +in +{ + home.username = "root"; + services = { + nextcloud-client = lib.mkForce disabled; + kdeconnect = { + enable = false; + indicator = false; + }; + }; +} diff --git a/homes/x86_64-linux/root@steamdeck/default.nix b/homes/x86_64-linux/root@steamdeck/default.nix new file mode 100644 index 0000000..b7675aa --- /dev/null +++ b/homes/x86_64-linux/root@steamdeck/default.nix @@ -0,0 +1,18 @@ +{ + lib, + namespace, + ... +}: +let + inherit (lib.${namespace}) enabled disabled; +in +{ + home.username = "root"; + services = { + nextcloud-client = lib.mkForce disabled; + kdeconnect = { + enable = false; + indicator = false; + }; + }; +} diff --git a/modules/darwin/home/default.nix b/modules/darwin/home/default.nix index 2fb3f7f..f49cf70 100644 --- a/modules/darwin/home/default.nix +++ b/modules/darwin/home/default.nix @@ -45,6 +45,7 @@ sops-nix.homeManagerModules.sops nix-plist-manager.homeManagerModules.default nix-index-database.homeModules.nix-index + stylix.homeModules.stylix # Add any other external HM modules here ]; diff --git a/modules/home/desktop/theme/default.nix b/modules/home/desktop/theme/default.nix deleted file mode 100644 index 1317f16..0000000 --- a/modules/home/desktop/theme/default.nix +++ /dev/null @@ -1,191 +0,0 @@ -{ config, lib, ... }: -with lib; -let - cfg = config.mjallen.theme; - - mkPalettePath = name: lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/${name}.nix"; - - cap = - s: - let - len = builtins.stringLength s; - in - (lib.toUpper (builtins.substring 0 1 s)) + (builtins.substring 1 (len - 1) s); -in -{ - options.mjallen.theme = { - name = mkOption { - type = types.enum [ - "nord" - "dracula" - "everforest" - ]; - default = "nord"; - description = "Global theme palette name."; - }; - - # This is the palette file other modules should import. - # It exports a normalized schema with colors, tokens, and compat maps. - paletteFile = mkOption { - type = types.path; - default = mkPalettePath "nord"; - description = "Path to a palette nix file exporting a normalized schema (and compat maps)."; - }; - - # Exposed tokens (derived from paletteFile) - tokens = mkOption { - type = types.attrs; - default = { }; - description = "Derived tokens from the selected palette (set automatically)."; - }; - - # Expose the imported palette (actual colors + compat groups) - palette = mkOption { - type = types.attrs; - default = { }; - description = "Imported palette attrset from the selected paletteFile (set automatically)."; - }; - - gtk = { - enable = mkOption { - type = types.bool; - default = true; - description = "Manage GTK theme using global theme settings."; - }; - - # e.g. Colloid-Dark-Compact-* - color = mkOption { - type = types.enum [ - "dark" - "light" - ]; - default = "dark"; - description = "GTK color variant."; - }; - - size = mkOption { - type = types.enum [ - "standard" - "compact" - ]; - default = "compact"; - description = "GTK size variant."; - }; - - accent = mkOption { - type = types.enum [ - "default" - "purple" - "pink" - "red" - "orange" - "yellow" - "green" - "teal" - "grey" - "all" - ]; - default = "all"; - description = "GTK accent (Colloid themeVariants)."; - }; - - tweak = mkOption { - type = types.enum [ - "normal" - "rimless" - "float" - "black" - ]; - default = "normal"; - description = "GTK tweak (Colloid tweaks)."; - }; - - themeName = mkOption { - type = types.nullOr types.str; - default = null; - description = "Explicit GTK theme name override. If null, computed from color/size/accent."; - }; - }; - - icons = { - # Colloid icon scheme usually supports several named schemes. Default follows palette name. - scheme = mkOption { - type = types.enum [ - "default" - "nord" - "dracula" - "gruvbox" - "everforest" - "catppuccin" - ]; - default = cfg.name; - description = "Icon scheme to use (Colloid schemeVariants)."; - }; - - variant = mkOption { - type = types.enum [ - "default" - "purple" - "pink" - "red" - "orange" - "yellow" - "green" - "teal" - "grey" - "all" - ]; - default = "all"; - description = "Icon variant (Colloid colorVariants)."; - }; - - themeName = mkOption { - type = types.nullOr types.str; - default = null; - description = "Explicit icon theme name override. If null, computed from scheme/variant."; - }; - }; - }; - - # Wire derived defaults that depend on other options. - config = { - # Keep paletteFile following the chosen name unless user overrides it explicitly. - mjallen.theme.paletteFile = mkDefault (mkPalettePath cfg.name); - - # Pull tokens directly from the palette file for convenience - mjallen.theme.tokens = mkDefault ( - let - pal = import cfg.paletteFile; - in - pal.tokens or { } - ); - - # Expose the imported palette for convenience - mjallen.theme.palette = mkDefault (import cfg.paletteFile); - - # Default per-program palette path (can still be overridden per program) - mjallen.programs.waybar.theme.file = mkDefault cfg.paletteFile; - mjallen.programs.kitty.theme.file = mkDefault cfg.paletteFile; - mjallen.programs.mako.theme.file = mkDefault cfg.paletteFile; - mjallen.programs.wofi.theme.file = mkDefault cfg.paletteFile; - mjallen.programs.btop.theme.file = mkDefault cfg.paletteFile; - mjallen.programs.nwg-dock.theme.file = mkDefault cfg.paletteFile; - mjallen.programs.nwg-drawer.theme.file = mkDefault cfg.paletteFile; - mjallen.programs.wlogout.theme.file = mkDefault cfg.paletteFile; - - # Computed GTK/Icon theme names if not overridden - _module.args.mjallenThemeComputed = { - gtkTheme = - if cfg.gtk.themeName != null then - cfg.gtk.themeName - else - "Colloid-${cap cfg.gtk.color}-${cap cfg.gtk.size}"; - - iconTheme = - if cfg.icons.themeName != null then - cfg.icons.themeName - else - "Colloid-${cap cfg.icons.scheme}-${cap cfg.gtk.color}"; - }; - }; -} diff --git a/modules/home/desktop/theme/nord.nix b/modules/home/desktop/theme/nord.nix deleted file mode 100644 index a195900..0000000 --- a/modules/home/desktop/theme/nord.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - # Nord colors - # Opacity Hex alpha - # 100% FF - # 75% BF - # 50% 80 - # 25% 40 - # 10% 1A - # 0% 00 - polarNight = { - nord0 = "#2e3440"; - nord1 = "#3b4252"; - nord2 = "#434c5e"; - nord3 = "#4c566a"; - }; - snowStorm = { - nord4 = "#d8dee9"; - nord5 = "#e5e9f0"; - nord6 = "#eceff4"; - }; - frost = { - nord7 = "#8fbcbb"; - nord8 = "#88c0d0"; - nord9 = "#81a1c1"; - nord10 = "#5e81ac"; - }; - aurora = { - nord11 = "#bf616a"; - nord12 = "#d08770"; - nord13 = "#ebcb8b"; - nord14 = "#a3be8c"; - nord15 = "#b48ead"; - }; - - defaultOpacity = "opacity: 0.85;"; - defaultBorderRadius = "border-radius: 1rem;"; - defaultCenterOptions = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - ''; - borderRight = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 0rem 1rem 1rem 0rem; - margin-right: 0.5rem; - ''; - borderLeft = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 1rem 0rem 0rem 1rem; - margin-left: 0.5rem; - ''; -} diff --git a/modules/home/desktop/theme/palettes/dracula.nix b/modules/home/desktop/theme/palettes/dracula.nix deleted file mode 100644 index 3707213..0000000 --- a/modules/home/desktop/theme/palettes/dracula.nix +++ /dev/null @@ -1,90 +0,0 @@ -rec { - # Normalized semantic colors (theme-agnostic) - Dracula - colors = { - bg = "#282a36"; - bgAlt = "#343746"; - surface = "#343746"; - surfaceAlt = "#44475a"; - border = "#44475a"; - - text = "#f8f8f2"; - textMuted = "#e2e2dc"; - - primary = "#6272a4"; # dark blue - info = "#8be9fd"; # cyan - accent = "#bd93f9"; # purple - success = "#50fa7b"; # green - warning = "#f1fa8c"; # yellow - danger = "#ff5555"; # red - }; - - # Shared styling tokens for CSS consumers - tokens = { - opacity = "opacity: 0.90;"; - borderRadius = "border-radius: 0.8rem;"; - - centerOptions = '' - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - ''; - - borderRight = '' - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 0rem 0.8rem 0.8rem 0rem; - margin-right: 0.5rem; - ''; - - borderLeft = '' - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 0.8rem 0rem 0rem 0.8rem; - margin-left: 0.5rem; - ''; - }; - - # Legacy token aliases for back-compat - defaultOpacity = tokens.opacity; - defaultBorderRadius = tokens.borderRadius; - defaultCenterOptions = tokens.centerOptions; - borderRight = tokens.borderRight; - borderLeft = tokens.borderLeft; - - # Back-compat: Nord-shaped groups for existing modules (approximate mappings) - polarNight = { - nord0 = "#282a36"; - nord1 = "#343746"; - nord2 = "#3b3e4a"; - nord3 = "#44475a"; - }; - - snowStorm = { - nord4 = "#e2e2dc"; - nord5 = "#f1f1ea"; - nord6 = "#f8f8f2"; - }; - - frost = { - nord7 = "#50fa7b"; # using green as one of the frost group - nord8 = "#8be9fd"; # cyan - nord9 = "#6272a4"; # blue - nord10 = "#bd93f9"; # purple (as highlight) - }; - - aurora = { - nord11 = "#ff5555"; # red - nord12 = "#ffb86c"; # orange - nord13 = "#f1fa8c"; # yellow - nord14 = "#50fa7b"; # green - nord15 = "#bd93f9"; # magenta/purple - }; -} diff --git a/modules/home/desktop/theme/palettes/everforest.nix b/modules/home/desktop/theme/palettes/everforest.nix deleted file mode 100644 index 2d0ada6..0000000 --- a/modules/home/desktop/theme/palettes/everforest.nix +++ /dev/null @@ -1,90 +0,0 @@ -rec { - # Normalized semantic colors (Everforest - Dark) - colors = { - bg = "#2b3339"; - bgAlt = "#323c41"; - surface = "#323c41"; - surfaceAlt = "#3a444a"; - border = "#414b51"; - - text = "#d3c6aa"; - textMuted = "#9da9a0"; - - primary = "#7fbbb3"; # blue/aqua - info = "#83c092"; # teal - accent = "#d699b6"; # magenta - success = "#a7c080"; # green - warning = "#dbbc7f"; # yellow - danger = "#e67e80"; # red - }; - - # Shared styling tokens for CSS consumers - tokens = { - opacity = "opacity: 0.85;"; - borderRadius = "border-radius: 1rem;"; - - centerOptions = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - ''; - - borderRight = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 0rem 1rem 1rem 0rem; - margin-right: 0.5rem; - ''; - - borderLeft = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 1rem 0rem 0rem 1rem; - margin-left: 0.5rem; - ''; - }; - - # Legacy token aliases for back-compat - defaultOpacity = tokens.opacity; - defaultBorderRadius = tokens.borderRadius; - defaultCenterOptions = tokens.centerOptions; - borderRight = tokens.borderRight; - borderLeft = tokens.borderLeft; - - # Back-compat: Nord-shaped groups for existing modules (approximate mappings) - polarNight = { - nord0 = "#2b3339"; - nord1 = "#323c41"; - nord2 = "#3a444a"; - nord3 = "#414b51"; - }; - - snowStorm = { - nord4 = "#c6d0b5"; - nord5 = "#e0dcc7"; - nord6 = "#d3c6aa"; - }; - - frost = { - nord7 = "#a7c080"; # green - nord8 = "#83c092"; # teal - nord9 = "#7fbbb3"; # aqua/blue - nord10 = "#7fbbb3"; # reuse - }; - - aurora = { - nord11 = "#e67e80"; # red - nord12 = "#e69875"; # orange - nord13 = "#dbbc7f"; # yellow - nord14 = "#a7c080"; # green - nord15 = "#d699b6"; # magenta - }; -} diff --git a/modules/home/desktop/theme/palettes/nord.nix b/modules/home/desktop/theme/palettes/nord.nix deleted file mode 100644 index 0b25fd7..0000000 --- a/modules/home/desktop/theme/palettes/nord.nix +++ /dev/null @@ -1,90 +0,0 @@ -rec { - # Normalized semantic colors (theme-agnostic) - colors = { - bg = "#2e3440"; - bgAlt = "#3b4252"; - surface = "#3b4252"; - surfaceAlt = "#434c5e"; - border = "#4c566a"; - - text = "#eceff4"; - textMuted = "#e5e9f0"; - - primary = "#5e81ac"; # blue - info = "#88c0d0"; # cyan/teal - accent = "#b48ead"; # purple - success = "#a3be8c"; # green - warning = "#ebcb8b"; # yellow - danger = "#bf616a"; # red - }; - - # Shared styling tokens for CSS consumers - tokens = { - opacity = "opacity: 0.85;"; - borderRadius = "border-radius: 1rem;"; - - centerOptions = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - ''; - - borderRight = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 0rem 1rem 1rem 0rem; - margin-right: 0.5rem; - ''; - - borderLeft = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 1rem 0rem 0rem 1rem; - margin-left: 0.5rem; - ''; - }; - - # Legacy token aliases for back-compat - defaultOpacity = tokens.opacity; - defaultBorderRadius = tokens.borderRadius; - defaultCenterOptions = tokens.centerOptions; - borderRight = tokens.borderRight; - borderLeft = tokens.borderLeft; - - # Back-compat: Nord-shaped groups for existing modules - polarNight = { - nord0 = "#2e3440"; - nord1 = "#3b4252"; - nord2 = "#434c5e"; - nord3 = "#4c566a"; - }; - - snowStorm = { - nord4 = "#d8dee9"; - nord5 = "#e5e9f0"; - nord6 = "#eceff4"; - }; - - frost = { - nord7 = "#8fbcbb"; - nord8 = "#88c0d0"; - nord9 = "#81a1c1"; - nord10 = "#5e81ac"; - }; - - aurora = { - nord11 = "#bf616a"; - nord12 = "#d08770"; - nord13 = "#ebcb8b"; - nord14 = "#a3be8c"; - nord15 = "#b48ead"; - }; -} diff --git a/modules/home/home/default.nix b/modules/home/home/default.nix index 3037426..eee99c8 100644 --- a/modules/home/home/default.nix +++ b/modules/home/home/default.nix @@ -2,9 +2,13 @@ config, lib, pkgs, + namespace, hasDestopEnvironment ? true, ... }: +let + inherit (lib.${namespace}) enabled disabled; +in { home = { enableNixpkgsReleaseCheck = lib.mkDefault false; @@ -51,15 +55,15 @@ }; programs = { - nix-index-database.comma.enable = true; - btop.enable = lib.mkDefault true; - fastfetch.enable = lib.mkDefault true; - home-manager.enable = lib.mkDefault true; + nix-index-database.comma = enabled; + btop = lib.mkDefault enabled; + fastfetch = lib.mkDefault enabled; + home-manager = lib.mkDefault enabled; java = { enable = lib.mkDefault true; }; mangohud.enable = lib.mkDefault hasDestopEnvironment; - password-store.enable = true; + password-store = enabled; nh = { enable = true; flake = "/etc/nixos"; @@ -122,7 +126,7 @@ services = { nextcloud-client.enable = lib.mkDefault hasDestopEnvironment; - pass-secret-service.enable = lib.mkDefault true; + pass-secret-service = lib.mkDefault enabled; kdeconnect = { enable = lib.mkDefault hasDestopEnvironment; indicator = lib.mkDefault true; diff --git a/modules/home/programs/btop/default.nix b/modules/home/programs/btop/default.nix index 2c998b6..6f95ef8 100755 --- a/modules/home/programs/btop/default.nix +++ b/modules/home/programs/btop/default.nix @@ -2,7 +2,6 @@ with lib; let cfg = config.mjallen.programs.btop; - palette = import cfg.theme.file; in { imports = [ ./options.nix ]; @@ -10,8 +9,6 @@ in programs.btop = { enable = true; settings = { - color_theme = "global"; - theme_background = true; truecolor = true; force_tty = false; presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"; @@ -75,52 +72,6 @@ in selected_battery = "Auto"; log_level = "WARNING"; }; - themes = { - global = '' - theme[main_bg]="${palette.colors.bg}" - theme[main_fg]="${palette.colors.text}" - theme[title]="${palette.colors.text}" - theme[hi_fg]="${palette.colors.info}" - theme[selected_bg]="${palette.colors.bgAlt}" - theme[selected_fg]="${palette.colors.info}" - theme[inactive_fg]="${palette.colors.surfaceAlt}" - theme[graph_text]="${palette.colors.text}" - theme[meter_bg]="${palette.colors.bgAlt}" - theme[proc_misc]="${palette.colors.text}" - theme[cpu_box]="${palette.colors.accent}" - theme[mem_box]="${palette.colors.success}" - theme[net_box]="${palette.colors.warning}" - theme[proc_box]="${palette.colors.danger}" - theme[div_line]="${palette.colors.bgAlt}" - theme[temp_start]="${palette.colors.success}" - theme[temp_mid]="${palette.colors.warning}" - theme[temp_end]="${palette.colors.danger}" - theme[cpu_start]="${palette.colors.accent}" - theme[cpu_mid]="${palette.colors.warning}" - theme[cpu_end]="${palette.colors.danger}" - theme[free_start]="${palette.colors.success}" - theme[free_mid]="${palette.colors.warning}" - theme[free_end]="${palette.colors.warning}" - theme[cached_start]="${palette.colors.success}" - theme[cached_mid]="${palette.colors.warning}" - theme[cached_end]="${palette.colors.warning}" - theme[available_start]="${palette.colors.text}" - theme[available_mid]="${palette.colors.danger}" - theme[available_end]="${palette.colors.danger}" - theme[used_start]="${palette.colors.success}" - theme[used_mid]="${palette.colors.warning}" - theme[used_end]="${palette.colors.danger}" - theme[download_start]="${palette.colors.info}" - theme[download_mid]="${palette.colors.info}" - theme[download_end]="${palette.colors.warning}" - theme[upload_start]="${palette.colors.info}" - theme[upload_mid]="${palette.colors.info}" - theme[upload_end]="${palette.colors.warning}" - theme[process_start]="${palette.colors.accent}" - theme[process_mid]="${palette.colors.warning}" - theme[process_end]="${palette.colors.danger}" - ''; - }; }; }; } diff --git a/modules/home/programs/btop/options.nix b/modules/home/programs/btop/options.nix index 3917198..c85c2e9 100644 --- a/modules/home/programs/btop/options.nix +++ b/modules/home/programs/btop/options.nix @@ -3,19 +3,5 @@ with lib; { options.mjallen.programs.btop = { enable = mkEnableOption "enable btop"; - - theme = mkOption { - type = types.submodule { - options = { - file = mkOption { - type = types.path; - default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix"; - description = "Nix file exporting a palette attrset."; - }; - }; - }; - default = { }; - description = "btop theme palette configuration."; - }; }; } diff --git a/modules/home/programs/hyprland/default.nix b/modules/home/programs/hyprland/default.nix index b4d4c6c..43675cd 100644 --- a/modules/home/programs/hyprland/default.nix +++ b/modules/home/programs/hyprland/default.nix @@ -7,12 +7,11 @@ with lib; let cfg = config.mjallen.programs.hyprland; - drawer = "nwg-drawer -fm nautilus -term kitty -mb 10 -mt 10 -ml 10 -mr 10 -pbuseicontheme -i ${config.gtk.iconTheme.name}"; + drawer = "nwg-drawer -fm nautilus -term kitty -mb 10 -mt 10 -ml 10 -mr 10 -pbuseicontheme -i ${config.stylix.icons.dark}"; in { imports = [ ./options.nix - ./theme.nix ]; config = mkIf cfg.enable { @@ -83,8 +82,8 @@ in GTK_CSD = "0"; GTK_THEME = config.gtk.theme.name; GTK_USE_PORTAL = "1"; - HYPRCURSOR_THEME = config.home.pointerCursor.name; - HYPRCURSOR_SIZE = config.home.pointerCursor.size; + HYPRCURSOR_THEME = config.stylix.cursor.name; + HYPRCURSOR_SIZE = config.stylix.cursor.size; MOZ_ENABLE_WAYLAND = "1"; NIXOS_OZONE_WL = "1"; NIXOS_XDG_OPEN_USE_PORTAL = "1"; @@ -95,8 +94,8 @@ in QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; SDL_VIDEODRIVER = "wayland"; TERMINAL = "${cfg.defaultApps.terminal.pname}"; - XCURSOR_THEME = config.home.pointerCursor.name; - XCURSOR_SIZE = config.home.pointerCursor.size; + XCURSOR_THEME = config.stylix.cursor.name; + XCURSOR_SIZE = config.stylix.cursor.size; XDG_CACHE_HOME = "\${HOME}/.cache"; XDG_CONFIG_HOME = "\${HOME}/.config"; XDG_CURRENT_DESKTOP = "Hyprland"; @@ -176,14 +175,14 @@ in { monitor = ""; path = "/run/wallpaper.jpg"; # supports png, jpg, webp (no animations, though) - color = "rgba(25, 20, 20, 1.0)"; + color = mkForce "rgba(25, 20, 20, 1.0)"; # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations - blur_passes = "3"; # 0 disables blurring - blur_size = "7"; + blur_passes = mkForce "3"; # 0 disables blurring + blur_size = mkForce "7"; noise = "0.0117"; contrast = "0.8916"; - brightness = "0.8172"; + brightness = mkForce "0.8172"; vibrancy = "0.1696"; vibrancy_darkness = "0.0"; } @@ -193,9 +192,9 @@ in { monitor = cfg.primaryDisplay; text = "cmd[update:1000] echo -e \"$(LC_TIME=en_US.UTF-8 date +\"%A, %B %d\")\""; - color = "#eceff4"; + color = config.lib.stylix.colors.base06; font_size = "25"; - font_family = "JetBrainsMono NFM"; + font_family = lib.mkDefault config.stylix.fonts.monospace.name; position = "0, 350"; halign = "center"; valign = "center"; @@ -204,9 +203,9 @@ in { monitor = cfg.primaryDisplay; text = "cmd[update:1000] echo \"$(date +\"%I:%M\")\""; - color = "#eceff4"; + color = config.lib.stylix.colors.base06; font_size = "120"; - font_family = "JetBrainsMono NFM Bold"; + font_family = lib.mkDefault "${config.stylix.fonts.monospace.name} Bold"; position = "0, 230"; halign = "center"; valign = "center"; @@ -214,13 +213,13 @@ in { monitor = cfg.primaryDisplay; text = "$USER"; - color = "#eceff4"; + color = config.lib.stylix.colors.base06; outline_thickness = 2; dots_size = 0.2; dots_spacing = 0.2; dots_center = true; font_size = 18; - font_family = "JetBrainsMono NFM Bold"; + font_family = lib.mkDefault "${config.stylix.fonts.monospace.name} Bold"; position = "0, 0"; halign = "center"; valign = "center"; @@ -229,9 +228,9 @@ in { monitor = cfg.primaryDisplay; text = "cmd[update:30000] waybar-weather --hyprlock"; - color = "#eceff4"; + color = config.lib.stylix.colors.base06; font_size = "25"; - font_family = "JetBrainsMono NFM"; + font_family = lib.mkDefault config.stylix.fonts.monospace.name; position = "-100, 100"; halign = "right"; valign = "bottom"; @@ -240,9 +239,9 @@ in { monitor = cfg.primaryDisplay; text = "cmd[update:1000] waybar-media"; - color = "#eceff4"; + color = config.lib.stylix.colors.base06; font_size = "15"; - font_family = "JetBrainsMono NFM"; + font_family = lib.mkDefault config.stylix.fonts.monospace.name; position = "100, 100"; halign = "left"; valign = "bottom"; @@ -265,16 +264,16 @@ in { size = "200, 50"; position = "0, -80"; - font_family = "JetBrainsMono NFM"; + font_family = lib.mkDefault config.stylix.fonts.monospace.name; monitor = cfg.primaryDisplay; dots_center = true; fade_on_empty = true; - font_color = "#eceff4"; - inner_color = "#4c566a"; - outer_color = "#2e3440"; + font_color = config.lib.stylix.colors.base06; + inner_color = config.lib.stylix.colors.base03; + outer_color = config.lib.stylix.colors.base00; bothlock_color = -1; outline_thickness = 5; - placeholder_text = ''Password...''; + placeholder_text = ''Password...''; shadow_passes = 2; } ]; @@ -486,8 +485,8 @@ in gaps_in = 5; gaps_out = 10; border_size = 1; - "col.active_border" = "rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg"; - "col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg"; + # "col.active_border" = "rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg"; + # "col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg"; layout = "dwindle"; allow_tearing = cfg.allowTearing; }; diff --git a/modules/home/programs/hyprland/options.nix b/modules/home/programs/hyprland/options.nix index 1c3ea60..1f242a6 100644 --- a/modules/home/programs/hyprland/options.nix +++ b/modules/home/programs/hyprland/options.nix @@ -152,18 +152,6 @@ with lib; description = "Any extra configuration options"; }; - iconThemeName = mkOption { - type = types.str; - default = "Colloid-Dark"; - description = "Icon theme name"; - }; - - gtkThemeName = mkOption { - type = types.str; - default = "Colloid-Dark"; - description = "GTK theme name"; - }; - defaultApps = mkOption { type = types.submodule { options = { diff --git a/modules/home/programs/hyprland/theme.nix b/modules/home/programs/hyprland/theme.nix deleted file mode 100644 index 6d6b3b7..0000000 --- a/modules/home/programs/hyprland/theme.nix +++ /dev/null @@ -1,100 +0,0 @@ -{ - config, - lib, - pkgs, - mjallenThemeComputed, - ... -}: -with lib; -let - cfg = config.mjallen.programs.hyprland; - - # Pull from global theme options - themeSize = config.mjallen.theme.gtk.size; # "standard" | "compact" - themeAccent = config.mjallen.theme.gtk.accent; # "default" | ... | "all" - themeTweak = config.mjallen.theme.gtk.tweak; # "normal" | "rimless" | "float" | "black" - themeColor = config.mjallen.theme.gtk.color; # "light" | "dark" - iconThemeVariant = config.mjallen.theme.icons.variant; # "default" | ... | "all" - iconScheme = config.mjallen.theme.icons.scheme; # "default" | "nord" | "dracula" | ... - - # Cursor - cursorTheme = "macOS"; - cursorThemePkg = pkgs.apple-cursor; - cursorSize = 24; - - # GTK - gtkTheme = mjallenThemeComputed.gtkTheme; - gtkThemePkg = pkgs.colloid-gtk-theme.override { - sizeVariants = [ themeSize ]; - colorVariants = [ themeColor ]; - themeVariants = [ themeAccent ]; - tweaks = [ themeTweak ]; - }; - - # Icons - iconTheme = mjallenThemeComputed.iconTheme; - iconThemePkg = pkgs.colloid-icon-theme.override { - schemeVariants = [ iconScheme ]; - colorVariants = [ iconThemeVariant ]; - }; - - # Fonts - fontName = "JetBrainsMono NFM"; - fontPackage = pkgs.nerd-fonts.jetbrains-mono; - fontSize = 12; -in -{ - config = mkIf cfg.enable { - home = { - pointerCursor = { - gtk.enable = true; - package = cursorThemePkg; - name = cursorTheme; - size = cursorSize; - }; - }; - - dconf = { - enable = true; - settings = { - "org/gnome/desktop/interface".color-scheme = "prefer-dark"; - "org/gnome/desktop/interface".cursor-theme = cursorTheme; - "org/gnome/desktop/interface".gtk-theme = gtkTheme; - "org/gnome/desktop/interface".icon-theme = iconTheme; - }; - }; - - gtk = { - enable = true; - - cursorTheme = { - name = cursorTheme; - package = cursorThemePkg; - }; - - theme = { - name = gtkTheme; - package = gtkThemePkg; - }; - - iconTheme = { - name = iconTheme; - package = iconThemePkg; - }; - - gtk3.extraConfig = { - gtk-application-prefer-dark-theme = true; - }; - - gtk4.extraConfig = { - gtk-application-prefer-dark-theme = true; - }; - - font = { - name = fontName; - package = fontPackage; - size = fontSize; - }; - }; - }; -} diff --git a/modules/home/programs/kitty/default.nix b/modules/home/programs/kitty/default.nix index f0e4678..74a6685 100755 --- a/modules/home/programs/kitty/default.nix +++ b/modules/home/programs/kitty/default.nix @@ -2,7 +2,6 @@ with lib; let cfg = config.mjallen.programs.kitty; - palette = import cfg.theme.file; in { imports = [ ./options.nix ]; @@ -12,94 +11,14 @@ in enable = true; shellIntegration.enableZshIntegration = true; - font = { - name = cfg.font.name; - package = cfg.font.package; - size = cfg.font.size; - }; - settings = { - bold_font = "auto"; + bold_font = "auto"; italic_font = "auto"; bold_italic_font = "auto"; mouse_hide_wait = "2.0"; cursor_shape = "block"; url_style = "dotted"; confirm_os_window_close = "0"; - background_opacity = "0.85"; - - # The basic colors - foreground = palette.colors.text; - background = palette.colors.bg; - selection_foreground = palette.colors.bg; - selection_background = palette.colors.accent; - - # Cursor colors - cursor = palette.colors.accent; - cursor_text_color = palette.colors.bg; - - # URL underline color when hovering with mouse - url_color = palette.colors.accent; - - # Kitty window border colors - active_border_color = palette.colors.primary; - inactive_border_color = palette.colors.bgAlt; - bell_border_color = palette.colors.warning; - - # OS Window titlebar colors - wayland_titlebar_color = palette.colors.bg; - macos_titlebar_color = palette.colors.bg; - - # Tab bar colors - active_tab_foreground = palette.colors.border; - active_tab_background = palette.colors.accent; - inactive_tab_foreground = palette.colors.text; - inactive_tab_background = palette.colors.bgAlt; - tab_bar_background = palette.colors.border; - - # Colors for marks (marked text in the terminal) - mark1_foreground = palette.colors.bg; - mark1_background = palette.colors.primary; - mark2_foreground = palette.colors.bg; - mark2_background = palette.colors.accent; - mark3_foreground = palette.colors.bg; - mark3_background = palette.colors.info; - - # The 16 terminal colors - - # black - color0 = palette.colors.bg; - - # Autosuggestion - color8 = palette.colors.primary; - - # red - color1 = palette.colors.danger; - color9 = palette.colors.danger; - - # green - color2 = palette.colors.success; - color10 = palette.colors.success; - - # yellow - color3 = palette.colors.warning; - color11 = palette.colors.warning; - - # blue - color4 = palette.colors.primary; - color12 = palette.colors.primary; - - # magenta - color5 = palette.colors.accent; - color13 = palette.colors.accent; - - # cyan - color6 = palette.colors.info; - color14 = palette.colors.info; - - # white - color7 = palette.colors.textMuted; - color15 = palette.colors.text; }; }; }; diff --git a/modules/home/programs/kitty/options.nix b/modules/home/programs/kitty/options.nix index ee76467..0385fe3 100644 --- a/modules/home/programs/kitty/options.nix +++ b/modules/home/programs/kitty/options.nix @@ -6,34 +6,5 @@ in { options.mjallen.programs.kitty = { enable = mkEnableOption "enable kitty terminal"; - - font = { - name = mkOption { - type = types.str; - default = "DejaVu Sans"; - }; - - package = mkOpt types.package pkgs.dejavu_fonts "Default font package"; - - size = mkOption { - type = with types; int; - default = 12; - }; - }; - - theme = mkOption { - type = types.submodule { - options = { - file = mkOption { - type = types.path; - # Fallback default; global theme module sets this via mkDefault - default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix"; - description = "Nix file exporting a palette attrset."; - }; - }; - }; - default = { }; - description = "Kitty theme palette configuration."; - }; }; } diff --git a/modules/home/programs/mako/default.nix b/modules/home/programs/mako/default.nix index 5d06360..d988683 100755 --- a/modules/home/programs/mako/default.nix +++ b/modules/home/programs/mako/default.nix @@ -2,7 +2,6 @@ with lib; let cfg = config.mjallen.programs.mako; - palette = import cfg.theme.file; in { imports = [ ./options.nix ]; @@ -10,7 +9,7 @@ in services.mako = { enable = true; settings = { - font = cfg.fontName; + font = mkDefault cfg.fontName; icons = true; ignore-timeout = true; sort = "-time"; @@ -22,10 +21,10 @@ in max-icon-size = 64; default-timeout = 5000; - background-color = palette.colors.bg; - text-color = palette.colors.text; - border-color = palette.colors.primary; - progress-color = "over ${palette.colors.info}"; + # background-color = mkDefault config.lib.stylix.colors.base00; + # text-color = mkDefault config.lib.stylix.colors.base06; + # border-color = mkDefault config.lib.stylix.colors.base0F; + # progress-color = mkDefault "over ${config.lib.stylix.colors.base0C}"; }; }; }; diff --git a/modules/home/programs/mako/options.nix b/modules/home/programs/mako/options.nix index 623a7fe..a920ab2 100644 --- a/modules/home/programs/mako/options.nix +++ b/modules/home/programs/mako/options.nix @@ -8,19 +8,5 @@ with lib; type = types.str; default = "DejaVu Sans"; }; - - theme = mkOption { - type = types.submodule { - options = { - file = mkOption { - type = types.path; - default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix"; - description = "Nix file exporting a palette attrset."; - }; - }; - }; - default = { }; - description = "Mako theme palette configuration."; - }; }; } diff --git a/modules/home/programs/nwg-dock/default.nix b/modules/home/programs/nwg-dock/default.nix index 15fbf30..fbdcf04 100644 --- a/modules/home/programs/nwg-dock/default.nix +++ b/modules/home/programs/nwg-dock/default.nix @@ -18,11 +18,11 @@ in home.file = { ".config/nwg-dock-hyprland/drawer.css".text = '' window { - background: ${palette.colors.bg}; + background: ${config.lib.stylix.colors.base00}; border-radius: 10px; border-style: none; border-width: 1px; - border-color: ${palette.colors.accent}b0 + border-color: ${config.lib.stylix.colors.base0E}b0 } #box { @@ -33,14 +33,14 @@ in active { /* This is to underline the button representing the currently active window */ border-bottom: solid 1px; - border-color: ${palette.colors.success}1a + border-color: ${config.lib.stylix.colors.base0B}1a } button, image { background: none; border-style: none; box-shadow: none; - color: ${palette.colors.primary} + color: ${config.lib.stylix.colors.base0F} } button { @@ -52,7 +52,7 @@ in } button:hover { - background-color: ${palette.colors.bg}1a; + background-color: ${config.lib.stylix.colors.base00}1a; border-radius: 2px; } diff --git a/modules/home/programs/nwg-dock/options.nix b/modules/home/programs/nwg-dock/options.nix index 47c63cb..a37808f 100644 --- a/modules/home/programs/nwg-dock/options.nix +++ b/modules/home/programs/nwg-dock/options.nix @@ -3,19 +3,5 @@ with lib; { options.mjallen.programs.nwg-dock = { enable = mkEnableOption "enable nwg-dock"; - - theme = mkOption { - type = types.submodule { - options = { - file = mkOption { - type = types.path; - default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix"; - description = "Nix file exporting a palette attrset."; - }; - }; - }; - default = { }; - description = "nwg-dock theme palette configuration."; - }; }; } diff --git a/modules/home/programs/nwg-drawer/default.nix b/modules/home/programs/nwg-drawer/default.nix index 63efdfa..4bd19d0 100644 --- a/modules/home/programs/nwg-drawer/default.nix +++ b/modules/home/programs/nwg-drawer/default.nix @@ -18,13 +18,13 @@ in home.file = { ".config/nwg-drawer/drawer.css".text = '' window { - background-color: ${palette.colors.bg}bf; - color: ${palette.colors.textMuted}00 + background-color: ${config.lib.stylix.colors.base00}bf; + color: ${config.lib.stylix.colors.base05}00 } /* search entry */ entry { - background-color: ${palette.colors.bgAlt}0f + background-color: ${config.lib.stylix.colors.base01}0f } button, image { @@ -33,7 +33,7 @@ in } button:hover { - background-color: ${palette.colors.primary}1a + background-color: ${config.lib.stylix.colors.base0F}1a } /* in case you wanted to give category buttons a different look */ @@ -43,12 +43,12 @@ in #pinned-box { padding-bottom: 5px; - border-bottom: 1px dotted ${palette.colors.border} + border-bottom: 1px dotted ${config.lib.stylix.colors.base03} } #files-box { padding: 5px; - border: 1px dotted ${palette.colors.border}; + border: 1px dotted ${config.lib.stylix.colors.base03}; border-radius: 15px } ''; diff --git a/modules/home/programs/nwg-drawer/options.nix b/modules/home/programs/nwg-drawer/options.nix index aff37cd..a837354 100644 --- a/modules/home/programs/nwg-drawer/options.nix +++ b/modules/home/programs/nwg-drawer/options.nix @@ -3,19 +3,5 @@ with lib; { options.mjallen.programs.nwg-drawer = { enable = mkEnableOption "enable nwg-drawer"; - - theme = mkOption { - type = types.submodule { - options = { - file = mkOption { - type = types.path; - default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix"; - description = "Nix file exporting a palette attrset."; - }; - }; - }; - default = { }; - description = "nwg-drawer theme palette configuration."; - }; }; } diff --git a/modules/home/programs/waybar/default.nix b/modules/home/programs/waybar/default.nix index 4522b4c..8305ce4 100755 --- a/modules/home/programs/waybar/default.nix +++ b/modules/home/programs/waybar/default.nix @@ -2,324 +2,233 @@ with lib; let cfg = config.mjallen.programs.waybar; - palette = import cfg.theme.file; - - defaultOpacity = palette.tokens.opacity or "opacity: 0.85;"; - defaultBorderRadius = palette.tokens.borderRadius or "border-radius: 1rem;"; - defaultCenterOptions = - palette.tokens.centerOptions or '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - ''; - borderRight = - palette.tokens.borderRight or '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 0rem 1rem 1rem 0rem; - margin-right: 0.5rem; - ''; - borderLeft = '' - padding-top: 0.2rem; - padding-bottom: 0.2rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - margin: 3px 0; - border-radius: 1rem 0rem 0rem 1rem; - margin-left: 0.5rem; - ''; baseStyle = if cfg.style.file != null then builtins.readFile cfg.style.file else '' - .blink_me { - animation: blinker 1s linear infinite; - } - + /* ============================================================================= + ANIMATIONS & GLOBAL OVERRIDES + ============================================================================= */ @keyframes blinker { - 50% { - color: ${palette.colors.danger}; - } + 50% { color: @base08; } } + /* Override Stylix font settings */ * { - font-family: - Jetbrains Mono Nerd Font, - monospace; + font-family: "Jetbrains Mono Nerd Font", monospace; font-size: 14px; min-height: 0; } + /* ============================================================================= + MAIN BAR & TOOLTIPS + ============================================================================= */ + window#waybar { + background: transparent; + } + #waybar { background: transparent; - color: ${palette.colors.text}; + color: @base06; margin: 5px 5px; } - #workspaces { - background-color: ${palette.colors.bg}; - ${defaultBorderRadius} - ${defaultOpacity} - ${defaultCenterOptions} - margin-left: 0.6rem; - } - - #workspaces button { - color: ${palette.colors.primary}; - ${defaultBorderRadius} - padding: 0.4rem; - } - - #workspaces button.active { - color: ${palette.colors.info}; - ${defaultBorderRadius} - } - - #workspaces button:hover { - color: ${palette.colors.info}; - ${defaultBorderRadius} - } - - #workspaces button.focused { - color: ${palette.colors.text}; - background: ${palette.colors.warning}; - ${defaultBorderRadius} - } - - #workspaces button.urgent { - color: ${palette.colors.bg}; - background: ${palette.colors.text}; - ${defaultBorderRadius} - } - #tooltip { - background: ${palette.colors.bg}; - border-color: ${palette.colors.bg}; - ${defaultBorderRadius} - border-width: 1rem; + background: @base00; + border-color: @base00; + border-radius: 1rem; + border-width: 2px; /* Reduced from 1rem which is usually too thick */ border-style: solid; } - #window { - color: ${palette.colors.accent}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultBorderRadius} - ${defaultCenterOptions} - margin-left: 4rem; - margin-right: ${toString cfg.windowOffset}rem; - } - - /* make window module transparent when no windows present */ - #window.empty { - background-color: transparent; - } - - #custom-power { - color: ${palette.colors.primary}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; - } - + /* Right-click menu styling */ menu { border-radius: 15px; - background: ${palette.colors.bg}; - color: ${palette.colors.text}; + background: @base00; + color: @base06; } menuitem { border-radius: 15px; } - #custom-weather { - color: ${palette.colors.primary}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; + /* ============================================================================= + WORKSPACES + ============================================================================= */ + #workspaces { + background-color: @base00; + border-radius: 1rem; + opacity: 0.85; + padding: 0.2rem 0.5rem; + margin: 3px 0 3px 0.6rem; } - #custom-notifications { - color: ${palette.colors.primary}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; + #workspaces button { + color: @base0F; + border-radius: 1rem; + padding: 0.4rem; + /* Border handled by stylix, but we add specific colors below */ } - #custom-notifications.notify { - color: ${palette.colors.danger}; + #workspaces button.active, + #workspaces button:hover { + color: @base0C; + border-radius: 1rem; } + #workspaces button.focused { + color: @base06; + background: @base0A; + border-radius: 1rem; + } + + #workspaces button.urgent { + color: @base00; + background: @base06; + border-radius: 1rem; + } + + /* ============================================================================= + WINDOW TITLE + ============================================================================= */ + #window { + color: @base0E; + background-color: @base00; + opacity: 0.85; + border-radius: 1rem; + padding: 0.2rem 0.5rem; + margin: 3px 0; + + margin-left: 4rem; + margin-right: 75rem; /* This is very large, likely a centering hack */ + } + + #window.empty { + background-color: transparent; + } + + /* ============================================================================= + SHARED MODULE STYLES + ============================================================================= */ + /* This block applies the standard "Nord Background" style to all modules + to avoid repeating code for every single ID. */ + #custom-power, + #custom-weather, + #custom-notifications, + #battery, + #clock, + #idle_inhibitor, + #network, + #bluetooth, + #wireplumber, + #keyboard-state, + #temperature, + #custom-left-end, + #custom-right-end, + #custom-lights, + #tray { + background-color: @base00; + opacity: 0.85; + padding: 0.2rem 0.5rem; + margin: 3px 0; + border-radius: 0; /* Default to square, rounded manually below */ + } + + /* Common Hover Effect */ + #idle_inhibitor:hover, + #network:hover, + #bluetooth:hover, + #wireplumber:hover, + #temperature:hover, + #custom-lights:hover { + background: @base02; + } + + /* ============================================================================= + MODULE SPECIFIC COLORS + ============================================================================= */ + + #custom-power, + #custom-weather, + #custom-notifications { + color: @base0F; + } + + #custom-notifications.notify { color: @base08; } #custom-notifications.alert { - animation-name: blinker; - animation-duration: 3s; - animation-timing-function: linear; - animation-iteration-count: infinite; + animation: blinker 3s linear infinite; } #battery { - color: ${palette.colors.accent}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; + color: @base0E; min-width: 3rem; } - #clock { - color: ${palette.colors.primary}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; - } - - /* ------------- */ + #clock { color: @base0F; } #idle_inhibitor { - color: ${palette.colors.primary}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; + color: @base0F; padding-right: 1rem; } - #idle_inhibitor:hover { - background: ${palette.colors.surfaceAlt}; - } - #network { - color: ${palette.colors.accent}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; + color: @base0E; padding-right: 15px; } - #network:hover { - background: ${palette.colors.surfaceAlt}; - } + #bluetooth { color: @base0F; } - #bluetooth { - color: ${palette.colors.primary}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; - } - - #bluetooth:hover { - background: ${palette.colors.surfaceAlt}; - } - - #wireplumber.source { - color: ${palette.colors.info}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; + /* --- Audio source/sink --- */ + #wireplumber.source, + #wireplumber.sink { + color: @base0C; } #wireplumber.source.muted { - animation-name: blinker; - animation-duration: 2s; - animation-timing-function: linear; - animation-iteration-count: infinite; + animation: blinker 2s linear infinite; padding-right: 1rem; } - #wireplumber.source:hover { - background: ${palette.colors.surfaceAlt}; - } - - #wireplumber.sink { - color: ${palette.colors.info}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; - } - #wireplumber.sink.muted { - animation-name: blinker; - animation-duration: 5s; - animation-timing-function: linear; - animation-iteration-count: infinite; + animation: blinker 5s linear infinite; } - #wireplumber.sink:hover { - background: ${palette.colors.surfaceAlt}; - } - - #keyboard-state.numlock { - color: ${palette.colors.info}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; - } - - #keyboard-state.capslock { - color: ${palette.colors.primary}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; - } + /* --- Keyboard --- */ + #keyboard-state.numlock { color: @base0C; } + #keyboard-state.capslock { color: @base0F; } + /* --- Temperature --- */ + #temperature, #temperature.gpu { - color: ${palette.colors.primary}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; + color: @base0F; } - #temperature.gpu:hover { - background: ${palette.colors.surfaceAlt}; - } - - #temperature { - color: ${palette.colors.primary}; - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0 - } - - /* ------------- */ - + /* --- Tray --- */ #tray { - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${defaultCenterOptions} - ${defaultBorderRadius} + border-radius: 1rem; margin-right: 0.6rem; } - /* ------------- */ - + /* ============================================================================= + DECORATIVE END CAPS & EXTRAS + ============================================================================= */ #custom-left-end { - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${borderLeft} + border-radius: 1rem 0 0 1rem; + margin-left: 0.5rem; } #custom-right-end { - background-color: ${palette.colors.bg}; - ${defaultOpacity} - ${borderRight} + border-radius: 0 1rem 1rem 0; + margin-right: 0.5rem; + } + + #custom-lights { + color: @base0C; + /* Re-declaring background here to ensure specific override logic if needed */ + background-color: @base00; + border-radius: 1rem 0 0 1rem; + margin-left: 0.5rem; } ''; in @@ -596,10 +505,10 @@ in calendar = { mode = "month"; format = { - months = "{}"; - days = "{}"; - weekdays = "{}"; - today = "{}"; + months = "{}"; + days = "{}"; + weekdays = "{}"; + today = "{}"; }; }; }; diff --git a/modules/home/programs/waybar/options.nix b/modules/home/programs/waybar/options.nix index c5db66a..93d2c91 100644 --- a/modules/home/programs/waybar/options.nix +++ b/modules/home/programs/waybar/options.nix @@ -41,21 +41,6 @@ in description = "Right margin offset for the hyprland/window module (in rem)."; }; - # Theme - theme = mkOption { - type = submodule { - options = { - file = mkOption { - type = path; - default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix"; - description = "Nix file exporting a palette attrset (e.g., Nord)."; - }; - }; - }; - default = { }; - description = "Theme configuration."; - }; - # Layout layout = mkOption { type = submodule { diff --git a/modules/home/programs/wlogout/default.nix b/modules/home/programs/wlogout/default.nix index f66e874..26e394d 100644 --- a/modules/home/programs/wlogout/default.nix +++ b/modules/home/programs/wlogout/default.nix @@ -53,13 +53,13 @@ in } window { - background-color: ${palette.colors.bg}f0 + background-color: ${config.lib.stylix.colors.base00}f0 } button { margin: 8px; - color: ${palette.colors.info}; - background-color: ${palette.colors.bgAlt}; + color: ${config.lib.stylix.colors.base0C}; + background-color: ${config.lib.stylix.colors.base01}; border-style: solid; border-width: 2px; background-repeat: no-repeat; @@ -70,8 +70,8 @@ in button:active, button:focus, button:hover { - color: ${palette.colors.info}; - background-color: ${palette.colors.surfaceAlt}; + color: ${config.lib.stylix.colors.base0C}; + background-color: ${config.lib.stylix.colors.base02Alt}; outline-style: none; } diff --git a/modules/home/programs/wlogout/options.nix b/modules/home/programs/wlogout/options.nix index d980170..292f6b2 100644 --- a/modules/home/programs/wlogout/options.nix +++ b/modules/home/programs/wlogout/options.nix @@ -3,24 +3,5 @@ with lib; { options.mjallen.programs.wlogout = { enable = mkEnableOption "enable wlogout"; - - fontName = mkOption { - type = types.str; - default = "Deja Vu Sans"; - }; - - theme = mkOption { - type = types.submodule { - options = { - file = mkOption { - type = types.path; - default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix"; - description = "Nix file exporting a palette attrset."; - }; - }; - }; - default = { }; - description = "wlogout theme palette configuration."; - }; }; } diff --git a/modules/home/programs/wofi/default.nix b/modules/home/programs/wofi/default.nix index 3cf93e8..5f61d74 100755 --- a/modules/home/programs/wofi/default.nix +++ b/modules/home/programs/wofi/default.nix @@ -20,9 +20,9 @@ in window { margin: 0px; padding: 10px; - border: 0.16em solid ${palette.colors.accent}; + border: 0.16em solid ${config.lib.stylix.colors.base0E}; border-radius: 0.1em; - background-color: ${palette.colors.bg}; + background-color: ${config.lib.stylix.colors.base00}; } /* Inner Box */ @@ -30,7 +30,7 @@ in margin: 5px; padding: 10px; border: none; - background-color: ${palette.colors.bg}; + background-color: ${config.lib.stylix.colors.base00}; } /* Outer Box */ @@ -38,7 +38,7 @@ in margin: 5px; padding: 10px; border: none; - background-color: ${palette.colors.bg}; + background-color: ${config.lib.stylix.colors.base00}; } /* Scroll */ @@ -46,7 +46,7 @@ in margin: 0px; padding: 10px; border: none; - background-color: ${palette.colors.bg}; + background-color: ${config.lib.stylix.colors.base00}; } /* Input */ @@ -55,46 +55,46 @@ in padding: 10px; border: none; border-radius: 0.1em; - color: ${palette.colors.text}; - background-color: ${palette.colors.bg}; + color: ${config.lib.stylix.colors.base06}; + background-color: ${config.lib.stylix.colors.base00}; } #input image { border: none; - color: ${palette.colors.danger}; + color: ${config.lib.stylix.colors.base08}; } #input * { - outline: 4px solid ${palette.colors.danger}!important; + outline: 4px solid ${config.lib.stylix.colors.base08}!important; } /* Text */ #text { margin: 5px; border: none; - color: ${palette.colors.text}; + color: ${config.lib.stylix.colors.base06}; } #entry { - background-color: ${palette.colors.bg}; + background-color: ${config.lib.stylix.colors.base00}; } #entry arrow { border: none; - color: ${palette.colors.accent}; + color: ${config.lib.stylix.colors.base0E}; } /* Selected Entry */ #entry:selected { - border: 0.11em solid ${palette.colors.accent}; + border: 0.11em solid ${config.lib.stylix.colors.base0E}; } #entry:selected #text { - color: ${palette.colors.info}; + color: ${config.lib.stylix.colors.base0C}; } #entry:drop(active) { - background-color: ${palette.colors.accent}!important; + background-color: ${config.lib.stylix.colors.base0E}!important; } ''; }; diff --git a/modules/home/programs/wofi/options.nix b/modules/home/programs/wofi/options.nix index f47e584..8389599 100644 --- a/modules/home/programs/wofi/options.nix +++ b/modules/home/programs/wofi/options.nix @@ -8,19 +8,5 @@ with lib; type = types.str; default = "Deja Vu Sans"; }; - - theme = mkOption { - type = types.submodule { - options = { - file = mkOption { - type = types.path; - default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix"; - description = "Nix file exporting a palette attrset."; - }; - }; - }; - default = { }; - description = "Wofi theme palette configuration."; - }; }; } diff --git a/modules/home/stylix/default.nix b/modules/home/stylix/default.nix new file mode 100644 index 0000000..e11f823 --- /dev/null +++ b/modules/home/stylix/default.nix @@ -0,0 +1,86 @@ +{ config, pkgs, ... }: +let + # # Pull from global theme options + # themeSize = "standard"; # "standard" | "compact" + # themeAccent = "default"; # "default" | ... | "all" + # themeTweak = "normal"; # "normal" | "rimless" | "float" | "black" + # themeColor = "dark"; # "light" | "dark" + # iconThemeVariant = "default"; # "default" | ... | "all" + # iconScheme = "nord"; # "default" | "nord" | "dracula" | ... + + # # GTK + # gtkTheme = "Colloid-dark-standard"; + # gtkThemePkg = pkgs.colloid-gtk-theme.override { + # sizeVariants = [ themeSize ]; + # colorVariants = [ themeColor ]; + # themeVariants = [ themeAccent ]; + # tweaks = [ themeTweak ]; + # }; + + # # Icons + # iconTheme = "Colloid-nord-dark"; + # iconThemePkg = pkgs.colloid-icon-theme.override { + # schemeVariants = [ iconScheme ]; + # colorVariants = [ iconThemeVariant ]; + # }; +in +{ + stylix = { + enable = true; + enableReleaseChecks = false; + base16Scheme = "${pkgs.base16-schemes}/share/themes/nord.yaml"; + + cursor = { + name = "macOS"; + size = 24; + package = pkgs.apple-cursor; + }; + + fonts = { + serif = { + package = pkgs.dejavu_fonts; + name = "DejaVu Serif"; + }; + + sansSerif = { + package = pkgs.dejavu_fonts; + name = "DejaVu Sans"; + }; + + monospace = { + package = pkgs.nerd-fonts.jetbrains-mono; + name = "JetBrainsMono NFM"; + }; + + emoji = { + package = pkgs.noto-fonts-color-emoji; + name = "Noto Color Emoji"; + }; + + sizes = { + applications = 12; + desktop = 14; + popups = config.stylix.fonts.sizes.desktop; + terminal = config.stylix.fonts.sizes.applications; + }; + }; + + icons = { + enable = true; + package = pkgs.colloid-icon-theme; + dark = "Colloid-nord-dark"; + light = "Colloid-nord-light"; + }; + + opacity = { + terminal = 0.85; + }; + + targets = { + hyprlock.enable = false; + gnome.enable = false; + # gtk.enable = false; + qt.enable = false; + }; + }; +} \ No newline at end of file diff --git a/modules/nixos/home/default.nix b/modules/nixos/home/default.nix index f3f6d07..d78d83d 100644 --- a/modules/nixos/home/default.nix +++ b/modules/nixos/home/default.nix @@ -65,6 +65,7 @@ in sops-nix.homeManagerModules.sops nix-plist-manager.homeManagerModules.default nix-index-database.homeModules.nix-index + stylix.homeModules.stylix # Add any other external HM modules here ] ++ (if (!isArm) then with inputs; [ steam-rom-manager.homeManagerModules.default ] else [ ]) diff --git a/modules/nixos/programs/default.nix b/modules/nixos/programs/default.nix index aca1189..441e82a 100644 --- a/modules/nixos/programs/default.nix +++ b/modules/nixos/programs/default.nix @@ -14,7 +14,7 @@ in { programs = { nix-index-database.comma.enable = true; - zsh.enable = lib.mkDefault true; + zsh.enable = lib.mkForce true; gnupg.agent = { enable = lib.mkDefault true; enableSSHSupport = lib.mkDefault true; diff --git a/modules/nixos/services/common/default.nix b/modules/nixos/services/common/default.nix index 498d9de..42a1527 100644 --- a/modules/nixos/services/common/default.nix +++ b/modules/nixos/services/common/default.nix @@ -1,4 +1,4 @@ -{ lib, pkgs, ... }: +{ lib, config, ... }: { services = { @@ -7,8 +7,8 @@ hwRender = true; fonts = [ { - name = "JetBrainsMono NFM"; - package = pkgs.nerd-fonts.jetbrains-mono; + name = lib.mkDefault config.stylix.fonts.monospace; + package = lib.mkDefault config.stylix.fonts.monospace.package; } ]; }; diff --git a/modules/nixos/shell/default.nix b/modules/nixos/shell/default.nix index 9d4e472..814512b 100644 --- a/modules/nixos/shell/default.nix +++ b/modules/nixos/shell/default.nix @@ -1,7 +1,7 @@ { lib, ... }: { programs = { - zsh.enable = lib.mkDefault true; + zsh.enable = lib.mkForce true; gnupg.agent = { enable = lib.mkDefault true; enableSSHSupport = lib.mkDefault true; diff --git a/modules/nixos/user/default.nix b/modules/nixos/user/default.nix index 3eac56b..25b8042 100644 --- a/modules/nixos/user/default.nix +++ b/modules/nixos/user/default.nix @@ -69,51 +69,58 @@ in users = { mutableUsers = cfg.mutableUsers; groups.${cfg.group}.gid = lib.mkForce (if cfg.group != "wheel" then cfg.gid else 1); - users.${cfg.name} = { - inherit (cfg) - name - uid - linger - packages - password - hashedPassword - hashedPasswordFile - ; + users = { + root = { + isSystemUser = true; + isNormalUser = false; + shell = lib.mkForce pkgs.zsh; + }; + ${cfg.name} = { + inherit (cfg) + name + uid + linger + packages + password + hashedPassword + hashedPasswordFile + ; - extraGroups = [ - "wheel" - "keys" - "networkmanager" - "ratbagd" - "scanner" - "systemd-journal" - "mpd" - "audio" - "video" - "input" - "plugdev" - "lp" - "tss" - "power" - "nix" - "i2c" - "media" - "nscd" - "avahi" - "podman" - "libvirtd" - ] - ++ cfg.extraGroups; + extraGroups = [ + "wheel" + "keys" + "networkmanager" + "ratbagd" + "scanner" + "systemd-journal" + "mpd" + "audio" + "video" + "input" + "plugdev" + "lp" + "tss" + "power" + "nix" + "i2c" + "media" + "nscd" + "avahi" + "podman" + "libvirtd" + ] + ++ cfg.extraGroups; - group = cfg.group; - home = "/home/${cfg.name}"; - isNormalUser = true; - shell = lib.mkForce pkgs.zsh; + group = cfg.group; + home = "/home/${cfg.name}"; + isNormalUser = true; + shell = lib.mkForce pkgs.zsh; - # SSH keys - combine user-specific and common keys - openssh.authorizedKeys.keys = cfg.sshKeys ++ (lib.optionals cfg.enableCommonSshKeys commonSshKeys); - } - // cfg.extraOptions; + # SSH keys - combine user-specific and common keys + openssh.authorizedKeys.keys = cfg.sshKeys ++ (lib.optionals cfg.enableCommonSshKeys commonSshKeys); + } + // cfg.extraOptions; + }; }; assertions = [ { diff --git a/systems/aarch64-linux/pi4/default.nix b/systems/aarch64-linux/pi4/default.nix index c1d596f..9dff7cc 100755 --- a/systems/aarch64-linux/pi4/default.nix +++ b/systems/aarch64-linux/pi4/default.nix @@ -3,7 +3,8 @@ # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). { - pkgs, + lib, + config, namespace, ... }: @@ -77,8 +78,8 @@ hwRender = true; fonts = [ { - name = "JetBrainsMono NFM"; - package = pkgs.nerd-fonts.jetbrains-mono; + name = lib.mkDefault config.stylix.fonts.monospace.name; + package = lib.mkDefault config.stylix.fonts.monospace.package; } ]; };