#red butterfly linux
31 messages · Page 1 of 1 (latest)
its semi declarative with a configuration that uses lua.
well more stack to be worked on and it uses rbpt a custom package manager written in Zig.
it would be declarative till some extent like:
- user management
- package management
- system service management and disks
- use flags
- timezones, locales, keymaps, hostnames
For now.
ahhh
based
update:
package manager declaration would use lua
the main reason for going with lua is beacuse:
- its tiny and SANE
- community can work on it.
- parsing lua with zig is easy.
the package manager would be using zig.
this isnt GNU friendly except for glibc ( compatibility ❤️ ) but the core would use musl for static binaries so that the system is never brekable
and another thing is that kernels are to be managed manually like the package manager is not responsible for the kernel.
@worldly smelt mate what shell do you use?
sometimes bash, sometimes oksh (openbsd's shell)
aight
heres what i PLAN to use as of now
i will try this core system:
the absolute core ( anti GNU and fully static and trust it always works )..
- git
- lua
- zig
- rbpt
- mimalloc ( a smaller memory allocator made by m$ but faster than anything else )
- busybox instead of coreutils
- musl ( only use to link the core so that you always have a system that can be recovered even when botched )
- nitro ( the init system )
- mold ( the linker )
- clang + llvm ( c/cpp compiler )
- doas ( instead of sudo )
- eudev ( lets see)
- dhcpcd ( wired connections )
- eiwd ( wireless daemon )
- shell? [ tell me on #1469019871114166514 what do you guy use ]
these components apart from the kernel and dracut would be static linked and always use musl so that the system always boots whereas userland can use glibc/musl as per your liking.
i plan this architecture for now.
are you using busybox just for coreutils or for the other stuff it provides (init, runit clone, vi, etc)
if its just for coreutils you cpuld use something like sbase+ubase
yeah.
the server
this os has a slow dev as i have exams and stuff
since its gonna be declarative so lua is used as the medium for declarative config for now.
local users = require('users.lua')
-- we start with defining repositories
repos = {
paddock = {
path = "/etc/rbpt/repos/paddock",
priority = 1 -- higher the priority, more the preference
}
}
-- plugins or addons exist like programming libraries or something.
-- the package should be usually named as $pkgname-$plugin
plugins = {
python = {
"colorama",
"tensorflow"
},
firefox = {
"addblocker"
}
}
-- This is mandatory to fill, irrespective of anything.
systemPkgs = {
"hyprland"
}
-- the user may define their user pkgs as
-- users.username.userPkgs = {}
users.rik.userPkgs = {
}
TODO: - [ ] work on use flags and individual package modifications
you would have a git repository on /etc/rbpt/repos and sync basically runs git pull to get the latest package changes.
since we use zig.. first of our tasks is to make a lua to zig where once the lua file is executed, the contents are available as a zig hashmap and can be parsed
the main problem is the dumping part but pretty sure it can be doable.
a hiatus tiny