Tier A removals — small, half-wired modules nobody had asked for: - makima (Copilot-key remapper): drop core/system/makima.nix, the features/apps/makima/ keyboard.toml, the nomarchy-restart-makima script, the `nomarchy.system.features.makima` option, the state-file binding, the import in core/system/default.nix, and the "Key Remapping" entry in nomarchy-menu. ~50 LoC + a service nobody asked for. - Typora theme dir (core/home/config/Typora/) — Typora is a paid tool Nomarchy doesn't even ship; the SUPER+SHIFT+W keybinding pointed at a binary that wasn't on PATH. - xournalpp settings (core/home/config/xournalpp/) — referenced /usr/share paths that don't exist on NixOS. - core/home/config/environment.d/fcitx.conf — manual env vars are redundant once fcitx5 routes through NixOS's i18n.inputMethod. Optionalization — three half-wired features now sit behind explicit toggles, all default off (except keyring which keeps its existing default-on): - nomarchy.system.inputMethod.enable: new core/system/input-method.nix uses NixOS's i18n.inputMethod with fcitx5 + mozc/chinese/table addons. Drops the Hyprland exec-once line — i18n.inputMethod handles autostart. - nomarchy.system.voxtype.enable: marker option for users who install voxtype out-of-band (it's not in nixpkgs). Today it just documents intent; the existing keybinding + waybar widget no-op gracefully. - nomarchy.apps.opencode.enable: gates the existing features/apps/opencode/default.nix xdg.configFile so the opencode config only deploys when the user opts in. Installer: - system.nix and home.nix templates now surface the new toggles in their "Optional Nomarchy modules" comment blocks. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
56 lines
1.4 KiB
Nix
56 lines
1.4 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
let
|
|
configDir = ./config;
|
|
|
|
# Explicit list of config items to manage
|
|
# This replaces dynamic builtins.readDir for clarity and faster evaluation
|
|
configItems = {
|
|
# Directories
|
|
fastfetch = "directory";
|
|
fcitx5 = "directory";
|
|
fontconfig = "directory";
|
|
git = "directory";
|
|
imv = "directory";
|
|
"nautilus-python" = "directory";
|
|
nomarchy = "directory";
|
|
"nomarchy-skill" = "directory";
|
|
uwsm = "directory";
|
|
wiremix = "directory";
|
|
|
|
# Files
|
|
"brave-flags.conf" = "regular";
|
|
"chromium-flags.conf" = "regular";
|
|
"starship.toml" = "regular";
|
|
"xdg-terminals.list" = "regular";
|
|
};
|
|
|
|
# Files/directories handled elsewhere or not intended for ~/.config/
|
|
# - nomarchy.ttf: font file, not a config
|
|
# - waybar: handled in waybar.nix
|
|
# - walker: handled in walker.nix
|
|
# - alacritty: handled in alacritty.nix
|
|
# - swayosd: handled in swayosd.nix
|
|
|
|
# Check for user overrides
|
|
userConfigDir = config.nomarchy.configOverrides;
|
|
|
|
# Generate the xdg.configFile attribute set
|
|
makeMapping = name: type:
|
|
let
|
|
source = if userConfigDir != null then "${userConfigDir}/${name}" else "${configDir}/${name}";
|
|
in {
|
|
inherit name;
|
|
value = lib.mkDefault {
|
|
inherit source;
|
|
recursive = type == "directory";
|
|
};
|
|
};
|
|
|
|
configMappings = lib.mapAttrs' (name: type: makeMapping name type) configItems;
|
|
|
|
in
|
|
{
|
|
xdg.configFile = configMappings;
|
|
}
|