DISTROCRAFTING

Beggining

Are you wondering wether you should distrocraft a linux distro? (here's why you should and you shouldn't anyway)

Distrocrafting is a complicated process, so if you quit things easily, DON'T. TRY. DISTROCRAFTING. SERIOUSLY.


Writing a PACKAGE MANAGER


Yes, the dreaded Package Manager (scarrry)
No distro is complete without it. Unless you are a psycho.

A modern package manager typically implements these things:

* Dependency Tracking
* File tracking for removal
* Conflicts (a very IMPORTANT part of packaging)
* Lockfiles to prevent multiple instances that work on the same files
* Package Manager Configuartion that should be in something like ini or json, two readable standards
* Checksums to check whether the file has been downloaded correctly

Unless you want nobody to use your distro, a package manager is recommended. Try avoiding shell as it has for example a billion sha256sum binaries, all differing slightly.

Packaging things


Now, for the most difficult process of distrocrafting, packaging

A distro isn't a distro without software like:

* A bootloader to boot your distro
* A kernel, configure it wisely, but broadly.
* A text editor to configure things on your distro
* A window manager/DE to use your distro as a daily driver
* A display server/protocol to render the WM or DE
* A browser
* An audio server
* An init system, service manager and journal

You can write a script to automate packaging. As packaging is slow, this is recommended

Wayland or X11/Xorg


Wayland is the way to the future, if you want your distro to live, use Wayland, less things to maintain.
Fun fact about Xorg: Most of the people working on X11/Xorg have moved to Wayland, thus making X11/Xorg older and older, and less usable by each day.
But what about Nvidia users?
Don't worry, Wayland is much better than it was a couple of months ago, and soon, nvk will make noveau usable (i presume) again.

Configuring the Kernel


Do note that your configuration will take a long time to compile, since it must be broad.
What you should do is set everything to yes, or modules and then modify as needed