A simple package manager mixing traditional and next-gen concepts
Explore the docs »
Report Bug
·
Request Feature
Table of Contents
There are already many great package managers out there; however, most of them install all packages into the global directories, which makes it hard to roll back to a previous state if something went wrong. Therefor usually you have to manually chroot into youre installation and resolve the issues or let youre filesystem take snapshots so that you can rollback to a previous state. In my opinion this is not the task of your filesystem but of your package manager. Next generation package managers like nix prevent those failures by the concept of generations. Whenever you install, remove or modify a package, a new generations is created, so that you can switch to another generation at any moment. Hua borrows this feature, but retains FHS compatible, so that you do not have to patch elf files and downloaded applications run just out of the box if you have all the necessary dependencies installed.
We use the Nix package manager to create a reproducible development environment. So to start developing, make sure you installed the Nix package manager and that the nix flakes feature is enabled.
Then just run:
nix develop
Currently there is no way to install hua, but there will be a installation for Nix users soon.
hua add <name>
hua remove <name>
hua generations list
hua generations remove <id>
hua store collect-garbage
- [] Improve test coverage
- [] Improve error messages
- [] Create a package format with Roc
- [] File permissions
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Dual licensed under either MIT or Apache-2.0 at your choice
Thomas Wehmöller - @MordragT
Project Link: https://github.com/MordragT/hua
These are some great projects that helped me create hua