Skip to content

Commit

Permalink
Merge pull request #3 from kruserr/scoop-and-apt
Browse files Browse the repository at this point in the history
Scoop and apt
  • Loading branch information
kruserr authored Nov 2, 2024
2 parents 37ea658 + a8360ba commit 860fbf6
Show file tree
Hide file tree
Showing 10 changed files with 188 additions and 91 deletions.
74 changes: 37 additions & 37 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The goal of this project is to improve the package manager user experience, and

We are building a layer of abstraction above the system package manager, and making it such that you only need to learn a single package manager to use them all, although with a reduced feature set where applicable, such as with nix.

This project is especially targeted towards those who are stuck on a ***dows based fleet, but need a streamlined package manager with streamlined critical cve update notifications for installed software with opt out invasive notifications that force the end user to update.
This project is especially targeted towards those who are stuck on a windows based fleet, but need a streamlined package manager with streamlined critical cve update notifications for installed software with opt out invasive notifications that force the end user to update.

## Features
- CLI client
Expand Down Expand Up @@ -43,4 +43,5 @@ Visit the [Documentation](https://github.com/kruserr/pakka/tree/master/docs/READ
- [ ] iced gui
- [ ] scan installed packages for cves
- [ ] option to limit strictly to open source software
- [ ] option to limit to white listed packages
<!-- - [ ] -->
51 changes: 33 additions & 18 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,49 @@
- [ ]

# v0.1
- [ ] meta package manager
- [ ] make it a cross platform package manager, that just uses what is available, but has a minimum set of requirements, e.g. should at least have a compatible package manger scoop on ***dows nad homebrew on mac then has the same interface for every os
- [ ] use a underlying cow filesystem to implement transactional package management, if not available then it is just not transactional
- [ ] if installing on ***dows run scoop install bootstrap

# v0.2
# 0.1
- [x] meta package manager
- [x] make it a cross platform package manager, that just uses what is available, but has a minimum set of requirements, e.g. should at least have a compatible package manger scoop on windows nad homebrew on mac then has the same interface for every os
- [x] record all package install and uninstall in log structured database with event sourcing, we can then say exactly which packages were installed at a given point in time
- [ ] sync to database, e.g. calc diff between which packages should be on the system and install teh ones that are missing, we will wait with removing packages since that can be a lot harder, only allow removing packages manually not automatically sync tr db
- [x] export and import single file sync db
- [x] basic iced gui
- [ ] update
- [ ] upgrade
- [ ] full-upgrade
- [ ] sys-list
- [ ] store event_log.jsonl in e.g. ~/.config/pakka/event_log.jsonl
- [ ] template method pattern for PackageManager trait
- [ ] use an underlying cow filesystem to implement transactional package management, if not available then it is just not transactional

- [ ] iced gui
- [ ] we don't want 100% reproducibility we just want to be able to install same packages as on another machine and we want a simple, clean and cross platform solution that a regular ***dows user can use with a gui but also a cli for me :)
# 0.2
- [ ] pakka-gui feature parity with pakka cli
- [ ] windows scoop bootstrap command that is prompted to be ran the first time the user opens pakka-gui on windows and scoop is not in path also maybe prompt to restart the app
- [ ] make a ~/.config/pakka/.env config file
- [ ] set default package manager
- [ ] disable background service for pakka-gui
- [ ] disable background update checking for pakka-gui
- [ ] disable intrusive update notifications for pakka-gui
- [ ] settings menu in pakka-gui that modifies the .env file directly and changes the setting in memory
- [ ] pakka-gui windows scoop interactive popup when upgrading to close runninng applications that are about to be upgraded, if no then only non running apps are upgraded
- [ ] pakka-gui daemon or background service to check for updates in the background and notify when new updates are available, with an intrusive option such that you can not hide it after having hidden it for 3 times, detect presentation mode, or if an application is fullscreen or if a powerpoint is running, then only show it 5 min after presentation is done or when tv is unplugged etc.
- [ ] pakka-gui cleaner material 3 based ui desgin

# v0.3
# 0.3
- [ ] map apt names to scoop names with binary linked static hashmap, this also makes it possible to e.g. write install build-essential on pacman and scoop
- [ ] the map should be implemented like this: base package name: package manager key: value
- [ ] as long as the package is installed through here, it will be recorded, also record the command that was executed e.g. if you were on ***dows it will record scoop install. then we create a package availability database for each major distribution, and when we do a sync operation we can check the package availability db and map the name to a distro name and also check if the packages are available on the backing package manager, and if not we can throw a nice error that displays which packages are not available and then we can have a force options to allow the user to sync anyways

# v0.4
- [ ] system to scan installed packages for cves and notify the end user to prompt updates, but only when a critical cve is discovered
- [ ] sync to database, e.g. calc diff between which packages should be on the system and install the ones that are missing, we will wait with removing packages since that can be a lot harder, only allow removing packages manually not automatically sync tr db
- [ ] as long as the package is installed through here, it will be recorded, also record the command that was executed e.g. if you were on windows it will record scoop install. then we create a package availability database for each major distribution, and when we do a sync operation we can check the package availability db and map the name to a distro name and also check if the packages are available on the backing package manager, and if not we can throw a nice error that displays which packages are not available and then we can have a force options to allow the user to sync anyways

# v0.5
- [ ] option to limit strictly to open source software
# 0.5
- [ ] system to scan installed packages for cves and notify the end user to prompt updates, but only when a critical cve is discovered
- [ ] option to limit strictly to open source software or white list packages
- [ ] maintain an official package whitelist

# Future
- [ ] allow multiple versions of the same package to run in parallel, and then have applications use the version that they have requested, but use e.g. the latest version for the path, or set a path version manually
- [ ] sync share functionality only export latest packages, or have modules / applications that only install a limited number of packages for a given application
- [ ] in later versions have a optional declarative toml file to install packages with multiple package locations, e.g. system package manager, git revision, local package and use name alias like and version locking like cargo, basically cargo for the system
- [ ] package reviews and package audits with needed permissions, used syscalls, capabilities optimally provided by the devs and the n checked by software auditors
- [ ] in later versions have an optional declarative toml file to install packages with multiple package locations, e.g. system package manager, git revision, local package and use name alias and version locking like cargo, basically cargo for the system
- [ ] package reviews and package audits with needed permissions, used syscalls, capabilities optimally provided by the devs and then checked by software auditors
- [ ] flag to set default package manager e.g. apt such that if there are conflicts in package name mapping it will default to apt or your setting
- [ ] in later version automatically install nix and run only on nix, install nix in wsl on ***dows and write tooling to auto install wsl
- [ ] in later version automatically install nix and run only on nix, install nix in wsl on windows and write tooling to auto install wsl
2 changes: 1 addition & 1 deletion pakka-gui/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "pakka-gui"
version = "0.0.4"
version = "0.0.5"
edition = "2021"
license = "AGPL-3.0"
authors = [
Expand Down
2 changes: 1 addition & 1 deletion pakka/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "pakka"
version = "0.0.4"
version = "0.0.5"
edition = "2021"
default-run = "pakka"
license = "AGPL-3.0"
Expand Down
Loading

0 comments on commit 860fbf6

Please sign in to comment.