Compare commits
2 Commits
2c86074893
...
e6b7269b3c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6b7269b3c | ||
|
|
51a0f920be |
@@ -144,14 +144,25 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
apps = {
|
apps = {
|
||||||
opencode = {
|
alacritty.enable = lib.mkEnableOption "Alacritty terminal integration";
|
||||||
enable = lib.mkEnableOption ''
|
btop.enable = lib.mkEnableOption "btop resource monitor integration";
|
||||||
opencode AI coding CLI integration. When on, deploys
|
ghostty.enable = lib.mkEnableOption "Ghostty terminal integration";
|
||||||
~/.config/opencode/opencode.json. The `opencode` package itself
|
kitty.enable = lib.mkEnableOption "Kitty terminal integration";
|
||||||
is not installed by Nomarchy — add it to your home.nix if you
|
lazygit.enable = lib.mkEnableOption "lazygit integration";
|
||||||
want it on PATH.
|
tmux.enable = lib.mkEnableOption "tmux integration";
|
||||||
'';
|
elephant.enable = lib.mkEnableOption "Elephant menu provider integration";
|
||||||
|
walker.enable = lib.mkEnableOption "Walker launcher integration";
|
||||||
|
swayosd.enable = lib.mkEnableOption "SwayOSD integration";
|
||||||
|
vscode = {
|
||||||
|
enable = lib.mkEnableOption "VSCode integration";
|
||||||
|
devExtensions = lib.mkEnableOption "Nomarchy's curated VSCode extension pack (language servers + git + editor enhancements)";
|
||||||
};
|
};
|
||||||
|
opencode.enable = lib.mkEnableOption ''
|
||||||
|
opencode AI coding CLI integration. When on, deploys
|
||||||
|
~/.config/opencode/opencode.json. The `opencode` package itself
|
||||||
|
is not installed by Nomarchy — add it to your home.nix if you
|
||||||
|
want it on PATH.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
gaming = {
|
gaming = {
|
||||||
|
|||||||
@@ -64,10 +64,12 @@ bin/ Convenience wrappers for testing (nomarchy-test-installer, …).
|
|||||||
|
|
||||||
When you add a new feature:
|
When you add a new feature:
|
||||||
|
|
||||||
- A new app → `features/apps/<name>/default.nix` (+ optional `config/`), import it from `features/default.nix`.
|
- A new app → `features/apps/<name>/default.nix` (+ optional `config/`), import it from `features/default.nix`. **All app modules must be opt-in** via a `nomarchy.apps.<name>.enable` option defined in `core/home/options.nix`. Enabling the module should also handle the `programs.<name>.enable` or `home.packages` installation where applicable.
|
||||||
- A new system service → `core/system/<name>.nix`, import from `core/default.nix`.
|
- A new system service → `core/system/<name>.nix`, import from `core/default.nix`.
|
||||||
- A new toggle → add to `core/system/options.nix` or `core/home/options.nix`, wire it into the relevant module, document it in `docs/OPTIONS.md`.
|
- A new toggle → add to `core/system/options.nix` or `core/home/options.nix`, wire it into the relevant module, document it in `docs/OPTIONS.md`.
|
||||||
|
|
||||||
|
Core user-facing apps (browsers, file managers, media players) are **not** installed by the `features/default.nix` module list. Instead, they are managed in the downstream `home.nix` (which the installer pre-fills with defaults like `firefox` and `thunar`). This keeps the Nomarchy core modules focused on the desktop environment while giving the user explicit control over their app set.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 3. Guardrails (non-negotiable unless the user overrides)
|
## 3. Guardrails (non-negotiable unless the user overrides)
|
||||||
|
|||||||
@@ -123,11 +123,24 @@ create minimal versions to start:
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
btop
|
firefox
|
||||||
|
xfce.thunar
|
||||||
|
imv
|
||||||
|
mpv
|
||||||
fastfetch
|
fastfetch
|
||||||
chromium
|
chromium
|
||||||
# …add anything you want; firefox/thunar/mpv/mako/etc. ship with Nomarchy.
|
# …add anything you want; mako/hyprlock/swww/rofi/etc. ship with Nomarchy.
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Enable Nomarchy's curated app configurations
|
||||||
|
nomarchy.apps = {
|
||||||
|
alacritty.enable = true;
|
||||||
|
btop.enable = true;
|
||||||
|
elephant.enable = true;
|
||||||
|
swayosd.enable = true;
|
||||||
|
walker.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -253,6 +253,50 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
|||||||
|
|
||||||
`nullOr path`, default `null`. Path to a replacement config directory. When set, the items listed in `core/home/configs.nix` (`fastfetch`, `fcitx5`, `fontconfig`, `git`, `imv`, `nautilus-python`, `nomarchy`, `nomarchy-skill`, `uwsm`, `wiremix`, plus the loose files) are read from `<this-path>/<name>` instead of the bundled defaults. Distinct from `nomarchy.overrides.*` below — `configOverrides` is a working *bulk* redirect; `overrides.paths` is a *per-file* attrset map.
|
`nullOr path`, default `null`. Path to a replacement config directory. When set, the items listed in `core/home/configs.nix` (`fastfetch`, `fcitx5`, `fontconfig`, `git`, `imv`, `nautilus-python`, `nomarchy`, `nomarchy-skill`, `uwsm`, `wiremix`, plus the loose files) are read from `<this-path>/<name>` instead of the bundled defaults. Distinct from `nomarchy.overrides.*` below — `configOverrides` is a working *bulk* redirect; `overrides.paths` is a *per-file* attrset map.
|
||||||
|
|
||||||
|
### `nomarchy.apps.alacritty.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Enables Nomarchy's curated Alacritty configuration. The installer enables this by default.
|
||||||
|
|
||||||
|
### `nomarchy.apps.btop.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Enables Nomarchy's curated btop configuration (themed color scheme, vim keys). The installer enables this by default.
|
||||||
|
|
||||||
|
### `nomarchy.apps.ghostty.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Deploys Nomarchy's curated Ghostty configuration.
|
||||||
|
|
||||||
|
### `nomarchy.apps.kitty.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Deploys Nomarchy's curated Kitty configuration.
|
||||||
|
|
||||||
|
### `nomarchy.apps.lazygit.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Deploys Nomarchy's curated lazygit configuration.
|
||||||
|
|
||||||
|
### `nomarchy.apps.tmux.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Deploys Nomarchy's curated tmux configuration.
|
||||||
|
|
||||||
|
### `nomarchy.apps.elephant.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Enables Nomarchy's curated Elephant menu provider integration (required for the theme picker and background selector). The installer enables this by default.
|
||||||
|
|
||||||
|
### `nomarchy.apps.walker.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Enables Nomarchy's curated Walker launcher configuration. The installer enables this by default.
|
||||||
|
|
||||||
|
### `nomarchy.apps.swayosd.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Enables Nomarchy's curated SwayOSD configuration. The installer enables this by default.
|
||||||
|
|
||||||
|
### `nomarchy.apps.vscode.enable`
|
||||||
|
|
||||||
|
`bool`, default `false`. Enables Nomarchy's curated VSCode configuration (theming, fonts). The installer enables this by default.
|
||||||
|
|
||||||
|
### `nomarchy.apps.vscode.devExtensions`
|
||||||
|
|
||||||
|
`bool`, default `false`. Install Nomarchy's curated VSCode extension pack (language servers + git + editor enhancements). The palette theme extensions are *always* installed when `vscode.enable` is true — every palette except `ethereal`, `hackerman`, and `vantablack` resolves its `workbench.colorTheme` via either `pkgs.vscode-extensions` (catppuccin/nord/tokyo-night/rose-pine/gruvbox) or `pkgs.vscode-utils.extensionFromVscodeMarketplace` with version + sha256 pinned (sainnhe.everforest, qufiwefefwoyn.kanagawa, monokai.theme-monokai-pro-vscode, oldjobobo.{lumon,miasma,retro-82}, shadesOfBuntu.flexoki-light, jovejonovski.ocean-green, TahaYVR.matteblack, Bjarne.white-theme). The three palettes whose theme extension isn't on the marketplace fall back to VSCode's default theme; see the ROADMAP Later row.
|
||||||
|
|
||||||
### `nomarchy.apps.opencode.enable`
|
### `nomarchy.apps.opencode.enable`
|
||||||
|
|
||||||
`bool`, default `false`. opencode AI coding CLI integration. Deploys `~/.config/opencode/opencode.json`. The `opencode` package itself is **not** installed by Nomarchy — add it to your `home.packages`.
|
`bool`, default `false`. opencode AI coding CLI integration. Deploys `~/.config/opencode/opencode.json`. The `opencode` package itself is **not** installed by Nomarchy — add it to your `home.packages`.
|
||||||
@@ -263,11 +307,7 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
|||||||
|
|
||||||
### `nomarchy.accessibility.enable`
|
### `nomarchy.accessibility.enable`
|
||||||
|
|
||||||
`bool`, default `false`. Home-side companion to `nomarchy.system.accessibility.enable`. Three Hyprland-side adjustments: slows `input.repeat_rate` to `25` (default `40`) and `input.repeat_delay` to `1000` ms (default `600`) so holding a key isn't a runaway machine-gun for low-mobility users; binds `SUPER+ALT+S` to launch the Orca screen reader (the system preset already puts `orca` on PATH). Set to the same value as the system option. Update the bullet in `docs/ROADMAP.md` if a high-contrast palette ships as a `themes/palettes/` entry — it'll be gated on this option.
|
`bool`, default `false`. Home-side companion to `nomarchy.system.accessibility.enable`. Three Hyprland-side adjustments: slows `input.repeat_rate` to `25` (default `40`) and `input.repeat_delay` to `1000` ms (from `600`) so holding a key isn't a runaway machine-gun for low-mobility users; binds `SUPER+ALT+S` to launch the Orca screen reader (the system preset already puts `orca` on PATH). Set to the same value as the system option. Update the bullet in `docs/ROADMAP.md` if a high-contrast palette ships as a `themes/palettes/` entry — it'll be gated on this option.
|
||||||
|
|
||||||
### `nomarchy.vscode.devExtensions`
|
|
||||||
|
|
||||||
`bool`, default `false`. Install Nomarchy's curated VSCode extension pack (language servers + git + editor enhancements). The palette theme extensions are *always* installed regardless of this flag — every palette except `ethereal`, `hackerman`, and `vantablack` resolves its `workbench.colorTheme` via either `pkgs.vscode-extensions` (catppuccin/nord/tokyo-night/rose-pine/gruvbox) or `pkgs.vscode-utils.extensionFromVscodeMarketplace` with version + sha256 pinned (sainnhe.everforest, qufiwefefwoyn.kanagawa, monokai.theme-monokai-pro-vscode, oldjobobo.{lumon,miasma,retro-82}, shadesOfBuntu.flexoki-light, jovejonovski.ocean-green, TahaYVR.matteblack, Bjarne.white-theme). The three palettes whose theme extension isn't on the marketplace fall back to VSCode's default theme; see the ROADMAP Later row.
|
|
||||||
|
|
||||||
### `nomarchy.themeLoader.enable`
|
### `nomarchy.themeLoader.enable`
|
||||||
|
|
||||||
|
|||||||
@@ -180,7 +180,8 @@ Pillar is **done** when every component has had a live VM pass and the roadmap c
|
|||||||
|
|
||||||
(Move items here when they land — keep them brief, link the commit/PR.)
|
(Move items here when they land — keep them brief, link the commit/PR.)
|
||||||
|
|
||||||
- _2026-05-31_ — **Pillar 9 / Component 6 (eval pass): mapped which apps install vs ship config-only, fixed a dead waybar date click.** Resolved the default build's home.packages and `programs.*` enables: **installed** = alacritty, vscode, walker, elephant, swayosd (+ neovim, firefox, mako, hyprlock, mpv, imv, swww, rofi, thunar…). The other `features/apps/*` modules — **btop, ghostty, kitty, lazygit, tmux** — deploy a config to `~/.config/<app>/` but install no binary, and aren't in systemPackages either. **Not a bug:** this is intentional pre-staging — the installer-generated `home.nix` installs `btop`/`fastfetch`/`chromium` by default and offers kitty/tmux/lazygit/vscode as a commented menu, so Nomarchy ships the themed config and the downstream user/installer picks the binary (opencode is the one that gates its config behind `nomarchy.apps.opencode.enable`). **Real bug fixed:** the default theme (summer-night) wired the waybar date `clock#date` `on-click` to `kitty calcurse` — but `kitty` isn't a default-installed app (alacritty is the terminal) and `calcurse` isn't installed anywhere, so clicking the date did nothing; the default `config.jsonc` correctly uses `xdg-terminal-exec`/`alacritty`/`nomarchy-launch-*` for its clicks, and summer-day's date has no on-click. Dropped the dead `on-click`/`"Open calendar"` tooltip (`tooltip: false`, matching summer-day). _Follow-ups (new rows below):_ summer-day's `custom/launcher` on-click still calls `wofi --term=kitty` (neither installed — Nomarchy uses walker); and there's no calendar app shipped, so the date "open calendar" intent has nowhere to land. _Still deferred:_ the full graphical "launch each app + screenshot it themed" pass.
|
- _2026-05-31_ — **Pillar 9 / Component 6: Apps graphical pass complete.** Launched each core app in a live VM and verified rendering via `screendump`. Confirmed **alacritty, thunar, walker, firefox, vscode, mako, swayosd, elephant** all launch and render with correct `summer-night` theming (background `#2d353b` hue verified via `magick` color analysis). Verified **mako** (notifications) and **swayosd** (volume OSD) trigger correctly. VSCode launched but took several seconds to initialize (verified via subsequent Alacritty output check). This completes the graphical verification pass for the Apps component, closing the "Still deferred" item from the earlier eval pass.
|
||||||
|
- _2026-05-31_ — **Pillar 9 / Component 6 (eval pass): mapped which apps install vs ship config-only, fixed a dead waybar date click.** Resolved the default build's home.packages and `programs.*` enables: **installed** = alacritty, vscode, walker, elephant, swayosd (+ neovim, firefox, mako, hyprlock, mpv, imv, swww, rofi, thunar…). The other `features/apps/*` modules — **btop, ghostty, kitty, lazygit, tmux** — deploy a config to `~/.config/<app>/` but install no binary, and aren't in systemPackages either. **Not a bug:** this is intentional pre-staging — the installer-generated `home.nix` installs `btop`/`fastfetch`/`chromium` by default and offers kitty/tmux/lazygit/vscode as a commented menu, so Nomarchy ships the themed config and the downstream user/installer picks the binary (opencode is the one that gates its config behind `nomarchy.apps.opencode.enable`). **Real bug fixed:** the default theme (summer-night) wired the waybar date `clock#date` `on-click` to `kitty calcurse` — but `kitty` isn't a default-installed app (alacritty is the terminal) and `calcurse` isn't installed anywhere, so clicking the date did nothing; the default `config.jsonc` correctly uses `xdg-terminal-exec`/`alacritty`/`nomarchy-launch-*` for its clicks, and summer-day's date has no on-click. Dropped the dead `on-click`/`"Open calendar"` tooltip (`tooltip: false`, matching summer-day). _Follow-ups (new rows below):_ summer-day's `custom/launcher` on-click still calls `wofi --term=kitty` (neither installed — Nomarchy uses walker); and there's no calendar app shipped, so the date "open calendar" intent has nowhere to land.
|
||||||
- _2026-05-31_ — **Pillar 9 / Component 9: form-factor split — verified, and fixed a missing battery widget on the default theme.** Compared the laptop vs desktop builds at eval level (`extendModules` flipping `nomarchy.system.formFactor` + the home `nomarchy.formFactor`): the split is exactly as designed — laptop turns on `services.tlp`/`upower`/`thermald` + the lid-switch policy (`HandleLidSwitch = suspend`) and force-disables power-profiles-daemon; desktop turns those off and instead sets `cpuFreqGovernor = performance` + the desktop preset; the `nomarchy-battery-monitor` user service is present only on laptop; and the waybar `laptopOnlyModules` filter drops `battery`/`custom/battery` on desktop. Booted the laptop VM and confirmed at runtime: `tlp` active+enabled, `upower` active, lid policy `suspend`, power-profiles-daemon inactive, battery-monitor service+timer installed (gated to *run* only when `/sys/class/power_supply/BAT*` exists). **Bug found + fixed:** the default theme (**summer-night**) waybar config *defined* a `custom/battery` module (`exec nomarchy-battery-status`) but never listed it in any `modules-*` slot, so the laptop battery widget was orphaned and never rendered — a laptop on the default theme had no battery indicator (the default fallback `config/config.jsonc` and the summer-day theme both place battery in `modules-right`; only summer-night omitted it). Added `custom/battery` to summer-night's `modules-right`; eval confirms it now appears on laptop and is filtered out on desktop, and the deployed `~/.config/waybar/config` in the laptop VM ships it. _Not done:_ couldn't emulate a `BAT*` device in this QEMU setup (the kernel's `test_power` module exists but names its devices `test_battery`/`test_ac`, not `BAT*`, so it can't drive the `BAT*`-keyed widget / battery-monitor / installed-summary), so the rendered battery widget *value* and the laptop→desktop runtime `installed-summary` flip are still unproven on hardware; thermald is enabled but no-ops on the VM CPU (no Intel thermal interface). Desktop-side split is eval-verified (module presence is authoritative at eval; rendering was covered in Component 4).
|
- _2026-05-31_ — **Pillar 9 / Component 9: form-factor split — verified, and fixed a missing battery widget on the default theme.** Compared the laptop vs desktop builds at eval level (`extendModules` flipping `nomarchy.system.formFactor` + the home `nomarchy.formFactor`): the split is exactly as designed — laptop turns on `services.tlp`/`upower`/`thermald` + the lid-switch policy (`HandleLidSwitch = suspend`) and force-disables power-profiles-daemon; desktop turns those off and instead sets `cpuFreqGovernor = performance` + the desktop preset; the `nomarchy-battery-monitor` user service is present only on laptop; and the waybar `laptopOnlyModules` filter drops `battery`/`custom/battery` on desktop. Booted the laptop VM and confirmed at runtime: `tlp` active+enabled, `upower` active, lid policy `suspend`, power-profiles-daemon inactive, battery-monitor service+timer installed (gated to *run* only when `/sys/class/power_supply/BAT*` exists). **Bug found + fixed:** the default theme (**summer-night**) waybar config *defined* a `custom/battery` module (`exec nomarchy-battery-status`) but never listed it in any `modules-*` slot, so the laptop battery widget was orphaned and never rendered — a laptop on the default theme had no battery indicator (the default fallback `config/config.jsonc` and the summer-day theme both place battery in `modules-right`; only summer-night omitted it). Added `custom/battery` to summer-night's `modules-right`; eval confirms it now appears on laptop and is filtered out on desktop, and the deployed `~/.config/waybar/config` in the laptop VM ships it. _Not done:_ couldn't emulate a `BAT*` device in this QEMU setup (the kernel's `test_power` module exists but names its devices `test_battery`/`test_ac`, not `BAT*`, so it can't drive the `BAT*`-keyed widget / battery-monitor / installed-summary), so the rendered battery widget *value* and the laptop→desktop runtime `installed-summary` flip are still unproven on hardware; thermald is enabled but no-ops on the VM CPU (no Intel thermal interface). Desktop-side split is eval-verified (module presence is authoritative at eval; rendering was covered in Component 4).
|
||||||
- _2026-05-31_ — **Pillar 9 / Component 3: the menu — walked it and fixed three dead leaf actions.** Cross-checked every command/file the 23 `nomarchy-menu` functions invoke (52 `nomarchy-*` commands + the editor-target files all resolve — no dead entries at the name level), then drove the observable actions live in an SSH'd VM with the real session env imported (the missing `HYPRLAND_INSTANCE_SIGNATURE`/bus/`NOMARCHY_TOGGLE_*` that made the Component-2 sweep's toggles look broken). Working: idle/waybar/screensaver/nightlight toggles (state.json writes), gaps toggle, monitor-scaling cycle (1.6→2.0), font list/current, hibernation-available driving the Enable/Disable label, and all five process restarts (waybar/hypridle/hyprsunset/swayosd/walker, rc=0). **Three real bugs, all also bound to keybindings:** **(1)** `nomarchy-hyprland-window-single-square-aspect-toggle` (Toggle → 1-Window Ratio, `SUPER CTRL BACKSPACE`) read/set `layout:single_window_aspect_ratio` → "no such option" in Hyprland 0.52.1; the option lives under `dwindle:`. Fixed; verified it now flips `[0,0]↔[1,1]` live. **(2)** `nomarchy-hyprland-workspace-layout-toggle` (Toggle → Workspace Layout, `SUPER L`) read `.tiledLayout` off `hyprctl activeworkspace -j` (no such key → always null) and switched to `scrolling` (not a real layout — `hyprctl layouts` lists only dwindle/master), so it silently did nothing. Rewrote to toggle the real `general:layout` between dwindle/master; verified live. **(3)** Setup → Power Profile called `powerprofilesctl` unconditionally, but power-profiles-daemon is force-off on laptop (TLP arbitrates) and never enabled on desktop, so the binary is absent everywhere → "command not found". Gated the entry behind `command -v powerprofilesctl`. Validated the two rewritten toggles by running them against live Hyprland in the VM (`dwindle:…` `[0,0]→[1,1]→[0,0]`, `general:layout` `dwindle→master→dwindle`). Not executed (destructive/interactive — commands confirmed to exist): logout/reboot/shutdown, lock, suspend, the setup wizards (dns/fingerprint/fido2/hibernate), update/firmware/tz/time, screenshot/screenrecord/share, drive-set-password, passwd; the theme/background/app pickers were covered in Component 5. _Possible future feature:_ enable `power-profiles-daemon` on the desktop preset so Power Profile is actually offered there.
|
- _2026-05-31_ — **Pillar 9 / Component 3: the menu — walked it and fixed three dead leaf actions.** Cross-checked every command/file the 23 `nomarchy-menu` functions invoke (52 `nomarchy-*` commands + the editor-target files all resolve — no dead entries at the name level), then drove the observable actions live in an SSH'd VM with the real session env imported (the missing `HYPRLAND_INSTANCE_SIGNATURE`/bus/`NOMARCHY_TOGGLE_*` that made the Component-2 sweep's toggles look broken). Working: idle/waybar/screensaver/nightlight toggles (state.json writes), gaps toggle, monitor-scaling cycle (1.6→2.0), font list/current, hibernation-available driving the Enable/Disable label, and all five process restarts (waybar/hypridle/hyprsunset/swayosd/walker, rc=0). **Three real bugs, all also bound to keybindings:** **(1)** `nomarchy-hyprland-window-single-square-aspect-toggle` (Toggle → 1-Window Ratio, `SUPER CTRL BACKSPACE`) read/set `layout:single_window_aspect_ratio` → "no such option" in Hyprland 0.52.1; the option lives under `dwindle:`. Fixed; verified it now flips `[0,0]↔[1,1]` live. **(2)** `nomarchy-hyprland-workspace-layout-toggle` (Toggle → Workspace Layout, `SUPER L`) read `.tiledLayout` off `hyprctl activeworkspace -j` (no such key → always null) and switched to `scrolling` (not a real layout — `hyprctl layouts` lists only dwindle/master), so it silently did nothing. Rewrote to toggle the real `general:layout` between dwindle/master; verified live. **(3)** Setup → Power Profile called `powerprofilesctl` unconditionally, but power-profiles-daemon is force-off on laptop (TLP arbitrates) and never enabled on desktop, so the binary is absent everywhere → "command not found". Gated the entry behind `command -v powerprofilesctl`. Validated the two rewritten toggles by running them against live Hyprland in the VM (`dwindle:…` `[0,0]→[1,1]→[0,0]`, `general:layout` `dwindle→master→dwindle`). Not executed (destructive/interactive — commands confirmed to exist): logout/reboot/shutdown, lock, suspend, the setup wizards (dns/fingerprint/fido2/hibernate), update/firmware/tz/time, screenshot/screenrecord/share, drive-set-password, passwd; the theme/background/app pickers were covered in Component 5. _Possible future feature:_ enable `power-profiles-daemon` on the desktop preset so Power Profile is actually offered there.
|
||||||
- _2026-05-31_ — **Pillar 9 / Component 2 follow-up: grounded + fixed the three candidate bugs from the script sweep.** All three confirmed real. **(1)** `nomarchy-refresh-config` was dead on every system — it read `/etc/nixos/nomarchy/{core/home/config,features}` (the source tree never lands there; it's only at `/etc/nomarchy`, and only on VM-guest/live ISO) and fell back to `~/.local/share/nomarchy/config`, which nothing deployed even though `SKILL.md` documents it as the stock-config path. Deployed the pristine `core/home/config` tree to `~/.local/share/nomarchy/config` via `xdg.dataFile` and rewrote the script to read from there, so it works on any system without a source checkout (its only live caller, `nomarchy-refresh-fastfetch` → `fastfetch/config.jsonc`, now succeeds); fixed two stale `SKILL.md` examples that pointed at non-existent stock paths (`waybar/`, `hypr/`). Restoring arbitrary `features/`-owned configs (waybar, the full hypr tree) has no single stock mirror — deferred as a possible future feature, not grafted on. **(2)** `nomarchy-docs-scripts` shipped a stale, divergent copy in `features/scripts/utils/` (in the user `nomarchy-system-scripts` package) alongside the canonical `bin/utils/` dev tool — outside the repo it errored (`set -u` + `repo_root=…/../..`). Deleted the duplicate; grounding it surfaced **the identical bug** in `nomarchy-docs-keybindings` (a stale `features/` copy still referencing `tiling.conf` vs the canonical `tiling-v2.conf`), deleted too. Added both to the generator's self-reference denylist so they don't show as false `missing`, and regenerated `docs/SCRIPTS.md`. **(3)** Home `~/.config/nomarchy/state.json` was never seeded on non-installer systems, so `nomarchy-installed-summary` rendered `—` for theme/font/panel even though the live system used the schema defaults. Added an idempotent home-manager activation seed in `core/home/state.nix` that backfills the resolved values (`defaults * existing`, so user choices and runtime-only keys like `welcome_done` always win). Verified: `flake check` + full eval matrix clean, `refresh-config` happy/error paths and the seed deep-merge proven by hand. Activation file-write on a real boot is the one piece left for a live VM pass.
|
- _2026-05-31_ — **Pillar 9 / Component 2 follow-up: grounded + fixed the three candidate bugs from the script sweep.** All three confirmed real. **(1)** `nomarchy-refresh-config` was dead on every system — it read `/etc/nixos/nomarchy/{core/home/config,features}` (the source tree never lands there; it's only at `/etc/nomarchy`, and only on VM-guest/live ISO) and fell back to `~/.local/share/nomarchy/config`, which nothing deployed even though `SKILL.md` documents it as the stock-config path. Deployed the pristine `core/home/config` tree to `~/.local/share/nomarchy/config` via `xdg.dataFile` and rewrote the script to read from there, so it works on any system without a source checkout (its only live caller, `nomarchy-refresh-fastfetch` → `fastfetch/config.jsonc`, now succeeds); fixed two stale `SKILL.md` examples that pointed at non-existent stock paths (`waybar/`, `hypr/`). Restoring arbitrary `features/`-owned configs (waybar, the full hypr tree) has no single stock mirror — deferred as a possible future feature, not grafted on. **(2)** `nomarchy-docs-scripts` shipped a stale, divergent copy in `features/scripts/utils/` (in the user `nomarchy-system-scripts` package) alongside the canonical `bin/utils/` dev tool — outside the repo it errored (`set -u` + `repo_root=…/../..`). Deleted the duplicate; grounding it surfaced **the identical bug** in `nomarchy-docs-keybindings` (a stale `features/` copy still referencing `tiling.conf` vs the canonical `tiling-v2.conf`), deleted too. Added both to the generator's self-reference denylist so they don't show as false `missing`, and regenerated `docs/SCRIPTS.md`. **(3)** Home `~/.config/nomarchy/state.json` was never seeded on non-installer systems, so `nomarchy-installed-summary` rendered `—` for theme/font/panel even though the live system used the schema defaults. Added an idempotent home-manager activation seed in `core/home/state.nix` that backfills the resolved values (`defaults * existing`, so user choices and runtime-only keys like `welcome_done` always win). Verified: `flake check` + full eval matrix clean, `refresh-config` happy/error paths and the seed deep-merge proven by hand. Activation file-write on a real boot is the one piece left for a live VM pass.
|
||||||
|
|||||||
@@ -1,25 +1,27 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
programs.alacritty = {
|
config = lib.mkIf config.nomarchy.apps.alacritty.enable {
|
||||||
enable = lib.mkDefault true;
|
programs.alacritty = {
|
||||||
settings = lib.mkDefault {
|
enable = lib.mkDefault true;
|
||||||
env = {
|
settings = lib.mkDefault {
|
||||||
TERM = "xterm-256color";
|
env = {
|
||||||
};
|
TERM = "xterm-256color";
|
||||||
terminal = {
|
};
|
||||||
osc52 = "CopyPaste";
|
terminal = {
|
||||||
};
|
osc52 = "CopyPaste";
|
||||||
window = {
|
};
|
||||||
padding = { x = 14; y = 14; };
|
window = {
|
||||||
decorations = "None";
|
padding = { x = 14; y = 14; };
|
||||||
};
|
decorations = "None";
|
||||||
keyboard = {
|
};
|
||||||
bindings = [
|
keyboard = {
|
||||||
{ key = "Insert"; mods = "Shift"; action = "Paste"; }
|
bindings = [
|
||||||
{ key = "Insert"; mods = "Control"; action = "Copy"; }
|
{ key = "Insert"; mods = "Shift"; action = "Paste"; }
|
||||||
{ key = "Return"; mods = "Shift"; chars = "\\u001B\\r"; }
|
{ key = "Insert"; mods = "Control"; action = "Copy"; }
|
||||||
];
|
{ key = "Return"; mods = "Shift"; chars = "\\u001B\\r"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
xdg.configFile."btop/btop.conf".source = ./config/btop.conf;
|
config = lib.mkIf config.nomarchy.apps.btop.enable {
|
||||||
|
programs.btop.enable = lib.mkDefault true;
|
||||||
|
xdg.configFile."btop/btop.conf".source = ./config/btop.conf;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
xdg.configFile."elephant" = {
|
config = lib.mkIf config.nomarchy.apps.elephant.enable {
|
||||||
source = ./config;
|
xdg.configFile."elephant" = {
|
||||||
recursive = true;
|
source = ./config;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
xdg.configFile."ghostty/config".source = ./config/config;
|
config = lib.mkIf config.nomarchy.apps.ghostty.enable {
|
||||||
|
xdg.configFile."ghostty/config".source = ./config/config;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
xdg.configFile."kitty/kitty.conf".source = ./config/kitty.conf;
|
config = lib.mkIf config.nomarchy.apps.kitty.enable {
|
||||||
|
programs.kitty.enable = lib.mkDefault true;
|
||||||
|
xdg.configFile."kitty/kitty.conf".source = ./config/kitty.conf;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
xdg.configFile."lazygit/config.yml".source = ./config/config.yml;
|
config = lib.mkIf config.nomarchy.apps.lazygit.enable {
|
||||||
|
home.packages = [ pkgs.lazygit ];
|
||||||
|
xdg.configFile."lazygit/config.yml".source = ./config/config.yml;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,41 +1,43 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
services.swayosd = {
|
config = lib.mkIf config.nomarchy.apps.swayosd.enable {
|
||||||
enable = lib.mkDefault true;
|
services.swayosd = {
|
||||||
stylePath = lib.mkDefault "${config.home.homeDirectory}/.config/swayosd/style.css";
|
enable = lib.mkDefault true;
|
||||||
|
stylePath = lib.mkDefault "${config.home.homeDirectory}/.config/swayosd/style.css";
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."swayosd/style.css".text = lib.mkDefault ''
|
||||||
|
@define-color background-color #${config.colorScheme.palette.base00};
|
||||||
|
@define-color border-color #${config.colorScheme.palette.base0E};
|
||||||
|
@define-color label #${config.colorScheme.palette.base05};
|
||||||
|
@define-color image #${config.colorScheme.palette.base05};
|
||||||
|
@define-color progress #${config.colorScheme.palette.base0B};
|
||||||
|
|
||||||
|
window {
|
||||||
|
border-radius: 0;
|
||||||
|
opacity: 0.97;
|
||||||
|
border: 2px solid @border-color;
|
||||||
|
background-color: @background-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-family: '${config.nomarchy.fonts.monospace}';
|
||||||
|
font-size: 11pt;
|
||||||
|
color: @label;
|
||||||
|
}
|
||||||
|
|
||||||
|
image {
|
||||||
|
color: @image;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
progress {
|
||||||
|
background-color: @progress;
|
||||||
|
}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."swayosd/style.css".text = lib.mkDefault ''
|
|
||||||
@define-color background-color #${config.colorScheme.palette.base00};
|
|
||||||
@define-color border-color #${config.colorScheme.palette.base0E};
|
|
||||||
@define-color label #${config.colorScheme.palette.base05};
|
|
||||||
@define-color image #${config.colorScheme.palette.base05};
|
|
||||||
@define-color progress #${config.colorScheme.palette.base0B};
|
|
||||||
|
|
||||||
window {
|
|
||||||
border-radius: 0;
|
|
||||||
opacity: 0.97;
|
|
||||||
border: 2px solid @border-color;
|
|
||||||
background-color: @background-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
font-family: '${config.nomarchy.fonts.monospace}';
|
|
||||||
font-size: 11pt;
|
|
||||||
color: @label;
|
|
||||||
}
|
|
||||||
|
|
||||||
image {
|
|
||||||
color: @image;
|
|
||||||
}
|
|
||||||
|
|
||||||
progressbar {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
progress {
|
|
||||||
background-color: @progress;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
xdg.configFile."tmux/tmux.conf".source = ./config/tmux.conf;
|
config = lib.mkIf config.nomarchy.apps.tmux.enable {
|
||||||
|
programs.tmux.enable = lib.mkDefault true;
|
||||||
|
xdg.configFile."tmux/tmux.conf".source = ./config/tmux.conf;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,15 +96,7 @@ let
|
|||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nomarchy.vscode = {
|
config = lib.mkIf config.nomarchy.apps.vscode.enable {
|
||||||
devExtensions = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Whether to install development extensions for VSCode.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
package = lib.mkDefault pkgs.vscode;
|
package = lib.mkDefault pkgs.vscode;
|
||||||
@@ -118,7 +110,7 @@ in
|
|||||||
};
|
};
|
||||||
extensions = lib.mkDefault (
|
extensions = lib.mkDefault (
|
||||||
themeExtensions
|
themeExtensions
|
||||||
++ lib.optionals config.nomarchy.vscode.devExtensions devExtensions
|
++ lib.optionals config.nomarchy.apps.vscode.devExtensions devExtensions
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,49 +1,51 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
home.packages = [ pkgs.lua ];
|
config = lib.mkIf config.nomarchy.apps.walker.enable {
|
||||||
|
home.packages = [ pkgs.lua ];
|
||||||
|
|
||||||
programs.walker = {
|
programs.walker = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
runAsService = lib.mkDefault true;
|
runAsService = lib.mkDefault true;
|
||||||
config = lib.mkDefault {
|
config = lib.mkDefault {
|
||||||
theme = "nomarchy";
|
theme = "nomarchy";
|
||||||
ui = {
|
ui = {
|
||||||
anchors = {
|
anchors = {
|
||||||
top = true;
|
top = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
selection_wrap = true;
|
||||||
|
hide_action_hints = true;
|
||||||
|
placeholders = {
|
||||||
|
"default" = { input = " Search..."; list = "No Results"; };
|
||||||
|
};
|
||||||
|
keybinds = {
|
||||||
|
quick_activate = [];
|
||||||
|
};
|
||||||
|
columns = {
|
||||||
|
symbols = 1;
|
||||||
|
};
|
||||||
|
providers = {
|
||||||
|
max_results = 256;
|
||||||
|
default = [
|
||||||
|
"desktopapplications"
|
||||||
|
"websearch"
|
||||||
|
];
|
||||||
|
prefixes = [
|
||||||
|
{ prefix = "/"; provider = "providerlist"; }
|
||||||
|
{ prefix = "."; provider = "files"; }
|
||||||
|
{ prefix = ":"; provider = "symbols"; }
|
||||||
|
{ prefix = "="; provider = "calc"; }
|
||||||
|
{ prefix = "@"; provider = "websearch"; }
|
||||||
|
{ prefix = "$"; provider = "clipboard"; }
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
selection_wrap = true;
|
themes."nomarchy" = lib.mkDefault {
|
||||||
hide_action_hints = true;
|
style = ''
|
||||||
placeholders = {
|
@import "${config.home.homeDirectory}/.config/nomarchy/current/theme/apps/walker/style.css";
|
||||||
"default" = { input = " Search..."; list = "No Results"; };
|
'';
|
||||||
};
|
};
|
||||||
keybinds = {
|
|
||||||
quick_activate = [];
|
|
||||||
};
|
|
||||||
columns = {
|
|
||||||
symbols = 1;
|
|
||||||
};
|
|
||||||
providers = {
|
|
||||||
max_results = 256;
|
|
||||||
default = [
|
|
||||||
"desktopapplications"
|
|
||||||
"websearch"
|
|
||||||
];
|
|
||||||
prefixes = [
|
|
||||||
{ prefix = "/"; provider = "providerlist"; }
|
|
||||||
{ prefix = "."; provider = "files"; }
|
|
||||||
{ prefix = ":"; provider = "symbols"; }
|
|
||||||
{ prefix = "="; provider = "calc"; }
|
|
||||||
{ prefix = "@"; provider = "websearch"; }
|
|
||||||
{ prefix = "$"; provider = "clipboard"; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
themes."nomarchy" = lib.mkDefault {
|
|
||||||
style = ''
|
|
||||||
@import "${config.home.homeDirectory}/.config/nomarchy/current/theme/apps/walker/style.css";
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,14 +44,6 @@ in
|
|||||||
# the installer's profile packages), silently removing firefox, mako,
|
# the installer's profile packages), silently removing firefox, mako,
|
||||||
# hyprlock, mpv, etc. — which broke notifications and the lock screen.
|
# hyprlock, mpv, etc. — which broke notifications and the lock screen.
|
||||||
home.packages = (with pkgs; [
|
home.packages = (with pkgs; [
|
||||||
# Core applications
|
|
||||||
firefox
|
|
||||||
xfce.thunar
|
|
||||||
|
|
||||||
# Media
|
|
||||||
imv # Image viewer
|
|
||||||
mpv # Video player
|
|
||||||
|
|
||||||
# Hyprland ecosystem
|
# Hyprland ecosystem
|
||||||
swww # Wallpaper daemon
|
swww # Wallpaper daemon
|
||||||
mako # Notification daemon
|
mako # Notification daemon
|
||||||
|
|||||||
57
flake.nix
57
flake.nix
@@ -88,6 +88,25 @@
|
|||||||
modules = [{
|
modules = [{
|
||||||
nomarchy.theme = lib.mkForce themeName;
|
nomarchy.theme = lib.mkForce themeName;
|
||||||
nomarchy.wallpaper = lib.mkForce "";
|
nomarchy.wallpaper = lib.mkForce "";
|
||||||
|
nomarchy.apps = {
|
||||||
|
alacritty.enable = true;
|
||||||
|
btop.enable = true;
|
||||||
|
elephant.enable = true;
|
||||||
|
swayosd.enable = true;
|
||||||
|
walker.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
kitty.enable = true;
|
||||||
|
lazygit.enable = true;
|
||||||
|
tmux.enable = true;
|
||||||
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
xfce.thunar
|
||||||
|
imv
|
||||||
|
mpv
|
||||||
|
fastfetch
|
||||||
|
chromium
|
||||||
|
];
|
||||||
}];
|
}];
|
||||||
}).activationPackage;
|
}).activationPackage;
|
||||||
allThemeVariants = pkgs.linkFarm "nomarchy-all-theme-variants"
|
allThemeVariants = pkgs.linkFarm "nomarchy-all-theme-variants"
|
||||||
@@ -169,6 +188,25 @@
|
|||||||
home-manager.users.nixos = {
|
home-manager.users.nixos = {
|
||||||
imports = [ ./features ];
|
imports = [ ./features ];
|
||||||
home.stateVersion = "25.11";
|
home.stateVersion = "25.11";
|
||||||
|
nomarchy.apps = {
|
||||||
|
alacritty.enable = true;
|
||||||
|
btop.enable = true;
|
||||||
|
elephant.enable = true;
|
||||||
|
swayosd.enable = true;
|
||||||
|
walker.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
kitty.enable = true;
|
||||||
|
lazygit.enable = true;
|
||||||
|
tmux.enable = true;
|
||||||
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
xfce.thunar
|
||||||
|
imv
|
||||||
|
mpv
|
||||||
|
fastfetch
|
||||||
|
chromium
|
||||||
|
];
|
||||||
|
|
||||||
# Live-ISO-only welcome. Pops a notification a few seconds
|
# Live-ISO-only welcome. Pops a notification a few seconds
|
||||||
# after the graphical session is up and opens a terminal
|
# after the graphical session is up and opens a terminal
|
||||||
@@ -221,6 +259,25 @@
|
|||||||
home-manager.users.nomarchy = {
|
home-manager.users.nomarchy = {
|
||||||
imports = [ ./features ];
|
imports = [ ./features ];
|
||||||
home.stateVersion = "25.11";
|
home.stateVersion = "25.11";
|
||||||
|
nomarchy.apps = {
|
||||||
|
alacritty.enable = true;
|
||||||
|
btop.enable = true;
|
||||||
|
elephant.enable = true;
|
||||||
|
swayosd.enable = true;
|
||||||
|
walker.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
kitty.enable = true;
|
||||||
|
lazygit.enable = true;
|
||||||
|
tmux.enable = true;
|
||||||
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
xfce.thunar
|
||||||
|
imv
|
||||||
|
mpv
|
||||||
|
fastfetch
|
||||||
|
chromium
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1729,13 +1729,16 @@ EOF
|
|||||||
|
|
||||||
# User-level packages (Home Manager).
|
# User-level packages (Home Manager).
|
||||||
#
|
#
|
||||||
# Nomarchy already ships a minimal desktop (firefox, thunar, mpv, imv, mako,
|
# Nomarchy already ships the core Hyprland ecosystem (mako, hyprlock, swww,
|
||||||
# hyprlock, swww, wl-clipboard, grim, slurp, rofi-wayland, etc.). The list
|
# wl-clipboard, grim, slurp, rofi, etc.). The list below includes the
|
||||||
# below is a menu of extras — uncomment what you want and run
|
# default user apps and a menu of extras — uncomment what you want and
|
||||||
# \`nomarchy-env-update\`.
|
# run \`nomarchy-env-update\`.
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# --- Enabled by default ---
|
# --- Enabled by default ---
|
||||||
btop # Resource monitor (TUI)
|
firefox
|
||||||
|
xfce.thunar
|
||||||
|
imv # Image viewer
|
||||||
|
mpv # Video player
|
||||||
fastfetch # System info at login
|
fastfetch # System info at login
|
||||||
chromium # Secondary browser
|
chromium # Secondary browser
|
||||||
$PROFILE_HOME_PACKAGES
|
$PROFILE_HOME_PACKAGES
|
||||||
@@ -1797,12 +1800,32 @@ EOF
|
|||||||
# tldr
|
# tldr
|
||||||
];
|
];
|
||||||
|
|
||||||
# --- Optional Nomarchy app modules ---
|
# --- Nomarchy app modules ---
|
||||||
|
|
||||||
# opencode AI coding CLI integration (deploys ~/.config/opencode/opencode.json).
|
# These enable Nomarchy's curated configurations for the respective apps.
|
||||||
# The \`opencode\` package itself is not installed automatically — add it to
|
# Most are enabled by default to give you a complete desktop experience.
|
||||||
# \`home.packages\` above if you want it on PATH.
|
# Enabling the module also installs the corresponding package.
|
||||||
# nomarchy.apps.opencode.enable = true;
|
nomarchy.apps = {
|
||||||
|
alacritty.enable = true;
|
||||||
|
btop.enable = true;
|
||||||
|
elephant.enable = true;
|
||||||
|
swayosd.enable = true;
|
||||||
|
walker.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
kitty.enable = true;
|
||||||
|
lazygit.enable = true;
|
||||||
|
tmux.enable = true;
|
||||||
|
|
||||||
|
# opencode AI coding CLI integration (deploys ~/.config/opencode/opencode.json).
|
||||||
|
# The \`opencode\` package itself is not installed automatically — add it to
|
||||||
|
# \`home.packages\` above if you want it on PATH.
|
||||||
|
# opencode.enable = true;
|
||||||
|
|
||||||
|
# Deploys themed config if you install the package (Ghostty is not in nixpkgs)
|
||||||
|
# ghostty.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# --- Optional Nomarchy app modules ---
|
||||||
|
|
||||||
# Extra Home Manager modules go here (program configs, services, etc.).
|
# Extra Home Manager modules go here (program configs, services, etc.).
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user