Skip to content

AnimatedGTVR/TinyPM

Repository files navigation

TinyPM V3

Powered by Parcel.
A beginner-friendly Linux package wrapper for the Abora ecosystem, built on a NixOS base.

v3.0.0 Parcel GPLv3 Linux


TinyPM V3

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 firefox

You can also inspect the engine directly:

Parcel --version

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

Adding extra sources

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

You can also call it through the main CLI:

tinypm add-repo ppa:hepp3n/cosmic-epoch

Each 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 / Nix

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

Installing a desktop environment

grab-de installs a whole desktop environment with the right packages, display manager, and session for your backend:

grab-de cosmic        # also: gnome, plasma, xfce

Or through the main CLI:

tinypm de cosmic

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

Abora / Nix

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

Abora / ANIX (declarative installs)

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

This 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 use nix-env directly
  • TINYPM_ANIX_APPLY=0 — update anix.nix but skip the rebuild (run anix apply yourself)

Desktops ANIX doesn't model (e.g. cosmic) fall back to the printed configuration.nix instructions.


Why V3

TinyPM V3 is simpler on purpose.

  • grab is 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

Features

  • 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 --fix
  • tinypm export-state and tinypm import-state

Installation

Clone the repository:

git clone https://github.com/AnimatedGTVR/TinyPM.git
cd TinyPM

Install TinyPM V3:

chmod +x install.sh
./install.sh

Use the Abora flavor:

TINYPM_FLAVOR=abora ./install.sh

The installer will:

  • install TinyPM into ~/.tinypm
  • link commands into ~/.local/bin
  • expose tinypm, tiny, grab, syspm, and version
  • expose Parcel --version for engine/runtime inspection
  • detect your native package manager automatically if one exists
  • prefer nix automatically 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 update

Commands

Main

grab [-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 version

Quick forms:

tinypm i firefox
tinypm s blender
tinypm r htop
tinypm u
tinypm ls
tinypm v

Native only

syspm install <package>
syspm search <query>
syspm remove <package>
syspm list
syspm update
syspm version

Backend Rules

Parcel supports these native package managers:

  • apt
  • dnf
  • pacman
  • xbps
  • zypper
  • apk
  • emerge
  • brew
  • nix

Abora note:

  • Abora is NixOS-based, so Parcel prefers nix as the native backend on Abora installs
  • syspm on Abora routes through the native Nix path

Flags:

  • -n, --native forces the native package manager
  • -f, -flat, -flatpak forces Flatpak
  • -s, --snap forces Snap

If you run grab firefox and more than one backend is available, TinyPM V3 asks which one to use.


Project Shape

TinyPM V3 is intentionally smaller than the previous release.

  • tinypm: main CLI
  • grab: install-first entrypoint
  • Parcel: core engine identity/version entrypoint
  • syspm: native-only wrapper
  • version: version and system report
  • lib/core/: config, args, actions, state, doctor, UI
  • lib/providers/: native, Flatpak, Snap
  • share/: logo and curated catalog

License

TinyPM V3 is licensed under the GNU General Public License v3.0.

See LICENSE for the full text.

About

A beginner friendly Linux package wrapper for Windows users. Built for the Abora ecosystem and released under GPLv3.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages