fix: add stylix compatibility shims for missing program options

Stylix unconditionally imports all target modules, which expect certain
program options to exist even when those programs aren't enabled. This
causes evaluation errors.

Add stylix-compat.nix with stub options for:
- programs.neovim.initLua (maps to extraLuaConfig)
- programs.opencode.tui/themes

Also:
- Disable neovim/neovide stylix targets (we deploy theme lua via theme-loader)
- Set autoEnable = false to only enable explicitly listed targets
- Enable programs.neovim to satisfy stylix's neovim target
- Update stylix to latest version

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-04-11 20:20:32 +01:00
parent b27fc5aee8
commit a9ee79a5ce
4 changed files with 45 additions and 4 deletions

View File

@@ -0,0 +1,35 @@
{ config, lib, ... }:
# Compatibility shims for stylix target modules
# Stylix unconditionally imports all target modules, which expect certain
# program options to exist. This module defines stub options for programs
# we don't use to prevent evaluation errors.
{
options = {
# Neovim: stylix uses initLua but home-manager uses extraLuaConfig
programs.neovim.initLua = lib.mkOption {
type = lib.types.lines;
default = "";
description = "Lua code to run at init (compatibility shim for stylix)";
};
# OpenCode: stylix expects programs.opencode options
programs.opencode = {
tui = lib.mkOption {
type = lib.types.attrsOf lib.types.anything;
default = {};
description = "OpenCode TUI settings (stylix compatibility shim)";
};
themes = lib.mkOption {
type = lib.types.attrsOf lib.types.anything;
default = {};
description = "OpenCode themes (stylix compatibility shim)";
};
};
};
config = lib.mkIf (config.programs.neovim.initLua != "") {
programs.neovim.extraLuaConfig = config.programs.neovim.initLua;
};
}