# 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 |
|----|------|-------|
| `hyprland` | Hyprland | Primary DE — see [Hyprland](hyprland.md) |
| `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
```

### AI & Machine Learning

| ID | Package | Description |
|----|---------|-------------|
| `ollama` | ollama | Local LLM runner with REST API server |
| `llama-cpp` | llama.cpp | Standalone inference CLI + server |
| `open-webui` | open-webui | Browser UI for Ollama / OpenAI-compatible backends |
| `claude` | claude (npm) | Anthropic Claude Code CLI |

### Networking & Security

| ID | Packages | Description |
|----|---------|-------------|
| `networking-cli` | nmap · nethogs · mitmproxy · httpie | Network analysis and HTTP tooling |
| `disk-recovery` | ddrescue · f3 | Disk imaging and flash drive testing |
| `ssh-server` | openssh | SSH daemon with key-auth enforcement |
| `wireshark` | wireshark-qt | Packet capture and analysis GUI |

### Virtualisation & Remote Desktop

| ID | Packages | Description |
|----|---------|-------------|
| `qemu` | qemu-full · libvirt · virt-manager · virt-viewer · dnsmasq · bridge-utils · edk2-ovmf · swtpm · vde2 | Full QEMU/KVM stack with virt-manager GUI; enables libvirtd, auto-starts default NAT network, adds user to `libvirt` and `kvm` groups |
| `rdp-client` | remmina · freerdp · libvncserver | Remmina remote desktop client with RDP (FreeRDP) and VNC support |
| `lamco-rdp-server` | lamco-rdp-server (AUR) | Native Wayland RDP server written in Rust with H.264/VA-API encoding; runs as a systemd user service |

**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`)

### Development

| ID | Packages | Description |
|----|---------|-------------|
| `python` | pyright · pipx · pynvim | Python LSP, isolated tool runner, Neovim integration |
| `docker` | docker · docker-compose | Container runtime |
| `podman` | podman · buildah · podman-compose | Rootless containers |
| `cockpit` | cockpit · machines · podman | Web-based system management UI |
| `k8s` | kubectl · podman-desktop | Kubernetes CLI and desktop client |
| `db-clients` | pgcli · mycli | Enhanced interactive database CLIs |
| `mysql` | mariadb | MariaDB server with initial setup |

### IDEs & Editors

| ID | Package | Description |
|----|---------|-------------|
| `vscodium` | vscodium-bin (AUR) | VS Code without telemetry |
| `zed-ide` | zed | High-performance Rust IDE |
| `geany` | geany · geany-plugins | Lightweight IDE |
| `codeblocks` | codeblocks | C/C++ IDE |
| `kate` | kate | KDE advanced text editor |

### Browsers

| ID | Package | Description |
|----|---------|-------------|
| `chromium` | chromium | Open-source Chromium |
| `firefox-browser` | firefox | Mozilla Firefox |
| `zen-browser` | zen-browser-bin (AUR) | Privacy-focused Firefox fork |
| `nyxt` | nyxt (AUR) | Keyboard-driven, hackable browser |
| `librewolf` | librewolf-bin (AUR) | Hardened Firefox fork |
| `min-browser` | min (AUR) | Minimal Electron browser |

### Gaming

| ID | Package | Description |
|----|---------|-------------|
| `steam` | steam | Steam gaming platform |
| `vesktop` | vesktop (AUR) | Discord client with Vencord built-in |
| `spotify` | spotify (AUR) + spicetify | Music player with CyberQueer theme |
| `prism` | prismlauncher (Flatpak) | Minecraft launcher |
| `vintagestory` | vintagestory (AUR) | Survival / voxel game |

### Media & Creative

| ID | Packages | Description |
|----|---------|-------------|
| `ffmpeg` | gst-plugin-pipewire · gst-plugins-good · ffmpegthumbnailer | GStreamer codecs + thumbnailer |
| `sox` | sox | Command-line audio processing |
| `imagemagick` | imagemagick | Image manipulation suite |
| `yt-dlp` | yt-dlp | YouTube / media downloader |
| `blender` | blender | 3D creation suite |
| `gnuplot` | gnuplot | Scientific plotting |
| `povray` | povray | Ray-tracing renderer |

#### Graphic Design

| ID | Package | Description |
|----|---------|-------------|
| `gimp` | gimp | GNU Image Manipulation Program |
| `inkscape` | inkscape | Vector graphics editor |
| `krita` | krita | Digital painting and illustration |

#### Video Editing

| ID | Package | Description |
|----|---------|-------------|
| `kdenlive` | kdenlive | KDE non-linear video editor |
| `openshot` | openshot | Cross-platform video editor |
| `shotcut` | shotcut | Cross-platform video editor |

#### Audio Production

| ID | Package | Description |
|----|---------|-------------|
| `audacity` | audacity | Multi-track audio editor |
| `lmms` | lmms | Linux MultiMedia Studio (music production) |
| `ardour` | ardour | Professional DAW |
| `mixxx` | mixxx | DJ mixing software |
| `cecilia` | cecilia (AUR) | Audio synthesis and signal processing |

### Productivity

| ID | Packages | Description |
|----|---------|-------------|
| `productivity` | taskwarrior · watson · jrnl | Task management, time tracking, journaling |
| `himalaya` | himalaya (AUR) | Terminal email client |
| `toot` | toot (AUR) | Mastodon CLI client |

### System Utilities

| ID | Packages | Description |
|----|---------|-------------|
| `tlp` | tlp · tlp-rdw | Laptop battery optimisation |
| `zfs` | zfs-dkms | ZFS kernel module |
| `wprs` | wprs-git (AUR) | Wayland proxy for remote sessions |
| `butter` | butter (AUR) | Btrfs snapshot backup manager |
| `localsend` | localsend (AUR) | LAN file transfer (AirDrop-like) |
| `croc` | croc | Cross-platform encrypted file transfer |
| `localtunnel` | localtunnel (npm) | Expose localhost over a public URL |
| `onlyoffice` | onlyoffice-bin (AUR) | Office suite (Docs, Sheets, Slides) |

### Identity & Infrastructure

| ID | Description |
|----|-------------|
| `freeipa-client` | sssd + ipa-client-install + auto-enrollment (see [FreeIPA](freeipa-ansible.md)) |
| `freeipa-server` | Interactive FreeIPA server setup + client generator |
| `freeipa-image` | OCI / 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:

| 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 |
