Hi everyone. I've been thinking about creating a custom Linux distro for a while now, because a separate /home partition and shell scripts only get you so far in restoring your setup without repeating work each time.
Must-haves, nice-to-haves, and hard limits
I'll list some of the likely (and likely non-negotiable) as well as potential things I intend to bake in, and things I can't include (but might make it easier to install):
Must-haves
0) Potentially offensive distro name, codename, versioning scheme
These are for multiple reasons; namely, aggressive branding, advocacy of sex positivity, available GitHub org name, and just plain insolence.
1) Ubuntu base
Being a MacBook Pro user, I need as much out-of-box hardware support as possible. Before the Arch/Manjaro users chime in, there's more to hardware support than the latest kennel and *cringe*\ AUR (just ask MBP users about backlight support).
2) PPAs and third party repos
When possible, use PPAs for up-to-date versions of software with better system integration and less chance of breakage (e.g. GIMP, Inkscape, LibreOffice, etc.). Same for FOSS third party repos (e.g. Node.js, Yarn, Docker CE, etc.).
3) Chromium PPA
Instead of throwing a temper tantrum and disabling snapd system-wide for everyone like Clement Lefebvre did with Linux Mint, opt for the easier solution to get a real Chromium deb package (not a wrapper for the snap like in recent versions of Ubuntu) like he should have done.
4) systemd
I don't care about your refusal to learn a new init system or whatever other concerns you may have about systemd. It works, and works extremely well. If you feel like hacking Devuan, have at it.
5) Snap AND Flatpak AND AppImage AND Homebrew
They're all easy enough to enable that I'm not getting involved in this stupid holy war over universal Linux app delivery mechanisms; besides, when available, Homebrew for Linux (aka Linuxbrew) is superior (in size and performance) to the three others most people fight over anyway. GNOME and Linux Mint especially need to grow up about this.
Note: Homebrew for Linux does not support casks.
666) Support for other operating systems via virtualization (but get them yourself)
I've shelled out enough for Apple hardware over the years, only for MacOS installs to eventually fail to install on each system, that I feel zero remorse for running it virtualized on a non-Apple host OS or on non-Apple hardware. Same for Windows licenses, and WSL can't compete with bare metal Linux.
7) VERY opinionated desktop defaults
My desktop is very Unity-like (but not) in nature:
- Unity/MacOS style top panel
- Window Buttons show on hover when maximized on left
- App Title and Global Menu at left-middle
- Notification Area, Clock, and Show Desktop button on right
- Window buttons on the left (I hated this at first in Unity, but eventually came to agree that it is a more efficient use of space)
- Window titlebar hidden when maximized (since buttons and title are in top panel)
- Dark mode by default
- Left panel/"Dock"
- "Start"/"Launchpad" button, window list button, and Icon-only Task Manager (with Windows 7-10 style window previews on hover) at top
- Trash, Activity Switcher, and Virtual Desktop Switcher at bottom
- Hot corners (clockwise, top left to bottom left):
- Show "Start"/"Launchpad" menu (also activated with "Windows"/"Command" button, and by clicking visible menu button)
- "Show Desktop"/"Hide All Windows" (also by clicking button right of clock applet in top bar)
- "Show All Windows"
- "Desktop Grid" (virtual desktops, also switchable by hotkeys or clicking on applet)
If I could squeeze everything into one top panel, I would (I could without Global Menu, but I love it too much).
Sure, I could just keep those settings in my separate /home partition (and I do), but I want to share this desktop paradigm with anyone else who might be interested.
8) Synaptic and/or Muon
Discover or [sudo] apt [install|search|etc]
is fine for most things, but sometimes you need a better way to search, browse by category/repo, or view dependencies and installed files. Sadly, none of the modern package installer frontends do this well. Muon is beautiful and full-featured, but buggy, so ugly old granddaddy Synaptic may still be the way to go.
Nice-to-haves
1) Rolling release
I know what you're thinking:
1) Ubuntu base
Yes, I did say that, but the "Rolling Rhino" discussion (and subsequent GitHub repo) show how it's possible to switch to the devel
release.
This will break sudo apt-add-repository [PPA]
, but that can be worked around if devel
branch is otherwise stable enough.
2) Nitrux utilities
This allows things like:
- using pacman (and Arch repos) for package management. Still exploring the value in this.
- Other nice utilities I'm still exploring.
3) KDE Neon base
Combined with apt pinning, so I can get the best of both worlds: Neon's rolling release KDE Plasma, plus the rolling release base of "Rolling Rhino"
4) KXStudio repos
A personal preference, since I want to get back into making music and will need WineASIO
5) Pentesting tools
The easiest way to accomplish this would be to base off of Kali Linux or Parrot Security OS, but those are unstable on their own and adding their repos will destroy anything Ubuntu-based. If Nitrux's pacman implementation works stably enough, I can try adding the BlackArch repos.
6) (maybe) Yet another software center app, or plugins for e.g. Discover
To make it easy to see all app install options (APT, Snap, Flatpak, AppImage, Homebrew [and maybe pacman?]) in one place.
Hard limits (notabug
/wontfix
)
1) No proprietary software out of the box (aka "Not tryna get sued")
Third party repositories like Google Chrome, Brave, Opera, VS Code, Slack and others will be enabled, but you'll have to install those apps yourself (I will work on adding quick access to their installs in a welcome app - provided you have internet access, of course).
2) No to any DE other than KDE Plasma
You can always install [insert inferior DE here] yourself, or create something based on this distro with your preferred DE. What you can't do is find a better combination of polish, performance, and configurability than recent versions of Plasma. Does that limit you to X11? Probably, for the time being, but in my experience Wayland still isn't ready for prime time even on (the much heavier and less configurable) GNOME.
3) No MacOS or Windows theme/icon/window decoration ripoffs
Just because I side with one or the other on a few design choices, that doesn't mean I want to imitate either in actual design. The beauty of Linux is that you can make it anything you want it to be, so why pretend it's some other OS which assumes I'm too stupid to make those choices?
How do you want it?
I also want to make sure I'm not missing features/apps/etc. which are easy to implement, won't add too much bloat, and would benefit myself and/or other users.
I may not add them to the default install, especially for languages I don't use and wouldn't begin to know how to test, but I'd like to make them as easy to add as possible.
Comment below, and I'll update this post with an issues link once I set it up.
Top comments (19)
I think some distros are already a decent job at asking in the beginning of installation time what programs are needed. they offer to install office, a database or network services. Some more presets would be useful.
As JS developer, install node.js, vscode + some lint plugins, offer db to have a setup mern stack quickly.
as Java developer, IntelliJ might be installed, tomcat (is that still in use?),...
golang: vsCode plus plugins
machine learning - python3, tensorflow, torch...
services could also directly be installed via docker by default. + a nice UI around it. kitematic never worked for me, but I saw others happy with it.
I think the apps are more impirtant than the windowmanager. for years I worked on a ubuntu unity, personal prefering xfce, but it was just stable an for the time it looked good.
i also think cutting old tails would be benefitial. maybe some hard enforced rule, that software not updated in 3-4 years can no longer be installed.
also: having some commands actively blocked. so engineers can not do a forcepush in git for example.
these are some thought I got here on the subway, they are for sure not all smart,... what do you think?
I want to avoid messing with the actual OS installer too much, because nobody likes waiting forever to partition, format, install a ton of packages (after downloading if we're realistic about what you want to squeeze into an ISO - I also want the installer itself to be able to run offline as Ubiquity and Calamares already can), and so on, only for it to bork before it gets to the bootloader install stage and leave an unusable system; I do, however, want to give options for installing at least some of the scenarios you describe in a first-boot welcome app and/or some sort of software center (or something as simple as Ubuntu Studio Installer, though that thing looks hideous on KDE in dark mode).
I have mixed feelings about running bare metal database installs if they only apply to dev environments. Dockerized may be the better option.
As for Docker GUIs, I know there are a few options out there, mostly Electron based - which doesn't bother me nearly as much as it does some - like Kitematic (which I haven't had any luck with on Linux either), some based on containers of their own and running in a browser tab. It's been a while since I've used any though. I know I used Dockstation at one point, but I don't know how well maintained that is anymore and can't remember if it supports Compose.
I really want to avoid scenarios where I hack at the repos too much. While I agree that older releases should be avoided, sometimes there's a perfectly good reason to use them (maybe just feature research to build a newer alternative, for example) or just a lack of newer options that match them in ability (see what I wrote about Synaptic; I'm honestly not sure how well maintained it is anymore, but it's by far the best GUI for apt[-get] in terms of features and stability).
As for limiting commands: If someone can't make
rm -rf *
jokes about my distro, is it even really Linux?For Docker GUIs ,I think Dockstation is a good option. I use both Kitematic and Dockstation on my Linux setup.
I haven't tried Kitematic in a while. Is it still "build it yourself" for Linux?
There is a release for Ubuntu.
github.com/docker/kitematic/releas...
Nice. Of course they make it nonstandard by throwing it in a zip (I'm also working on a GitHub-based "PPA" to pull other projects' deb releases into a single spot that can be managed by apt, but I'll have to add an extra step just to extract Kitematic if I include it). I wish they would just put it in the Docker CE apt repo or something.
I would like a Mandrake like installer but for developer stacks like Java/C/C++/Qt/PHP/RoR/Python/JS/Android with all databases and IDE support out of the box. And a way to extend the installer so we don't have to rework.
Mandrake... 🖤🖤🖤 That was my first daily driver distro (I think it was 6 or 7 install CDs back then?), one that I stuck with on a few machines for my first few years after my very first taste of distro hopping. It's been so long, though, that I'd need a refresher on how the installer worked.
Mandrake was wayy back but I think I remember the installer clearly.
I only had 2 installation CDs though. I suppose Mandrake changed to Mandriva to Margia so it's that far.
The menu had list of options on what you are going to install linux . Like Desktop , programming , server ,gaming , internet, multimedia, science and stuff. Each of the items had a list of software which were going to be installed. IIRC Suse has similar menu but not like Mandrake.
And specifically Mandrake, because I am not sure the installer experience of Mandriva or Maegia.
Ok found an installation video.
youtube.com/watch?v=s_pfkQyUJPg
Look at the Package Group Selection Thing. Since you are targeting developers specifically, the stacks can be installed like Ruby Station ,JS Station and stuff
OK, right, so like Ubuntu Studio Installer does for creative software groups (e.g. Graphics, Video, Publishing, Pro Audio, for users of Ubuntu or other non-Studio derivatives), or tasksel does in CLI. It's something I'd like to add to the welcome app instead of the installer itself, again to avoid borked installs as much as possible.
My opinion to this:
In the end I don't think that it makes too much sense as all developers have their own preferences. At least not in this fixed architecture where you have a distro that comes with ... a better approach would be to use just a custom installer with selections, and make it possible to save and restore the selection.
And if it's meant to survive updates, keeping it up to date and keeping the setup for a long time, don't use Ubuntu. It will always crash. Use Fedora as base or something. It's much more stable.
I appreciate the input, but I also need this to be clear: Above all else, the primary stakeholder will always be me. If you like what I put out there, great, and I welcome suggestions. If you can't get past my decisions, you're free to move on, taking anything you do find useful from my implementation with you.
Reading your post, I realized quickly how different we see the world. I'm so opposed to most of your opinions or choices I felt slighted a couple of times. Fun read!
I am wondering though, what is your opinion on something like Fedora with KDE? It seems to fulfill most of your points rather well, so maybe an offshot of Fedora (maybe even Silverblue?) would be better suited to a distro like that?
As I mentioned above, I've seen too many hardware compatibility issues and RPM collision horror stories to consider anything RPM-based.
I don't get the part where you say it ubuntu base but have pacman ?? Also this is why Archlinux awesome in the way that it only contain minimal system and it up to you to install package that you need, I like thing to be stabe but they all (debian, ubuntu, ...) just getting to much in my way
Arch is a nonstarter as a base. It can't compete with Ubuntu on out of box hardware support. Arch's repos for higher-level userland packages, however, might be useful.
Nitrux, as I understand it, allows pacman with Arch repos in a way that doesn't interfere with its Ubuntu/APT base. Even so, some packages are better integrated with Ubuntu and Plasma when installed from APT (Firefox, and Thunderbird for example, both of which are already kept up to date with the latest versions).
I agree that Debian is suboptimal, both because its packages are too stale and because - in my 17 years of experience with it and 12 years of experience with Ubuntu - Debian is less stable (contrary to popular belief). I disagree wholeheartedly about Ubuntu "getting too much in my way." Its own repos are far more expansive than Arch's, and (at least well-maintained) PPAs and 3rd party APT repos are far more stable than AUR.
Like with Snap, Flatpak, AppImage, and Homebrew (which is seriously underrated on Linux, even if it does lack Cask support), adding Arch repos (and BlackArch, and maybe a few others) will just be a way to add even more (or more current) software install options to my distro (note that I have zero desire to add AUR support - it's terrible).
This is so interesting. I would check it out. Needs to be privacy focused.
That isn't a specific aim of this distro, and others are already really good at it (e.g. Tails, Parrot), but I might look into how they achieve it to offer at least some level of what they do.
Maybe a Garuda linux setup style thing , for software that is commonly used ?