# rustpm
A fast, friendly APT frontend written in Rust — similar to [nala](https://gitlab.com/volian/nala) but with first-class kernel management.
## Features
- **Package management**: install, remove, upgrade, search, show, list — with a full interactive TUI
- **Kernel management**: install/remove/pin Debian kernels + linux-headers atomically; GRUB updated automatically
- **Vanilla kernels**: download and install mainline kernels from [kernel.org](https://www.kernel.org/) via Ubuntu mainline builds
- **Desktop environments**: install/remove KDE, GNOME, XFCE, MATE, LXQt, Cinnamon with one command
- **APT sources**: view, add, remove, enable/disable APT sources from a TUI panel
- **Transaction history**: view past operations; undo installs/removals
- **Self-update checker**: notifies you when a new version is available
- **Interactive TUI by default**: running `rustpm` with no arguments opens a full-screen terminal UI
## Install
rustpm requires root for APT operations and automatically re-executes itself under `sudo` if not already root. Install it to a system-wide PATH location so this works correctly.
```bash
# From crates.io — installs to /usr/local/bin
sudo cargo install --root /usr/local rustpm
# Or build from source
git clone https://gitlab.com/dfred26/rustpm
cd rustpm
sudo make install # builds and installs to /usr/local/bin/rustpm
```
## Usage
```
rustpm # open interactive TUI
rustpm update # refresh package lists
rustpm upgrade # upgrade packages (shows diff first)
rustpm install <pkg>... # install packages
rustpm remove <pkg>... # remove packages
rustpm search <term> # search packages
rustpm show <pkg> # show package details
rustpm list [--installed] # list packages
rustpm kernel list # show installed/available Debian kernels
rustpm kernel install <ver> # install kernel + headers
rustpm kernel remove <ver> # remove kernel (refuses running kernel)
rustpm kernel update # upgrade to latest Debian kernel
rustpm kernel pin <ver> # pin kernel version
rustpm kernel vanilla list # list mainline kernel releases
rustpm kernel vanilla install <ver> # download & install vanilla kernel
rustpm desktop list # show available desktop environments
rustpm desktop install kde # install KDE Plasma
rustpm desktop switch gnome # install GNOME and set as default DM
rustpm sources list # list APT sources
rustpm sources add <uri> <suite> <components...>
rustpm sources disable <uri> # comment out a source
rustpm history # view transaction history
rustpm history undo <id> # undo a transaction
```
## Environment variables
| `RUSTPM_NO_TUI=true` | Disable TUI, use plain text output |
| `RUSTPM_NO_UPDATE_CHECK=true` | Skip self-update check |
## License
GPL-3.0-or-later