fix(distro): fix /etc/nixos ownership, theme discovery, and CLI wrappers
- installer: set recursive ownership of /etc/nixos to main user post-install - themes: fix NOMARCHY_PATH and discovery logic for Lua theme menu - scripts: update CLI wrappers (font, theme, wallpaper) to use Walker menus - core: remove obsolete NOMARCHY_PATH and cleanup dead code - features: add pkgs.lua for Walker and remove obsolete switcher.nix - docs: update ROADMAP.md, SCRIPTS.md and STRUCTURE.md
This commit is contained in:
@@ -3,5 +3,4 @@ export SUDO_EDITOR="$EDITOR"
|
|||||||
export BAT_THEME=ansi
|
export BAT_THEME=ansi
|
||||||
|
|
||||||
# Duplicated from .config/uwsm/env so SSH works too
|
# Duplicated from .config/uwsm/env so SSH works too
|
||||||
export NOMARCHY_PATH=$HOME/.local/share/nomarchy
|
export PATH=$PATH:$HOME/.local/bin
|
||||||
export PATH=$NOMARCHY_PATH/bin:$PATH:$HOME/.local/bin
|
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ end
|
|||||||
function GetEntries()
|
function GetEntries()
|
||||||
local entries = {}
|
local entries = {}
|
||||||
local user_theme_dir = os.getenv("HOME") .. "/.config/nomarchy/themes"
|
local user_theme_dir = os.getenv("HOME") .. "/.config/nomarchy/themes"
|
||||||
local nomarchy_path = os.getenv("NOMARCHY_PATH") or ""
|
local nomarchy_path = os.getenv("NOMARCHY_PATH") or "/etc/nixos"
|
||||||
local default_theme_dir = nomarchy_path .. "/themes"
|
local default_theme_dir = nomarchy_path .. "/themes/palettes"
|
||||||
|
|
||||||
local seen_themes = {}
|
local seen_themes = {}
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ pkgs.stdenv.mkDerivation {
|
|||||||
if [ -f "$file" ]; then
|
if [ -f "$file" ]; then
|
||||||
wrapProgram "$file" \
|
wrapProgram "$file" \
|
||||||
--prefix PATH : "$deps" \
|
--prefix PATH : "$deps" \
|
||||||
--set NOMARCHY_PATH "/etc/nixos/nomarchy"
|
--set NOMARCHY_PATH "/etc/nixos"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -136,6 +136,8 @@ Nomarchy is moving away from being a "flavor" of Omarchy to its own distinct ide
|
|||||||
|
|
||||||
(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-03_ — Fixed CLI wrappers and removed obsolete code. (1) Updated `nomarchy-font`, `nomarchy-theme`, and `nomarchy-wallpaper` CLI wrappers to use modern Walker menus; (2) Removed the obsolete and broken `themes/engine/switcher.nix` and its associated Nix-inlined scripts; (3) Cleaned up remaining `$NOMARCHY_PATH` references from the Omarchy era.
|
||||||
|
- _2026-05-03_ — Fixed `/etc/nixos` ownership after installation. Added a `chown -R $USERNAME:users /etc/nixos` step via `nixos-enter` at the end of `installer/install.sh` so the main user owns their configuration and can run `home-manager` commands without `sudo`.
|
||||||
- _2026-05-01_ — Installer & Script Audit Polish. (1) Fixed a critical bash dynamic scoping bug in `installer/install.sh` where `rc=0` assignments inside functions (Impermanence, Form Factor) were clobbering the main loop's return code, causing the installer to abort when "No" was selected; (2) Polished `hosts/nomarchy-live.nix` with auto-login for the `nixos` user and passwordless sudo for the `wheel` group; (3) Repurposed `nomarchy-toggle-suspend` to execute `systemctl suspend` directly and updated `nomarchy-menu` to reflect this; (4) Updated `nomarchy-launch-wifi` to use `nmtui` in Alacritty; (5) Regenerated `docs/SCRIPTS.md` to reflect the updated script mappings.
|
- _2026-05-01_ — Installer & Script Audit Polish. (1) Fixed a critical bash dynamic scoping bug in `installer/install.sh` where `rc=0` assignments inside functions (Impermanence, Form Factor) were clobbering the main loop's return code, causing the installer to abort when "No" was selected; (2) Polished `hosts/nomarchy-live.nix` with auto-login for the `nixos` user and passwordless sudo for the `wheel` group; (3) Repurposed `nomarchy-toggle-suspend` to execute `systemctl suspend` directly and updated `nomarchy-menu` to reflect this; (4) Updated `nomarchy-launch-wifi` to use `nmtui` in Alacritty; (5) Regenerated `docs/SCRIPTS.md` to reflect the updated script mappings.
|
||||||
- _2026-04-30_ — `set -e` sweep across `nomarchy-*` scripts. Added `set -e` to 142 of 169 bash scripts that lacked it (27 already had it). Halts a class of "command failed silently in the middle of a chain, system left in half-applied state" bugs that produced repeat-fix commits. One deliberate exception: `nomarchy-menu` runs without `set -e` because it's an interactive UX loop where action failures should re-display the menu rather than abort the script. Pre-commit hook now enforces `bash -n` + `shellcheck --severity=error` so future scripts can't regress this.
|
- _2026-04-30_ — `set -e` sweep across `nomarchy-*` scripts. Added `set -e` to 142 of 169 bash scripts that lacked it (27 already had it). Halts a class of "command failed silently in the middle of a chain, system left in half-applied state" bugs that produced repeat-fix commits. One deliberate exception: `nomarchy-menu` runs without `set -e` because it's an interactive UX loop where action failures should re-display the menu rather than abort the script. Pre-commit hook now enforces `bash -n` + `shellcheck --severity=error` so future scripts can't regress this.
|
||||||
- _2026-04-30_ — Installer disk-phase reliability. Hardened `installer/install.sh` and consolidated the disko configs: (1) `select_disk` now hides the live-ISO boot device(s) so the installer can't format its own boot media (`NOMARCHY_INSTALL_ALLOW_ISO_TARGET=1` to override); (2) added a 10 GiB minimum-capacity preflight; (3) `prewipe_target_drive` enumerates every active dm-crypt mapping backed by the target drive and closes them, drops the silent `|| true` from `wipefs`/`sgdisk`/`dd`, bounds `udevadm settle` to 30s, and refuses to continue if anything is still mounted; (4) wrapped the disko call in `run_disko_with_retry` with last-30-lines + Retry / View full log / Abort dialog on failure; (5) replaced the sed-templated `disko-golden.nix` + `disko-btrfs-multi.nix` pair with a single `disko-config.nix` Nix function called via `--argstr mainDrive … --arg extraDrives '[…]'` — eliminates a class of escaping bugs (cf. `3aadc36`); (6) added an EXIT trap so the tmpfs LUKS key file is removed even on early abort.
|
- _2026-04-30_ — Installer disk-phase reliability. Hardened `installer/install.sh` and consolidated the disko configs: (1) `select_disk` now hides the live-ISO boot device(s) so the installer can't format its own boot media (`NOMARCHY_INSTALL_ALLOW_ISO_TARGET=1` to override); (2) added a 10 GiB minimum-capacity preflight; (3) `prewipe_target_drive` enumerates every active dm-crypt mapping backed by the target drive and closes them, drops the silent `|| true` from `wipefs`/`sgdisk`/`dd`, bounds `udevadm settle` to 30s, and refuses to continue if anything is still mounted; (4) wrapped the disko call in `run_disko_with_retry` with last-30-lines + Retry / View full log / Abort dialog on failure; (5) replaced the sed-templated `disko-golden.nix` + `disko-btrfs-multi.nix` pair with a single `disko-config.nix` Nix function called via `--argstr mainDrive … --arg extraDrives '[…]'` — eliminates a class of escaping bugs (cf. `3aadc36`); (6) added an EXIT trap so the tmpfs LUKS key file is removed even on early abort.
|
||||||
|
|||||||
@@ -54,8 +54,8 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
|
|||||||
| `nomarchy-drive-info` | `features/scripts/utils` | features/scripts/utils/nomarchy-drive-select | `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-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-drive-set-password` | `features/scripts/utils` | features/scripts/utils/nomarchy-drive-select,features/scripts/utils/nomarchy-menu | `kept` | |
|
||||||
| `nomarchy-env-update` | `features/scripts/utils` | core/home/bash.nix,core/system/scripts/nomarchy-pkg-add, +7 more | `kept` | |
|
| `nomarchy-env-update` | `core/system/scripts` | 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, +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-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` | |
|
| `nomarchy-font-list` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-font, +2 more | `kept` | |
|
||||||
| `nomarchy-font-set` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-font, +4 more | `kept` | |
|
| `nomarchy-font-set` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-font, +4 more | `kept` | |
|
||||||
@@ -87,7 +87,7 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
|
|||||||
| `nomarchy-launch-or-focus-webapp` | `features/scripts/utils` | features/desktop/hyprland/config/bindings.conf | `kept` | |
|
| `nomarchy-launch-or-focus-webapp` | `features/scripts/utils` | features/desktop/hyprland/config/bindings.conf | `kept` | |
|
||||||
| `nomarchy-launch-screensaver` | `features/scripts/utils` | features/desktop/idle.nix,features/scripts/utils/nomarchy-menu | `kept` | |
|
| `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-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, +1 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, +7 more | `kept` | |
|
| `nomarchy-launch-webapp` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/plain-bindings.conf,features/desktop/hyprland/config/bindings.conf, +7 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-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-lock-screen` | `features/scripts/utils` | core/home/config/nomarchy/default/hypr/bindings/utilities.conf,core/home/config/nomarchy/extensions/menu.sh, +3 more | `kept` | |
|
||||||
@@ -104,7 +104,7 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
|
|||||||
| `nomarchy-pkg-install` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md | `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` | `core/system/scripts` | features/scripts/utils/nomarchy-pkg-drop | `kept` | |
|
||||||
| `nomarchy-powerprofiles-list` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
|
| `nomarchy-powerprofiles-list` | `core/system/scripts` | features/scripts/utils/nomarchy-menu | `kept` | |
|
||||||
| `nomarchy-preflight-migration` | `core/system/scripts` | features/scripts/utils/nomarchy-env-update,features/scripts/utils/nomarchy-migrate-state | `kept` | |
|
| `nomarchy-preflight-migration` | `core/system/scripts` | core/system/scripts/nomarchy-env-update,features/scripts/utils/nomarchy-migrate-state | `kept` | |
|
||||||
| `nomarchy-refresh-config` | `features/scripts/utils` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-refresh-fastfetch | `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` | — | `unused?` | |
|
| `nomarchy-refresh-fastfetch` | `features/scripts/utils` | — | `unused?` | |
|
||||||
| `nomarchy-refresh-hyprland` | `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` | |
|
||||||
@@ -150,16 +150,16 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
|
|||||||
| `nomarchy-test-installer` | `features/scripts/utils` | features/scripts/utils/nomarchy-test-vm,README.md | `kept` | |
|
| `nomarchy-test-installer` | `features/scripts/utils` | features/scripts/utils/nomarchy-test-vm,README.md | `kept` | |
|
||||||
| `nomarchy-test-live-iso` | `features/scripts/utils` | hosts/nomarchy-live.nix | `kept` | |
|
| `nomarchy-test-live-iso` | `features/scripts/utils` | hosts/nomarchy-live.nix | `kept` | |
|
||||||
| `nomarchy-test-vm` | `features/scripts/utils` | features/scripts/utils/nomarchy-test-live-iso | `kept` | |
|
| `nomarchy-test-vm` | `features/scripts/utils` | features/scripts/utils/nomarchy-test-live-iso | `kept` | |
|
||||||
| `nomarchy-theme` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts,core/home/config/nomarchy/default/elephant/nomarchy_background_selector.lua, +17 more | `kept` | |
|
| `nomarchy-theme` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts,core/home/config/nomarchy/default/elephant/nomarchy_background_selector.lua, +16 more | `kept` | |
|
||||||
| `nomarchy-theme-bg-install` | `themes/engine/scripts` | — | `unused?` | |
|
| `nomarchy-theme-bg-install` | `themes/engine/scripts` | — | `unused?` | |
|
||||||
| `nomarchy-theme-bg-next` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-wallpaper, +1 more | `kept` | |
|
| `nomarchy-theme-bg-next` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-wallpaper, +1 more | `kept` | |
|
||||||
| `nomarchy-theme-bg-set` | `themes/engine/scripts` | core/home/config/nomarchy/default/elephant/nomarchy_background_selector.lua | `kept` | |
|
| `nomarchy-theme-bg-set` | `themes/engine/scripts` | core/home/config/nomarchy/default/elephant/nomarchy_background_selector.lua,features/scripts/utils/nomarchy-wallpaper | `kept` | |
|
||||||
| `nomarchy-theme-current` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
| `nomarchy-theme-current` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||||
| `nomarchy-theme-install` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
| `nomarchy-theme-install` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
|
||||||
| `nomarchy-theme-list` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-theme, +1 more | `kept` | |
|
| `nomarchy-theme-list` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-theme, +1 more | `kept` | |
|
||||||
| `nomarchy-theme-refresh` | `themes/engine/scripts` | — | `unused?` | |
|
| `nomarchy-theme-refresh` | `themes/engine/scripts` | — | `unused?` | |
|
||||||
| `nomarchy-theme-remove` | `themes/engine/scripts` | — | `unused?` | |
|
| `nomarchy-theme-remove` | `themes/engine/scripts` | — | `unused?` | |
|
||||||
| `nomarchy-theme-set` | `themes/engine/scripts` | core/home/config/nomarchy/default/elephant/nomarchy_themes.lua,core/home/config/nomarchy-skill/SKILL.md, +9 more | `kept` | |
|
| `nomarchy-theme-set` | `themes/engine/scripts` | core/home/config/nomarchy/default/elephant/nomarchy_themes.lua,core/home/config/nomarchy-skill/SKILL.md, +8 more | `kept` | |
|
||||||
| `nomarchy-theme-set-keyboard` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot | `kept` | |
|
| `nomarchy-theme-set-keyboard` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot | `kept` | |
|
||||||
| `nomarchy-theme-set-keyboard-asus-rog` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot,themes/engine/scripts/nomarchy-theme-set-keyboard | `kept` | |
|
| `nomarchy-theme-set-keyboard-asus-rog` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot,themes/engine/scripts/nomarchy-theme-set-keyboard | `kept` | |
|
||||||
| `nomarchy-theme-set-keyboard-f16` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot,themes/engine/scripts/nomarchy-theme-set-keyboard | `kept` | |
|
| `nomarchy-theme-set-keyboard-f16` | `themes/engine/scripts` | features/scripts/utils/nomarchy-on-boot,themes/engine/scripts/nomarchy-theme-set-keyboard | `kept` | |
|
||||||
@@ -189,7 +189,7 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
|
|||||||
| `nomarchy-voxtype-model` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc | `kept` | |
|
| `nomarchy-voxtype-model` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc | `kept` | |
|
||||||
| `nomarchy-voxtype-remove` | `features/scripts/utils` | — | `unused?` | |
|
| `nomarchy-voxtype-remove` | `features/scripts/utils` | — | `unused?` | |
|
||||||
| `nomarchy-voxtype-status` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc | `kept` | |
|
| `nomarchy-voxtype-status` | `features/scripts/utils` | features/desktop/waybar/config/config.jsonc,features/desktop/waybar/themes/summer-night/config.jsonc | `kept` | |
|
||||||
| `nomarchy-wallpaper` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts,core/home/config/nomarchy/default/hypr/autostart.conf, +3 more | `kept` | |
|
| `nomarchy-wallpaper` | `features/scripts/utils` | bin/utils/nomarchy-docs-scripts,core/home/config/nomarchy/default/hypr/autostart.conf, +2 more | `kept` | |
|
||||||
| `nomarchy-webapp-handler-hey` | `features/scripts/utils` | — | `unused?` | |
|
| `nomarchy-webapp-handler-hey` | `features/scripts/utils` | — | `unused?` | |
|
||||||
| `nomarchy-webapp-handler-zoom` | `features/scripts/utils` | — | `unused?` | |
|
| `nomarchy-webapp-handler-zoom` | `features/scripts/utils` | — | `unused?` | |
|
||||||
| `nomarchy-webapp-install` | `features/scripts/utils` | features/scripts/utils/nomarchy-webapp-remove-all | `kept` | |
|
| `nomarchy-webapp-install` | `features/scripts/utils` | features/scripts/utils/nomarchy-webapp-remove-all | `kept` | |
|
||||||
|
|||||||
@@ -93,7 +93,6 @@ The theming system is the "soul" of Nomarchy, providing dynamic, consistent aest
|
|||||||
### `themes/engine/` (The Logic)
|
### `themes/engine/` (The Logic)
|
||||||
- **`loader.nix`**: The core theme loader. It reads the active theme from state and selectively deploys app-specific themed configs (e.g., `btop.theme`, `kitty.conf`) to `~/.config/`.
|
- **`loader.nix`**: The core theme loader. It reads the active theme from state and selectively deploys app-specific themed configs (e.g., `btop.theme`, `kitty.conf`) to `~/.config/`.
|
||||||
- **`stylix.nix`**: Integration with Stylix for base color palette and wallpaper management.
|
- **`stylix.nix`**: Integration with Stylix for base color palette and wallpaper management.
|
||||||
- **`switcher.nix`**: Provides the `nomarchy-theme-selector` and `nomarchy-wallpaper-selector` tools.
|
|
||||||
- **`plymouth.nix`** & **`sddm.nix`**: System-level theming for the boot screen and login manager.
|
- **`plymouth.nix`** & **`sddm.nix`**: System-level theming for the boot screen and login manager.
|
||||||
|
|
||||||
### `themes/palettes/` (The Data)
|
### `themes/palettes/` (The Data)
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
home.packages = [ pkgs.lua ];
|
||||||
|
|
||||||
programs.walker = {
|
programs.walker = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
runAsService = lib.mkDefault true;
|
runAsService = lib.mkDefault true;
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ in
|
|||||||
../themes/engine/files.nix
|
../themes/engine/files.nix
|
||||||
../themes/engine/scripts.nix
|
../themes/engine/scripts.nix
|
||||||
../themes/engine/stylix.nix
|
../themes/engine/stylix.nix
|
||||||
../themes/engine/switcher.nix
|
|
||||||
./apps/alacritty/default.nix
|
./apps/alacritty/default.nix
|
||||||
./apps/btop/default.nix
|
./apps/btop/default.nix
|
||||||
./apps/chromium/default.nix
|
./apps/chromium/default.nix
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ case "$COMMAND" in
|
|||||||
nomarchy-font-list
|
nomarchy-font-list
|
||||||
;;
|
;;
|
||||||
selector|*)
|
selector|*)
|
||||||
nomarchy-font-selector
|
theme=$(echo -e "$(nomarchy-font-list)" | nomarchy-launch-walker --dmenu --width 350 -p "Font...")
|
||||||
|
if [[ -n "$theme" && "$theme" != "CNCLD" ]]; then
|
||||||
|
nomarchy-font-set "$theme"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
COMMAND="$1"
|
COMMAND="$1"
|
||||||
NOMARCHY_PATH=${NOMARCHY_PATH:-$HOME/.local/share/nomarchy}
|
|
||||||
|
|
||||||
if [[ -z $COMMAND ]]; then
|
if [[ -z $COMMAND ]]; then
|
||||||
echo "Usage: nomarchy-snapshot <create|restore>" >&2
|
echo "Usage: nomarchy-snapshot <create|restore>" >&2
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ case "$COMMAND" in
|
|||||||
nomarchy-theme-list
|
nomarchy-theme-list
|
||||||
;;
|
;;
|
||||||
selector|*)
|
selector|*)
|
||||||
nomarchy-theme-selector
|
nomarchy-launch-walker -m menus:nomarchythemes --width 800 --minheight 400
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -10,14 +10,12 @@ case "$COMMAND" in
|
|||||||
set)
|
set)
|
||||||
shift
|
shift
|
||||||
# Wallpaper set usually involves writing to state.json and calling swww
|
# Wallpaper set usually involves writing to state.json and calling swww
|
||||||
# We can reuse the logic from nomarchy-wallpaper-selector if we extract it,
|
nomarchy-theme-bg-set "$@"
|
||||||
# but for now let's just trigger the selector.
|
|
||||||
nomarchy-wallpaper-selector
|
|
||||||
;;
|
;;
|
||||||
next)
|
next)
|
||||||
nomarchy-theme-bg-next
|
nomarchy-theme-bg-next
|
||||||
;;
|
;;
|
||||||
selector|*)
|
selector|*)
|
||||||
nomarchy-wallpaper-selector
|
nomarchy-launch-walker -m menus:nomarchyBackgroundSelector --width 800 --minheight 400
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -40,12 +40,6 @@ install_windows() {
|
|||||||
|
|
||||||
mkdir -p "$HOME/.windows"
|
mkdir -p "$HOME/.windows"
|
||||||
mkdir -p "$HOME/.config/windows"
|
mkdir -p "$HOME/.config/windows"
|
||||||
mkdir -p "$HOME/.local/share/applications/icons"
|
|
||||||
|
|
||||||
# Install Windows VM icon and desktop file
|
|
||||||
if [[ -f $NOMARCHY_PATH/applications/icons/windows.png ]]; then
|
|
||||||
cp "$NOMARCHY_PATH/applications/icons/windows.png" "$HOME/.local/share/applications/icons/windows.png"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat << EOF | tee "$HOME/.local/share/applications/windows-vm.desktop" > /dev/null
|
cat << EOF | tee "$HOME/.local/share/applications/windows-vm.desktop" > /dev/null
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
|
|||||||
@@ -1274,6 +1274,11 @@ execute_installation() {
|
|||||||
info "The system is installed; fix /etc/nixos before rebooting if possible."
|
info "The system is installed; fix /etc/nixos before rebooting if possible."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 9.10 Set ownership of /etc/nixos to the main user
|
||||||
|
info "Setting ownership of /etc/nixos for $USERNAME..."
|
||||||
|
nixos-enter --root /mnt -- chown -R "$USERNAME:users" /etc/nixos
|
||||||
|
success "Ownership updated"
|
||||||
|
|
||||||
success "Installation complete!"
|
success "Installation complete!"
|
||||||
rm -f "$STATE_FILE"
|
rm -f "$STATE_FILE"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ let
|
|||||||
if [ -f "$file" ]; then
|
if [ -f "$file" ]; then
|
||||||
wrapProgram "$file" \
|
wrapProgram "$file" \
|
||||||
--prefix PATH : "$deps" \
|
--prefix PATH : "$deps" \
|
||||||
--set NOMARCHY_PATH "/etc/nixos/nomarchy"
|
--set NOMARCHY_PATH "/etc/nixos"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ set -e
|
|||||||
|
|
||||||
{
|
{
|
||||||
find ~/.config/nomarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) -printf '%f\n'
|
find ~/.config/nomarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) -printf '%f\n'
|
||||||
find "$NOMARCHY_PATH/assets/themes/" -mindepth 1 -maxdepth 1 -type d -printf '%f\n'
|
find "$NOMARCHY_PATH/themes/palettes/" -mindepth 1 -maxdepth 1 -type d -printf '%f\n'
|
||||||
} | sort -u | while read -r name; do
|
} | sort -u | while read -r name; do
|
||||||
echo "$name" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g'
|
echo "$name" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g'
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
nomarchyLib = import ../../lib { inherit lib; };
|
|
||||||
themeList = builtins.concatStringsSep "\\n" nomarchyLib.themeNames;
|
|
||||||
|
|
||||||
nomarchy-theme-selector = pkgs.writeShellScriptBin "nomarchy-theme-selector" ''
|
|
||||||
SELECTED_THEME=$(echo -e "${themeList}" | walker --dmenu)
|
|
||||||
|
|
||||||
if [ -n "$SELECTED_THEME" ]; then
|
|
||||||
nomarchy-theme-set "$SELECTED_THEME"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
nomarchy-font-selector = pkgs.writeShellScriptBin "nomarchy-font-selector" ''
|
|
||||||
STATE_DIR="${config.home.homeDirectory}/.config/nomarchy"
|
|
||||||
STATE_FILE="$STATE_DIR/state.json"
|
|
||||||
|
|
||||||
mkdir -p "$STATE_DIR"
|
|
||||||
[[ ! -f $STATE_FILE ]] && echo "{}" > "$STATE_FILE"
|
|
||||||
|
|
||||||
# Simple list of common nerd fonts, could be expanded
|
|
||||||
FONTS="JetBrainsMono Nerd Font\nRobotoMono Nerd Font\nFiraCode Nerd Font\nUbuntuMono Nerd Font"
|
|
||||||
SELECTED_FONT=$(echo -e "$FONTS" | walker --dmenu)
|
|
||||||
|
|
||||||
if [ -n "$SELECTED_FONT" ]; then
|
|
||||||
TMP_JSON=$(mktemp)
|
|
||||||
jq --arg font "$SELECTED_FONT" '.font = $font' "$STATE_FILE" > "$TMP_JSON" && mv "$TMP_JSON" "$STATE_FILE"
|
|
||||||
nomarchy-env-update
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
nomarchy-wallpaper-selector = pkgs.writeShellScriptBin "nomarchy-wallpaper-selector" ''
|
|
||||||
STATE_DIR="${config.home.homeDirectory}/.config/nomarchy"
|
|
||||||
STATE_FILE="$STATE_DIR/state.json"
|
|
||||||
THEMES_DIR="${config.xdg.dataHome}/nomarchy/themes"
|
|
||||||
|
|
||||||
mkdir -p "$STATE_DIR"
|
|
||||||
[[ ! -f $STATE_FILE ]] && echo "{}" > "$STATE_FILE"
|
|
||||||
|
|
||||||
# List all images in all themes backgrounds
|
|
||||||
# We search in the system-wide flake source for distro wallpapers to avoid Nix Store bloat
|
|
||||||
WALLPAPERS=$(find "${config.xdg.dataHome}/nomarchy/themes" -type f \( -name "*.jpg" -o -name "*.png" \) 2>/dev/null)
|
|
||||||
DISTRO_THEMES="/etc/nixos/nomarchy/assets/themes"
|
|
||||||
if [ -d "$DISTRO_THEMES" ]; then
|
|
||||||
WALLPAPERS="$WALLPAPERS\n$(find "$DISTRO_THEMES" -type f \( -name "*.jpg" -o -name "*.png" \))"
|
|
||||||
fi
|
|
||||||
# Include user themes if they exist
|
|
||||||
if [ -d "${config.home.homeDirectory}/.config/nomarchy/themes" ]; then
|
|
||||||
WALLPAPERS="$WALLPAPERS\n$(find "${config.home.homeDirectory}/.config/nomarchy/themes" -type f \( -name "*.jpg" -o -name "*.png" \))"
|
|
||||||
fi
|
|
||||||
SELECTED_WP=$(echo -e "$WALLPAPERS" | walker --dmenu)
|
|
||||||
|
|
||||||
if [ -n "$SELECTED_WP" ]; then
|
|
||||||
TMP_JSON=$(mktemp)
|
|
||||||
jq --arg wp "$SELECTED_WP" '.wallpaper = $wp' "$STATE_FILE" > "$TMP_JSON" && mv "$TMP_JSON" "$STATE_FILE"
|
|
||||||
swww img "$SELECTED_WP" --transition-type outer --transition-pos 0.85,0.97 --transition-step 90 &
|
|
||||||
nomarchy-env-update
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = [ nomarchy-theme-selector nomarchy-font-selector nomarchy-wallpaper-selector ];
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user