Compare commits
24 Commits
bfd95cb40b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0486e037df | ||
|
|
40b62124e6 | ||
|
|
72443fd69f | ||
|
|
641ab0cfb0 | ||
|
|
0297ec268f | ||
|
|
72f7e7b93d | ||
|
|
20de3d4f97 | ||
|
|
2a301a049f | ||
| bd7e5a5706 | |||
|
|
af8fa321ff | ||
|
|
6238f41e43 | ||
|
|
fb4d5d7acc | ||
|
|
99a6c7d547 | ||
|
|
85ef8745d7 | ||
|
|
b82954a7b5 | ||
|
|
66c98949ab | ||
| 07e2d5c51c | |||
| 2529ca114f | |||
| 94927952db | |||
| 0930458418 | |||
|
|
95101fda3f | ||
|
|
6e0d17b859 | ||
|
|
27d1506b54 | ||
|
|
90f07ae75c |
@@ -1,94 +0,0 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
# Behavior Configuration Module
|
||||
#
|
||||
# This module deploys non-visual configuration files (keybindings, input settings,
|
||||
# window rules, etc.) with lib.mkDefault, allowing downstream users to override.
|
||||
#
|
||||
# Visual/theme configs are handled separately by theme-loader.nix and stylix.nix.
|
||||
#
|
||||
# Behavior configs include:
|
||||
# - Keybindings (bindings, media keys, clipboard)
|
||||
# - Input settings (keyboard, mouse, touchpad)
|
||||
# - Window rules and layouts
|
||||
# - Autostart applications
|
||||
# - Environment variables
|
||||
|
||||
let
|
||||
configDir = ./config;
|
||||
overridesDir = "${config.home.homeDirectory}/.config/nomarchy/overrides";
|
||||
|
||||
# Behavior config categories with their source paths
|
||||
behaviorConfigs = {
|
||||
# Hyprland behavior (non-visual)
|
||||
"nomarchy/default/hypr/bindings.conf" = "hypr/bindings.conf";
|
||||
"nomarchy/default/hypr/bindings/media.conf" = "hypr/bindings/media.conf";
|
||||
"nomarchy/default/hypr/bindings/clipboard.conf" = "hypr/bindings/clipboard.conf";
|
||||
"nomarchy/default/hypr/bindings/tiling-v2.conf" = "hypr/bindings/tiling-v2.conf";
|
||||
"nomarchy/default/hypr/bindings/utilities.conf" = "hypr/bindings/utilities.conf";
|
||||
"nomarchy/default/hypr/input.conf" = "hypr/input.conf";
|
||||
"nomarchy/default/hypr/windows.conf" = "hypr/windows.conf";
|
||||
"nomarchy/default/hypr/autostart.conf" = "hypr/autostart.conf";
|
||||
"nomarchy/default/hypr/envs.conf" = "hypr/envs.conf";
|
||||
"nomarchy/default/hypr/looknfeel.conf" = "hypr/looknfeel.conf";
|
||||
|
||||
# App-specific window rules (behavior, not visual)
|
||||
"nomarchy/default/hypr/apps.conf" = "hypr/apps.conf";
|
||||
"nomarchy/default/hypr/apps/qemu.conf" = "hypr/apps/qemu.conf";
|
||||
"nomarchy/default/hypr/apps/steam.conf" = "hypr/apps/steam.conf";
|
||||
"nomarchy/default/hypr/apps/terminals.conf" = "hypr/apps/terminals.conf";
|
||||
"nomarchy/default/hypr/apps/walker.conf" = "hypr/apps/walker.conf";
|
||||
"nomarchy/default/hypr/apps/browser.conf" = "hypr/apps/browser.conf";
|
||||
"nomarchy/default/hypr/apps/1password.conf" = "hypr/apps/1password.conf";
|
||||
"nomarchy/default/hypr/apps/bitwarden.conf" = "hypr/apps/bitwarden.conf";
|
||||
"nomarchy/default/hypr/apps/pip.conf" = "hypr/apps/pip.conf";
|
||||
"nomarchy/default/hypr/apps/system.conf" = "hypr/apps/system.conf";
|
||||
"nomarchy/default/hypr/apps/localsend.conf" = "hypr/apps/localsend.conf";
|
||||
"nomarchy/default/hypr/apps/telegram.conf" = "hypr/apps/telegram.conf";
|
||||
"nomarchy/default/hypr/apps/geforce.conf" = "hypr/apps/geforce.conf";
|
||||
"nomarchy/default/hypr/apps/moonlight.conf" = "hypr/apps/moonlight.conf";
|
||||
"nomarchy/default/hypr/apps/retroarch.conf" = "hypr/apps/retroarch.conf";
|
||||
"nomarchy/default/hypr/apps/webcam-overlay.conf" = "hypr/apps/webcam-overlay.conf";
|
||||
"nomarchy/default/hypr/apps/davinci-resolve.conf" = "hypr/apps/davinci-resolve.conf";
|
||||
"nomarchy/default/hypr/apps/hyprshot.conf" = "hypr/apps/hyprshot.conf";
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
options.nomarchy.behavior = {
|
||||
hyprland = {
|
||||
bindings = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to deploy default Hyprland keybindings.";
|
||||
};
|
||||
input = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to deploy default input settings.";
|
||||
};
|
||||
windowRules = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to deploy default window rules.";
|
||||
};
|
||||
autostart = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to deploy default autostart configuration.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
# Note: The actual config deployment is handled by configs.nix
|
||||
# This module provides the options and documentation for behavior configs
|
||||
# The separation allows users to selectively disable behavior categories
|
||||
|
||||
# Ensure behavior config directories exist in overrides
|
||||
home.activation.createBehaviorOverrideDirs = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
mkdir -p "${overridesDir}/hypr/bindings"
|
||||
mkdir -p "${overridesDir}/hypr/apps"
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,18 @@
|
||||
# App-specific tweaks
|
||||
# App-specific tweaks. All rules are class- or title-gated, so sourcing
|
||||
# unconditionally is harmless when the app isn't installed or running.
|
||||
source = ~/.config/nomarchy/default/hypr/apps/1password.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/bitwarden.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/browser.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/davinci-resolve.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/geforce.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/hyprshot.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/localsend.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/moonlight.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/pip.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/qemu.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/retroarch.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/steam.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/system.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/telegram.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/terminals.conf
|
||||
source = ~/.config/nomarchy/default/hypr/apps/walker.conf
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
# Deprecated bindings file. New installations include everything directly.
|
||||
|
||||
bindd = SUPER, RETURN, Terminal, exec, $terminal
|
||||
bindd = SUPER, F, File manager, exec, $fileManager
|
||||
bindd = SUPER, B, Web browser, exec, $browser
|
||||
bindd = SUPER, M, Music player, exec, $music
|
||||
bindd = SUPER, N, Neovim, exec, $terminal -e nvim
|
||||
bindd = SUPER, T, Top, exec, $terminal -e btop
|
||||
bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker
|
||||
bindd = SUPER, G, Messenger, exec, $messenger
|
||||
bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu
|
||||
bindd = SUPER, SLASH, Password manager, exec, $passwordManager
|
||||
|
||||
source = ~/.config/nomarchy/default/hypr/bindings/media.conf
|
||||
source = ~/.config/nomarchy/default/hypr/bindings/tiling-v2.conf
|
||||
source = ~/.config/nomarchy/default/hypr/bindings/utilities.conf
|
||||
@@ -1,16 +0,0 @@
|
||||
# Application bindings
|
||||
bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec --dir="$(nomarchy-cmd-terminal-cwd)"
|
||||
bindd = SUPER SHIFT, RETURN, Browser, exec, nomarchy-launch-browser
|
||||
bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window
|
||||
bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(nomarchy-cmd-terminal-cwd)"
|
||||
bindd = SUPER SHIFT, B, Browser, exec, nomarchy-launch-browser
|
||||
bindd = SUPER SHIFT ALT, B, Browser (private), exec, nomarchy-launch-browser --private
|
||||
bindd = SUPER SHIFT, N, Editor, exec, nomarchy-launch-editor
|
||||
|
||||
# Add extra bindings
|
||||
# bindd = SUPER SHIFT, A, ChatGPT, exec, nomarchy-launch-webapp "https://chatgpt.com"
|
||||
# bindd = SUPER SHIFT, R, exec, alacritty -e ssh your-server
|
||||
|
||||
# Overwrite existing bindings, like putting Nomarchy Menu on Super + Space
|
||||
# unbind = SUPER, SPACE
|
||||
# bindd = SUPER, SPACE, Nomarchy menu, exec, nomarchy-menu
|
||||
@@ -51,7 +51,15 @@ let
|
||||
|
||||
in
|
||||
{
|
||||
xdg.configFile = configMappings;
|
||||
xdg.configFile = configMappings // {
|
||||
# mako reads ~/.config/mako/config by default. The themed Nomarchy
|
||||
# config (urgency rules, app filters, button handlers) lives under
|
||||
# nomarchy/default/mako/core.ini for organizational reasons, so wire
|
||||
# it explicitly here. Without this, mako silently falls back to its
|
||||
# built-in defaults and every Nomarchy notification customization is
|
||||
# inert.
|
||||
"mako/config".source = lib.mkDefault ./config/nomarchy/default/mako/core.ini;
|
||||
};
|
||||
|
||||
home.file.".XCompose" = lib.mkDefault {
|
||||
source = ./config/nomarchy/default/xcompose;
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
./options.nix
|
||||
./state.nix
|
||||
./overrides.nix
|
||||
./behavior.nix
|
||||
./fonts.nix
|
||||
./configs.nix
|
||||
./security.nix
|
||||
|
||||
@@ -33,11 +33,6 @@ in
|
||||
default = schema.home.waybar;
|
||||
description = "Whether the top bar is enabled.";
|
||||
};
|
||||
skipVsCodeTheme = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = schema.home.skipVsCodeTheme;
|
||||
description = "Whether to skip theme changes in VSCode.";
|
||||
};
|
||||
};
|
||||
nightlightTemperature = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
|
||||
@@ -1,97 +1,34 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
# File-based override system for Nomarchy
|
||||
# File-based override system for Nomarchy.
|
||||
#
|
||||
# Users can place config files in ~/.config/nomarchy/overrides/ to completely
|
||||
# replace upstream defaults. Override priority (highest to lowest):
|
||||
# 1. User Nix options
|
||||
# 2. User file overrides (~/.config/nomarchy/overrides/)
|
||||
# 3. Upstream defaults
|
||||
# STATUS: option surface only — the actual override mechanism is NOT yet
|
||||
# implemented. The options are kept so configs that already set
|
||||
# `nomarchy.overrides.enable = …;` continue to evaluate; setting them has
|
||||
# no effect today. Tracked in docs/ROADMAP.md.
|
||||
#
|
||||
# Supported override paths:
|
||||
# - hypr/ - Hyprland configs (bindings.conf, input.conf, etc.)
|
||||
# - waybar/ - Waybar config and style
|
||||
# - alacritty/ - Alacritty terminal config
|
||||
# - walker/ - Walker launcher config
|
||||
# - kitty/ - Kitty terminal config
|
||||
# - btop/ - Btop resource monitor config
|
||||
# - apps/ - Other application configs
|
||||
# When implemented, this module should substitute sources in
|
||||
# `xdg.configFile.<path>.source` based on the presence of matching files
|
||||
# under ~/.config/nomarchy/overrides/.
|
||||
|
||||
let
|
||||
overridesDir = "${config.home.homeDirectory}/.config/nomarchy/overrides";
|
||||
|
||||
# Helper to get override from options
|
||||
getOverrideOrDefault = { path, default }:
|
||||
config.nomarchy.overrides.paths.${path} or default;
|
||||
|
||||
in
|
||||
{
|
||||
options.nomarchy.overrides = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to enable file-based override loading from ~/.config/nomarchy/overrides/";
|
||||
description = ''
|
||||
Reserved for the future file-based override loader. Currently a
|
||||
no-op — setting this has no effect. See docs/ROADMAP.md.
|
||||
'';
|
||||
};
|
||||
|
||||
paths = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.path;
|
||||
default = {};
|
||||
description = "Override paths discovered at build time. Populated by the override system.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.nomarchy.overrides.enable {
|
||||
# Create the overrides directory structure if it doesn't exist
|
||||
home.activation.createOverridesDir = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
mkdir -p "${overridesDir}"
|
||||
mkdir -p "${overridesDir}/hypr"
|
||||
mkdir -p "${overridesDir}/waybar"
|
||||
mkdir -p "${overridesDir}/apps"
|
||||
'';
|
||||
|
||||
# Document the override system
|
||||
xdg.configFile."nomarchy/overrides/README.md".text = lib.mkDefault ''
|
||||
# Nomarchy Configuration Overrides
|
||||
|
||||
Place files in this directory to override upstream Nomarchy defaults.
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
overrides/
|
||||
├── hypr/
|
||||
│ ├── bindings.conf # Keybindings
|
||||
│ ├── input.conf # Input settings
|
||||
│ ├── monitors.conf # Monitor layout
|
||||
│ ├── rules.conf # Window rules
|
||||
│ └── autostart.conf # Startup apps
|
||||
├── waybar/
|
||||
│ ├── config.jsonc # Waybar layout
|
||||
│ └── style.css # Waybar styling
|
||||
├── apps/
|
||||
│ ├── alacritty.toml # Terminal behavior
|
||||
│ └── ...
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
## Override Priority
|
||||
|
||||
1. **Nix Options** (highest) - Set in your flake/config
|
||||
2. **File Overrides** - Files in this directory
|
||||
3. **Upstream Defaults** (lowest) - Nomarchy defaults
|
||||
|
||||
## Usage
|
||||
|
||||
1. Copy the file you want to customize from the upstream config
|
||||
2. Place it in the appropriate directory here
|
||||
3. Edit to your preferences
|
||||
4. Run `nixos-rebuild switch` or `home-manager switch`
|
||||
|
||||
## Tips
|
||||
|
||||
- For keybindings, copy `~/.config/hypr/bindings.conf` to `overrides/hypr/`
|
||||
- For Waybar styling, copy `~/.config/waybar/style.css` to `overrides/waybar/`
|
||||
- Changes here persist across Nomarchy updates
|
||||
description = ''
|
||||
Reserved for the future file-based override loader. Currently
|
||||
unused.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ in
|
||||
idle = lib.mkDefault (togglesState.idle or schema.home.idle);
|
||||
nightlight = lib.mkDefault (togglesState.nightlight or schema.home.nightlight);
|
||||
waybar = lib.mkDefault (togglesState.waybar or schema.home.waybar);
|
||||
skipVsCodeTheme = lib.mkDefault (togglesState.skipVsCodeTheme or schema.home.skipVsCodeTheme);
|
||||
};
|
||||
nightlightTemperature = lib.mkDefault (togglesState.nightlightTemperature or schema.home.nightlightTemperature);
|
||||
theme = lib.mkDefault (togglesState.theme or schema.home.theme);
|
||||
|
||||
@@ -15,9 +15,9 @@ in
|
||||
settings.Login = {
|
||||
HandleLidSwitch = lib.mkDefault "suspend-then-hibernate";
|
||||
HandleLidSwitchExternalPower = lib.mkDefault "suspend";
|
||||
HandlePowerKey = "hibernate";
|
||||
IdleAction = "suspend-then-hibernate";
|
||||
IdleActionSec = toString (cfg.idleMinutes * 60);
|
||||
HandlePowerKey = lib.mkDefault "hibernate";
|
||||
IdleAction = lib.mkDefault "suspend-then-hibernate";
|
||||
IdleActionSec = lib.mkDefault (toString (cfg.idleMinutes * 60));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -24,6 +24,18 @@ in
|
||||
"crypted_main" on multi-disk installs to match the disko layout.
|
||||
'';
|
||||
};
|
||||
|
||||
user = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "nomarchy";
|
||||
description = ''
|
||||
Primary user whose home subset (.ssh, .gnupg, keyrings, common
|
||||
directories) survives the rootfs wipe. Must match the user
|
||||
created via `users.users.<name>` — otherwise the persistence
|
||||
block is silently inert and the user's home directory is wiped
|
||||
on every boot. The installer writes this for you.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
@@ -72,7 +84,7 @@ in
|
||||
"/etc/machine-id"
|
||||
"/etc/supergfxd.conf"
|
||||
];
|
||||
users.nomarchy = {
|
||||
users.${cfg.user} = {
|
||||
directories = [
|
||||
".ssh"
|
||||
".gnupg"
|
||||
|
||||
@@ -41,8 +41,7 @@ core/ Foundational OS + user defaults. Don't put apps here.
|
||||
scripts/ Low-level system scripts (battery, brightness, hardware).
|
||||
home/ Home Manager modules.
|
||||
options.nix Most home-side nomarchy.* options.
|
||||
behavior.nix nomarchy.behavior.* (deploy-default-config toggles).
|
||||
overrides.nix File-based overrides from ~/.config/nomarchy/overrides/.
|
||||
overrides.nix nomarchy.overrides.* (reserved; currently no-op — see ROADMAP).
|
||||
config/ Plain dotfiles symlinked into ~/.config.
|
||||
|
||||
features/ Apps and desktop components. Add new apps here.
|
||||
|
||||
@@ -210,7 +210,7 @@ and it's whichever has higher Nix priority. Fix these explicitly:
|
||||
| Graphics | `hardware.graphics.enable = true` (was `hardware.opengl`) | Probably already enabled — fine |
|
||||
| User groups | needs `video render networkmanager` | Add to your `users.users.<user>.extraGroups` |
|
||||
| `/etc/os-release` | `ID=nomarchy`, `NAME=Nomarchy` | A few third-party scripts grep `ID=nixos` — adjust them or rely on `ID_LIKE` (TBD) |
|
||||
| autoLogin | `enable = true; user = "nomarchy";` (mkDefault) | Override with `services.displayManager.autoLogin.user = "<your user>"` or disable |
|
||||
| autoLogin | `enable = false; user = "nomarchy";` (mkDefault) | Off by default — opt in with `services.displayManager.autoLogin = { enable = true; user = "<your user>"; };` if you want it |
|
||||
|
||||
Impermanence is **off** unless you set `nomarchy.system.impermanence.enable = true`,
|
||||
and it requires a BTRFS layout with a `root-blank` snapshot. Don't enable it
|
||||
|
||||
@@ -153,10 +153,18 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
|
||||
`bool`, default `false`. Intel IPU7 camera support (kernel modules + firmware).
|
||||
|
||||
### `impermanence.enable`
|
||||
### `nomarchy.system.impermanence.enable`
|
||||
|
||||
`bool`, default `false`. Erase Your Darlings root wipe on boot. Defined in `core/system/impermanence.nix`. The installer writes the flag based on the impermanence prompt.
|
||||
|
||||
### `nomarchy.system.impermanence.mainLuksName`
|
||||
|
||||
`str`, default `"crypted"`. Name of the `/dev/mapper` entry holding the BTRFS root. The disko layout uses `"crypted"` on single-disk installs and `"crypted_main"` once multiple drives are selected — the installer writes the matching value automatically.
|
||||
|
||||
### `nomarchy.system.impermanence.user`
|
||||
|
||||
`str`, default `"nomarchy"`. Primary user whose home subset (`.ssh`, `.gnupg`, `.local/share/keyrings`, `Documents`, `Downloads`, `Pictures`, `Videos`, `Projects`) survives the rootfs wipe. Must match the user created via `users.users.<name>` — otherwise the persistence block is silently inert and the user's home directory is wiped on every boot. The installer writes this for you.
|
||||
|
||||
---
|
||||
|
||||
## Home Manager options (`home.nix`)
|
||||
@@ -197,10 +205,6 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
|
||||
`bool`, default `true`. Whether the top bar is deployed at all.
|
||||
|
||||
### `nomarchy.toggles.skipVsCodeTheme`
|
||||
|
||||
`bool`, default `false`. Skip theme overrides in VSCode — useful if you manage VSCode themes yourself.
|
||||
|
||||
### `nomarchy.nightlightTemperature`
|
||||
|
||||
`int`, default `4000`. Nightlight color temperature (Kelvin).
|
||||
@@ -223,11 +227,11 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
|
||||
### `nomarchy.iconsTheme`
|
||||
|
||||
`str`, default `"Yaru-blue"`. GTK/Qt icon theme name.
|
||||
`str`, default derived from the active theme (falls back to `"Yaru-blue"`). GTK/Qt icon theme name. `core/home/state.nix` computes this from the theme's palette metadata; override to pin a specific icon theme regardless of palette.
|
||||
|
||||
### `nomarchy.isLightMode`
|
||||
|
||||
`bool`, default `false`. Whether the active theme is a light theme. Affects nightlight defaults and a few app theme decisions.
|
||||
`bool`, default derived from the active theme. Whether the active theme is a light theme. `core/home/state.nix` computes this from the theme directory; affects nightlight defaults and a few app theme decisions. Override only if you need to force a specific value.
|
||||
|
||||
### `nomarchy.cursor.name`
|
||||
|
||||
@@ -239,23 +243,7 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
|
||||
### `nomarchy.configOverrides`
|
||||
|
||||
`nullOr path`, default `null`. Path to a directory containing config overrides. See "Overrides" below.
|
||||
|
||||
### `nomarchy.behavior.hyprland.bindings`
|
||||
|
||||
`bool`, default `true`. Deploy the default Hyprland keybindings. Set to `false` if you want to write `bindings.conf` from scratch.
|
||||
|
||||
### `nomarchy.behavior.hyprland.input`
|
||||
|
||||
`bool`, default `true`. Deploy default input settings (kb_layout, mouse accel, etc).
|
||||
|
||||
### `nomarchy.behavior.hyprland.windowRules`
|
||||
|
||||
`bool`, default `true`. Deploy default window rules.
|
||||
|
||||
### `nomarchy.behavior.hyprland.autostart`
|
||||
|
||||
`bool`, default `true`. Deploy the default `autostart.conf` (hypridle, mako, swayosd, nm-applet, etc).
|
||||
`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.*` is a reserved option surface (currently a no-op).
|
||||
|
||||
### `nomarchy.apps.opencode.enable`
|
||||
|
||||
@@ -271,19 +259,19 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
|
||||
### `nomarchy.themeLoader.enable`
|
||||
|
||||
`bool`, default `true`. Auto-load theme-specific app configs (btop, waybar, mako, kitty, alacritty) from the active theme. Disable if you want to provide your own.
|
||||
`bool`, default `true`. Auto-load theme-specific app configs from the active theme's `apps/` directory. Disable if you want to provide your own.
|
||||
|
||||
### `nomarchy.themeLoader.apps.{btop,waybar,mako,kitty,alacritty}`
|
||||
### `nomarchy.themeLoader.apps.btop`
|
||||
|
||||
`bool`, default `true` each. Per-app toggles for the theme loader — pick which apps follow the active theme.
|
||||
`bool`, default `true`. Deploy the active theme's `apps/btop.theme` to `~/.config/btop/themes/nomarchy.theme`. The only per-app toggle in this group — waybar themes inline from `colorScheme` in `features/desktop/waybar`; kitty and alacritty are themed by stylix targets (`themes/engine/stylix.nix`); mako has no theme integration yet.
|
||||
|
||||
### `nomarchy.overrides.enable`
|
||||
|
||||
`bool`, default `true`. Enable file-based overrides loaded from `~/.config/nomarchy/overrides/`. With this on, Nomarchy looks for matching files in that directory and substitutes them for the bundled defaults.
|
||||
`bool`, default `true`. **Reserved — currently a no-op.** Intended to gate a future file-based override loader (drop a file under `~/.config/nomarchy/overrides/`, have it substitute the bundled default for that path). The option exists so configs that set it don't fail to evaluate; setting it has no effect today. Use `nomarchy.configOverrides` for bulk redirection, or set `xdg.configFile.<path>.source` directly in your `home.nix` for per-file overrides — Nomarchy's defaults use `lib.mkDefault` and yield to higher-priority assignments. Tracked in `docs/ROADMAP.md`.
|
||||
|
||||
### `nomarchy.overrides.paths`
|
||||
|
||||
`attrsOf path`, default `{}`. Override paths discovered at build time. Populated by the override system — you don't normally set this directly.
|
||||
`attrsOf path`, default `{}`. **Reserved — currently unused.** Will be populated by the future override loader.
|
||||
|
||||
---
|
||||
|
||||
@@ -315,15 +303,17 @@ Without prime config, supergfxd still switches modes but render-offload via `nvi
|
||||
}
|
||||
```
|
||||
|
||||
### Disable Nomarchy's default Hyprland keybindings to ship your own
|
||||
### Ship your own Hyprland keybindings instead of Nomarchy's defaults
|
||||
|
||||
Nomarchy deploys its `bindings.conf` with `lib.mkDefault`, so a higher-priority assignment from your own `home.nix` wins:
|
||||
|
||||
```nix
|
||||
{
|
||||
nomarchy.behavior.hyprland.bindings = false;
|
||||
xdg.configFile."hypr/bindings.conf".source = ./my-bindings.conf;
|
||||
}
|
||||
```
|
||||
|
||||
Then put your own `bindings.conf` at `~/.config/nomarchy/overrides/hypr/bindings.conf` (with `nomarchy.overrides.enable = true;`, which is the default).
|
||||
The same pattern works for any file Nomarchy deploys via `xdg.configFile.<path>.source = lib.mkDefault …` — point at your own file and skip the default.
|
||||
|
||||
---
|
||||
|
||||
@@ -333,7 +323,6 @@ Then put your own `bindings.conf` at `~/.config/nomarchy/overrides/hypr/bindings
|
||||
- `core/system/hardware.nix` — `nomarchy.hardware.*`
|
||||
- `core/system/impermanence.nix` — `impermanence.enable`
|
||||
- `core/home/options.nix` — most home-side `nomarchy.*` options
|
||||
- `core/home/behavior.nix` — `nomarchy.behavior.*`
|
||||
- `core/home/overrides.nix` — `nomarchy.overrides.*`
|
||||
- `core/home/overrides.nix` — `nomarchy.overrides.*` (reserved; currently no-op)
|
||||
- `themes/engine/loader.nix` — `nomarchy.themeLoader.*`
|
||||
- `features/apps/vscode.nix` — `nomarchy.vscode.*`
|
||||
|
||||
@@ -28,6 +28,7 @@ Guardrails (apply when adding anything):
|
||||
- **Accessibility — home-side companion.** Hyprland-side bits the system preset can't reach: slower `input.repeat_rate` / `repeat_delay` defaults, `SUPER+ALT+S` keybinding to launch Orca, and a high-contrast palette under `themes/palettes/`. Gated on a new `nomarchy.accessibility.enable` mirror of the system option.
|
||||
- **Gaming — declarative flathub remote.** `services.flatpak.enable` doesn't ship a declarative remote API in nixpkgs. Either add the `flatpak-managed-install` overlay, write a one-shot systemd unit that runs `flatpak remote-add --if-not-exists flathub …`, or surface the manual step in `nomarchy-welcome`.
|
||||
- **Plymouth theme variants per palette.** Currently one Plymouth theme; could template per-palette so the boot splash matches the active theme.
|
||||
- **Implement `nomarchy.overrides.*` file-based override loader.** The option surface is declared in `core/home/overrides.nix` but the loader doesn't exist — files dropped under `~/.config/nomarchy/overrides/` are ignored. Spec: when `overrides.enable = true`, for each `xdg.configFile.<path>` Nomarchy deploys with `lib.mkDefault`, check whether `~/.config/nomarchy/overrides/<path>` exists at build time; if so, use it as the source. Requires deciding whether discovery happens at activation time (cheap, but rebuild-required to pick up new files) or via a populated `paths` attrset (Nix-side, evaluated once per rebuild). Until shipped, document the per-file workaround (`xdg.configFile.<path>.source = ./mine`) in OPTIONS.md.
|
||||
|
||||
### Later (speculative or research-shaped)
|
||||
|
||||
@@ -39,6 +40,13 @@ Guardrails (apply when adding anything):
|
||||
- **Forgejo release pipeline.** `vYY.MM.x` tags matching the upstream NixOS channel; the pipeline pushes the three ISOs and an updated `flake.lock` snapshot.
|
||||
- **Optional `nomarchy-installer-vm`** rebuilt as a real flake app (not a one-off shell script) so users can install Nomarchy into a libvirt VM declaratively.
|
||||
- **Surface support module** via the relevant `nixos-hardware` profile + Surface kernel patches behind a `nomarchy.hardware.isSurface` toggle.
|
||||
- **Consolidate palette imports in `flake.nix` via `nomarchyLib`.** `flake.nix:79-80` re-imports `./themes/palettes` and recomputes `themeNames` even though `lib/default.nix` already exports both. Two computations, same result today — drift risk tomorrow. Import `nomarchyLib = import ./lib { inherit lib; }` once and use `nomarchyLib.{palettes,themeNames}` to make `lib/default.nix` the single source of truth for the theme list.
|
||||
- **Decide what to do about `features/apps/chromium/Default/Preferences`.** The module deploys a static 204-byte `Default/Preferences` (setting `extensions.theme.use_system = false`, `browser.theme.color_scheme = 2`) into chromium's mutable profile directory via Home Manager symlink. Chromium expects to write that file at runtime, so either the symlink is silently replaced on first save (losing the static defaults) or the write fails silently. The real chromium theming work happens via managed policies in `core/system/browser.nix`. Probably the user-profile deployment should be removed; needs someone with chromium-internals knowledge to confirm before deletion.
|
||||
- **`themes/templates/*.tpl` — decide what these are for.** Eleven mustache-style templates (`alacritty.toml.tpl`, `btop.theme.tpl`, `kitty.conf.tpl`, etc.) are deployed to `~/.local/share/nomarchy/templates/` via `themes/engine/files.nix`, but no script in the tree consumes them. Likely vestigial from a pre-stylix templating system. Either delete the directory + the `xdg.dataFile` deployment, or document them as user-reference assets and explain how to use them.
|
||||
- **Move `programs.uwsm` Hyprland session out of `core/system/virtualization.nix`.** Session-manager config is wired in the virtualization module by historical accident — it's loaded unconditionally on every install and has nothing to do with libvirt/docker. Move to a dedicated `core/system/session.nix` (or fold into the Hyprland feature module) so the location matches the responsibility.
|
||||
- **Route installer keymap into Hyprland's Wayland session.** `core/home/config/nomarchy/default/hypr/input.conf:3` hardcodes `kb_layout = us`. The installer writes `services.xserver.xkb.layout = "$KEYMAP_LAYOUT"` (and `console.keyMap`), but Hyprland reads its own input config on native Wayland, so a non-US user's chosen layout works in XWayland apps and the TTY console but not in native Wayland apps — surprising and inconsistent. Fix paths: (a) template `input.conf` from a new `nomarchy.keymap.{layout,variant}` home option that the installer writes alongside `formFactor`, or (b) propagate `XKB_DEFAULT_LAYOUT` via session env so Hyprland's fallback kicks in. Option (a) is the durable fix; needs the installer's heredoc to add the option write.
|
||||
- **Make `nomarchy.toggles.waybar` a Nix-level gate, or document it as runtime-only.** Today the toggle is exported as `NOMARCHY_TOGGLE_WAYBAR` env, consumed only by `nomarchy-toggle-waybar` (which pkill/exec's at runtime). The Nix module always sets `programs.waybar.enable = lib.mkDefault true`, so waybar comes back on every rebuild/reboot regardless of the toggle. Inconsistent with `toggles.idle`, which correctly gates `services.hypridle.enable`. Either gate `programs.waybar.enable` on the toggle (persistent) or rename the option to make its session-only nature obvious.
|
||||
- **Reconcile nightlight: systemd-managed hyprsunset vs `pkill`/`hyprctl exec` toggle.** `features/desktop/nightlight.nix` always sets `services.hyprsunset.enable = lib.mkDefault true` and bakes the temperature (`toggles.nightlight ? nightlightTemperature : 6500`) into `extraArgs` at Nix-eval time. The toggle script `themes/engine/scripts/nomarchy-toggle-nightlight` bypasses systemd entirely: `pkill hyprsunset` on disable, `hyprctl dispatch exec hyprsunset --temperature 4000` on enable — racing the systemd-managed instance and ignoring the user's chosen `nightlightTemperature`. The comment "Always enabled, we control via IPC and state" doesn't match the implementation (there's no IPC; the temperature is rebuild-time, not runtime). Pick one: (a) toggle stays as `hyprctl dispatch hyprsunset temperature ${T}` (proper IPC, no daemon restart), with Nix dropping `extraArgs` to just `--temperature 6500` on boot; or (b) gate `services.hyprsunset.enable` on the toggle and run `systemctl --user restart hyprsunset` from the script. Both also need the script to read `nightlightTemperature` instead of hardcoding 4000.
|
||||
|
||||
## 3. Pillar: Script & menu audit
|
||||
|
||||
@@ -150,6 +158,7 @@ Pillar is **done** when every component has a closed `wave/qa-<component>` PR an
|
||||
|
||||
(Move items here when they land — keep them brief, link the commit/PR.)
|
||||
|
||||
- _2026-05-21_ — **Pillar 8 / Component 5 (Desktop stack): closeout.** Code-review-shaped sweep over Hyprland, waybar, walker, hypridle, hyprsunset, mako, KEYBINDINGS.md (the runtime-rendering subset — waybar across panel positions × form factors × all 22 palettes, walker launcher modes, hypridle timeout feel — stays on the user). Five real bugs fixed inline: **(1)** 9 of 17 `~/.config/nomarchy/default/hypr/apps/*.conf` window-rule files were deployed but never sourced, including `system.conf` (the `tag +floating-window` rules every TUI helper class relies on + `class:org.nomarchy.screensaver` fullscreen rule that hypridle's 150s on-timeout depends on) and `pip.conf` (the PiP pin/size rules). `apps.conf` now sources all 17. **(2)** Two `$NNOMARCHY_TOGGLE_*` typos (double-N) in `nomarchy-menu:330` and `nomarchy-launch-screensaver:16` made `toggles.suspend` and `toggles.screensaver` vacuous — Suspend always showed in the system menu and the screensaver always launched at idle regardless of the documented option. **(3)** 4 broken per-palette waybar `style.css` overrides (`catppuccin`, `lumon`, `nord`, `retro-82`) fully replaced the default style with 2–14 lines of only `@define-color` declarations — picking those palettes produced a waybar with zero structural styling. Default style already imports per-palette colors via `themes/engine/files.nix`-generated `theme/waybar.css`, so deletion restores correct rendering; `summer-day`/`summer-night` kept as legitimate 100+-line redesigns. **(4)** `core/home/config/nomarchy/default/hypr/{bindings,plain-bindings}.conf` were explicitly-labeled deprecated files sourced by nothing (plain-bindings.conf referenced undefined `$terminal`/`$browser`/etc. Hyprland vars) — deleted; `docs/SCRIPTS.md` regenerated to drop stale callers and incidentally corrected 4 Origin columns whose scripts moved from `core/system/scripts/` to `features/scripts/utils/`. **(5)** Mako post-fix (commit `2a301a0`) verified: deployment + the 4 referenced scripts (`nomarchy-notification-dismiss`, `nomarchy-launch-wifi`, `nomarchy-launch-floating-terminal-with-presentation`, `nomarchy-menu-keybindings`) all resolve. Two structural inconsistencies logged to Later: keymap routing (already in 72f7e7b) and the new hyprsunset toggle-vs-systemd reconcile. `KEYBINDINGS.md` regenerated with zero diff — generator already covers both binding source locations. Runtime verification (boot live ISO, eyeball waybar/walker/screensaver flows across panel positions and palettes) remains the user's responsibility before declaring Component 5 fully closed.
|
||||
- _2026-05-18_ — Hardware DB correctness pass + ROG Ally support + CI lint. Audited every `nomarchy-hardware-db` entry against `inputs.nixos-hardware.nixosModules` and found **21 of 43 entries (49%) referenced modules that don't exist** — `microsoft-surface-pro-8`, `lenovo-thinkpad-x1-carbon-gen11`, `framework-13-11th-gen-intel`, etc. were all eval-time failures waiting for a real user. Rewrote the DB to use only valid module names: Framework gens dropped the "13-" prefix in nixos-hardware (`framework-11th-gen-intel`, not `framework-13-11th-gen-intel`); ThinkPad X1 modules are `x1-Nth-gen`, not `x1-carbon-genN`; Surface Pro 6/7/8/10 all share `microsoft-surface-pro-intel`; Surface Book / Intel Surface Laptop have no module (rows dropped, generic detection still emits sensible `common-pc-laptop` + cpu/gpu). Added matchers for **ROG Ally** (RC71L / RC72LA / "ROG Ally" via `asus-ally-rc71l`). Documented Steam Deck and Snapdragon X as nixos-hardware-unsupported in a footer comment (Steam Deck → Jovian-NixOS; Snapdragon X → installer is x86_64 only). Added a CI step (`.forgejo/workflows/check.yml`) that fails on any DB entry whose module name isn't in `nixos-hardware.nixosModules` — closes this regression class.
|
||||
- _2026-05-18_ — `nomarchy-manual` re-targeted at local docs. The script's `xdg-open` previously pointed at `https://learn.omacom.io/2/the-nomarchy-manual` — an upstream Omarchy URL that opened an unrelated page when users hit the menu's Help entry. Now opens `~/.local/share/nomarchy/README.md` (the local docs index per `SKILL.md`'s "Out of Scope" note), with a `notify-send` fallback if the source tree isn't synced.
|
||||
- _2026-05-18_ — Docs hygiene: STRUCTURE.md "Root Directory" + Pillar 6 reality-check. `docs/STRUCTURE.md` listed three top-level files that don't exist (`GEMINI.md`, root-level `STRUCTURE.md`, `TODO.md`) — replaced with an accurate root listing plus a `docs/` sub-tree that names every doc. Pillar 6 in this file had `nomarchy-welcome`, `docs/TROUBLESHOOTING.md`, and the "docs index" bullet still marked Next despite all three shipping on 2026-04-26 — moved to `(Shipped)`. `nomarchy-manual` bullet's "orphaned reference today" claim was stale (the script is called from `nomarchy-menu` and `nomarchy-theme-install`); rewritten to reflect the real remaining issue — its hardcoded `xdg-open https://learn.omacom.io/2/the-nomarchy-manual` is an Omarchy URL.
|
||||
|
||||
@@ -45,14 +45,14 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
|
||||
| `nomarchy-cmd-screensaver` | `features/scripts/utils` | features/scripts/utils/nomarchy-launch-screensaver | `kept` | |
|
||||
| `nomarchy-cmd-screenshot` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,core/home/config/nomarchy-skill/SKILL.md, +1 more | `kept` | |
|
||||
| `nomarchy-cmd-share` | `features/scripts/utils` | features/scripts/utils/nomarchy-menu | `kept` | |
|
||||
| `nomarchy-cmd-terminal-cwd` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/plain-bindings.conf,features/desktop/hyprland/config/bindings.conf | `kept` | |
|
||||
| `nomarchy-cmd-terminal-cwd` | `features/scripts/utils` | features/desktop/hyprland/config/bindings.conf | `kept` | |
|
||||
| `nomarchy-debug` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||
| `nomarchy-docs-keybindings` | `features/scripts/utils` | bin/utils/nomarchy-docs-keybindings | `kept` | |
|
||||
| `nomarchy-docs-scripts` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts | `kept` | |
|
||||
| `nomarchy-drive-info` | `features/scripts/utils` | features/scripts/utils/nomarchy-drive-select | `kept` | |
|
||||
| `nomarchy-drive-select` | `features/scripts/utils` | features/scripts/utils/nomarchy-drive-info,features/scripts/utils/nomarchy-drive-set-password | `kept` | |
|
||||
| `nomarchy-drive-set-password` | `features/scripts/utils` | features/scripts/utils/nomarchy-drive-select,features/scripts/utils/nomarchy-menu | `kept` | |
|
||||
| `nomarchy-env-update` | `core/system/scripts` | core/home/bash.nix,core/system/scripts.nix, +7 more | `kept` | |
|
||||
| `nomarchy-env-update` | `features/scripts/utils` | core/home/bash.nix,core/system/scripts.nix, +7 more | `kept` | |
|
||||
| `nomarchy-font` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts,core/home/config/nomarchy-skill/SKILL.md, +6 more | `kept` | |
|
||||
| `nomarchy-font-current` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-menu | `kept` | |
|
||||
| `nomarchy-font-list` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-font, +2 more | `kept` | |
|
||||
@@ -77,8 +77,8 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
|
||||
| `nomarchy-launch-about` | `features/scripts/utils` | features/scripts/utils/nomarchy-menu | `kept` | |
|
||||
| `nomarchy-launch-audio` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/waybar/config/config.jsonc, +2 more | `kept` | |
|
||||
| `nomarchy-launch-bluetooth` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/waybar/config/config.jsonc, +1 more | `kept` | |
|
||||
| `nomarchy-launch-browser` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/plain-bindings.conf,core/home/config/nomarchy-skill/SKILL.md, +1 more | `kept` | |
|
||||
| `nomarchy-launch-editor` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/plain-bindings.conf,features/desktop/hyprland/config/bindings.conf, +2 more | `kept` | |
|
||||
| `nomarchy-launch-browser` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/desktop/hyprland/config/bindings.conf | `kept` | |
|
||||
| `nomarchy-launch-editor` | `features/scripts/utils` | features/desktop/hyprland/config/bindings.conf,features/scripts/utils/nomarchy-menu, +1 more | `kept` | |
|
||||
| `nomarchy-launch-floating-terminal-with-presentation` | `features/scripts/utils` | core/home/config/nomarchy/default/mako/core.ini,features/desktop/waybar/config/config.jsonc, +3 more | `kept` | |
|
||||
| `nomarchy-launch-or-focus` | `features/scripts/utils` | core/home/config/nomarchy/extensions/menu.sh,features/desktop/hyprland/config/bindings.conf, +6 more | `kept` | |
|
||||
| `nomarchy-launch-or-focus-tui` | `features/scripts/utils` | core/home/config/nomarchy/extensions/menu.sh,features/desktop/waybar/config/config.jsonc, +3 more | `kept` | |
|
||||
@@ -86,21 +86,21 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
|
||||
| `nomarchy-launch-screensaver` | `features/scripts/utils` | features/desktop/idle.nix,features/scripts/utils/nomarchy-menu | `kept` | |
|
||||
| `nomarchy-launch-tui` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,features/desktop/hyprland/config/bindings.conf, +2 more | `kept` | |
|
||||
| `nomarchy-launch-walker` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/clipboard.conf,core/home/config/nomarchy/default/hypr/bindings/utilities.conf, +4 more | `kept` | |
|
||||
| `nomarchy-launch-webapp` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/plain-bindings.conf,features/desktop/hyprland/config/bindings.conf, +5 more | `kept` | |
|
||||
| `nomarchy-launch-webapp` | `features/scripts/utils` | features/desktop/hyprland/config/bindings.conf,features/scripts/utils/nomarchy-launch-or-focus-webapp, +4 more | `kept` | |
|
||||
| `nomarchy-launch-wifi` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,core/home/config/nomarchy/default/mako/core.ini, +4 more | `kept` | |
|
||||
| `nomarchy-lock-screen` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,core/home/config/nomarchy/extensions/menu.sh, +3 more | `kept` | |
|
||||
| `nomarchy-manual` | `features/scripts/utils` | core/branding/about.txt,features/scripts/utils/nomarchy-menu, +1 more | `kept` | |
|
||||
| `nomarchy-menu` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts,core/home/config/nomarchy/default/hypr/bindings/utilities.conf, +10 more | `kept` | |
|
||||
| `nomarchy-menu` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts,core/home/config/nomarchy/default/hypr/bindings/utilities.conf, +9 more | `kept` | |
|
||||
| `nomarchy-menu-keybindings` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,core/home/config/nomarchy/default/mako/core.ini, +2 more | `kept` | |
|
||||
| `nomarchy-notification-dismiss` | `features/scripts/utils` | core/home/config/nomarchy/default/mako/core.ini | `kept` | |
|
||||
| `nomarchy-on-boot` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/autostart.conf | `kept` | |
|
||||
| `nomarchy-pkg-add` | `core/system/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-pkg-install, +2 more | `kept` | |
|
||||
| `nomarchy-pkg-add` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-pkg-install, +2 more | `kept` | |
|
||||
| `nomarchy-pkg-aur-add` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||
| `nomarchy-pkg-drop` | `features/scripts/utils` | features/scripts/utils/nomarchy-voxtype-remove | `kept` | |
|
||||
| `nomarchy-pkg-install` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||
| `nomarchy-pkg-remove` | `core/system/scripts` | features/scripts/utils/nomarchy-pkg-drop | `kept` | |
|
||||
| `nomarchy-pkg-remove` | `features/scripts/utils` | features/scripts/utils/nomarchy-pkg-drop | `kept` | |
|
||||
| `nomarchy-powerprofiles-list` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
|
||||
| `nomarchy-preflight-migration` | `core/system/scripts` | core/system/scripts/nomarchy-env-update | `kept` | |
|
||||
| `nomarchy-preflight-migration` | `features/scripts/utils` | features/scripts/utils/nomarchy-env-update | `kept` | |
|
||||
| `nomarchy-refresh-config` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-refresh-fastfetch | `kept` | |
|
||||
| `nomarchy-refresh-fastfetch` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||
| `nomarchy-refresh-hyprland` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||
@@ -184,7 +184,7 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
|
||||
| `nomarchy-webapp-install` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-webapp-remove-all | `kept` | |
|
||||
| `nomarchy-webapp-remove` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||
| `nomarchy-webapp-remove-all` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||
| `nomarchy-welcome` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/autostart.conf | `kept` | |
|
||||
| `nomarchy-welcome` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/autostart.conf,lib/state-schema.nix | `kept` | |
|
||||
| `nomarchy-wifi-powersave` | `core/system/scripts` | features/scripts/utils/nomarchy-sys-update,installer/install.sh | `kept` | |
|
||||
| `nomarchy-windows-vm` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||
|
||||
|
||||
@@ -70,8 +70,8 @@ The `core/` directory contains the foundational modules required for a functiona
|
||||
- **`default.nix`**: The entry point for the base Home Manager module.
|
||||
- **`options.nix`**: Defines the `nomarchy` user options (Toggles, Theme, Fonts, etc.).
|
||||
- **`state.nix`**: Loads and applies user-level state (from `~/.config/nomarchy/state.json`).
|
||||
- **`behavior.nix`**: Deploys non-visual configs (Keybindings, Input settings, Window rules) with `lib.mkDefault`.
|
||||
- **`configs.nix`**: Manages static configuration files and directories in `~/.config/`.
|
||||
- **`overrides.nix`**: Declares `nomarchy.overrides.*` (reserved for a future file-based override loader; currently no-op).
|
||||
- **`configs.nix`**: Manages static configuration files and directories in `~/.config/`. Honors `nomarchy.configOverrides` as a bulk redirect to a replacement config dir.
|
||||
- **`bash.nix`**: Shell environment, aliases, and specialized `env-update` hooks.
|
||||
- **`security.nix`**: Polkit, keyring management, and GPG settings.
|
||||
- **`config/`**: Contains the physical source files for the base user configuration (e.g., `starship.toml`, `hypr/` behavior configs).
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
general.import = [ "~/.config/nomarchy/current/theme/alacritty.toml" ]
|
||||
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
|
||||
[terminal]
|
||||
osc52 = "CopyPaste"
|
||||
|
||||
[font]
|
||||
normal = { family = "JetBrainsMono Nerd Font", style = "Regular" }
|
||||
bold = { family = "JetBrainsMono Nerd Font", style = "Bold" }
|
||||
italic = { family = "JetBrainsMono Nerd Font", style = "Italic" }
|
||||
size = 9
|
||||
|
||||
[window]
|
||||
padding.x = 14
|
||||
padding.y = 14
|
||||
decorations = "None"
|
||||
|
||||
[keyboard]
|
||||
bindings = [
|
||||
{ key = "Insert", mods = "Shift", action = "Paste" },
|
||||
{ key = "Insert", mods = "Control", action = "Copy" },
|
||||
{ key = "Return", mods = "Shift", chars = "\u001B\r" }
|
||||
]
|
||||
@@ -2,14 +2,6 @@
|
||||
|
||||
let
|
||||
nomarchyLib = import ../lib { inherit lib; };
|
||||
userPackagesFile = "${config.home.homeDirectory}/.config/home-manager/user-packages.json";
|
||||
userPackages = if builtins.pathExists userPackagesFile then
|
||||
let
|
||||
pkgNames = builtins.fromJSON (builtins.readFile userPackagesFile);
|
||||
# Filter to only packages that exist in pkgs to prevent build failures
|
||||
validPkgs = builtins.filter (name: builtins.hasAttr name pkgs) pkgNames;
|
||||
in builtins.map (name: pkgs.${name}) validPkgs
|
||||
else [];
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
# paths to stylesheets on the filesystem which should be applied to the application
|
||||
#
|
||||
# relative paths are resolved relative to the location of the config file
|
||||
stylesheets: ["../nomarchy/current/theme/hyprland-preview-share-picker.css"]
|
||||
# default page selected when the picker is opened
|
||||
default_page: outputs
|
||||
|
||||
window:
|
||||
# height of the application window
|
||||
height: 500
|
||||
# width of the application window
|
||||
width: 1000
|
||||
|
||||
image:
|
||||
# size to which the images should be internally resized to reduce the memory footprint
|
||||
resize_size: 500
|
||||
# target size of the longer side of the image widget
|
||||
widget_size: 150
|
||||
|
||||
classes:
|
||||
# css classname of the window
|
||||
window: window
|
||||
# css classname of the card containing an image and a label
|
||||
image_card: card
|
||||
# css classname of the card containing an image and a label when the image is still being loaded
|
||||
image_card_loading: card-loading
|
||||
# css classname of the image inside the card
|
||||
image: image
|
||||
# css classname of the label inside the card
|
||||
image_label: image-label
|
||||
# css classname of the notebook containing all pages
|
||||
notebook: notebook
|
||||
# css classname of a label of the notebook
|
||||
tab_label: tab-label
|
||||
# css classname of a notebook page (e.g. windows container)
|
||||
notebook_page: page
|
||||
# css classname of the region selection button
|
||||
region_button: region-button
|
||||
# css classname of the button containing the session restore checkbox and label
|
||||
restore_button: restore-button
|
||||
|
||||
windows:
|
||||
# minimum amount of image cards per row on the windows page
|
||||
min_per_row: 3
|
||||
# maximum amount of image cards per row on the windows page
|
||||
max_per_row: 999
|
||||
# number of clicks needed to select a window
|
||||
clicks: 1
|
||||
# spacing in pixels between the window cards
|
||||
spacing: 12
|
||||
|
||||
outputs:
|
||||
# number of clicks needed to select an output
|
||||
clicks: 1
|
||||
# spacing in pixels between the outputs in the layout
|
||||
# note: the spacing is applied from both sides (the gap is `spacing * 2`)
|
||||
spacing: 6
|
||||
# show the label with the output name
|
||||
show_label: false
|
||||
# size the output cards respectively to their scaling
|
||||
respect_output_scaling: true
|
||||
|
||||
region:
|
||||
# command to run for region selection
|
||||
# the output needs to be in the <output>@<x>,<y>,<w>,<h> (e.g. DP-3@2789,436,756,576) format
|
||||
command: slurp -f '%o@%x,%y,%w,%h'
|
||||
|
||||
# hide the token restore checkbox and use the default value instead
|
||||
hide_token_restore: true
|
||||
# enable debug logs by default
|
||||
debug: false
|
||||
@@ -1,2 +0,0 @@
|
||||
# Extra autostart processes
|
||||
# exec-once = uwsm-app -- my-service
|
||||
@@ -1,43 +0,0 @@
|
||||
source = ~/.config/nomarchy/current/theme/hyprlock.conf
|
||||
|
||||
general {
|
||||
ignore_empty_input = true
|
||||
}
|
||||
|
||||
background {
|
||||
monitor =
|
||||
color = $color
|
||||
path = ~/.config/nomarchy/current/background
|
||||
blur_passes = 3
|
||||
}
|
||||
|
||||
animations {
|
||||
enabled = false
|
||||
}
|
||||
|
||||
input-field {
|
||||
monitor =
|
||||
size = 650, 100
|
||||
position = 0, 0
|
||||
halign = center
|
||||
valign = center
|
||||
|
||||
inner_color = $inner_color
|
||||
outer_color = $outer_color
|
||||
outline_thickness = 4
|
||||
|
||||
font_family = JetBrainsMono Nerd Font
|
||||
font_color = $font_color
|
||||
|
||||
placeholder_text = Enter Password
|
||||
check_color = $check_color
|
||||
fail_text = <i>$FAIL ($ATTEMPTS)</i>
|
||||
|
||||
rounding = 0
|
||||
shadow_passes = 0
|
||||
fade_on_empty = false
|
||||
}
|
||||
|
||||
auth {
|
||||
fingerprint:enabled = false
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
# Makes hyprsunset do nothing to the screen by default
|
||||
# Without this, the default applies some tint to the monitor
|
||||
profile {
|
||||
time = 07:00
|
||||
identity = true
|
||||
}
|
||||
|
||||
# To enable auto switch to nightlight, set in your .config/hypr/autostart:
|
||||
# exec-once = uwsm app -- hyprsunset
|
||||
# and use the following:
|
||||
# profile {
|
||||
# time = 20:00
|
||||
# temperature = 4000
|
||||
# }
|
||||
@@ -1,34 +0,0 @@
|
||||
# Change the default Nomarchy look'n'feel
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
# No gaps between windows or borders
|
||||
# gaps_in = 0
|
||||
# gaps_out = 0
|
||||
# border_size = 0
|
||||
|
||||
# Change to niri-like side-scrolling layout
|
||||
# layout = scrolling
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
# Use round window corners
|
||||
# rounding = 8
|
||||
|
||||
# Dim unfocused windows (0.0 = no dim, 1.0 = fully dimmed)
|
||||
# dim_inactive = true
|
||||
# dim_strength = 0.15
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
# Disable all animations
|
||||
# enabled = no
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#layout
|
||||
layout {
|
||||
# Avoid overly wide single-window layouts on wide screens
|
||||
# single_window_aspect_ratio = 1 1
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
screencopy {
|
||||
allow_token_by_default = true
|
||||
custom_picker_binary = hyprland-preview-share-picker
|
||||
}
|
||||
@@ -48,13 +48,14 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
# Deploy Hyprland configuration files
|
||||
# Deploy Hyprland configuration files. Only the files that nomarchy.conf
|
||||
# actually sources are deployed here — looknfeel.conf and autostart.conf
|
||||
# live under ~/.config/nomarchy/default/hypr/ and are deployed by the
|
||||
# core/home bulk-nomarchy dir, so duplicating them here was dead surface.
|
||||
xdg.configFile."hypr/nomarchy.conf".source = ./config/nomarchy.conf;
|
||||
xdg.configFile."hypr/monitors.conf".source = lib.mkDefault ./config/monitors.conf;
|
||||
xdg.configFile."hypr/input.conf".source = lib.mkDefault ./config/input.conf;
|
||||
xdg.configFile."hypr/bindings.conf".source = lib.mkDefault ./config/bindings.conf;
|
||||
xdg.configFile."hypr/looknfeel.conf".source = lib.mkDefault ./config/looknfeel.conf;
|
||||
xdg.configFile."hypr/autostart.conf".source = lib.mkDefault ./config/autostart.conf;
|
||||
|
||||
# Run swaybg as a proper systemd user service rather than a Hyprland exec-once.
|
||||
# exec-once fails silently (black screen with no visible error) when timing
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
@define-color foreground #cdd6f4;
|
||||
@define-color background #181824;
|
||||
@@ -1,2 +0,0 @@
|
||||
@define-color foreground #d6e2ee;
|
||||
@define-color background #213442;
|
||||
@@ -1,14 +0,0 @@
|
||||
@define-color background #2e3440;
|
||||
@define-color foreground #d8dee9;
|
||||
@define-color accent #88c0d0;
|
||||
|
||||
/* Base style for Nord */
|
||||
* {
|
||||
font-family: JetBrainsMono Nerd Font, FontAwesome;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: @background;
|
||||
color: @foreground;
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
@define-color bg #00172e;
|
||||
@define-color foreground #f6dcac;
|
||||
@define-color background alpha(@bg, 0.8);
|
||||
@@ -71,7 +71,6 @@ let
|
||||
NOMARCHY_TOGGLE_IDLE = if config.nomarchy.toggles.idle then "true" else "false";
|
||||
NOMARCHY_TOGGLE_NIGHTLIGHT = if config.nomarchy.toggles.nightlight then "true" else "false";
|
||||
NOMARCHY_TOGGLE_WAYBAR = if config.nomarchy.toggles.waybar then "true" else "false";
|
||||
NOMARCHY_TOGGLE_SKIP_VSCODE_THEME = if config.nomarchy.toggles.skipVsCodeTheme then "true" else "false";
|
||||
NOMARCHY_MONOSPACE_FONT = config.nomarchy.fonts.monospace;
|
||||
};
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ pgrep -f org.nomarchy.screensaver && exit 0
|
||||
|
||||
# Allow screensaver to be turned off but also force started
|
||||
# Skip if screensaver is disabled in configuration
|
||||
if [[ $NNOMARCHY_TOGGLE_SCREENSAVER == "false" ]] && [[ $1 != "force" ]]; then
|
||||
if [[ $NOMARCHY_TOGGLE_SCREENSAVER == "false" ]] && [[ $1 != "force" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
@@ -327,7 +327,7 @@ show_about() {
|
||||
|
||||
show_system_menu() {
|
||||
local options=" Screensaver\n Lock"
|
||||
[[ $NNOMARCHY_TOGGLE_SUSPEND != "false" ]] && options="$options\n Suspend"
|
||||
[[ $NOMARCHY_TOGGLE_SUSPEND != "false" ]] && options="$options\n Suspend"
|
||||
nomarchy-hibernation-available && options="$options\n Hibernate"
|
||||
options="$options\n Logout\n Restart\n Shutdown"
|
||||
|
||||
|
||||
@@ -59,39 +59,9 @@ if [[ "$USER" == "nixos" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 4. Starter home.nix
|
||||
# 4. Setup Local Repo (Crucial for nomarchy-env-update to work)
|
||||
echo ""
|
||||
echo "Step 4: Starter home.nix"
|
||||
HOME_NIX="$HOME/.config/home-manager/home.nix"
|
||||
if [ ! -f "$HOME_NIX" ]; then
|
||||
echo "It looks like you don't have a ~/.config/home-manager/home.nix file yet."
|
||||
echo "Nomarchy uses this file to manage your user-level packages and settings."
|
||||
if gum confirm "Would you like to generate a starter home.nix?"; then
|
||||
mkdir -p "$(dirname "$HOME_NIX")"
|
||||
cat <<EOF > "$HOME_NIX"
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# Nomarchy starter home.nix
|
||||
# Add your user packages here.
|
||||
home.packages = with pkgs; [
|
||||
btop
|
||||
fastfetch
|
||||
chromium
|
||||
# Add more packages here
|
||||
];
|
||||
|
||||
# home.stateVersion = "25.11"; # Consult docs/MIGRATION.md if you change this
|
||||
}
|
||||
EOF
|
||||
echo "Starter home.nix generated at $HOME_NIX"
|
||||
fi
|
||||
else
|
||||
echo "Detected existing home.nix at $HOME_NIX. Skipping generation."
|
||||
fi
|
||||
|
||||
# 5. Setup Local Repo (Crucial for nomarchy-env-update to work)
|
||||
echo ""
|
||||
echo "Step 5: Git Repository Check"
|
||||
echo "Step 4: Git Repository Check"
|
||||
echo "Nomarchy relies on a local git repository for declarative updates."
|
||||
if [ ! -d "/etc/nixos/.git" ]; then
|
||||
echo "Warning: /etc/nixos is not a git repository. Declarative updates might fail."
|
||||
@@ -102,7 +72,7 @@ if [ ! -d "/etc/nixos/.git" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# 6. Success
|
||||
# 5. Success
|
||||
echo ""
|
||||
echo "Applying all changes..."
|
||||
nomarchy-env-update
|
||||
|
||||
@@ -1459,7 +1459,7 @@ generate_flake_config() {
|
||||
if (( ${#_drives[@]} > 1 )); then
|
||||
_main_luks_name="crypted_main"
|
||||
fi
|
||||
impermanence_opt=$'nomarchy.system.impermanence.enable = true;\n nomarchy.system.impermanence.mainLuksName = "'"$_main_luks_name"$'";'
|
||||
impermanence_opt=$'nomarchy.system.impermanence.enable = true;\n nomarchy.system.impermanence.mainLuksName = "'"$_main_luks_name"$'";\n nomarchy.system.impermanence.user = "'"$USERNAME"$'";'
|
||||
fi
|
||||
|
||||
local PROFILE_SYSTEM_OPTS=""
|
||||
|
||||
@@ -98,7 +98,6 @@ let
|
||||
in {
|
||||
inherit
|
||||
palettes
|
||||
readState
|
||||
readHomeState
|
||||
readSystemState
|
||||
resolveWallpaper
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Nomarchy State Schema
|
||||
# Defines the complete state shape with defaults for both home and system state
|
||||
#
|
||||
# Defines the default values for every state.json field that's consumed by a
|
||||
# Nix option. Read by core/{system,home}/options.nix (for `default = …`) and
|
||||
# by core/{system,home}/state.nix (for `or` fallbacks).
|
||||
#
|
||||
# state.json may also hold runtime-only fields that aren't declared here —
|
||||
# notably `welcome_done`, managed by `nomarchy-welcome`. Those are intentionally
|
||||
# off-schema because no Nix option reads them; the schema is the "consumed by
|
||||
# Nix" surface, not the full state.json shape.
|
||||
{ lib }:
|
||||
|
||||
{
|
||||
@@ -18,7 +26,6 @@
|
||||
idle = true;
|
||||
nightlight = false;
|
||||
waybar = true;
|
||||
skipVsCodeTheme = false;
|
||||
|
||||
# Hyprland window manager settings
|
||||
hyprland = {
|
||||
@@ -50,18 +57,7 @@
|
||||
fingerprint = false;
|
||||
fido2 = false;
|
||||
hybridGPU = false;
|
||||
makima = false;
|
||||
};
|
||||
};
|
||||
|
||||
# Get a value from state with fallback to default
|
||||
getWithDefault = state: path: default:
|
||||
let
|
||||
pathList = lib.splitString "." path;
|
||||
getValue = obj: remaining:
|
||||
if remaining == [] then obj
|
||||
else if builtins.isAttrs obj && builtins.hasAttr (builtins.head remaining) obj
|
||||
then getValue obj.${builtins.head remaining} (builtins.tail remaining)
|
||||
else default;
|
||||
in getValue state pathList;
|
||||
}
|
||||
|
||||
@@ -54,31 +54,16 @@ in
|
||||
};
|
||||
|
||||
apps = {
|
||||
# waybar, kitty, alacritty, and mako are intentionally absent. Waybar
|
||||
# themes inline in features/desktop/waybar via colorScheme; kitty and
|
||||
# alacritty are themed by stylix targets (themes/engine/stylix.nix); mako
|
||||
# has no theme integration yet. Only btop is loaded from the active
|
||||
# theme's apps/ directory.
|
||||
btop = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to load btop theme from active theme.";
|
||||
};
|
||||
waybar = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to load waybar CSS from active theme.";
|
||||
};
|
||||
mako = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to load mako config from active theme.";
|
||||
};
|
||||
kitty = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to load kitty config from active theme.";
|
||||
};
|
||||
alacritty = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to load alacritty config from active theme.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -27,8 +27,12 @@ in
|
||||
|
||||
services.displayManager.defaultSession = lib.mkDefault "hyprland-uwsm";
|
||||
|
||||
# autoLogin defaults off so hand-migrated configs (no installer-written
|
||||
# username) don't try to log in as a nonexistent "nomarchy" user. The
|
||||
# installer-generated system.nix sets both `enable = true;` and
|
||||
# `user = "$USERNAME";` at normal priority, overriding these defaults.
|
||||
services.displayManager.autoLogin = {
|
||||
enable = lib.mkDefault true;
|
||||
enable = lib.mkDefault false;
|
||||
user = lib.mkDefault "nomarchy";
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
include=~/.config/nomarchy/default/mako/core.ini
|
||||
|
||||
text-color={{ foreground }}
|
||||
border-color={{ accent }}
|
||||
background-color={{ background }}
|
||||
Reference in New Issue
Block a user