Powered by Parcel.
A beginner-friendly Linux package wrapper for the Abora ecosystem, built on a NixOS base.
TinyPM V3 is the remastered release of TinyPM.
The system name is TinyPM V3.
The core engine name is Parcel.
Parcel gives TinyPM one simple install flow across:
- native package managers
- Flatpak
- Snap
For Abora, the native path is Nix because Abora uses NixOS as its base.
The main command is now:
grab firefoxYou can also inspect the engine directly:
Parcel --versionIf your system has more than one valid source available and you do not pass a flag, Parcel asks which backend you want to use.
Examples:
grab firefox
grab -f org.mozilla.firefox
grab -flat org.mozilla.firefox
grab -flatpak org.mozilla.firefox
grab -s firefox
grab -n firefoxgrab-add-repo is the Parcel answer to add-apt-repository. It registers an
extra source with your native backend, then grab update and grab <package>
work as usual:
grab-add-repo ppa:hepp3n/cosmic-epoch
grab update
grab cosmic-sessionYou can also call it through the main CLI:
tinypm add-repo ppa:hepp3n/cosmic-epochEach backend has its own idea of an "extra source", so grab-add-repo routes
the spec to the right call:
| Backend | What grab-add-repo does |
|---|---|
apt |
add-apt-repository -y <spec> (installs software-properties-common if needed) |
dnf |
dnf config-manager --add-repo <url>, or dnf copr enable for copr:owner/project |
zypper |
zypper addrepo --refresh <url> [name] |
pacman |
appends [name] / Server to /etc/pacman.conf (use name=url) |
apk |
appends the URL to /etc/apk/repositories |
xbps |
writes the repository into /etc/xbps.d/10-tinypm.conf |
brew |
brew tap <owner/repo> |
nix |
nix-channel --add <url> [name] then nix-channel --update |
Abora is NixOS-based, so grab-add-repo registers a Nix channel there.
PPAs are Ubuntu-only and cannot translate, so pass a channel URL (with an
optional name) instead:
grab-add-repo https://nixos.org/channels/nixos-unstable unstable
grab cosmic-sessiongrab-de installs a whole desktop environment with the right packages,
display manager, and session for your backend:
grab-de cosmic # also: gnome, plasma, xfceOr through the main CLI:
tinypm de cosmicIt maps a logical name to each backend's reality:
| DE | pacman | apt | dnf | nix (declarative) |
|---|---|---|---|---|
cosmic |
cosmic group |
cosmic-session |
@cosmic-desktop |
services.desktopManager.cosmic.enable |
gnome |
gnome gdm |
gnome-core gdm3 |
@gnome-desktop |
services.desktopManager.gnome.enable |
plasma |
plasma sddm |
kde-plasma-desktop sddm |
@kde-desktop |
services.desktopManager.plasma6.enable |
xfce |
xfce4 lightdm |
xfce4 lightdm |
@xfce-desktop |
services.xserver.desktopManager.xfce.enable |
On imperative distros it installs the packages and enables the display manager.
On NixOS a desktop environment is declarative — installing it with
nix-env would give you a broken half-session. So on Nix, grab-de prints the
exact configuration.nix lines plus the rebuild command instead of installing:
grab-de cosmic
# -> add to /etc/nixos/configuration.nix:
# services.desktopManager.cosmic.enable = true;
# services.displayManager.cosmic-greeter.enable = true;
# -> then: sudo nixos-rebuild switch && rebootAbora manages its system declaratively through ANIX (/etc/nixos/anix.nix,
applied with anix apply). When the anix tool is present, TinyPM stops doing
imperative nix-env installs and instead edits the ANIX config, so grab
changes are declarative and survive system rebuilds:
grab firefox # -> anix package add firefox ; anix apply
grab remove htop # -> anix package remove htop ; anix apply
grab-de gnome # -> anix set desktop gnome ; anix applyThis only activates when anix is installed. On plain NixOS (no ANIX) or any
other distro, behavior is unchanged.
Environment overrides:
TINYPM_NO_ANIX=1— ignore ANIX and usenix-envdirectlyTINYPM_ANIX_APPLY=0— updateanix.nixbut skip the rebuild (runanix applyyourself)
Desktops ANIX doesn't model (e.g. cosmic) fall back to the printed
configuration.nix instructions.
TinyPM V3 is simpler on purpose.
grabis now the primary install command- Seed has been removed
- desktop and intro launchers have been removed
- the installer no longer asks you to pick a default install command flow
- provider choice happens at install time when it is actually needed
- Primary install command:
grab - Engine command:
Parcel --version - Main CLI:
tinypm - Native-only wrapper:
syspm - Flatpak, Snap, and native package support
- Automatic backend detection
- Interactive backend choice when multiple sources are available
- Managed package tracking
- Curated discover catalog
tinypm doctor --fixtinypm export-stateandtinypm import-state
Clone the repository:
git clone https://github.com/AnimatedGTVR/TinyPM.git
cd TinyPMInstall TinyPM V3:
chmod +x install.sh
./install.shUse the Abora flavor:
TINYPM_FLAVOR=abora ./install.shThe installer will:
- install TinyPM into
~/.tinypm - link commands into
~/.local/bin - expose
tinypm,tiny,grab,syspm, andversion - expose
Parcel --versionfor engine/runtime inspection - detect your native package manager automatically if one exists
- prefer
nixautomatically on NixOS-based systems like Abora
Then test it:
export PATH="$HOME/.local/bin:$PATH"
hash -r
grab firefox
tinypm doctor
tiny --version
Parcel --version
syspm updategrab [-f|-flat|-flatpak|-s|-n] <package>
grab-add-repo <repo> [name]
grab-de <desktop>
Parcel --version
tinypm install [-f|-flat|-flatpak|-s|-n|--brew|--nix] <package>
tinypm add-repo <repo> [name]
tinypm de <desktop>
tinypm search [-f|-flat|-flatpak|-s|-n|--brew|--nix] <query>
tinypm remove [-f|-flat|-flatpak|-s|-n|--brew|--nix] <package>
tinypm list [-f|-flat|-flatpak|-s|-n|--brew|--nix]
tinypm update [-f|-flat|-flatpak|-s|-n|--brew|--nix]
tinypm info <package>
tinypm managed
tinypm discover [query]
tinypm doctor [--fix]
tinypm export-state [file]
tinypm import-state <file>
tinypm versionQuick forms:
tinypm i firefox
tinypm s blender
tinypm r htop
tinypm u
tinypm ls
tinypm vsyspm install <package>
syspm search <query>
syspm remove <package>
syspm list
syspm update
syspm versionParcel supports these native package managers:
aptdnfpacmanxbpszypperapkemergebrewnix
Abora note:
- Abora is NixOS-based, so Parcel prefers
nixas the native backend on Abora installs syspmon Abora routes through the native Nix path
Flags:
-n,--nativeforces the native package manager-f,-flat,-flatpakforces Flatpak-s,--snapforces Snap
If you run grab firefox and more than one backend is available, TinyPM V3 asks which one to use.
TinyPM V3 is intentionally smaller than the previous release.
tinypm: main CLIgrab: install-first entrypointParcel: core engine identity/version entrypointsyspm: native-only wrapperversion: version and system reportlib/core/: config, args, actions, state, doctor, UIlib/providers/: native, Flatpak, Snapshare/: logo and curated catalog
TinyPM V3 is licensed under the GNU General Public License v3.0.
See LICENSE for the full text.