feat: implement profile system with mkHomeConfig and context constraints

- Add home/lib/default.nix with mkHomeConfig utility
  - Loads base + common modules always
  - Maps profiles (coding, gaming, media) to module imports
  - Enforces desktop/server mutual exclusion via assertion
  - Context must be 'desktop', 'server', or null

- Migrate all per-host home configs to new profile system
  - m3-ares: context=desktop, profiles=[coding, gaming, media]
  - m3-kratos: context=desktop, profiles=[coding, gaming, media]
  - m3-atlas: context=server, profiles=[coding]
  - m3-helios: context=server, profiles=[]
  - m3-hermes: context=server, profiles=[]
  - m3-aether: context=server, profiles=[]
  - m3-daedalus: context=desktop, profiles=[coding, media]

- Replace features.* options with new namespaces:
  - features.cli.* -> base.shell.* / base.cliTools.* / base.secrets
  - features.desktop.* -> desktop.wm.* / desktop.apps.* / desktop.theme.*
  - gaming/media moved to profiles.gaming.* / profiles.media.*

- Fix home/coding/editor/neovim.nix: remove duplicate option declaration
  (coding.editors.neovim.enable already declared by m3ta-nixpkgs)

- Fix home/coding/lsp/servers.nix: replace removed nodePackages.typescript-language-server
  with typescript-language-server

- Fix home/desktop/theme/wallpapers.nix: correct relative path
  (was ../../.. which resolved to project root, should be ../..)
This commit is contained in:
m3tm3re
2026-04-26 11:03:43 +02:00
parent 9908b9e335
commit f3749c5679
11 changed files with 422 additions and 181 deletions

View File

@@ -1,17 +1,7 @@
# NeoVim base configuration via m3ta-nixpkgs coding.editors module.
{
config,
lib,
...
}:
with lib; let
cfg = config.coding.editors.neovim;
in {
# coding.editors.neovim is provided by inputs.m3ta-nixpkgs.homeManagerModules.default
options.coding.editors.neovim.enable = mkEnableOption "enable NeoVim editor";
config = mkIf cfg.enable {
# NeoVim configuration is managed by the m3ta-nixpkgs coding.editors module.
# Additional host-specific overrides can be added here.
};
# The option `coding.editors.neovim.enable` is declared by
# inputs.m3ta-nixpkgs.homeManagerModules.default — no re-declaration here.
{...}: {
# Placeholder for host-agnostic NeoVim overrides.
# Set coding.editors.neovim.enable = true in per-host files to activate.
}