docs: move remaining Ironclad verifications to Shipped
All checks were successful
Check / eval-and-lint (push) Successful in 6m45s
All checks were successful
Check / eval-and-lint (push) Successful in 6m45s
This commit is contained in:
@@ -11,12 +11,15 @@ in
|
|||||||
i18n.inputMethod = {
|
i18n.inputMethod = {
|
||||||
enable = true;
|
enable = true;
|
||||||
type = "fcitx5";
|
type = "fcitx5";
|
||||||
fcitx5.addons = with pkgs; [
|
fcitx5 = {
|
||||||
fcitx5-mozc # Japanese
|
waylandFrontend = true;
|
||||||
kdePackages.fcitx5-chinese-addons
|
addons = with pkgs; [
|
||||||
fcitx5-table-extra # Hanyu/Cangjie/etc.
|
fcitx5-mozc # Japanese
|
||||||
fcitx5-gtk # GTK4/3 client
|
kdePackages.fcitx5-chinese-addons
|
||||||
];
|
fcitx5-table-extra # Hanyu/Cangjie/etc.
|
||||||
|
fcitx5-gtk # GTK4/3 client
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,9 +19,7 @@ Guardrails (apply when adding anything):
|
|||||||
|
|
||||||
### Now (ready to pick up)
|
### Now (ready to pick up)
|
||||||
|
|
||||||
- **Ironclad: Multi-Monitor Integrity.** Verify Hyprland, Waybar, and Walker behavior on dual-screen setups. Ensure launchers follow the cursor and the bar handles secondary monitors gracefully.
|
_(empty — all entries shipped or moved to Later)_
|
||||||
- **Ironclad: Input Method (Fcitx5) Functional Pass.** Prove that non-ASCII input (Pinyin/Mozc) is functional in the live VM. Fix any Wayland-specific D-Bus or environment issues.
|
|
||||||
- **Ironclad: Overlap & Conflict Proofing.** Verify that manual Nix overrides in `home.nix` correctly and consistently take precedence over the machine-managed `nomarchy-state.nix`.
|
|
||||||
|
|
||||||
### Next (bigger lifts that build on Now)
|
### Next (bigger lifts that build on Now)
|
||||||
|
|
||||||
@@ -179,6 +177,9 @@ Pillar is **done** when every component has had a live VM pass and the roadmap c
|
|||||||
|
|
||||||
(Move items here when they land — keep them brief, link the commit/PR.)
|
(Move items here when they land — keep them brief, link the commit/PR.)
|
||||||
|
|
||||||
|
- _2026-05-31_ — **Ironclad: Overlap & Conflict Proofing complete.** Verified that manual Nix overrides in `home.nix` take precedence over UI choices without causing evaluation errors. **Fixed:** Updated `nomarchy-sync-nix-state` and the installer to wrap all machine-generated values in `nomarchy-state.nix` with `lib.mkDefault`. This ensures a user can manually set `nomarchy.theme = "catppuccin"` in their config, safely overriding the UI state without triggering "conflicting definition values" errors in the module system.
|
||||||
|
- _2026-05-31_ — **Ironclad: Input Method (Fcitx5) Functional Pass complete.** Verified that non-ASCII input (Pinyin/Mozc) is functional in the live VM. **Fixed:** Enabled `i18n.inputMethod.fcitx5.waylandFrontend = true` in `core/system/input-method.nix` to properly bind Fcitx5 to the Wayland text-input protocol, resolving missing environment variable issues and ensuring the candidate window renders correctly in Hyprland.
|
||||||
|
- _2026-05-31_ — **Ironclad: Multi-Monitor Integrity complete.** Verified Hyprland, Waybar, and Walker behavior on dual-screen setups (simulated via dual `virtio-vga` VM devices). **Fixed:** Removed a hardcoded `"output": "DP-2"` parameter from the `summer-day` Waybar configuration, ensuring the bar spawns seamlessly across all connected monitors. Confirmed Walker inherently follows the active monitor as expected.
|
||||||
- _2026-05-31_ — **Ironclad: Offline Resilience complete.** Audited the system for network-induced hangs by booting a live VM with `-net none`. **Fixed:** `nomarchy-upload-log` (added a 5s connect timeout to `curl` to fail fast when ix.io is unreachable) and `nomarchy-update-available` (added a fast-fail ping check so Waybar doesn't hang executing `nix flake metadata` while offline). **Restored:** recreated `nomarchy-update` (syncs the local git repo and calls `nomarchy-sys-update`) and `nomarchy-update-time` (restarts `systemd-timesyncd`), which were referenced in the menu but missing from the filesystem. The system now remains fully responsive without internet access.
|
- _2026-05-31_ — **Ironclad: Offline Resilience complete.** Audited the system for network-induced hangs by booting a live VM with `-net none`. **Fixed:** `nomarchy-upload-log` (added a 5s connect timeout to `curl` to fail fast when ix.io is unreachable) and `nomarchy-update-available` (added a fast-fail ping check so Waybar doesn't hang executing `nix flake metadata` while offline). **Restored:** recreated `nomarchy-update` (syncs the local git repo and calls `nomarchy-sys-update`) and `nomarchy-update-time` (restarts `systemd-timesyncd`), which were referenced in the menu but missing from the filesystem. The system now remains fully responsive without internet access.
|
||||||
- _2026-05-31_ — **Flake Update logic fixed & Rolling Release path established.** Rewrote `nomarchy-update` to properly interact with the downstream `flake.nix` inputs. Instead of attempting a `git pull`, it now strips the initial installation pin (`?rev=<hash>`) to seamlessly transition the user to a rolling release, and then runs `nix flake update` to bump `flake.lock`. Rewrote `nomarchy-update-available` to correctly query the upstream git repository and compare its `HEAD` against the local lockfile, ensuring the Waybar update icon only appears when an actual update is pending.
|
- _2026-05-31_ — **Flake Update logic fixed & Rolling Release path established.** Rewrote `nomarchy-update` to properly interact with the downstream `flake.nix` inputs. Instead of attempting a `git pull`, it now strips the initial installation pin (`?rev=<hash>`) to seamlessly transition the user to a rolling release, and then runs `nix flake update` to bump `flake.lock`. Rewrote `nomarchy-update-available` to correctly query the upstream git repository and compare its `HEAD` against the local lockfile, ensuring the Waybar update icon only appears when an actual update is pending.
|
||||||
- _2026-05-31_ — **Deep Runtime Polish: State-Sync Stress Test complete.** Verified the robustness of the hybrid declarative state system (`nomarchy-state.nix`) via an automated chaos test in a live VM (250 parallel writes across 5 concurrent workers). **Bug fixed:** identified and resolved a critical race condition where the Nix sync script was being called outside the `flock` lock in `nomarchy-state-write`. Moving the sync inside the protected block ensured atomic updates to both JSON and Nix state files. Verification confirmed 100% integrity and zero desyncs under heavy load.
|
- _2026-05-31_ — **Deep Runtime Polish: State-Sync Stress Test complete.** Verified the robustness of the hybrid declarative state system (`nomarchy-state.nix`) via an automated chaos test in a live VM (250 parallel writes across 5 concurrent workers). **Bug fixed:** identified and resolved a critical race condition where the Nix sync script was being called outside the `flock` lock in `nomarchy-state-write`. Moving the sync inside the protected block ensured atomic updates to both JSON and Nix state files. Verification confirmed 100% integrity and zero desyncs under heavy load.
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
"height": 60,
|
"height": 60,
|
||||||
"layer": "top",
|
"layer": "top",
|
||||||
"position": "top",
|
"position": "top",
|
||||||
"output": "DP-2",
|
|
||||||
"spacing": 15,
|
"spacing": 15,
|
||||||
"modules-left": ["custom/launcher", "clock", "clock#date"],
|
"modules-left": ["custom/launcher", "clock", "clock#date"],
|
||||||
"modules-center": ["wlr/workspaces"],
|
"modules-center": ["wlr/workspaces"],
|
||||||
|
|||||||
@@ -33,30 +33,31 @@ fi
|
|||||||
echo "# DO NOT EDIT MANUALLY - Managed by Nomarchy scripts."
|
echo "# DO NOT EDIT MANUALLY - Managed by Nomarchy scripts."
|
||||||
echo "# This file mirrors your UI choices (theme, font, etc.) into the declarative"
|
echo "# This file mirrors your UI choices (theme, font, etc.) into the declarative"
|
||||||
echo "# Nix configuration. It is imported by your home.nix."
|
echo "# Nix configuration. It is imported by your home.nix."
|
||||||
|
echo "{ lib, ... }:"
|
||||||
echo "{"
|
echo "{"
|
||||||
echo " nomarchy = {"
|
echo " nomarchy = {"
|
||||||
|
|
||||||
# Core UI strings
|
# Core UI strings
|
||||||
echo " theme = \"$(jq -r '.theme // empty' "$STATE_JSON")\";"
|
echo " theme = lib.mkDefault \"$(jq -r '.theme // empty' "$STATE_JSON")\";"
|
||||||
echo " fonts.monospace = \"$(jq -r '.font // empty' "$STATE_JSON")\";"
|
echo " fonts.monospace = lib.mkDefault \"$(jq -r '.font // empty' "$STATE_JSON")\";"
|
||||||
echo " panelPosition = \"$(jq -r '.panelPosition // empty' "$STATE_JSON")\";"
|
echo " panelPosition = lib.mkDefault \"$(jq -r '.panelPosition // empty' "$STATE_JSON")\";"
|
||||||
echo " wallpaper = \"$(jq -r '.wallpaper // empty' "$STATE_JSON")\";"
|
echo " wallpaper = lib.mkDefault \"$(jq -r '.wallpaper // empty' "$STATE_JSON")\";"
|
||||||
|
|
||||||
# Hyprland layout (numbers)
|
# Hyprland layout (numbers)
|
||||||
echo " hyprland = {"
|
echo " hyprland = {"
|
||||||
echo " scale = \"$(jq -r '.hyprland.scale // "auto"' "$STATE_JSON")\";"
|
echo " scale = lib.mkDefault \"$(jq -r '.hyprland.scale // "auto"' "$STATE_JSON")\";"
|
||||||
echo " gaps_in = $(jq -r '.hyprland.gaps_in // 5' "$STATE_JSON");"
|
echo " gaps_in = lib.mkDefault $(jq -r '.hyprland.gaps_in // 5' "$STATE_JSON");"
|
||||||
echo " gaps_out = $(jq -r '.hyprland.gaps_out // 10' "$STATE_JSON");"
|
echo " gaps_out = lib.mkDefault $(jq -r '.hyprland.gaps_out // 10' "$STATE_JSON");"
|
||||||
echo " border_size = $(jq -r '.hyprland.border_size // 2' "$STATE_JSON");"
|
echo " border_size = lib.mkDefault $(jq -r '.hyprland.border_size // 2' "$STATE_JSON");"
|
||||||
echo " };"
|
echo " };"
|
||||||
|
|
||||||
# Toggles (booleans)
|
# Toggles (booleans)
|
||||||
echo " toggles = {"
|
echo " toggles = {"
|
||||||
echo " suspend = $(jq -r '.suspend // true' "$STATE_JSON");"
|
echo " suspend = lib.mkDefault $(jq -r '.suspend // true' "$STATE_JSON");"
|
||||||
echo " screensaver = $(jq -r '.screensaver // true' "$STATE_JSON");"
|
echo " screensaver = lib.mkDefault $(jq -r '.screensaver // true' "$STATE_JSON");"
|
||||||
echo " idle = $(jq -r '.idle // true' "$STATE_JSON");"
|
echo " idle = lib.mkDefault $(jq -r '.idle // true' "$STATE_JSON");"
|
||||||
echo " nightlight = $(jq -r '.nightlight // false' "$STATE_JSON");"
|
echo " nightlight = lib.mkDefault $(jq -r '.nightlight // false' "$STATE_JSON");"
|
||||||
echo " waybar = $(jq -r '.waybar // true' "$STATE_JSON");"
|
echo " waybar = lib.mkDefault $(jq -r '.waybar // true' "$STATE_JSON");"
|
||||||
echo " };"
|
echo " };"
|
||||||
|
|
||||||
echo " };"
|
echo " };"
|
||||||
|
|||||||
@@ -1876,24 +1876,25 @@ EOF
|
|||||||
# DO NOT EDIT MANUALLY - Managed by Nomarchy scripts.
|
# DO NOT EDIT MANUALLY - Managed by Nomarchy scripts.
|
||||||
# This file mirrors your UI choices (theme, font, etc.) into the declarative
|
# This file mirrors your UI choices (theme, font, etc.) into the declarative
|
||||||
# Nix configuration. It is imported by your home.nix.
|
# Nix configuration. It is imported by your home.nix.
|
||||||
|
{ lib, ... }:
|
||||||
{
|
{
|
||||||
nomarchy = {
|
nomarchy = {
|
||||||
theme = \"\${s.theme}\";
|
theme = lib.mkDefault \"\${s.theme}\";
|
||||||
fonts.monospace = \"\${s.font}\";
|
fonts.monospace = lib.mkDefault \"\${s.font}\";
|
||||||
panelPosition = \"\${s.panelPosition}\";
|
panelPosition = lib.mkDefault \"\${s.panelPosition}\";
|
||||||
wallpaper = \"\${s.wallpaper}\";
|
wallpaper = lib.mkDefault \"\${s.wallpaper}\";
|
||||||
hyprland = {
|
hyprland = {
|
||||||
scale = \"\${s.hyprland.scale}\";
|
scale = lib.mkDefault \"\${s.hyprland.scale}\";
|
||||||
gaps_in = \${toString s.hyprland.gaps_in};
|
gaps_in = lib.mkDefault \${toString s.hyprland.gaps_in};
|
||||||
gaps_out = \${toString s.hyprland.gaps_out};
|
gaps_out = lib.mkDefault \${toString s.hyprland.gaps_out};
|
||||||
border_size = \${toString s.hyprland.border_size};
|
border_size = lib.mkDefault \${toString s.hyprland.border_size};
|
||||||
};
|
};
|
||||||
toggles = {
|
toggles = {
|
||||||
suspend = \${lib.boolToString s.suspend};
|
suspend = lib.mkDefault \${lib.boolToString s.suspend};
|
||||||
screensaver = \${lib.boolToString s.screensaver};
|
screensaver = lib.mkDefault \${lib.boolToString s.screensaver};
|
||||||
idle = \${lib.boolToString s.idle};
|
idle = lib.mkDefault \${lib.boolToString s.idle};
|
||||||
nightlight = \${lib.boolToString s.nightlight};
|
nightlight = lib.mkDefault \${lib.boolToString s.nightlight};
|
||||||
waybar = \${lib.boolToString s.waybar};
|
waybar = lib.mkDefault \${lib.boolToString s.waybar};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user