From 6c5c1f8589fad45b957bd1e2ca7c488cc2c19276 Mon Sep 17 00:00:00 2001 From: The_miro Date: Mon, 18 May 2026 15:48:47 +0200 Subject: [PATCH] gitignore: exclude generated docs/html/ build artifacts Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 1 + docs/html/archiso.html | 432 ------------------ docs/html/editors.html | 575 ----------------------- docs/html/freeipa-ansible.html | 441 ------------------ docs/html/hyprland.html | 780 ------------------------------- docs/html/index.html | 396 ---------------- docs/html/installation.html | 501 -------------------- docs/html/modules.html | 807 --------------------------------- docs/html/theming.html | 465 ------------------- docs/html/utilities.html | 403 ---------------- 10 files changed, 1 insertion(+), 4800 deletions(-) delete mode 100644 docs/html/archiso.html delete mode 100644 docs/html/editors.html delete mode 100644 docs/html/freeipa-ansible.html delete mode 100644 docs/html/hyprland.html delete mode 100644 docs/html/index.html delete mode 100644 docs/html/installation.html delete mode 100644 docs/html/modules.html delete mode 100644 docs/html/theming.html delete mode 100644 docs/html/utilities.html diff --git a/.gitignore b/.gitignore index 7cb7b59..3ee9c66 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ yazi/*.toml-* # Generated files readme.html +docs/html/ # Build/image output artifacts *.iso diff --git a/docs/html/archiso.html b/docs/html/archiso.html deleted file mode 100644 index c5d2d7b..0000000 --- a/docs/html/archiso.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - Archiso — Custom Live Installer — M-Archy Dotfiles - - - - - ← Index -
-

Archiso — Custom Live Installer

-

The archiso build system produces a bootable Arch Linux ISO pre-loaded with the M-Archy installer scripts. Optionally, an answerfile can be embedded so the entire install — base OS + dotfiles — runs with zero user interaction.

-
-

Prerequisites

-
sudo pacman -S archiso jq
-
-
-

Building the ISO

-
# Basic build — interactive installer, no answerfile
-bash setup/archiso/build.sh
-
-# Specify output directory
-bash setup/archiso/build.sh /path/to/output
-
-# Embed an answerfile for automated deployment
-bash setup/archiso/build.sh --preconf
-
-# Embed a specific answerfile
-bash setup/archiso/build.sh --preconf ~/my-server.json
-
-# Both flags together
-bash setup/archiso/build.sh --preconf ~/my-server.json /media/usb/output
-
- - - - - - - - - - - - - - - - - - - - - -
FlagEffect
(none)Clean ISO, no answerfile
--preconfEmbed ~/answerfile.json at /answerfile.json in the ISO
--preconf FILEEmbed the specified file instead
-

Build artefacts land in ~/m-archy-out/ by default. Override with the OUT_DIR environment variable or by passing a path argument.

-

Environment Variables

- - - - - - - - - - - - - - - - - - - - -
VariableDefaultPurpose
WORK_DIR~/m-archy-buildScratch space for mkarchiso
OUT_DIR~/m-archy-outISO output directory
-
-

What the Build Does

-
    -
  1. Copies the upstream releng Arch base profile
  2. -
  3. Applies the M-Archy overlay (setup/archiso/overlay/)
  4. -
  5. Replaces profiledef.sh with the M-Archy version
  6. -
  7. Adds extra packages from packages.extra
  8. -
  9. Embeds both installer scripts (arch-autoinstall.sh, archbaseos-guided-install.sh) into /root/installer/
  10. -
  11. If --preconf: copies the answerfile to /answerfile.json in the ISO's airootfs
  12. -
  13. Runs mkarchiso to produce the final .iso
  14. -
-
-

Extra Packages on the Live System

-

Defined in setup/archiso/overlay/packages.extra:

-
git
-jq
-pam-u2f
-btop
-fastfetch
-openssh
-
-

These are added on top of the standard Arch releng package set.

-
-

Live System Entry Points

-

Once booted from the ISO, the following are available:

-

install-arch

-

A command placed in /usr/local/bin/:

-
install-arch           # guided mode (default)
-install-arch guided    # guided interactive install
-install-arch auto      # automated mode (reads /answerfile.json)
-
-

/root/launch.sh

-

Internal dispatcher used by install-arch.

-

/answerfile.json

-

Only present when built with --preconf. Both installer scripts check for this file on startup. If found, all prompts are answered from it — the only interaction required is the disk-encryption password (passwords are never stored in answerfiles).

-
-

Automated Deployment Workflow

-
┌─────────────────────────────────────┐
-│  Developer machine                  │
-│                                     │
-│  1. generate-answerfile.sh          │
-│     → ~/answerfile.json             │
-│                                     │
-│  2. build.sh --preconf              │
-│     → ~/m-archy-out/m-archy.iso     │
-│                                     │
-│  3. dd if=m-archy.iso of=/dev/sdX   │
-└──────────────┬──────────────────────┘
-               │ USB
-               ▼
-┌─────────────────────────────────────┐
-│  Target machine (boots from USB)    │
-│                                     │
-│  4. install-arch auto               │
-│     reads /answerfile.json          │
-│     installs base OS                │
-│     runs tui-install.sh in chroot   │
-│     installs dotfiles & apps        │
-│                                     │
-│  5. Reboot → ready system           │
-└─────────────────────────────────────┘
-
-

For multi-machine deployments, the hostname field in the answerfile is combined with the machine's MAC address, so each system gets a unique hostname even though they share the same answerfile.

-
-

Overlay Structure

-
setup/archiso/overlay/
-├── airootfs/
-│   ├── etc/motd                          # Welcome message
-│   ├── root/
-│   │   └── launch.sh                     # Installer entry point
-│   └── usr/local/bin/
-│       └── install-arch                  # User-facing CLI command
-├── packages.extra                        # Additional live-system packages
-└── profiledef.sh                         # M-Archy ISO profile definition
-
-

The build.sh script also adds at build time:

-
airootfs/root/installer/
-├── arch-autoinstall.sh
-└── archbaseos-guided-install.sh
-
-
-

Writing the ISO to USB

-
# Find the USB drive
-lsblk
-
-# Write (replace /dev/sdX with your drive — ALL DATA WILL BE ERASED)
-sudo dd if=~/m-archy-out/m-archy-*.iso of=/dev/sdX bs=4M status=progress oflag=sync
-
-

Or use ventoy / balenaEtcher as alternatives.

-
-
- Generated by md-to-html.sh  ·  CyberQueer theme  ·  2026-05-18 -
- - diff --git a/docs/html/editors.html b/docs/html/editors.html deleted file mode 100644 index d9773b4..0000000 --- a/docs/html/editors.html +++ /dev/null @@ -1,575 +0,0 @@ - - - - - - Editors — M-Archy Dotfiles - - - - - ← Index -
-

Editors

-

Three editors are configured and deployed by the shell component: Neovim (primary), Micro (lightweight), and Yazi (terminal file manager).

-
-

Neovim

-

Config lives in nvim/. Deployed to ~/.config/nvim/ during shell module install.

-

Plugin Manager

-

vim-plug is auto-installed on first launch. Run :PlugInstall after the first start to fetch all plugins.

-

Plugins

-

Language & Completion

- - - - - - - - - - - - - - - - - - - - - -
PluginPurpose
neoclide/coc.nvimLSP client, auto-completion, diagnostics
rust-lang/rust.vimRust filetype support
nvim-telescope/telescope.nvimFuzzy finder (files, grep, LSP symbols)
-

UI

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PluginPurpose
vim-airline/vim-airlineStatus bar
vim-airline/vim-airline-themesAirline theme collection
junegunn/goyo.vimDistraction-free writing mode
voldikss/vim-floatermFloating terminal windows
norcalli/nvim-colorizer.luaInline colour preview
- - - - - - - - - - - - - - - - - - - - - - -
PluginPurpose
preservim/nerdtreeFile tree sidebar
junegunn/fzf + fzf.vimFuzzy file/buffer search
elihunter173/dirbuf.nvimEditable directory buffer
-

Snippets

- - - - - - - - - - - - - - - - - -
PluginPurpose
SirVer/ultisnipsSnippet engine
honza/vim-snippetsSnippet collection
-

Database

- - - - - - - - - - - - - - - - - -
PluginPurpose
tpope/vim-dadbodDatabase query runner
kristijanhusak/vim-dadbod-uiGUI for vim-dadbod
-

Markdown

- - - - - - - - - - - - - - - - - -
PluginPurpose
tadmccorkle/markdown.nvimEnhanced Markdown support
ellisonleao/glow.nvimMarkdown preview in terminal
-

Theme

- - - - - - - - - - - - - -
PluginPurpose
the_miro/cyberqueer.nvimCyberQueer colour scheme (local)
-

CoC LSP Settings

-

nvim/coc-settings.json configures language servers for: -- Python (pyright) -- Lua (lua-language-server) -- Rust (rust-analyzer via rust.vim)

-

CyberQueer Airline Theme

-

nvim/cyberqueer-airline.vim — a custom vim-airline theme using the CyberQueer palette, providing hot-pink/violet segments in the status bar.

-
-

Micro

-

A modern, keyboard-friendly terminal editor. Config in micro/. Deployed to ~/.config/micro/.

-

Settings (settings.json)

- - - - - - - - - - - - - - - - - - - - -
SettingValueEffect
colorschememiro-darculaCustom dark colour scheme
VariousFile-type-specific settings
-

Keybindings (bindings.json)

-

Custom keybindings extending Micro's defaults. See micro/bindings.json for the full list.

-

Colour Schemes

-

micro/colorschemes/ contains additional colour scheme definitions including the custom miro-darcula scheme.

-

Plugins (micro/plug/)

- - - - - - - - - - - - - - - - - -
PluginPurpose
filemanagerSidebar file browser
mlspLanguage Server Protocol integration
-
-

Yazi

-

A fast, feature-rich terminal file manager written in Rust.
-Config in yazi/. Deployed to ~/.config/yazi/.

-

Configuration Files

- - - - - - - - - - - - - - - - - - - - - -
FilePurpose
yazi.tomlCore settings (openers, file rules, display)
theme.tomlCyberQueer colour palette
keymap.tomlKeybindings (17 KB, extensively customised)
-

Theme

-

yazi/theme.toml maps the CyberQueer colours to Yazi's theme variables. It is a colour-substitution target in apply-theme.sh, so it updates automatically when you change the palette.

-

File Openers

- - - - - - - - - - - - - - - - - - - - - -
File typeOpens with
*.svgInkscape
Text filesNeovim
Everything elsexdg-open (system default)
-

Display Options

-
    -
  • Hidden files visible by default
  • -
  • Symlinks shown and followed
  • -
  • Three-pane layout (parent, current, preview)
  • -
-
-

Launching Editors

-

From the Hyprland desktop:

- - - - - - - - - - - - - - - - - - - - - -
ShortcutAction
Super + MOpen Micro in Kitty
Super + EOpen Yazi in Kitty
Super + T then nvimNeovim in terminal
-

From the shell:

-
nvim file.rs          # Neovim
-micro config.yaml     # Micro
-yazi                  # Yazi file manager
-
-
-
- Generated by md-to-html.sh  ·  CyberQueer theme  ·  2026-05-18 -
- - diff --git a/docs/html/freeipa-ansible.html b/docs/html/freeipa-ansible.html deleted file mode 100644 index 8d05790..0000000 --- a/docs/html/freeipa-ansible.html +++ /dev/null @@ -1,441 +0,0 @@ - - - - - - FreeIPA & Ansible — M-Archy Dotfiles - - - - - ← Index -
-

FreeIPA & Ansible

-

The FreeIPA/Ansible system provides centralised identity management for a fleet of Arch Linux machines: single sign-on, host-group-driven package and module deployment, LUKS backup key collection, and automatic Keycloak configuration.

-

All relevant files live under setup/modules/FreeipaAnsible/.

-
-

Architecture

-
┌────────────────────────────────────┐
-│  FreeIPA Server                    │
-│  (can run in Docker / LXC)         │
-│                                    │
-│  • User/host directory             │
-│  • Kerberos KDC                    │
-│  • DNS (optional)                  │
-│  • Host group management           │
-└──────────┬─────────────────────────┘
-           │ SSSD / Kerberos
-           ▼
-┌────────────────────────────────────┐
-│  Enrolled client machine           │
-│                                    │
-│  • sssd — authentication           │
-│  • ipa CLI — host group queries    │
-│  • Ansible-deployed timers         │
-│    ├── package installer           │
-│    ├── module installer            │
-│    ├── Flatpak installer           │
-│    └── baseuser group sync         │
-└────────────────────────────────────┘
-
-
-

FreeIPA Server

-

Docker / OCI Image

-

A pre-built Docker image is available via setup/modules/FreeipaAnsible/image/:

-
cd setup/modules/FreeipaAnsible/image
-cp .env.example .env
-# Edit .env with your domain, admin password, realm, etc.
-docker compose up -d
-
-

The container runs ipa-first-boot.sh on first start to initialise the IPA instance, then optionally keycloak-configure.sh to wire up Keycloak as an OIDC provider.

-

Interactive Server Setup

-
bash setup/modules/optional-Modules/apps/freeipa-server.sh
-
-

Prompts for realm, domain, admin password, and whether to generate client-install scripts.

-
-

Client Enrollment

-

Via Installer Module

-

Select freeipa-client during tui-install.sh or install-modules.sh.

-

Manual Enrollment

-

Three modes:

-
# Answerfile mode (unattended)
-bash setup/modules/FreeipaAnsible/freeipa-client.sh \
-    --answerfile setup/modules/FreeipaAnsible/freeipa-client-answerfile.json
-
-# Interactive prompts
-bash setup/modules/FreeipaAnsible/freeipa-client.sh --interactive
-
-# Direct flag passthrough to freeipa-enroll.sh
-bash setup/modules/FreeipaAnsible/freeipa-client.sh \
-    --domain freeipa.example.com \
-    --server ipa.example.com \
-    --principal admin
-
-

Client Answerfile Schema

-
{
-  "domain":      "freeipa.abdelbaki.eu",
-  "realm":       "FREEIPA.ABDELBAKI.EU",
-  "server":      "freeipa.abdelbaki.eu",
-  "hostname":    "",
-  "principal":   "admin",
-  "password":    "",
-  "mkhomedir":   true,
-  "sudo":        true,
-  "dns_update":  true,
-  "ntp_server":  "",
-  "fido2":       false,
-  "fido2_users": []
-}
-
-

Leave hostname blank to use the current machine hostname. Leave password blank to be prompted at enrollment time.

-
-

Ansible Playbooks

-

All playbooks live in setup/modules/FreeipaAnsible/ansible/ and require an inventory of enrolled IPA clients.

-

Deploy Package Auto-Installer

-
ansible-playbook -i inventory deploy-ansipa-install.yml
-
-

Deploys ansipa-install-packages.sh + a systemd timer that runs every 30 minutes. The script queries IPA for host groups named ansipa-install-<package> and installs/removes packages to match.

-

Group naming convention: ansipa-install-firefox → installs the firefox package.

-

Deploy Module Auto-Installer

-
ansible-playbook -i inventory deploy-ansipa-modules.yml \
-    [-e ansipa_user=amir]
-
-

Deploys ansipa-install-modules.sh + timer. Queries for groups named ansipa-module-<name> and runs the matching script from /usr/local/lib/ansipa-modules/<name>.sh.

-

Module scripts are the same ones used by install-modules.sh — copied from setup/modules/optional-Modules/apps/*.sh.

-

Group naming convention: ansipa-module-docker → runs docker.sh on the host.

-

Each module is applied once and stamped in /var/lib/ansipa-modules/<name>.done. Re-running the timer skips already-applied modules.

-

Deploy BaseUser Sync

-
ansible-playbook -i inventory deploy-baseuser-sync.yml
-
-

Deploys a systemd.path unit that triggers whenever a user logs in. If the user is a member of the IPA BaseUser group, they are automatically added to the local baseusers group — useful for desktop permission grants.

-

Collect LUKS Backup Keys

-
ansible-playbook -i inventory collect-luks-keys.yml \
-    [-e luks_keys_store=/secure/location]
-
-

For each enrolled host, checks for /_LUKS_BACKUP_KEY (placed there by the M-Archy installer when disk encryption is enabled) and fetches it to the controller as:

-
<luks_keys_store>/<HOSTNAME>_LUKS_BACKUP_KEY
-
-

Keys are stored with mode 0400. The store directory is created with mode 0700.

-

Schedule for automatic collection:

-
# Add to crontab on the Ansible controller
-0 3 * * * cd /path/to/playbooks && ansible-playbook -i inventory collect-luks-keys.yml
-
-
-

Host Group Reference

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Group prefixHandled byEffect
ansipa-install-<pkg>ansipa-install-packages.shInstall/remove native package
ansipa-module-<name>ansipa-install-modules.shRun module script once
fp_install-<app>ansipa-install-flatpaks.shInstall Flatpak app
BaseUserauto-add-baseuser.shAdd user to local baseusers group
-
-

LUKS Key Flow

-
  Install time (arch-autoinstall.sh or archbaseos-guided-install.sh)
-  ─────────────────────────────────────────────────────────────────
-  1. User sets primary LUKS passphrase interactively
-  2. 64-byte random key generated from /dev/urandom
-  3. Key enrolled in second LUKS slot
-  4. Key written to /_LUKS_BACKUP_KEY (mode 0400, root-only)
-     inside the encrypted Btrfs volume
-
-  Post-install (Ansible)
-  ──────────────────────
-  5. collect-luks-keys.yml runs from the controller
-  6. Fetches /_LUKS_BACKUP_KEY from each client
-  7. Stores as luks-keys/<HOSTNAME>_LUKS_BACKUP_KEY (mode 0400)
-     on the controller
-
-

The backup key lives inside the encrypted partition, so it is only accessible when the disk is already unlocked. Its purpose is to allow an admin to unlock the disk for recovery without knowing the user's passphrase.

-
-

Auto Enrollment + Ansible

-
bash setup/modules/FreeipaAnsible/auto-enroll-ansible.sh
-
-

Combines FreeIPA client enrollment and Ansible deployment in one shot. Useful for provisioning scripts that run on first boot.

-
-
- Generated by md-to-html.sh  ·  CyberQueer theme  ·  2026-05-18 -
- - diff --git a/docs/html/hyprland.html b/docs/html/hyprland.html deleted file mode 100644 index e06e4de..0000000 --- a/docs/html/hyprland.html +++ /dev/null @@ -1,780 +0,0 @@ - - - - - - Hyprland Desktop Environment — M-Archy Dotfiles - - - - - ← Index -
-

Hyprland Desktop Environment

-

The Hyprland setup is the primary desktop environment — a Wayland compositor with a full ecosystem of bars, launchers, notification daemons, and theming tools.

-
-

Overview

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ComponentRole
HyprlandWayland tiling compositor (dwindle layout)
KittyPrimary terminal emulator
EWWStatus bar (three device variants)
WaybarAlternative status bar
WofiApp launcher (keyboard-driven)
WalkerFast CLI launcher
uLauncherGUI app launcher
DunstNotification daemon
HyprlockScreen locker
HyprpaperWallpaper daemon
HypridleIdle management (sleep, lock)
nwg-dockApplication dock
nwg-drawerApplication drawer
nwg-panelDesktop menu
VicinaeGesture-triggered context launcher
lyTUI login manager
-
-

Config File Map

-
desktopenvs/hyprland/
-├── hypr/
-│   ├── hyprland.conf          # Root config — imports all below
-│   ├── hyprtoolkit.conf       # Toolkit utilities
-│   ├── hyprlock.conf          # Lock screen
-│   ├── hypridle.conf          # Idle timeouts
-│   └── hyprpaper.conf         # Wallpaper
-├── hypr-usr/                  # Per-user override layer
-│   ├── binds.conf             # All keybindings
-│   ├── input.conf             # Keyboard/mouse settings
-│   ├── monitors.conf          # Display layout
-│   ├── windowrules.conf       # Per-app behaviour rules
-│   └── autostart.conf         # Startup programs
-├── kitty/
-│   ├── kitty.conf             # Terminal config
-│   ├── current-theme.conf     # Active palette (CyberQueer)
-│   └── themes/cyberqueer.conf # Theme definition
-├── waybar/
-│   ├── config                 # Module layout and data sources
-│   └── style.css              # CyberQueer styling
-├── wofi/style.css             # Launcher styling
-├── walker/themes/             # Walker theme (cyberqueer.css)
-├── dunst/                     # Notification styling
-├── eww/                       # EWW bar (PC — no battery)
-├── eww-nobattery/             # EWW bar alias
-├── eww-touch/                 # EWW bar (tablet / touchscreen)
-├── spicetify/                 # Spotify CyberQueer themes
-├── Vencord/                   # Discord CyberQueer themes
-├── btop/                      # System monitor + cyberqueer.theme
-├── scripts/                   # 20+ utility scripts
-└── config-updater/            # Config synchronisation tool
-
-
-

Keybindings

-

All bindings live in hypr-usr/binds.conf.

-

Applications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BindingAction
Super + TKitty terminal
Super + Shift + TCool Retro Term (CRT profile)
Super + MMicro editor
Super + EThunar file manager
Super + XWofi app launcher
Super + FFile search (wofi)
Super + Shift + FFolder search (wofi)
-

Window Management

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BindingAction
Super + QClose focused window
Super + VToggle floating
Super + Shift + VCentre floating window
Super + PToggle pseudo-tiling
Super + JToggle split direction
Super + Arrow / hjklFocus window by direction
Super + Shift + Arrow / hjklMove window by direction
Super + [0-9]Switch workspace
Super + Shift + [0-9]Move window to workspace
Super + mouse dragMove/resize floating window
-

System

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BindingAction
Super + OLock screen (hyprlock)
Super + Alt + OPower menu
Super + Ctrl + OShutdown immediately
Super + ZToggle EWW bar
Super + Ctrl + PStart screen recording
-

Touchpad Gestures

- - - - - - - - - - - - - - - - - - - - - - - - - -
GestureAction
3-finger swipe left/rightSwitch workspace
3-finger swipe up/downMove window to workspace
3-finger pinchToggle overview
4-finger tapOpen launcher
-
-

Status Bar (EWW)

-

EWW (Elkowar's Wayland Window Manager) is compiled from source during Hyprland install and comes in three variants:

- - - - - - - - - - - - - - - - - - - - - - - - - -
VariantDeviceBattery Widget
eww/Desktop PCNo
eww-nobattery/Desktop PCNo
eww-touch/Laptop / tabletYes
-

During install the EWW installer asks which variant to use.

-

Waybar

-

An alternative to EWW — always installed. The bar layout:

-
    -
  • Left: clock, disk usage, RAM, CPU, temperature
  • -
  • Centre: workspace switcher, active window title
  • -
  • Right: network speed, IP address, system tray, audio volume, battery (if present)
  • -
-
-

Launchers

-

Wofi

-

Keyboard-driven app/file launcher. Activated with Super + X.
-Config: wofi/style.css — themed with CyberQueer colours.

-

Walker

-

Fast CLI launcher (walker). Pre-configured with walker/config.toml and the cyberqueer.css / cyberqueer.toml theme files.

-

uLauncher

-

GUI launcher with plugin support. Theme: ulauncher/user-themes/cyberqueer/.
-Colours in the theme are colour-substitution targets (updated by apply-theme.sh).

-
-

Notification Daemon (Dunst)

-

Lightweight notification daemon. Config in dunst/dunstrc.
-Notifications appear top-right with CyberQueer styling.

-
-

Lock Screen (Hyprlock)

-

hyprlock is the Wayland screen locker. Config at hypr/hyprlock.conf.
-Activated by Super + O or automatically via hypridle after idle timeout.

-
-

Scripts Reference

-

All scripts live in desktopenvs/hyprland/scripts/ and are deployed to ~/.config/scripts/.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ScriptPurpose
caffeine.shToggle hypridle (prevent sleep)
ewwstart.shLaunch EWW bar on startup
ewwstart-niri.shEWW for niri compositor variant
togglebar.shShow/hide EWW bar (monitor-aware)
helpmenu.shDisplay keybindings from binds.conf
screenshot.shRegion/full screenshot via grim + slurp
screenrec.shScreen recording
screenrotationacw.shRotate screen anti-clockwise (tablet)
screenrotationwcw.shRotate screen clockwise (tablet)
unified-rotate.shUnified rotation handler
hyprland-toggle-touchpad.shEnable/disable touchpad
wofi-file-search.shFile search via wofi
foldersearch.shFolder search via wofi
pwr-dmenu.shPower menu (shutdown/reboot/suspend)
caffeine.shToggle idle inhibitor
getispeed.shInternet speed test display
journal.shQuick journal entry
date.sh / time.shDate/time waybar helpers
uptime.shUptime display
dysk-phydisks.shPhysical disk info (dysk)
drawer.shOpen nwg-drawer
menu.shApplication menu
onscreenkb.shOn-screen keyboard (wvkbd)
bluetooth-applet.shBluetooth UI wrapper
togglewinbars.shToggle window title bars
toggle-layout.shSwitch tiling layout
playpause.shMedia play/pause
calender-fix.shCalendar waybar widget fix
-
-

Application Theming

-

Spotify (Spicetify)

-

Two CyberQueer Spicetify themes are available:

- - - - - - - - - - - - - - - - - -
ThemeStyle
cli-cyberqueerCLI-inspired, minimal
matte-cyberqueerMatte finish variant
-

Applied automatically when the spotify module is installed.

-

Discord (Vencord)

-

Two Discord themes:

- - - - - - - - - - - - - - - - - -
ThemeLocation
cyberqueer.theme.cssStandalone CyberQueer theme
system24/…/cyberqueer.theme.csssystem24 framework with CyberQueer colours
-

Terminal (Kitty)

-

The kitty/themes/cyberqueer.conf file defines the full 16-colour palette mapped to CyberQueer values. It is sourced by current-theme.conf which is imported in kitty.conf.

-
-

Login Manager (ly)

-

ly is a TUI display manager configured via etc-ly-config.ini (deployed to /etc/ly/config.ini). Its colours are tracked by apply-theme.sh (system file, applied via sudo).

-
-

Installing Hyprland

-
# Via the TUI installer
-bash ~/Dotfiles/setup/tui-install.sh
-# → Select "shell" and "Hyprland" in the dialogs
-
-# On an existing system
-bash ~/Dotfiles/setup/install-modules.sh
-# → Not available; Hyprland is a base DE, use the full installer
-
-# Direct script
-bash ~/Dotfiles/setup/modules/Desktop-Environments/hyprland.sh
-
-

The install script compiles EWW from source (requires Rust), copies all configs, installs the GTK and cursor themes, enables ly@tty1, and configures greetd.

-
-
- Generated by md-to-html.sh  ·  CyberQueer theme  ·  2026-05-18 -
- - diff --git a/docs/html/index.html b/docs/html/index.html deleted file mode 100644 index 8c01396..0000000 --- a/docs/html/index.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - M-Archy Dotfiles — M-Archy Dotfiles - - - - - -
-

M-Archy Dotfiles

-

Arch Linux · Hyprland · Wayland · CyberQueer

-

A production-grade Arch Linux configuration for network administration, development, and gaming — built around the Hyprland Wayland compositor and the CyberQueer colour theme.

-
-

What's Inside

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AreaDescription
InstallationInteractive TUI installer, answerfile automation, ISO building
ThemingCyberQueer colour system and apply-theme.sh
HyprlandDesktop environment, keybindings, bars, launchers
ModulesCore modules and full optional-app catalogue
ArchisoBuilding the custom live installer ISO
FreeIPA & AnsibleIdentity management and automated config deployment
EditorsNeovim, Micro, Yazi
UtilitiesEncryption helpers, ClamAV, credentials, update scripts
-
-

Quick Start

-
# 1 — clone
-git clone https://git.abdelbaki.eu/The_miro/Dotfiles.git ~/Dotfiles
-
-# 2 — run the interactive installer
-bash ~/Dotfiles/setup/tui-install.sh
-
-# 3 — optionally apply a custom colour palette
-nano ~/Dotfiles/colors.conf
-bash ~/Dotfiles/apply-theme.sh
-
-

For a fully automated install from a live USB, see Archiso.

-
-

CyberQueer Colour Palette

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RoleNameHex
BackgroundDark grey#1A1A1A
TextRose white#D6ABAB
Primary accentHot pink#E40046
Secondary accentElectric violet#5018DD
Danger / alertsRed#F50505
-
-

Repository Layout

-
Dotfiles/
-├── apply-theme.sh          # Propagate colours across all configs
-├── colors.conf             # Single source of truth for the palette
-├── update.sh               # pacman + yay full system update
-├── setup/
-│   ├── tui-install.sh      # Main interactive / answerfile installer
-│   ├── generate-answerfile.sh  # Dry-run to produce answerfile.json
-│   ├── arch-autoinstall.sh     # Automated base OS installer
-│   ├── archbaseos-guided-install.sh  # Guided base OS installer
-│   ├── install-modules.sh  # Add optional modules to existing system
-│   ├── archiso/            # Custom Arch live ISO builder
-│   └── modules/            # Modular install scripts
-├── desktopenvs/hyprland/   # All Hyprland / Wayland configs
-├── gtk-themes/cyberqueer/  # GTK 3 & 4 theme
-├── qt-themes/cyberqueer/   # Qt platform theme
-├── nvim/                   # Neovim config
-├── micro/                  # Micro editor config
-├── yazi/                   # Yazi file manager config
-├── clamav/                 # ClamAV on-access scan setup
-└── docs/                   # This documentation
-
-
-
- Generated by md-to-html.sh  ·  CyberQueer theme  ·  2026-05-18 -
- - diff --git a/docs/html/installation.html b/docs/html/installation.html deleted file mode 100644 index 9e2fc3d..0000000 --- a/docs/html/installation.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - - - Installation — M-Archy Dotfiles - - - - - ← Index -
-

Installation

-

Three paths are available depending on how much you want to automate:

- - - - - - - - - - - - - - - - - - - - - -
PathWhen to use
Interactive TUIFresh Arch system, guided dialogs
Answerfile (automated)Unattended or repeatable installs
Custom ISODeploy from USB to multiple machines
-
-

Prerequisites

-
    -
  • Arch Linux (base install completed, user created)
  • -
  • Internet connection
  • -
  • git available (sudo pacman -S git)
  • -
-
-

Interactive TUI

-

Clone the repo and run the installer:

-
git clone https://git.abdelbaki.eu/The_miro/Dotfiles.git ~/Dotfiles
-bash ~/Dotfiles/setup/tui-install.sh
-
-

The TUI walks you through:

-
    -
  1. Hostname — optional; sets /etc/hostname immediately
  2. -
  3. Components — pick any combination:
  4. -
  5. pkg — package managers (yay, nvm, Rust)
  6. -
  7. core — 100+ base system packages
  8. -
  9. svc — core services (NetworkManager, cronie, fail2ban, greetd)
  10. -
  11. shell — zsh, Neovim, Yazi, Micro, Starship
  12. -
  13. Desktop Environment — Hyprland, Sway, KDE Plasma, GNOME, COSMIC, XFCE, LXQt, or none
  14. -
  15. Applications — checklist of ~50 optional apps (see Modules)
  16. -
  17. Colorway — optional; enter hex values to customise the CyberQueer palette
  18. -
-

All activity is logged to ~/dotfiles-install.log.

-

Adding Modules Later

-

To install additional optional apps on an already-configured system:

-
bash ~/Dotfiles/setup/install-modules.sh
-
-

This presents the same app checklist without re-running core setup.

-
-

Answerfile (Automated)

-

An answerfile lets the entire install — base OS and dotfiles — run without any user input.

-

Generating an Answerfile

-
bash ~/Dotfiles/setup/generate-answerfile.sh [OUTPUT_PATH]
-# Default output: ~/answerfile.json
-
-

This dry-runs every installer dialog and saves your choices. No software is installed. Passwords are intentionally excluded — you will be prompted at install time.

-

Answerfile Schema

-
{
-  "_generated": "2026-05-18T12:00:00+00:00",
-  "drive": "/dev/sda",
-  "kernel": "linux",
-  "hostname": "myhost",
-  "username": "amir",
-  "encrypt": true,
-  "fido2_root": false,
-  "fido2_user": false,
-  "run_tui": true,
-  "components": ["pkg", "core", "svc", "shell"],
-  "desktop_environment": "hyprland",
-  "apps": ["firefox-browser", "vscodium", "docker"],
-  "colors": {
-    "COLOR_TEXT": "D6ABAB",
-    "COLOR_BG": "1A1A1A",
-    "COLOR_HIGHLIGHT": "E40046",
-    "COLOR_DARK": "5018DD",
-    "COLOR_RED": "F50505"
-  }
-}
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeDescription
drivestringInstall target (/dev/sda, /dev/nvme0n1, …)
kernelstringlinux, linux-lts, or linux-zen
hostnamestringBase hostname — a MAC-address suffix is appended automatically
usernamestringPrimary user account name
encryptboolEnable LUKS2 root encryption
fido2_rootboolEnroll FIDO2 key for LUKS unlock
fido2_userboolEnroll FIDO2 key for PAM login
run_tuiboolRun dotfiles setup automatically after base install
componentsarrayDotfiles components to install
desktop_environmentstringDE name or "none"
appsarrayOptional app IDs (see Modules)
colorsobjectOptional colour overrides (omit to keep defaults)
-

Hostname Uniqueness

-

When hostname is set in the answerfile, the MAC address of the primary network interface is automatically appended:

-
myhost  →  myhost-aabbccddee11
-
-

This prevents hostname conflicts when the same answerfile is used across multiple machines.

-

Running with an Answerfile

-

Place the file at /answerfile.json (or set the ANSWERFILE environment variable):

-
# Use default location
-sudo cp ~/answerfile.json /answerfile.json
-bash ~/Dotfiles/setup/tui-install.sh
-
-# Or override the path
-ANSWERFILE=~/my-setup.json bash ~/Dotfiles/setup/tui-install.sh
-
-
-

Base OS Installers

-

Two scripts install Arch Linux itself (before the dotfiles step):

-

Guided Installer (archbaseos-guided-install.sh)

-

Interactive, dialog-based. Prompts for each setting with sensible defaults. Good for hands-on installs where you want to review each option.

-
bash ~/installer/archbaseos-guided-install.sh
-
-

Auto Installer (arch-autoinstall.sh)

-

Reads all settings from /answerfile.json if present; falls back to prompts for anything missing.

-
bash ~/installer/arch-autoinstall.sh
-
-

Both installers perform the same steps:

-
    -
  1. Partition disk (EFI 15 GiB · Root · Swap = RAM size)
  2. -
  3. Optionally encrypt root with LUKS2
  4. -
  5. Format root as Btrfs with @ and @home subvolumes
  6. -
  7. pacstrap base system
  8. -
  9. Configure locale, timezone, hostname, user, sudo
  10. -
  11. Set up mkinitcpio hooks and GRUB
  12. -
  13. Optionally run tui-install.sh inside the chroot
  14. -
-

Disk Encryption

-

When encryption is enabled:

-
    -
  • Primary key: entered interactively at install time
  • -
  • Backup key: generated automatically from /dev/urandom, enrolled into a second LUKS slot, and written to /_LUKS_BACKUP_KEY inside the new system (mode 0400, root-readable only, inside the encrypted container)
  • -
  • FIDO2 (optional): enroll a hardware key for passwordless unlock
  • -
-

The backup key can be collected by Ansible — see FreeIPA & Ansible.

-

mkinitcpio Hook Sets

- - - - - - - - - - - - - - - - - - - - - -
ScenarioHooks
No encryptionbase udev autodetect microcode modconf kms consolefont block btrfs filesystems keyboard fsck
LUKS + passwordbase udev autodetect microcode modconf kms consolefont block encrypt lvm2 btrfs filesystems keyboard keymap fsck
LUKS + FIDO2base udev systemd autodetect microcode modconf kms consolefont block sd-encrypt lvm2 btrfs filesystems keyboard keymap fsck
-
-

Custom Live ISO

-

See Archiso for building a bootable USB that embeds the installer and, optionally, a pre-baked answerfile for zero-touch deployment.

-
-
- Generated by md-to-html.sh  ·  CyberQueer theme  ·  2026-05-18 -
- - diff --git a/docs/html/modules.html b/docs/html/modules.html deleted file mode 100644 index 48b3781..0000000 --- a/docs/html/modules.html +++ /dev/null @@ -1,807 +0,0 @@ - - - - - - Modules Reference — M-Archy Dotfiles - - - - - ← Index -
-

Modules Reference

-

The setup system is modular — core components are installed first, then any combination of optional apps can be added. All module scripts are idempotent (safe to re-run).

-
-

Core Modules

-

These are selected during the initial tui-install.sh run.

-

pkg — Package Managers

-

Installs the AUR helper, language runtimes, and build toolchains:

-
    -
  • yay — AUR helper (built from source via makepkg)
  • -
  • Rust / Cargo — via rustup with the stable toolchain
  • -
  • nvm — Node Version Manager; installs Node.js v22 LTS by default
  • -
-

core — Core Packages

-

~100 packages including:

-

7zip · base-devel · bluez · bluez-utils · btop · fastfetch · fdupes · ffmpeg · git · greetd-tuigreet · htop · jq · less · lynx · neovim · networkmanager · openssh · pipewire · pipewire-alsa · pipewire-pulse · ripgrep · rsync · tmux · udiskie · yazi · zram-generator

-

Also installs pamtester from the AUR.

-

svc — Core Services

-

Enables and starts these systemd units:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ServicePurpose
NetworkManagerNetwork connectivity
cronieCron daemon
fail2banBrute-force protection
greetdLogin session manager
udisks2Removable media
-

Also deploys greetd-tuigreet config from the dotfiles.

-

shell — Shell Setup

-
    -
  • zsh with Oh My Zsh and plugins (zsh-syntax-highlighting, zsh-autosuggestions)
  • -
  • Starship shell prompt
  • -
  • Neovim with Vim-Plug (see Editors)
  • -
  • Micro editor
  • -
  • Yazi file manager
  • -
  • Deploys .bashrc, .zshrc, starship.toml, Micro config, Neovim config
  • -
-
-

Desktop Environments

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDNameNotes
hyprlandHyprlandPrimary DE — see Hyprland
swaySwayWayland tiling WM, lighter
kde-plasmaKDE PlasmaFull-featured with sddm
gnomeGNOMEModern Wayland DE with gdm
cosmicCOSMICRust-based DE from System76
xfceXFCELightweight X11 with lightdm
lxqtLXQtLightweight Qt X11 with sddm
-
-

Optional Applications

-

Install via tui-install.sh at first install, or add later:

-
bash ~/Dotfiles/setup/install-modules.sh
-
-

AI & Machine Learning

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDPackageDescription
ollamaollamaLocal LLM runner with REST API server
llama-cppllama.cppStandalone inference CLI + server
open-webuiopen-webuiBrowser UI for Ollama / OpenAI-compatible backends
claudeclaude (npm)Anthropic Claude Code CLI
-

Networking & Security

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDPackagesDescription
networking-clinmap · nethogs · mitmproxy · httpieNetwork analysis and HTTP tooling
disk-recoveryddrescue · f3Disk imaging and flash drive testing
ssh-serveropensshSSH daemon with key-auth enforcement
wiresharkwireshark-qtPacket capture and analysis GUI
-

Development

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDPackagesDescription
pythonpyright · pipx · pynvimPython LSP, isolated tool runner, Neovim integration
dockerdocker · docker-composeContainer runtime
podmanpodman · buildah · podman-composeRootless containers
cockpitcockpit · machines · podmanWeb-based system management UI
k8skubectl · podman-desktopKubernetes CLI and desktop client
db-clientspgcli · mycliEnhanced interactive database CLIs
mysqlmariadbMariaDB server with initial setup
-

IDEs & Editors

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDPackageDescription
vscodiumvscodium-bin (AUR)VS Code without telemetry
zed-idezedHigh-performance Rust IDE
geanygeany · geany-pluginsLightweight IDE
codeblockscodeblocksC/C++ IDE
katekateKDE advanced text editor
-

Browsers

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDPackageDescription
chromiumchromiumOpen-source Chromium
firefox-browserfirefoxMozilla Firefox
zen-browserzen-browser-bin (AUR)Privacy-focused Firefox fork
nyxtnyxt (AUR)Keyboard-driven, hackable browser
librewolflibrewolf-bin (AUR)Hardened Firefox fork
min-browsermin (AUR)Minimal Electron browser
-

Gaming

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDPackageDescription
steamsteamSteam gaming platform
vesktopvesktop (AUR)Discord client with Vencord built-in
spotifyspotify (AUR) + spicetifyMusic player with CyberQueer theme
prismprismlauncher (Flatpak)Minecraft launcher
vintagestoryvintagestory (AUR)Survival / voxel game
-

Media & Creative

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDPackagesDescription
ffmpeggst-plugin-pipewire · gst-plugins-good · ffmpegthumbnailerGStreamer codecs + thumbnailer
soxsoxCommand-line audio processing
imagemagickimagemagickImage manipulation suite
yt-dlpyt-dlpYouTube / media downloader
blenderblender3D creation suite
gnuplotgnuplotScientific plotting
povraypovrayRay-tracing renderer
-

Productivity

- - - - - - - - - - - - - - - - - - - - - - - - - -
IDPackagesDescription
productivitytaskwarrior · watson · jrnlTask management, time tracking, journaling
himalayahimalaya (AUR)Terminal email client
toottoot (AUR)Mastodon CLI client
-

System Utilities

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDPackagesDescription
tlptlp · tlp-rdwLaptop battery optimisation
zfszfs-dkmsZFS kernel module
wprswprs-git (AUR)Wayland proxy for remote sessions
butterbutter (AUR)Btrfs snapshot backup manager
localsendlocalsend (AUR)LAN file transfer (AirDrop-like)
croccrocCross-platform encrypted file transfer
localtunnellocaltunnel (npm)Expose localhost over a public URL
onlyofficeonlyoffice-bin (AUR)Office suite (Docs, Sheets, Slides)
-

Identity & Infrastructure

- - - - - - - - - - - - - - - - - - - - - -
IDDescription
freeipa-clientsssd + ipa-client-install + auto-enrollment (see FreeIPA)
freeipa-serverInteractive FreeIPA server setup + client generator
freeipa-imageOCI / LXC / Proxmox LXC image builder + Keycloak
-
-

Container Shell Setups

-

Scripts in setup/Setup-shell-4-containers/ configure a minimal shell environment inside containers or chroots for each major distribution:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ScriptTarget
alpine.shAlpine Linux
arch.shArch Linux
debian.shDebian
fedora.shFedora
suse.shopenSUSE
ubuntu.shUbuntu
void.shVoid Linux
other.shGeneric fallback
-
-
- Generated by md-to-html.sh  ·  CyberQueer theme  ·  2026-05-18 -
- - diff --git a/docs/html/theming.html b/docs/html/theming.html deleted file mode 100644 index b963628..0000000 --- a/docs/html/theming.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - CyberQueer Theme System — M-Archy Dotfiles - - - - - ← Index -
-

CyberQueer Theme System

-

The CyberQueer theme is a single-source colour system: every config file that needs colours references a small set of hex values that can be changed in one place and propagated everywhere with a single command.

-
-

The Palette

-

Defined in ~/Dotfiles/colors.conf (bare 6-digit hex, no # prefix):

-
COLOR_TEXT=D6ABAB       # Rose-white — foreground text, labels
-COLOR_BG=1A1A1A         # Near-black — base surface, backgrounds
-COLOR_HIGHLIGHT=E40046  # Hot pink   — primary accent, active borders
-COLOR_DARK=5018DD       # Violet     — secondary accent, inactive borders
-COLOR_RED=F50505        # Red        — danger indicators, alerts
-
-
-

Applying the Theme

-
# Apply using the default colors.conf
-bash ~/Dotfiles/apply-theme.sh
-
-# Apply from a custom palette file
-bash ~/Dotfiles/apply-theme.sh /path/to/custom-colors.conf
-
-

apply-theme.sh will:

-
    -
  1. Read colors.conf (or the file you pass)
  2. -
  3. Compare against the last-applied state in ~/.config/colors.state
  4. -
  5. Replace only changed colour values across all tracked files
  6. -
  7. Save the new state to colors.state
  8. -
-

If nothing changed it exits immediately — safe to call repeatedly.

-

First-Run Bootstrap

-

On a fresh install where configs have been copied but no state file exists yet, apply-theme.sh bootstraps ~/.config/colors.state with the repository defaults so the diff works correctly from the start.

-
-

What Gets Themed

-

User Configs (~/.config/…)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileWhat it styles
starship.tomlShell prompt segment colours
yazi/theme.tomlFile manager UI colours
hypr/hyprland.confActive/inactive window border gradients
hypr/hyprtoolkit.confAdditional Hyprland colours
hypr/hyprlock.confLock screen colours
kitty/current-theme.confTerminal colour palette
kitty/kitty.confTerminal background & accents
kitty/themes/cyberqueer.confKitty colour scheme definition
waybar/style.cssTop bar widget colours
wofi/style.cssApp launcher colours
walker/themes/cyberqueer.cssWalker launcher theme
nwg-dock-hyprland/style.cssApplication dock
nwg-drawer/drawer.cssApplication drawer
nwg-panel/menu-start.cssPanel start menu
vicinae/cyberqueer.tomlGesture launcher
scripts/onscreenkb.shOn-screen keyboard colours
spicetify/Themes/*/color.iniSpotify client theme (×2 variants)
ulauncher/user-themes/cyberqueer/manifest.jsonuLauncher theme
ulauncher/user-themes/cyberqueer/theme.cssuLauncher CSS
ulauncher/user-themes/cyberqueer/generated.cssuLauncher generated CSS
Vencord/themes/cyberqueer.theme.cssDiscord theme
Vencord/themes/system24/…/cyberqueer.theme.cssDiscord system24 variant
-

System Files (applied via sudo)

- - - - - - - - - - - - - - - - - - - - - -
FileWhat it styles
/etc/ly/config.iniTUI login manager colours
/usr/share/themes/cyberqueer/gtk-3.0/gtk.cssGTK 3 theme
/usr/share/themes/cyberqueer/gtk-4.0/gtk.cssGTK 4 theme
-
-

Customising the Palette

-

Edit ~/Dotfiles/colors.conf, then run apply-theme.sh:

-
# Example: shift the accent to cyan
-nano ~/Dotfiles/colors.conf
-# → COLOR_HIGHLIGHT=00B4D8
-
-bash ~/Dotfiles/apply-theme.sh
-
-

The tui-install.sh installer also offers a colorway dialog as its final step: -enter new hex values in the form; leave them unchanged to skip.

-
-

How It Works Internally

-

apply-theme.sh reads two key–value files and computes the diff:

-
~/.config/colors.state   (old values — what's currently applied)
-colors.conf              (new values — what you want)
-
-

For each changed key it runs:

-
sed -i "s/${OLD_HEX}/${NEW_HEX}/gI" <file>
-
-

The case-insensitive (I) flag matches uppercase hex codes that some apps emit. After all replacements succeed, colors.state is updated.

- -

apply-theme.sh refuses to run if any deployed config path resolves back into ~/Dotfiles/ via symlink. This prevents theme changes from being committed directly into the git repository. The new-style install (via tui-install.sh) copies configs instead of symlinking them, so this guard is normally never triggered.

-
-

Answerfile Theming

-

If you generate an answerfile with generate-answerfile.sh, custom colours can be embedded in it:

-
{
-  "colors": {
-    "COLOR_TEXT": "D6ABAB",
-    "COLOR_BG": "1A1A1A",
-    "COLOR_HIGHLIGHT": "E40046",
-    "COLOR_DARK": "5018DD",
-    "COLOR_RED": "F50505"
-  }
-}
-
-

tui-install.sh will apply these at the end of an automated install.

-
-
- Generated by md-to-html.sh  ·  CyberQueer theme  ·  2026-05-18 -
- - diff --git a/docs/html/utilities.html b/docs/html/utilities.html deleted file mode 100644 index 31f50a6..0000000 --- a/docs/html/utilities.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - Utilities — M-Archy Dotfiles - - - - - ← Index -
-

Utilities

-

Miscellaneous scripts and tools that live at the top level or in the clamav/ directory.

-
-

System Update

-
bash ~/Dotfiles/update.sh
-
-

Runs a full system update: -1. sudo pacman -Syu — official repos -2. yay -Syu --answerdiff None --answerclean All --removemake — AUR packages (no prompts)

-

For per-package AUR updates with confirmation:

-
bash ~/Dotfiles/update-aur-onebyone.sh
-
-
-

Package Audit

-
bash ~/Dotfiles/setup/audit-packages.sh
-
-

Audits installed packages — useful for finding orphans or unexpected installations.

-
-

Encryption Utilities

-

Simple OpenSSL wrappers for encrypting/decrypting arbitrary strings. Useful for storing secrets in scripts or config files without plaintext exposure.

-

Encrypt

-
bash ~/Dotfiles/encrypt.sh "my secret text" "my-passphrase"
-# Output: base64-encoded AES-256-CBC ciphertext
-
-

Decrypt

-
bash ~/Dotfiles/decrypt.sh "<ciphertext>" "my-passphrase"
-# Output: original plaintext
-
-

Both use AES-256-CBC with PBKDF2 key derivation via OpenSSL.

-
-

Credential Storage

-

Initial Setup

-
bash ~/Dotfiles/setup-creds-missing.sh
-
-

Installs gnome-keyring and seahorse (GUI manager), then sets git's credential helper to store.

-

Git Credentials

-

git/ contains .gitconfig with:

-
[user]
-    name  = The_miro
-    email = amir@abdelbaki.eu
-
-[credential]
-    helper = store
-
-[init]
-    defaultBranch = main
-
-[push]
-    autoSetupRemote = true
-
-

The store helper writes credentials to ~/.git-credentials. For higher security, gnome-keyring intercepts this and stores the credentials in the system keyring instead of plaintext.

-
-

Zsh Plugins

-
bash ~/Dotfiles/zshplugins.sh
-
-

Clones (or updates) the two Oh My Zsh community plugins: -- zsh-syntax-highlighting — real-time syntax colouring in the prompt -- zsh-autosuggestions — fish-style history-based suggestions

-

These are referenced in .zshrc and active after the next shell start.

-
-

ClamAV On-Access Scanning

-

Full real-time antivirus scanning via ClamAV's clamonacc daemon.

-

Installation

-
bash ~/Dotfiles/clamav/install-clam-onaccess.sh
-
-

What it does: -1. Installs clamav -2. Copies clamd.conf to /etc/clamav/ -3. Installs clamav-clamonacc.service to /etc/systemd/system/ -4. Installs the sudoers entry from clamav-sudoer -5. Updates virus definitions (freshclam) -6. Enables and starts clamd + clamav-clamonacc

-

Key Files

- - - - - - - - - - - - - - - - - - - - - - - - - -
FilePurpose
clamav/clamd.confDaemon configuration (30 KB, full options)
clamav/clamav-clamonacc.servicesystemd unit for on-access scanning
clamav/clamav-sudoersudoers rule for ClamAV processes
clamav/virus-event.bashHandler executed when a virus is detected
-

Virus Event Handler

-

virus-event.bash is called by clamonacc when a threat is found. Customise it to send notifications, quarantine files, or alert an admin.

-
-

Shell Configuration

-

.zshrc

-
    -
  • Framework: Oh My Zsh
  • -
  • Theme: robbyrussell (overridden visually by Starship)
  • -
  • Plugins: syntax-highlighting, autosuggestions
  • -
  • Walk integration: lk function opens the walk file navigator
  • -
  • WALK_MAIN_COLOR: set to #5018DD (CyberQueer violet)
  • -
  • Sources Starship init at the end
  • -
-

.bashrc

-

Minimal bash config — sets PS1, loads ~/.bash_profile if present.

-

Starship Prompt

-

starship.toml at the repo root is deployed to ~/.config/starship.toml.

-

Key customisations: -- OS, username, directory, git, language, docker, and time segments -- CyberQueer colours throughout (colour-substitution target) -- Directory abbreviated to 3 levels with …/ truncation -- Common directory substitutions (~/Documents📄, etc.)

-
-

Login Manager (ly)

-

etc-ly-config.ini is deployed to /etc/ly/config.ini during Hyprland install and kept as a colour-substitution target in apply-theme.sh.

-

ly is a minimal TUI display manager that runs on tty1:

-
systemctl enable ly@tty1
-
-

Session selection, auto-login, and timeout settings are all in the config.

-
- - -