snchart's blog

home / codeberg / blog / sjon / alyvine / ufti / ports / 9rc



ignorepkgs - 23.09.2026

Today I gave a 2nd chance to Void Linux, and it went good, because now I can share you how to use ignorepkgs

Just add:

    ignorepkg=foo

in /usr/share/xbps.d/ignorepkgs.conf, and of course change "foo" to package name. For example, mine ignorepkgs.conf looks like

    ignorepkg=sudo
    ignorepkg=openssh
    ignorepkg=wpa_supplicant

I use it to remove dependencies of base-system package which I dont use, like as you see, I dont use sudo(i use doas), openssh(i dont use any ssh) and wpa_supplicant(i use iwd)

After you added it, you can just

    # xbps-remove foo

...and I recommend you to use -Ro in xbps-remove because it removes useless dependencies as I know


taita - 16.09.2026

Taita is my still not very usable replacement of GNU Stow, written on C instead of gross perl. It's still unstable and you can use it as actual Stow replacement, because it doesn't have something like unstowing and etc., but it works! I don't know about taita's future because I honestly don't know C much and I'm coding alone, and also I don't have much time for coding because of school


BSDs - 12.09.2026

Recently, I decided to install 'BSD because I had 5 minutes of free time, and I choosed NetBSD at first because idk it's very light, and it was very bad on my hardware because NetBSD doesn't support iwlwifi right now and my GPU(very new intel card), only thing I managed fix is resolution by adding "gop" in boot.cfg, but everything still was very laggy, so I installed OpenBSD, and that was worse because it didn't supported even USB tethering from Pixel's, so I deleted it immediately and installed FreeBSD, and now for me it's the best BSD after NetBSD because i got iwlwifi working, but it still have issues: for example, Firefox requires GNU Bash, Xorg-minimal requires llvm, pkg is kinda slow, but faster than pkgin or even NetBSD's pkg_add, init is very slow but I think it's iwlwifi's fault and etc. But it's still usable


Nothing happened - 01.09.2026

Nothing happened.


Rozine linux - 29.08.2026

Today, I finally booted first build of my distro, Rozine Linux!

It was kinda easy because LFS much easier without GNU bloatware. But still, because I didn't used LFS book it still very unusable + i forgor to install modules so no ethernet

The hardest part was making the disk and installing GRUB on it, because I dont know how to work with losetup etc. But you can look it up on LFN tutorial. But if you dont want to use youtube, just type

    dd if=/dev/zero of=disk.img bs=4M count=1024

To make a disk, then part it in fdisk/cfdisk. After you need to create loop device

    losetup -fP --show rozine.img

Make filesystem

    mkfs.??? /dev/loopXpX

Mount it

    mount /dev/loopXpX /path/to/mountpoint

Copy your distro root filesystem

    cp -R /path/to/root/* /path/to/mountpoint

Make grub config, I think you can do it by yourself, and install grub

    grub-install --target=i386-pc --root-directory=/path/to/mountpoint --no-floppy --modules="normal part_msdos ext2 multiboot" /dev/loopX

And to finish, unmount and destroy loop device

    sync
    umount -Rl /path/to/mountpoint
    losetup -d /dev/loopX

Timezones in Plan9 - 27.08.2026

I think every sane working operating system has a timezones, and plan9 does to. But as I noticed, they are very strange in 9's, there's no UTC+5 in /adm/timezone/, and it's kind of problem to me because I have UTC+5. BUT, I found out how to fix it. Just add:

    IST 18000 IST 18000
    0
    

In /adm/timezone/local file, or in /adm/timezone/Asia_Qazaqstan and copy it in /adm/timezone/local

After, just reboot

    fshalt -r

The 18000 number is seconds from UTC+0, if you wanna for example UTC+N but it's not supported, just convert N in seconds. I dont know how to make it work with UTC-N, but I think all UTC-N are supported, because it's Americas, no one forgets about add their timezones

But if your time still incorrect, you need to sync it with timesync. You can sync it to #r/rtc(Local real time clock)

    aux/timesync -r

...or sync it to an NTP server

    aux/timesync -n

To make it work automaticaly, you need to add timesync command to rc init, located in $home/lib/profile, or as I recommend, in riostart if you have it, located in $home/bin/rc/riostart


Alyvine update - 22.08.2026

Today I unbloated my package manager by deleting/replacing 50 useless lines of code, which were stupid, harmful and useless CRUX pkgutils heritage like EGENERAL=1... etc. exit codes, because who will even use it? Also, i shortened errors by making err fuction execute exit 1 so i dont need to type "err foo && exit bar" every time i need to add error message in my code. Also, I added patch-src fuction which apply all .patch or .diff files which exist in source directory, remade unpack function so source directory's name is predictable, but that broke on zip because unzip sucks and it doesn't have --strip-components like function, so I deleted zip support from alyvine because what kind of person would use zip to archive their sources? Only some filthy windows developer or github user that can't made tags. But all that I will commit tomorrow


Customising plan9 rio - 07.08.2026

I kinda abandoned this blog for a while, but today I noticed that there's no good tutorials how to customize rio from plan9, so today I gonna at least tell you how to do some minimal configuration

To customize rio, I recommend you to copy the sources so you won't break original rio:

    mkdir rio
    cp /sys/src/cmd/rio/* rio/

Rio folder contains a couple of .c and .h files, we will edit them to customize because rio is very minimal and not configurable without editing source code. First thing we can do is change window border width, just look up dat.h file and change one line:

    Selborder = 2, /* border of selected window */ 

That line tells rio how much pixels should border be, also we have Unselborder but it's not that important because who even cares about unselect window border, I set it to 3 for example
Also you can change console colors, editing lines like:

    cols[BACK] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xFFFFFFFF);
    cols[TEXT] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xCCCCCCFF);

They usually located in data.c or in wind.c in wmk function, depends on plan9 version, if you wanna set colors like 0xAAAAAAFF or 0x333333FF you can just change that "0x..." line, but if you wanna set like 0xA3AFA2, you will need to create something like:

    #define COLORIDK 0x[your color]FF 

In dat.h and use

    cols[BACK] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, COLORIDK);

Idk why you can just type hex code but it works only like that
To set wallpaper, use:

    int fd;
    Image *bimg = nil;
    fd = open("/usr/glenda/lib/wallpaper", OREAD);
    if(fd >= 0){
        bimg = readimage(display, fd, 0);
    close(fd);
    }
    if(bimg){
        background = allocimage(display, Rect(0, 0, Dx(bimg->r), Dy(bimg->r)), RGB24, 1, 0x000000FF);
        draw(background, background->r, bimg, 0, bimg->r.min);
    }
    else
        fprint(2, "iconinit: %r\n");

I just copypasted it from xxiivv site, but who even cares if almost everyone uses it and it works?

This is a screenshot what I got

I know that doesn't look very nice but I started to configure it only 1-3 hours ago and I can't find normal wallpaper, and also at least it's something


My second attempt to make Rozine - 29.07.2026

Yesterday and today I tried to start it from scratch, and I made it better, because now it have musl instead of glibc and at least toolchain, but unfortunately it was GCC because I dont know how to cross-compile Clang and LLVM, and also if im not wrong, LLVM doesn't have prebuilds for musl, but GCC have it, but at least it's something, not just TinyCC which can't compile anything except Hello World code and some easy programs like doba. Also, I installed muon instead of meson, samurai to replace ninja, u-config(but after I removed it and installed pkgconf), bmake and etc.

But... Problem with curl is still here, I dont know why does that happen, I think I will add wget support in alyvine. I think that's problem with libressl and I should try default openssl or wolfssl, because pkgconf or something another cant find openssl. About kernel, idk, I tried to do this only once and it failed. Also, I need to learn at least default LFS because yea, I can compile programs, but I can't configure /etc files because I dont know how to. I need to learn busybox, need to learn how to install my own init and et cetera. I still didn't used alyvine on rozine because neither rozine or alyvine is ready to that


My attempt to made Rozine Linux - 28.07.2026

Rozine Linux should be the distro for alyvine, like Void Linux's for xbps, but unfortunately, it failed, I failed to build it because:

I dont know how to build musl libc if my host system is on glibc
I dont know much about compilation and linking
I failed to build curl because... just because
I failed to build kernel by some reason

And etc. etc. etc... Also, my lack of musl knowledge made me use glibc on Rozine Linux


MangoWM - 27.07.2026

Yesterday, I installed MangoWM and configured it, and you know, this is kinda great because it written on C, not on filthy Rust or Zig(I disappointed in Zig tbh), because it doesn't have app scale problem as niri have, I can stream in Discord and also it very easy, but... It uses scenefx, it's bloat, and also I dont understand scroller logic and bind logic, but I think I will understand it later. Also, I wanted to install some neuswc-based wm, but at first I got problems with LD_LIBRARY_PATH etc. vars, after I got problem with zig, and after a problem with LD_LIBRARY_PATH again, so I just gave up and uninstalled everything(skill issue), but I wanted to install neuwc and shko(this piece of one thing written on older Zig version and also unmaintained) because as I know they have scrolling, I love scrolling very very much tbh


Alyvine again - 27.07.2026

Today I created avadd which installs the package in directory, root at default, and also I made avdel which reads list file and deletes all those files. When alyvine will be ready to at least build, install and delete packages, I will improve code, especially the avmk, and also I will make alyvine as the shell which will work with alyvine-utils(avmk, avdel etc.), work with dependencies and etc. For today that's all what I did


About alyvine - 25.07.2026

Today I fixed the packaging in alyvine, the problem was in changing directory part because I wrote `cd "$PKG" | exit 1`, not `cd "$PKG" || exit 1` with double vertical bars. Alyvine still in very pre-beta because it can only compile and package and it's code very dumb, but at least it something, I just started and I know POSIX sh not on very professional level to be honest, I still look up some things from scratchpkg and stack overflow answers. I think my next step is understand the package deleting logic, because `tar tf (package name).avp.tar.xz` outputs not only just only package's directories, it also outputs like usr/local/bin if DESTDIR had DESTDIR/usr/local/bin/... etc.

About alyvine's early working, it uses the `receipt` file like Pkgbuild in prt-get:

    name=sjon 
    version=v13.3 
    release=1 
    source="https://codeberg.org/snchart/$name/archive/$version.tar.gz"  

    build(){ 
        cd $name 
        $MAKE_CMD DESTDIR=$PKG 
    } 

This is simple receipt example, it makes sjon and installs it into $PKG, for current day it located in ~/other/alyvine/work/pkg/sjon in my system, but it's just a test and I plan to relocate it into /var/cacha/alyvine/work/sjon after. And also today I made a logo for Rozine/alyvine, you can see it here


About my package managers - alyvine and aufstieg - 25.07.2026

For those who didn't know - I tried to make package managers - aufstieg(snpkg before) and alyvine. Aufstieg is very, VERY BAD, because it was unusable - yea, you can build packages, but can't delete them from the system because it actually just compiles program straight into your /, not into DESTDIR to make a package tarball and unpack it in /. Also, the code was disgusting. I created it at 2025 December, and abandoned it at 2026 March with promises that I will continue to develop it further in next month, but actually, nothing ever happened. So I created alyvine, or rather, started to create it. I learned the basics from CRUX pkgutils when I was trying to rewrite it on POSIX sh, and now learning it from Venom scratchpkg

Alyvine, despite the fact it's new, also have problems, like the packaging is broken because I wrote wrong tar options, it's doesn't check checksums and doesn't generate it. And also, about packaging - it kinda works, but... brokes, again, it compesses the source dir, not the package dir by some reason and I dont know how to fix it, im honestly bad at using tar and etc, but im trying to learn it. Why I am even doing it? I wanna to write my own package manager because it actually interesting to do, and also, I want to create my own distro, I think I will name it Rozine, because alyvine it's Lithuanian syringa/lilac, and Rozine it's lithuanian Pink. I don't wanna to explain fully why lithuanian, but I love this language even if I dont know it


Why arch linux isn't really minimalist? - 23.07.2026

I've heard about that distro very much, but never liked it and kinda never tried it outside virtual machines(hopefully), even when I was mint larper, and I had different reasons for different times: at first I hated it because arch users was very toxic and I liked mint and debian, now I hate it because it's kinda actual pseudominimalistic LARP or idk. Arch uses systemd and you already know what im talking about, but if we dont talk about init system, I wanna remind that this distro uses ZSH AND BASH AT THE SAME TIME IN LIVE BOOT. for me, that is lowk antiminimalism.. I love zsh because it's like mksh but much better, but why we have bash and zsh? why not just dash? It's live iso. And also, pacstrap, the creation of devil himself, I honestly dont know why this thing exists. Why not just 'pacman -S arch-base' or using rootfs tarball? It's better than using separate utility for installing base system, it's called bloat, not "minimalism"

When arch was created, it was just a clone of CRUX, the minimalist system which still in 2026 use manual kernel compiling and sysVinit, but now it's just like ubuntu, but without DE/WM preinstalled and with another package manager. Also, the pacman is gross, I was using Bedrock Linux once with Void+Arch, and that... thing, named pacman, installed very much dependencies with Firefox that no one even need I think, like avahi etc. Im not denying that other distros like Gentoo don't have useless dependency problems, I myself have that problem with cups installing itself by no reason, but arch have this problem worse that others. And I dont wanna even mention AUR hacking, tho it was kinda fun when arch users genuinely got scared from that. Only thing that arch did good is helped Steam to create SteamOS and made Linux more popular, but Arch still sucks

Also, I dont think that's about KISS philosophy, but arch mirrors is always unstable, they are oftenly down by some reason, I deleted arch strat on Bedrock Linux because of "could not host archlinux.gay" or sum idk


My opinion on Rust - 23.07.2026

Idk what to say about it, Rust is kinda bloat, kinda have strange syntax and kinda not oldschool(tho im not ogg myself). And Rustceans pissing me of, why not just stop rewriting everything? What's even point of that? That's hella unstable, we already have unbloated alternatives of famous C programms(i described it in "My opinion about GNU software") which more stable than yours broken rust utils etc. For today, unfortunately I use niri, which written on rust, but I can't do anything with that until I learn C and neuswc/wlroots. To be honest, Zig or Go have more future than rust, maybe even haskell, but I dont think that mathematically-or-whatever correct lang can overpower C. I'm forcing anyone not to use it(dont do Rust, kids), because it's kinda my problem that I hate very much languages like C++, Python, bash(i mean GNU/bash) etc. because of their syntax, their issues and whatever


My opinion about GNU software - 23.07.2026

Honestly, I don't hate GNU or FOSS itself, I just hate that they're doing. I hate GNU software because actually it's just bunch of legacy, bloat and unstable code, which making app compatible to hardware that no one actually uses to be honest. And unfortunately, we are kinda forced to use it. Wanna play Steam or proprietary games - use glibc. Wanna to keep your dotfiles clean in one directory - use stow. Wanna boot ur system without any problems - use grub. "But we can use flatpak and limine?", yes, we can, but flatpak isn't better than gnu software, and limine is kinda... unusable for me, it have very small documentation to be honest, but maybe it's just mine skill issues... Anyway, I think that GNU software is of course open source and etc, but it's bad, y'know. I'd like to use the alternatives of gnu software, but: make doesn't have any perfect alternatives, and I use Gentoo where GNU make is very matter, I like play Steam games but it's hard to run them on musl. But I replaced gcc for clang, and would like to replace others, and you also can replace something like:

glibc to musl
gcc to clang
coreutils to busybox
flex to reflex
autotools to hell, or just write makefiles manually, lol
grub to limine
bash to mksh/zsh/yash
...and others, just look up this, thanks to dérivelinux!