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 <noreply@anthropic.com>
This commit is contained in:
rope 2026-05-18 13:53:19 +01:00
parent f7f258651e
commit b713d64211
5 changed files with 321 additions and 20 deletions

297
flake.lock generated
View file

@ -112,6 +112,23 @@
"type": "github" "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": { "base16-helix": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -128,6 +145,22 @@
"type": "github" "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": { "base16-vim": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -145,6 +178,41 @@
"type": "github" "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": { "cachyos-kernel": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -193,6 +261,22 @@
"type": "github" "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-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -285,6 +369,27 @@
"type": "github" "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": { "fromYaml": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -301,6 +406,22 @@
"type": "github" "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": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -340,6 +461,25 @@
"type": "github" "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": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -859,6 +999,31 @@
"type": "github" "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": { "pre-commit-hooks": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
@ -911,6 +1076,7 @@
"nixpkgs-stable": "nixpkgs-stable", "nixpkgs-stable": "nixpkgs-stable",
"proton-cachyos-nix": "proton-cachyos-nix", "proton-cachyos-nix": "proton-cachyos-nix",
"stylix": "stylix", "stylix": "stylix",
"stylix-stable": "stylix-stable",
"zen-browser": "zen-browser" "zen-browser": "zen-browser"
} }
}, },
@ -945,6 +1111,41 @@
"type": "github" "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": { "systems": {
"locked": { "locked": {
"lastModified": 1689347949, "lastModified": 1689347949,
@ -990,6 +1191,38 @@
"type": "github" "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": { "tinted-kitty": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -1006,6 +1239,22 @@
"type": "github" "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": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -1022,6 +1271,22 @@
"type": "github" "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": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -1038,6 +1303,22 @@
"type": "github" "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": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -1054,6 +1335,22 @@
"type": "github" "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": { "xdph": {
"inputs": { "inputs": {
"hyprland-protocols": [ "hyprland-protocols": [

View file

@ -39,6 +39,10 @@
}; };
stylix.url = "github:nix-community/stylix"; stylix.url = "github:nix-community/stylix";
stylix-stable = {
url = "github:nix-community/stylix/release-25.11";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
}; };
outputs = outputs =
{ self { self
@ -51,6 +55,7 @@
, hyprland , hyprland
, anyrun , anyrun
, stylix , stylix
, stylix-stable
, proton-cachyos-nix , proton-cachyos-nix
, ... , ...
} @ inputs: } @ inputs:
@ -72,7 +77,7 @@
# Gaming and Macbook use nixpkgs unstable — required by home-manager # Gaming and Macbook use nixpkgs unstable — required by home-manager
# unstable which needs lib/services/lib.nix added in nixpkgs after 25.11. # 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-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 ]; FredOS-Macbook = mkHost "FredOS-Macbook" nixpkgs home-manager [ stylix.nixosModules.stylix ./settings/stylix.nix ];
}; };
}; };

View file

@ -21,7 +21,7 @@ in
# btop — stylix's btop target writes the colour theme; we keep our # btop — stylix's btop target writes the colour theme; we keep our
# non-colour preferences here. # non-colour preferences here.
programs.btop = lib.mkIf isDesktop { programs.btop = {
enable = true; enable = true;
settings = { settings = {
theme_background = false; theme_background = false;

View file

@ -10,7 +10,6 @@
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
mergerfs mergerfs
wget wget
btop
util-linux util-linux
javaPackages.compiler.temurin-bin.jre-25 javaPackages.compiler.temurin-bin.jre-25
unzip unzip

View file

@ -1,8 +1,7 @@
{ config, pkgs, lib, inputs, ... }: { config, pkgs, lib, inputs, ... }:
{ {
# Only imported for desktop hosts (see flake.nix extraModules). # Imported for all hosts via flake.nix extraModules.
# The Stylix NixOS module is added alongside this file so the # Desktop hosts use stylix (unstable), Mediaserver uses stylix-stable (25.11).
# Mediaserver doesn't pull in options that require unstable nixpkgs.
config = { config = {
stylix = { 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; c = config.lib.stylix.colors;
# Pure-Nix hex parsing for color distance calculation. # Pure-Nix hex parsing for color distance calculation.
@ -145,10 +145,9 @@
"#${c.base03}" # outline "#${c.base03}" # outline
"#${c.base02}" # outline variant "#${c.base02}" # outline variant
]; ];
in { in lib.mkMerge [
# Zen and Vesktop have no native stylix targets, so we keep the # Desktop-only: Zen/Vesktop CSS and GTK icon theme
# existing matugen CSS templates and substitute placeholders with (lib.mkIf isDesktop {
# stylix base16 colours at Nix-eval time.
home.file.".zen/fraudek5.Default Profile/chrome/userChrome.css".text = home.file.".zen/fraudek5.Default Profile/chrome/userChrome.css".text =
stylixize (builtins.readFile "${inputs.self}/templates/zen-userChrome.css"); stylixize (builtins.readFile "${inputs.self}/templates/zen-userChrome.css");
@ -159,6 +158,7 @@
package = papirusDark; package = papirusDark;
name = "Papirus-Dark"; name = "Papirus-Dark";
}; };
}; })
];
}; };
} }