# 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

---

## 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` | boot splash — bundled skull logo + boot-log tail |
| `plymouth-custom` | boot splash with a user-supplied image |
| `greetd-regreet` | greetd + ReGreet greeter, Wayland-native, cyberqueer-themed |
| `lightdm` | LightDM GTK greeter, cyberqueer-themed (Xorg) |
| `ly` | ly TUI display manager, cyberqueer-themed |
<!-- 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 |
