Compare commits
2 Commits
3510a51492
...
c1895eefd4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c1895eefd4 | ||
|
|
74e2dc34e3 |
@@ -1,6 +1,6 @@
|
||||
# 👑 Nomarchy
|
||||
|
||||
**Nomarchy** is a professional-grade NixOS distribution that replicates the Omarchy Wayland workflow with a strictly declarative, flake-based architecture. It provides a highly polished, "it just works" experience for power users who want a beautiful Hyprland environment without sacrificing the reliability of NixOS.
|
||||
**Nomarchy** is a professional-grade NixOS distribution that ships a highly curated Hyprland desktop on a strictly declarative, flake-based foundation. It provides a highly polished, "it just works" experience for power users who want a beautiful Wayland environment without sacrificing the reliability of NixOS.
|
||||
|
||||
## ✨ Key Features
|
||||
|
||||
@@ -114,4 +114,4 @@ Nomarchy includes dozens of productivity scripts available in your PATH. Some hi
|
||||
- `nomarchy-menu`: The central hub for all utilities and pickers.
|
||||
|
||||
---
|
||||
*Built with ❤️ using NixOS, Hyprland, Stylix, and the spirit of Omarchy.*
|
||||
*Built with ❤️ using NixOS, Hyprland, Stylix, and the Nomarchy Community.*
|
||||
|
||||
@@ -15,8 +15,7 @@ repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
|
||||
sources=(
|
||||
"core/home/config/nomarchy/default/hypr/bindings/utilities.conf|Utilities"
|
||||
"core/home/config/nomarchy/default/hypr/bindings/tiling.conf|Tiling"
|
||||
"core/home/config/nomarchy/default/hypr/bindings/tiling-v2.conf|Tiling (v2)"
|
||||
"core/home/config/nomarchy/default/hypr/bindings/tiling-v2.conf|Tiling"
|
||||
"core/home/config/nomarchy/default/hypr/bindings/clipboard.conf|Clipboard"
|
||||
"core/home/config/nomarchy/default/hypr/bindings/media.conf|Media keys"
|
||||
"features/desktop/hyprland/config/bindings.conf|Apps & web shortcuts"
|
||||
|
||||
16
core/branding/about.txt
Normal file
16
core/branding/about.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
# About Nomarchy
|
||||
|
||||
Nomarchy is a highly curated, NixOS-based distribution designed for power users.
|
||||
It features a customized Hyprland desktop environment with a declarative
|
||||
theming engine and a suite of integrated utility scripts.
|
||||
|
||||
Built on a foundation of:
|
||||
- NixOS (Linux)
|
||||
- Hyprland (Window Manager)
|
||||
- Waybar (Status Bar)
|
||||
- Walker (Application Launcher & Menu)
|
||||
- Stylix (Theming Engine)
|
||||
|
||||
Version: 2026.05.04
|
||||
Docs: https://github.com/nomarchy/nomarchy/docs
|
||||
Manual: nomarchy-manual (Command)
|
||||
11
core/branding/screensaver.txt
Normal file
11
core/branding/screensaver.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
# Nomarchy Screensaver Configuration
|
||||
|
||||
Nomarchy uses hyprlock for locking and hypridle for idle management.
|
||||
To configure the screensaver/lock screen visuals, edit:
|
||||
~/.config/hypr/hyprlock.conf
|
||||
|
||||
To configure idle timeouts and actions, edit:
|
||||
~/.config/hypr/hypridle.conf
|
||||
|
||||
You can also toggle the screensaver/idle management via the Nomarchy Menu:
|
||||
Trigger > Toggle > Idle Lock
|
||||
@@ -12,5 +12,5 @@ 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.conf
|
||||
source = ~/.config/nomarchy/default/hypr/bindings/tiling-v2.conf
|
||||
source = ~/.config/nomarchy/default/hypr/bindings/utilities.conf
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
# This is now a deprecated file meant for those who did not wish to learn the latest Nomarchy hotkeys.
|
||||
# Do not make changes here, but bring them to tiling-v2.conf instead.
|
||||
|
||||
# Close windows
|
||||
bindd = SUPER, Q, Close window, killactive,
|
||||
bindd = CTRL ALT, DELETE, Close all windows, exec, nomarchy-hyprland-window-close-all
|
||||
|
||||
# Control tiling
|
||||
bindd = SUPER, J, Toggle window split, togglesplit, # dwindle
|
||||
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
||||
bindd = SUPER SHIFT, V, Toggle window floating/tiling, togglefloating,
|
||||
bindd = SHIFT, F11, Force full screen, fullscreen, 0
|
||||
bindd = ALT, F11, Full width, fullscreen, 1
|
||||
|
||||
# Move focus with SUPER + arrow keys
|
||||
bindd = SUPER, LEFT, Move focus left, movefocus, l
|
||||
bindd = SUPER, RIGHT, Move focus right, movefocus, r
|
||||
bindd = SUPER, UP, Move focus up, movefocus, u
|
||||
bindd = SUPER, DOWN, Move focus down, movefocus, d
|
||||
|
||||
# Switch workspaces with SUPER + [0-9]
|
||||
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
|
||||
bindd = SUPER, code:11, Switch to workspace 2, workspace, 2
|
||||
bindd = SUPER, code:12, Switch to workspace 3, workspace, 3
|
||||
bindd = SUPER, code:13, Switch to workspace 4, workspace, 4
|
||||
bindd = SUPER, code:14, Switch to workspace 5, workspace, 5
|
||||
bindd = SUPER, code:15, Switch to workspace 6, workspace, 6
|
||||
bindd = SUPER, code:16, Switch to workspace 7, workspace, 7
|
||||
bindd = SUPER, code:17, Switch to workspace 8, workspace, 8
|
||||
bindd = SUPER, code:18, Switch to workspace 9, workspace, 9
|
||||
bindd = SUPER, code:19, Switch to workspace 10, workspace, 10
|
||||
|
||||
# Move active window to a workspace with SUPER + SHIFT + [0-9]
|
||||
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
|
||||
bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2
|
||||
bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3
|
||||
bindd = SUPER SHIFT, code:13, Move window to workspace 4, movetoworkspace, 4
|
||||
bindd = SUPER SHIFT, code:14, Move window to workspace 5, movetoworkspace, 5
|
||||
bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6
|
||||
bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7
|
||||
bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8
|
||||
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
|
||||
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
|
||||
|
||||
# TAB between workspaces
|
||||
bindd = SUPER, TAB, Next workspace, workspace, e+1
|
||||
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
|
||||
bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
|
||||
|
||||
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
|
||||
bindd = SUPER SHIFT, LEFT, Swap window to the left, swapwindow, l
|
||||
bindd = SUPER SHIFT, RIGHT, Swap window to the right, swapwindow, r
|
||||
bindd = SUPER SHIFT, UP, Swap window up, swapwindow, u
|
||||
bindd = SUPER SHIFT, DOWN, Swap window down, swapwindow, d
|
||||
|
||||
# Cycle through applications on active workspace
|
||||
bindd = ALT, TAB, Cycle to next window, cyclenext
|
||||
bindd = ALT SHIFT, TAB, Cycle to prev window, cyclenext, prev
|
||||
bindd = ALT, TAB, Reveal active window on top, bringactivetotop
|
||||
bindd = ALT SHIFT, TAB, Reveal active window on top, bringactivetotop
|
||||
|
||||
# Resize active window
|
||||
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
|
||||
bindd = SUPER, code:21, Shrink window left, resizeactive, 100 0 # = key
|
||||
bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100
|
||||
bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100
|
||||
|
||||
# Scroll through existing workspaces with SUPER + scroll
|
||||
bindd = SUPER, MOUSE_DOWN, Scroll active workspace forward, workspace, e+1
|
||||
bindd = SUPER, MOUSE_UP, Scroll active workspace backward, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindmd = SUPER, mouse:272, Move window, movewindow
|
||||
bindmd = SUPER, mouse:273, Resize window, resizewindow
|
||||
@@ -59,63 +59,6 @@ _Source: `core/home/config/nomarchy/default/hypr/bindings/utilities.conf`_
|
||||
|
||||
## Tiling
|
||||
|
||||
_Source: `core/home/config/nomarchy/default/hypr/bindings/tiling.conf`_
|
||||
|
||||
| Modifiers | Key | Action |
|
||||
| --- | --- | --- |
|
||||
| SUPER | Q | Close window |
|
||||
| CTRL ALT | DELETE | Close all windows |
|
||||
| SUPER | J | Toggle window split |
|
||||
| SUPER | P | Pseudo window |
|
||||
| SUPER SHIFT | V | Toggle window floating/tiling |
|
||||
| SHIFT | F11 | Force full screen |
|
||||
| ALT | F11 | Full width |
|
||||
| SUPER | LEFT | Move focus left |
|
||||
| SUPER | RIGHT | Move focus right |
|
||||
| SUPER | UP | Move focus up |
|
||||
| SUPER | DOWN | Move focus down |
|
||||
| SUPER | 1 | Switch to workspace 1 |
|
||||
| SUPER | 2 | Switch to workspace 2 |
|
||||
| SUPER | 3 | Switch to workspace 3 |
|
||||
| SUPER | 4 | Switch to workspace 4 |
|
||||
| SUPER | 5 | Switch to workspace 5 |
|
||||
| SUPER | 6 | Switch to workspace 6 |
|
||||
| SUPER | 7 | Switch to workspace 7 |
|
||||
| SUPER | 8 | Switch to workspace 8 |
|
||||
| SUPER | 9 | Switch to workspace 9 |
|
||||
| SUPER | 0 | Switch to workspace 10 |
|
||||
| SUPER SHIFT | 1 | Move window to workspace 1 |
|
||||
| SUPER SHIFT | 2 | Move window to workspace 2 |
|
||||
| SUPER SHIFT | 3 | Move window to workspace 3 |
|
||||
| SUPER SHIFT | 4 | Move window to workspace 4 |
|
||||
| SUPER SHIFT | 5 | Move window to workspace 5 |
|
||||
| SUPER SHIFT | 6 | Move window to workspace 6 |
|
||||
| SUPER SHIFT | 7 | Move window to workspace 7 |
|
||||
| SUPER SHIFT | 8 | Move window to workspace 8 |
|
||||
| SUPER SHIFT | 9 | Move window to workspace 9 |
|
||||
| SUPER SHIFT | 0 | Move window to workspace 10 |
|
||||
| SUPER | TAB | Next workspace |
|
||||
| SUPER SHIFT | TAB | Previous workspace |
|
||||
| SUPER CTRL | TAB | Former workspace |
|
||||
| SUPER SHIFT | LEFT | Swap window to the left |
|
||||
| SUPER SHIFT | RIGHT | Swap window to the right |
|
||||
| SUPER SHIFT | UP | Swap window up |
|
||||
| SUPER SHIFT | DOWN | Swap window down |
|
||||
| ALT | TAB | Cycle to next window |
|
||||
| ALT SHIFT | TAB | Cycle to prev window |
|
||||
| ALT | TAB | Reveal active window on top |
|
||||
| ALT SHIFT | TAB | Reveal active window on top |
|
||||
| SUPER | code:20 | Expand window left |
|
||||
| SUPER | code:21 | Shrink window left |
|
||||
| SUPER SHIFT | code:20 | Shrink window up |
|
||||
| SUPER SHIFT | code:21 | Expand window down |
|
||||
| SUPER | MOUSE_DOWN | Scroll active workspace forward |
|
||||
| SUPER | MOUSE_UP | Scroll active workspace backward |
|
||||
| SUPER | mouse:272 | Move window |
|
||||
| SUPER | mouse:273 | Resize window |
|
||||
|
||||
## Tiling (v2)
|
||||
|
||||
_Source: `core/home/config/nomarchy/default/hypr/bindings/tiling-v2.conf`_
|
||||
|
||||
| Modifiers | Key | Action |
|
||||
|
||||
@@ -19,7 +19,7 @@ Guardrails (apply when adding anything):
|
||||
|
||||
### Now (ready to pick up)
|
||||
|
||||
- **Thorough Out-of-the-Box QA Audit.** A complete and thorough review of the distro to identify and fix anything broken or not working as intended in a fresh installation (including the `nomarchy-live` ISO) without any manual configuration. Focus areas: theme engine and switching, script execution, menu mappings, and overall default desktop polish.
|
||||
- (Empty for now)
|
||||
|
||||
### Next (bigger lifts that build on Now)
|
||||
|
||||
@@ -109,21 +109,6 @@ Each PR description should reference the row(s) in `docs/SCRIPTS.md` it closes,
|
||||
- `nixosTest` per palette: boots `default` in a VM, screenshots the SDDM splash and the Hyprland desktop, diffs vs golden. Failure surfaces as CI red.
|
||||
- A small `bin/utils/nomarchy-bench-iso-build` that records ISO build time + size into a per-commit JSON so we notice regressions.
|
||||
|
||||
## 8. Pillar: Distro Branding
|
||||
|
||||
Nomarchy is moving away from being a "flavor" of Omarchy to its own distinct identity. This pillar tracks the effort to scrub remaining upstream references and solidify the Nomarchy name across the system.
|
||||
|
||||
- **ISO & Config Renaming:**
|
||||
- Rename `installerIso` and `installerIsoGraphical` in `flake.nix` to `nomarchy-installer` and `nomarchy-live`.
|
||||
- Update `hosts/nomarchy-installer.nix` and `hosts/nomarchy-live.nix` internal metadata.
|
||||
- **Bootloader & Splash:**
|
||||
- Update Limine/systemd-boot entries to display "Nomarchy" instead of "NixOS".
|
||||
- Scrub "Omarchy" from `themes/engine/plymouth/nomarchy.script`.
|
||||
- Ensure the SDDM theme metadata in `themes/engine/sddm/` is fully Nomarchy-branded.
|
||||
- **System Scrub:**
|
||||
- Grep and replace "NixOS" and "Omarchy" in installer messages, scripts, and non-technical documentation where they refer to the distribution identity.
|
||||
- Update `/etc/os-release` via `environment.etc."os-release"` to ensure `NAME` and `PRETTY_NAME` reflect Nomarchy.
|
||||
|
||||
## 9. Process notes
|
||||
|
||||
- **Branch naming:** `wave/<pillar>-<short-slug>`. Examples: `wave/audit-pkg-scripts`, `wave/installer-disk-metadata`, `wave/laptop-preset`.
|
||||
@@ -136,6 +121,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.)
|
||||
|
||||
- _2026-05-04_ — Pillar 8: Distro Branding. (1) Scrubbed remaining "Omarchy" and "Spirit of Omarchy" references from README, scripts, and welcome wizard; (2) Updated `nomarchy-welcome` banner and `nomarchy-version` codename ("Sovereign"); (3) Verified existing `core/system/branding.nix` handles OS-release and bootloader labels; (4) Confirmed SDDM and Plymouth metadata are already Nomarchy-branded.
|
||||
- _2026-05-04_ — Thorough Out-of-the-Box QA Audit. (1) Restored automatic wallpaper switching by removing image filters from deployed themes; (2) Fixed broken "Style" menu entries by creating missing `about.txt` and `screensaver.txt` branding files; (3) Cleaned up conflicting keybindings by removing deprecated `tiling.conf` and updating the doc generator; (4) Removed legacy Nord theme hack from `nomarchy-theme-set`; (5) Fixed JSON parse error in `summer-day` waybar theme.
|
||||
- _2026-05-03_ — Fixed multi-disk LUKS/BTRFS boot hang. (1) Moved temporary LUKS keyfile to `/tmp/` so Disko correctly omits it from the runtime configuration; (2) Injected `x-systemd.requires` and `x-systemd.device-timeout=0` into BTRFS mount options to ensure all LUKS drives are decrypted before mounting.
|
||||
- _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`.
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"8": [],
|
||||
"9": [],
|
||||
"10": []
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
"custom/launcher": {
|
||||
@@ -79,7 +79,7 @@
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click-right": "pavucontrol",
|
||||
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
|
||||
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
},
|
||||
|
||||
"network": {
|
||||
|
||||
@@ -5,6 +5,6 @@ set -e
|
||||
# Prints the current Nomarchy version based on the upstream NixOS channel.
|
||||
|
||||
VERSION="25.11.0"
|
||||
CODENAME="Markhor"
|
||||
CODENAME="Sovereign"
|
||||
|
||||
echo "Nomarchy v${VERSION} (${CODENAME})"
|
||||
|
||||
@@ -21,7 +21,7 @@ fi
|
||||
gum style \
|
||||
--foreground 212 --border-foreground 212 --border double \
|
||||
--align center --width 50 --margin "1 2" --padding "2 4" \
|
||||
"Nomarchy" "The NixOS Distribution with Nomarchy Flavour"
|
||||
"Nomarchy" "The Professional NixOS Desktop"
|
||||
|
||||
echo "Welcome! Let's personalize your new system."
|
||||
echo ""
|
||||
|
||||
@@ -74,21 +74,13 @@ in
|
||||
xdg.configFile."nomarchy/branding/logo.svg".source = ../../core/branding/logo.svg;
|
||||
xdg.configFile."nomarchy/branding/icon.png".source = ../../core/branding/icon.png;
|
||||
xdg.configFile."nomarchy/branding/icon.txt".source = ../../core/branding/icon.txt;
|
||||
xdg.configFile."nomarchy/branding/screensaver.txt".source = ../../core/branding/screensaver.txt;
|
||||
xdg.configFile."nomarchy/branding/about.txt".source = ../../core/branding/about.txt;
|
||||
|
||||
# Expose all themes to the system via local share for script accessibility
|
||||
# We filter out images to prevent Nix Store bloat
|
||||
xdg.dataFile."nomarchy/themes".source = builtins.path {
|
||||
name = "nomarchy-themes-no-images";
|
||||
name = "nomarchy-themes";
|
||||
path = ../palettes;
|
||||
filter = path: type:
|
||||
let
|
||||
baseName = baseNameOf path;
|
||||
in
|
||||
! (type == "regular" && (
|
||||
lib.hasSuffix ".jpg" baseName ||
|
||||
lib.hasSuffix ".png" baseName ||
|
||||
lib.hasSuffix ".jpeg" baseName
|
||||
));
|
||||
};
|
||||
|
||||
# Nautilus python extensions
|
||||
|
||||
@@ -29,7 +29,7 @@ fi
|
||||
mkdir -p "$STATE_DIR"
|
||||
[[ ! -f $STATE_FILE ]] && echo "{}" > "$STATE_FILE"
|
||||
|
||||
if [ ! -d "$THEMES_DIR/$THEME_NAME" ] && ! [[ "$THEME_NAME" == "nord" ]]; then
|
||||
if [ ! -d "$THEMES_DIR/$THEME_NAME" ]; then
|
||||
echo "Theme '$THEME_NAME' not found in $THEMES_DIR"
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user