Skip to main content

The fun cross-platform package manager!

Project description

Funstall

This is my own custom package manager (well, mostly it's a wrapper around other package managers).

Usage

NOTE Since this tool currently requires pyenv it does not run on Windows.

Installation

NOTE This tool uses pyenv to install itself and other software that runs on Python. The installer will install pyenv if it is not available.

(
  ^curl
    --silent
    --show-error
    --location
    https://raw.githubusercontent.com/hbibel/funstall/refs/heads/main/install.nu
    -o /tmp/install-funstall.nu
)
nu /tmp/install-funstall.nu  # Add flags as required
rm /tmp/install-funstall.nu

A link to the executable will be placed at ~/.local/bin. Make sure this is on your PATH.

List all available packages

funstall list

Why?

I use multiple operating systems on multiple machines, requiring me to switch between package managers (mainly pacman and brew). My goal is to have a consistent, personal workflow no matter which machine I use, so I need a wrapper around platform-specific package managers.

As a side note, I also don't agree with how some AUR packages are implemented, so I'm hesitant to use yay on Arch. Implementing my own installation scripts based on AUR implementations also makes me feel safer from supply-chain attacks.

Implementation Considerations

Initially I planned to implement this in nushell within my dotfiles. However I started to feel uneasy with the rather simplistic typing system in nushell as data models surpassed a certain level of complexity. Therefore I decided to reach for another programming language.

I started this project using Python because I want to avoid writing a GitHub action for now to distribute this project across my computers. Generally I prefer compiled languages for CLI applications though so I may rewrite in Rust™ in the future (or in another language).

Development

Publish a new version:

First create a PyPI API key with access to the repository. Then save it in .pypi-token.secret.

uv build --sdist
uv publish --token $(cat .pypi-token.secret)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

funstall-0.1.2.tar.gz (30.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

funstall-0.1.2-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file funstall-0.1.2.tar.gz.

File metadata

  • Download URL: funstall-0.1.2.tar.gz
  • Upload date:
  • Size: 30.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.14

File hashes

Hashes for funstall-0.1.2.tar.gz
Algorithm Hash digest
SHA256 cd1e5096cfbe77fde62276e8e280ea6d0e27d96874cb10e9d59256c4f6699855
MD5 c13474c9e46ed09c1342914b9f036155
BLAKE2b-256 7770a19891ee6da19216871b2d36ecf03d6da85d75c6db5a76b7b23d1c3a0724

See more details on using hashes here.

File details

Details for the file funstall-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: funstall-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.14

File hashes

Hashes for funstall-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d796864d90f444b7d09e945217784e296afff010f3bd29166a9ceed736d73609
MD5 d0add482229d28890fef314aa982a333
BLAKE2b-256 c7932a60a75e47c4c2816551180ffc833514358c52c8092f1a5016f1f48635f0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page