Dotfiles/docs/md/modules.md

288 lines
9.9 KiB
Markdown

# 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:
| Service | Purpose |
|---------|---------|
| `NetworkManager` | Network connectivity |
| `cronie` | Cron daemon |
| `fail2ban` | Brute-force protection |
| `greetd` | Login session manager |
| `udisks2` | Removable 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](editors.md))
- **Micro** editor
- **Yazi** file manager
- Deploys `.bashrc`, `.zshrc`, `starship.toml`, Micro config, Neovim config
### `plymouth` — Boot Splash *(on by default)*
Installs the **M-Archy Plymouth theme**: the skull logo (`resources/bg-skull.svg`) centred on a dark background with a 12-dot magenta spinner animation below it.
- Converts the bundled SVG to PNG via `rsvg-convert` (Plymouth's image loader is PNG-only)
- Injects the `plymouth` or `sd-plymouth` mkinitcpio hook automatically (detects `udev` vs `systemd` hook set)
- Adds `quiet splash` to `GRUB_CMDLINE_LINUX_DEFAULT` and regenerates GRUB config
- Rebuilds the initramfs so the theme is baked in
To install with a **custom image** on an existing system, use `install-modules.sh` and select *Plymouth (custom)* — you will be prompted for a PNG or SVG path.
---
## Desktop Environments
| ID | Name | Notes |
|----|------|-------|
| `hyprlua` | HyprLua | Lua-based Hyprland — recommended — see [Hyprland](hyprland.md) |
| `niri` | Niri | Scrollable-tiling Wayland compositor — see [Niri](niri.md) |
| `hyprland` | Hyprland | Legacy Hyprlang config |
| `sway` | Sway | Wayland tiling WM, lighter |
| `kde-plasma` | KDE Plasma | Full-featured with sddm |
| `gnome` | GNOME | Modern Wayland DE with gdm |
| `cosmic` | COSMIC | Rust-based DE from System76 |
| `xfce` | XFCE | Lightweight X11 with lightdm |
| `lxqt` | LXQt | Lightweight Qt X11 with sddm |
---
## Optional Applications
Install via `tui-install.sh` at first install, or add later:
```bash
bash ~/Dotfiles/setup/install-modules.sh
```
> This table is generated from `setup/modules.conf`. Run `setup/generate-modules.sh` to regenerate.
### AI & Machine Learning
<!-- BEGIN GENERATED MODULES: ai -->
| ID | Description |
|----|-------------|
| `ollama` | local LLM runner and API server |
| `llama-cpp` | standalone LLM inference CLI and server |
| `open-webui` | browser UI for Ollama and LLM backends |
| `claude` | Anthropic Claude Code CLI via npm |
<!-- END GENERATED MODULES: ai -->
### Networking & Security
<!-- BEGIN GENERATED MODULES: networking -->
| ID | Description |
|----|-------------|
| `networking-cli` | nmap, nethogs, mitmproxy, httpie |
| `disk-recovery` | ddrescue and f3 disk recovery tools |
| `himalaya` | terminal email client (AUR) |
| `mail-notmuch` | isync, msmtp, notmuch, alot mail stack |
| `caldav-sync` | vdirsyncer and khal CalDAV calendar sync |
| `ssh-server` | openssh with key-auth and systemd unit enabled |
| `wireshark` | network packet analyser GUI |
| `anti-malware` | ClamAV, rkhunter, chkrootkit |
<!-- END GENERATED MODULES: networking -->
### Development
<!-- BEGIN GENERATED MODULES: dev -->
| ID | Description |
|----|-------------|
| `gnuplot` | scientific plotting tool |
| `blender-povray` | 3D modelling and ray-tracing (Blender + POV-Ray) |
| `toot` | Mastodon CLI client (AUR) |
| `db-clients` | pgcli and mycli interactive database CLIs |
| `mysql` | MariaDB server with initial setup |
| `productivity` | taskwarrior, watson, jrnl — task management and time tracking |
| `python` | pyright, pipx, pynvim Python tooling |
| `k8s` | kubectl and podman-desktop Kubernetes tools |
| `docker` | docker and docker-compose |
| `podman` | rootless containers with buildah |
| `cockpit` | web UI for machines and containers |
<!-- END GENERATED MODULES: dev -->
### System Utilities
<!-- BEGIN GENERATED MODULES: system -->
| ID | Description |
|----|-------------|
| `tlp` | laptop battery optimisation |
| `butter` | btrfs snapshot backup manager (AUR) |
| `localsend` | LAN file transfer, AirDrop-like (AUR) |
| `croc` | cross-platform encrypted file transfer |
| `opendeck` | Stream Deck controller — ydotool + OpenDeck (Flatpak) |
| `localtunnel` | expose localhost over a public URL |
| `timeshift` | system snapshot and backup with autosnap |
| `zfs` | zfs-dkms kernel module |
| `wprs` | Wayland proxy for remote sessions (wprs-git, AUR) |
| `plymouth-custom` | boot splash with a user-supplied image |
<!-- END GENERATED MODULES: system -->
### Gaming
<!-- BEGIN GENERATED MODULES: gaming -->
| ID | Description |
|----|-------------|
| `steam` | Steam gaming platform |
| `vesktop` | Discord client with Vencord theme |
| `spotify` | Spotify launcher with Spicetify theming |
| `prism` | PrismLauncher Minecraft launcher (Flatpak) |
| `vintagestory` | Vintage Story survival game (AUR) |
| `openarena` | open-source Quake III Arena |
| `tetris` | bastet and vitetris terminal Tetris |
| `doom` | Chocolate Doom with Freedoom data |
| `sauerbraten` | Sauerbraten open-source FPS (Cube 2) |
| `stuntrally` | Stunt Rally racing game (Flatpak) |
<!-- END GENERATED MODULES: gaming -->
### Notes & Office
<!-- BEGIN GENERATED MODULES: notes -->
| ID | Description |
|----|-------------|
| `onlyoffice` | office suite — Docs, Sheets, Slides (AUR) |
| `xournal` | note-taking and PDF annotator |
| `rnote` | handwriting and note-taking with stylus support (Flatpak) |
| `obsidian` | knowledge base and Markdown note-taking (Flatpak) |
| `tangent-notes` | networked Markdown note-taking (Flatpak) |
<!-- END GENERATED MODULES: notes -->
### Media
<!-- BEGIN GENERATED MODULES: media -->
| ID | Description |
|----|-------------|
| `ffmpeg` | GStreamer codecs and ffmpegthumbnailer |
| `sox` | command-line audio processing toolkit |
| `imagemagick` | image manipulation suite |
| `yt-dlp` | YouTube and media downloader |
<!-- END GENERATED MODULES: media -->
### Graphic Design
<!-- BEGIN GENERATED MODULES: graphics -->
| ID | Description |
|----|-------------|
| `gimp` | GNU Image Manipulation Program |
| `inkscape` | vector graphics editor |
| `krita` | digital painting and illustration |
<!-- END GENERATED MODULES: graphics -->
### Video Editing
<!-- BEGIN GENERATED MODULES: video -->
| ID | Description |
|----|-------------|
| `kdenlive` | KDE non-linear video editor |
| `openshot` | cross-platform video editor |
| `shotcut` | cross-platform video editor |
<!-- END GENERATED MODULES: video -->
### Audio Production
<!-- BEGIN GENERATED MODULES: audio -->
| ID | Description |
|----|-------------|
| `ardour` | professional DAW |
| `audacity` | multi-track audio editor |
| `lmms` | Linux MultiMedia Studio music production |
| `mixxx` | DJ mixing software |
| `cecilia` | audio synthesis and signal processing (AUR) |
<!-- END GENERATED MODULES: audio -->
### Browsers
<!-- BEGIN GENERATED MODULES: browsers -->
| ID | Description |
|----|-------------|
| `chromium` | open-source Chromium browser (official) |
| `firefox-browser` | Mozilla Firefox (official) |
| `zen-browser` | privacy-focused Firefox fork (AUR) |
| `nyxt` | keyboard-driven hackable browser (AUR) |
| `librewolf` | hardened Firefox fork (AUR) |
| `min-browser` | minimal Electron browser (AUR) |
<!-- END GENERATED MODULES: browsers -->
### IDEs & Editors
<!-- BEGIN GENERATED MODULES: editors -->
| ID | Description |
|----|-------------|
| `vscodium` | telemetry-free VS Code build (AUR) |
| `zed-ide` | high-performance Rust IDE (official) |
| `geany` | lightweight IDE with plugins (official) |
| `codeblocks` | C/C++ IDE (official) |
| `kate` | KDE advanced text editor (official) |
<!-- END GENERATED MODULES: editors -->
### Virtualisation & Remote Desktop
<!-- BEGIN GENERATED MODULES: virt -->
| ID | Description |
|----|-------------|
| `rdp-client` | Remmina with FreeRDP and VNC plugins |
| `lamco-rdp-server` | native Wayland RDP server (AUR, Rust) |
| `qemu` | full QEMU/KVM stack with virt-manager |
<!-- END GENERATED MODULES: virt -->
**lamco-rdp-server notes:**
- Enabled as a user service: `systemctl --user enable lamco-rdp-server.service`
- Start manually: `systemctl --user start lamco-rdp-server`
- Optional GUI tray: `lamco-rdp-server-gui`
- Requires an `xdg-desktop-portal` matching your compositor (`-hyprland`, `-wlr`, `-gnome`, `-kde`)
### Identity & Infrastructure
<!-- BEGIN GENERATED MODULES: infra -->
| ID | Description |
|----|-------------|
| `freeipa-client` | sssd and ipa-client-install with auto-enrollment |
| `freeipa-server` | interactive FreeIPA server setup with client generator |
<!-- END GENERATED MODULES: infra -->
---
## Container Shell Setups
Scripts in `setup/Setup-shell-4-containers/` configure a minimal shell environment inside containers or chroots for each major distribution:
| Script | Target |
|--------|--------|
| `alpine.sh` | Alpine Linux |
| `arch.sh` | Arch Linux |
| `debian.sh` | Debian |
| `fedora.sh` | Fedora |
| `suse.sh` | openSUSE |
| `ubuntu.sh` | Ubuntu |
| `void.sh` | Void Linux |
| `other.sh` | Generic fallback |