From b713d642115f1f0031d4a1312f5992848d89d42a Mon Sep 17 00:00:00 2001 From: rope Date: Mon, 18 May 2026 13:53:19 +0100 Subject: [PATCH] stylix: enable on media server via stylix-stable (release-25.11) Add a stylix-stable input pinned to release-25.11 so the media server gets Stylix theming without pulling in unstable nixpkgs. btop is now managed by Home Manager on all hosts with Stylix auto-theming. Desktop-only config (Zen/Vesktop CSS, GTK icons) is guarded behind an isDesktop check in stylix.nix. Co-Authored-By: Claude Opus 4.6 --- flake.lock | 297 +++++++++++++++++++++++++++++++++++ flake.nix | 7 +- home-manager/fred.nix | 2 +- hosts/FredOS-Mediaserver.nix | 1 - settings/stylix.nix | 34 ++-- 5 files changed, 321 insertions(+), 20 deletions(-) diff --git a/flake.lock b/flake.lock index 8e067cc..26d6c85 100644 --- a/flake.lock +++ b/flake.lock @@ -112,6 +112,23 @@ "type": "github" } }, + "base16-fish_2": { + "flake": false, + "locked": { + "lastModified": 1765809053, + "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", + "type": "github" + } + }, "base16-helix": { "flake": false, "locked": { @@ -128,6 +145,22 @@ "type": "github" } }, + "base16-helix_2": { + "flake": false, + "locked": { + "lastModified": 1760703920, + "narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "d646af9b7d14bff08824538164af99d0c521b185", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, "base16-vim": { "flake": false, "locked": { @@ -145,6 +178,41 @@ "type": "github" } }, + "base16-vim_2": { + "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" + } + }, + "base16_2": { + "inputs": { + "fromYaml": "fromYaml_2" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, "cachyos-kernel": { "flake": false, "locked": { @@ -193,6 +261,22 @@ "type": "github" } }, + "firefox-gnome-theme_2": { + "flake": false, + "locked": { + "lastModified": 1764873433, + "narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -285,6 +369,27 @@ "type": "github" } }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "stylix-stable", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767609335, + "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "250481aafeb741edfe23d29195671c19b36b6dca", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "fromYaml": { "flake": false, "locked": { @@ -301,6 +406,22 @@ "type": "github" } }, + "fromYaml_2": { + "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": [ @@ -340,6 +461,25 @@ "type": "github" } }, + "gnome-shell_2": { + "flake": false, + "locked": { + "host": "gitlab.gnome.org", + "lastModified": 1767737596, + "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "ef02db02bf0ff342734d525b5767814770d85b49", + "type": "gitlab" + }, + "original": { + "host": "gitlab.gnome.org", + "owner": "GNOME", + "ref": "gnome-49", + "repo": "gnome-shell", + "type": "gitlab" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -859,6 +999,31 @@ "type": "github" } }, + "nur_2": { + "inputs": { + "flake-parts": [ + "stylix-stable", + "flake-parts" + ], + "nixpkgs": [ + "stylix-stable", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767886815, + "narHash": "sha256-pB2BBv6X9cVGydEV/9Y8+uGCvuYJAlsprs1v1QHjccA=", + "owner": "nix-community", + "repo": "NUR", + "rev": "4ff84374d77ff62e2e13a46c33bfeb73590f9fef", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -911,6 +1076,7 @@ "nixpkgs-stable": "nixpkgs-stable", "proton-cachyos-nix": "proton-cachyos-nix", "stylix": "stylix", + "stylix-stable": "stylix-stable", "zen-browser": "zen-browser" } }, @@ -945,6 +1111,41 @@ "type": "github" } }, + "stylix-stable": { + "inputs": { + "base16": "base16_2", + "base16-fish": "base16-fish_2", + "base16-helix": "base16-helix_2", + "base16-vim": "base16-vim_2", + "firefox-gnome-theme": "firefox-gnome-theme_2", + "flake-parts": "flake-parts_4", + "gnome-shell": "gnome-shell_2", + "nixpkgs": [ + "nixpkgs-stable" + ], + "nur": "nur_2", + "systems": "systems_4", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty_2", + "tinted-schemes": "tinted-schemes_2", + "tinted-tmux": "tinted-tmux_2", + "tinted-zed": "tinted-zed_2" + }, + "locked": { + "lastModified": 1778680496, + "narHash": "sha256-tUq1WASV0dHLv3j18log8V6Esq0NYkXuzNH2EHsstcg=", + "owner": "nix-community", + "repo": "stylix", + "rev": "fc5bec2e44678eeaa221d566d447a0257a884737", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.11", + "repo": "stylix", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1689347949, @@ -990,6 +1191,38 @@ "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": { @@ -1006,6 +1239,22 @@ "type": "github" } }, + "tinted-kitty_2": { + "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": { @@ -1022,6 +1271,22 @@ "type": "github" } }, + "tinted-schemes_2": { + "flake": false, + "locked": { + "lastModified": 1767817087, + "narHash": "sha256-eGE8OYoK6HzhJt/7bOiNV2cx01IdIrHL7gXgjkHRdNo=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "bd99656235aab343e3d597bf196df9bc67429507", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, "tinted-tmux": { "flake": false, "locked": { @@ -1038,6 +1303,22 @@ "type": "github" } }, + "tinted-tmux_2": { + "flake": false, + "locked": { + "lastModified": 1767489635, + "narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, "tinted-zed": { "flake": false, "locked": { @@ -1054,6 +1335,22 @@ "type": "github" } }, + "tinted-zed_2": { + "flake": false, + "locked": { + "lastModified": 1767488740, + "narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ diff --git a/flake.nix b/flake.nix index 54f32b2..8758a2e 100644 --- a/flake.nix +++ b/flake.nix @@ -39,6 +39,10 @@ }; stylix.url = "github:nix-community/stylix"; + stylix-stable = { + url = "github:nix-community/stylix/release-25.11"; + inputs.nixpkgs.follows = "nixpkgs-stable"; + }; }; outputs = { self @@ -51,6 +55,7 @@ , hyprland , anyrun , stylix + , stylix-stable , proton-cachyos-nix , ... } @ inputs: @@ -72,7 +77,7 @@ # Gaming and Macbook use nixpkgs unstable — required by home-manager # unstable which needs lib/services/lib.nix added in nixpkgs after 25.11. FredOS-Gaming = mkHost "FredOS-Gaming" nixpkgs home-manager [ stylix.nixosModules.stylix ./settings/stylix.nix ]; - FredOS-Mediaserver = mkHost "FredOS-Mediaserver" nixpkgs-stable home-manager-stable []; + FredOS-Mediaserver = mkHost "FredOS-Mediaserver" nixpkgs-stable home-manager-stable [ stylix-stable.nixosModules.stylix ./settings/stylix.nix ]; FredOS-Macbook = mkHost "FredOS-Macbook" nixpkgs home-manager [ stylix.nixosModules.stylix ./settings/stylix.nix ]; }; }; diff --git a/home-manager/fred.nix b/home-manager/fred.nix index 78af0ce..ecb745b 100644 --- a/home-manager/fred.nix +++ b/home-manager/fred.nix @@ -21,7 +21,7 @@ in # btop — stylix's btop target writes the colour theme; we keep our # non-colour preferences here. - programs.btop = lib.mkIf isDesktop { + programs.btop = { enable = true; settings = { theme_background = false; diff --git a/hosts/FredOS-Mediaserver.nix b/hosts/FredOS-Mediaserver.nix index 0fc0922..a9a4e62 100644 --- a/hosts/FredOS-Mediaserver.nix +++ b/hosts/FredOS-Mediaserver.nix @@ -10,7 +10,6 @@ environment.systemPackages = with pkgs; [ mergerfs wget - btop util-linux javaPackages.compiler.temurin-bin.jre-25 unzip diff --git a/settings/stylix.nix b/settings/stylix.nix index c205747..b06b8b6 100644 --- a/settings/stylix.nix +++ b/settings/stylix.nix @@ -1,8 +1,7 @@ { config, pkgs, lib, inputs, ... }: { - # Only imported for desktop hosts (see flake.nix extraModules). - # The Stylix NixOS module is added alongside this file so the - # Mediaserver doesn't pull in options that require unstable nixpkgs. + # Imported for all hosts via flake.nix extraModules. + # Desktop hosts use stylix (unstable), Mediaserver uses stylix-stable (25.11). config = { stylix = { @@ -41,7 +40,8 @@ }; }; - home-manager.users.fred = { config, lib, pkgs, ... }: let + home-manager.users.fred = { config, lib, pkgs, osConfig, ... }: let + isDesktop = lib.elem osConfig.networking.hostName [ "FredOS-Gaming" "FredOS-Macbook" ]; c = config.lib.stylix.colors; # Pure-Nix hex parsing for color distance calculation. @@ -145,20 +145,20 @@ "#${c.base03}" # outline "#${c.base02}" # outline variant ]; - in { - # Zen and Vesktop have no native stylix targets, so we keep the - # existing matugen CSS templates and substitute placeholders with - # stylix base16 colours at Nix-eval time. - home.file.".zen/fraudek5.Default Profile/chrome/userChrome.css".text = - stylixize (builtins.readFile "${inputs.self}/templates/zen-userChrome.css"); + in lib.mkMerge [ + # Desktop-only: Zen/Vesktop CSS and GTK icon theme + (lib.mkIf isDesktop { + home.file.".zen/fraudek5.Default Profile/chrome/userChrome.css".text = + stylixize (builtins.readFile "${inputs.self}/templates/zen-userChrome.css"); - home.file.".config/vesktop/settings/quickCss.css".text = - stylixize (builtins.readFile "${inputs.self}/templates/vesktop-quickCss.css"); + home.file.".config/vesktop/settings/quickCss.css".text = + stylixize (builtins.readFile "${inputs.self}/templates/vesktop-quickCss.css"); - gtk.iconTheme = { - package = papirusDark; - name = "Papirus-Dark"; - }; - }; + gtk.iconTheme = { + package = papirusDark; + name = "Papirus-Dark"; + }; + }) + ]; }; }