diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..cf1cdf0 --- /dev/null +++ b/TODO.md @@ -0,0 +1,30 @@ +# Nomarchy Distribution - TODO List + +## 1. Professional Installer [IN PROGRESS] +- [x] Refactor with `gum` for stylized UI. +- [x] Add clear section headers and environment checks. +- [x] Implement software profile selection. +- [ ] Add "Pre-flight Check" summary screen showing all selected options (disk, user, profiles) before proceeding. +- [ ] Implement post-install "Success" dashboard with next steps. +- [ ] Improve disk selection to show more metadata (vendor, model, serial). + +## 2. Nomarchy Plymouth Theme [IN PROGRESS] +- [x] Create custom theme assets in `assets/plymouth/`. +- [x] Center official logo on splash screen. +- [x] Declarative integration in `modules/system/plymouth.nix`. +- [ ] Implement full LUKS password entry support (password prompt, bullet indicators). +- [ ] Add smooth fade-in/fade-out animations for the logo. +- [ ] Add system message display (e.g., "Rebooting...", "Checking Disk..."). + +## 3. System Branding (Fastfetch & Terminal) [DONE] +- [x] Restore and optimize official ASCII logo (`logo.txt`). +- [x] Update `config/fastfetch/config.jsonc` to use new logo and declarative stats. +- [x] Update `nomarchy-show-logo` to use centralized branding path. +- [x] Declaratively map all branding assets via Home Manager. + +## 4. Repo Hygiene & Consistency [DONE] +- [x] Remove legacy Arch Linux imperative scripts. +- [x] Move all dynamic state to unified `state.json`. +- [x] Implement professional state migration via Home Manager activation. +- [x] Declaratively link all `config/` directories with `recursive = true`. +- [x] Transition to Remote-First Upstream model. diff --git a/assets/plymouth/nomarchy.script b/assets/plymouth/nomarchy.script index 5476044..e98c02d 100644 --- a/assets/plymouth/nomarchy.script +++ b/assets/plymouth/nomarchy.script @@ -1,21 +1,40 @@ +# Set background to black +Window.SetBackgroundTopColor(0, 0, 0); +Window.SetBackgroundBottomColor(0, 0, 0); + +# Logo logo_image = Image("logo.png"); - -screen_width = Window.GetWidth(); -screen_height = Window.GetHeight(); - -logo_width = logo_image.GetWidth(); -logo_height = logo_image.GetHeight(); - -logo_x = screen_width / 2 - logo_width / 2; -logo_y = screen_height / 2 - logo_height / 2; - logo_sprite = Sprite(logo_image); -logo_sprite.SetX(logo_x); -logo_sprite.SetY(logo_y); +logo_sprite.SetX(Window.GetWidth() / 2 - logo_image.GetWidth() / 2); +logo_sprite.SetY(Window.GetHeight() / 3 - logo_image.GetHeight() / 2); logo_sprite.SetOpacity(1); +# Message Display (for LUKS password, etc) +message_sprite = Sprite(); +message_sprite.SetX(Window.GetWidth() / 2); +message_sprite.SetY(Window.GetHeight() * 0.6); + +fun display_message_callback(text) { + my_image = Image.Text(text, 1, 1, 1); # White text + message_sprite.SetImage(my_image); + message_sprite.SetX(Window.GetWidth() / 2 - my_image.GetWidth() / 2); +} + +# Password Entry +status = "normal"; + +fun password_callback(text, bullet_count) { + # When typing password, show bullets + bullets = ""; + for (i = 0; i < bullet_count; i++) bullets += "*"; + display_message_callback(bullets); +} + +Plymouth.SetDisplayPasswordFunction(password_callback); +Plymouth.SetDisplayNormalFunction(fun() { status = "normal"; message_sprite.SetImage(NULL); }); +Plymouth.SetDisplayMessageFunction(display_message_callback); + fun refresh_callback () { - # Simple rotation or pulse could go here } Plymouth.SetRefreshFunction (refresh_callback);