Hab jetzt weiter rumgetestet und komme so langsam zu einem "Software-Stack":
Coding-System 0.1
1) Zielsprache: Python
Warum Python? Es hat zwar einige Eigenschaften, welche mich persönlich nerven:
- Gliederung durch Einrückungen
- Scriptsprache mit einem Zoo teilweise inkompatibler Laufzeitumgebungen (2.7, 3.11, 3.13...)
Aber es ist ja inzwischen allgegenwärtig. Es wird an Schulen gelehrt, teilweise laufen KI-Sachen damit, und auch viele Tools im Open Source-Umfeld basieren auf Python. Es gilt als nicht allzuschwer zu lernen.
2) Basis: openSUSE Tumbleweed
- Kommt als Rolling Release-Distro
- Ist dennoch extrem stabil und QA-getestet
- Vandalismussicher dank BTRFS und Snapper mit GRUB-Integration. Die einzige Distribution, bei deren Installationen ich bisher noch nichts dauerhaft zerstören konnte. ![]()
Ich habe mich zuletzt auch testweise mit den deklarativ konfigurierbaren Distributionen GUIX und NixOS befasst. Davon wollte die Guix-VM in der Virtual Box plötzlich nicht mehr starten. Bei NixOS wollte ich den Channel auf unstable verstellen und habe mich an Tutorials aus dem Netz gehalten. Ich erhalte eine komische Fehlermeldung und komme im Moment auch nicht zurück.
Nach etwas Überlegung finde ich es für meinen Zweck fragwürdig, das Entwickel-System sozusagen über ein Script (die Datei configuration.nix) einzurichten und darüber auch festzulegen, welche Software verfügbar ist. Ich denke, der Ansatz ist eher gut wenn man z.B. eine Serverkonfiguration vervielfältigen möchte. Aber für mich bei meinem Einsatzzweck doch eher ungewohnt und sperrig. Dennoch würde ich auf das Projekt zurückgreifen und Nix einfach unter Tumbleweed installieren. So habe ich meine geliebte und v.a. stabile Tumbleweed-Basis und kann mir für Projekte isolierte, reproduzierbare Umgebungen anlegen.
Genau das ist ja sinnvoll bei dem Einsatzzweck des Systems.
3) Nutzeroberfläche: Sway
Sway ist eine i3-Weiterentwicklung für Wayland. Ich habe mich zunächst mit Awesome befasst, habe aber festgestellt, dass i3 deutlich beliebter zu sein scheint. Auch die Tatsache, dass mit Sway sehr schnell ein Wayland-Pendant bereit stand, scheint ja für die Beliebtheit des Konzepts zu sprechen. Vielleicht nehme ich irgendwann aber doch eine Awesome-Wayland-Alternative wie SomeWM...?
4) Terminal: Ghostty
https://ghostty.org/
Ein gutes Terminal ist offenbar die Voraussetzung für Editoren wie vim. Wichtig ist beispielsweise die Unterstützung von Farben und Hackerfonts, welche spezielle Symbole enthalten, die beim Coden nützlich sind. Ghostty ist aktuell sehr beliebt, kommt sinnvoll vorkonfiguriert mit vielen notwendigen Dingen bereits integriert. Viele Youtube-Tutorials verwenden es ebenfalls.
Installation: aus den Repos mit zypper
5) Tool: Yazi File Manager
https://yazi-rs.github.io/
Es handelt sich um einen Terminal-Dateimanager, der es einem ermöglicht, rasant via Tastatur durch seine Verzeichnisse und Dateien zu browsen. Muss unbedingt dazu. ![]()
Installation: aus den Repos mit zypper
6) Editor/IDE: Neovim
https://neovim.io/
vim ist ein Linux-Editor, den es schon seit Urzeiten gibt und bekannt ist. Er ist ist gut modifizierbar und zu einer guten Entwicklungsumgebung aufbohrbar. Neovim ist die verbreitete aktuelle Inkarnation von vim. (Neo-)vim zu lernen ist ebenfalls ein Ziel. Ebenso ist ein Ziel, Microsoft zu vermeiden (VS Code...)
Installtion: aus den Repos mit zypper
7) Editorkonfiguration: Lazyvim
https://www.lazyvim.org/
Neovim allein ist eine relativ freudlose und sperrige Angelegenheit. Erst mit der richtigen Konfiguration hebt er als Entwicklungsumgebung ab. Stichworte sind Treesitter, LSP und Linter-Plugins. Leider ist die Konfiguration für den Anfang extrem kompliziert. Es scheint eine unübersichtliche Fülle an Plugins zu geben, welche über Lua-Konfigurationsdateien einzurichten sind. Hierzu wurde Lazyvim erfunden. Es ist eine fertige Konfiguration mit Plugins. Herzstück ist ein Pluginverwaltungs-Plugin, worüber man (ähnlich wie in Yast Software) andere kuratierte Plugins finden und nachladen kann. Der Nachteil ist eine gewisse Online- und Projektabhängigkeit. Es scheint mir für den Anfang letztlich aber der für mich einzig gangbare Weg, Neovim aufzubohren. Es gibt auch andere fertige Neovim-Konfigurationen. Aktuell scheint mir Lazyvim aber am beliebtesten, weist eine größere Community auf und wird oft empfohlen.
Es gibt sogar Online ein Buch für den Einstieg:
LazyVim for Ambitious Developers
Installation:
-1- Neovim aus den Repos mit zypper installieren
-2- Das Lazyvim-Projekt bietet in seinen Repos eine Einstiegs-Konfiguration an. Zunächst muss man diese auf ein gesondertes Verzeichnis unter ~/.config clonen, z.B.
-3- Anschließend startet man Neovim, weist aber über eine Umgebungsvariable den Verzeichnisnamen als Appnamen zu, sodass Neovim die soeben geclonte Konfiguration aus dem Verzeichnis gleichen Namens liest, also:
Das muss man jetzt immer machen, wenn man mit Neovim die Lazyvim-Konfiguration nutzen möchte.
8.) isolierte Umgebungen: Nix
Gerade bei Python muss man bezüglich der Laufzeitumgebungen etwas aufpassen, da man sie für ein einzelnes Projekt manchmal etwas umkonfigurieren muss. Es gibt inzwischen verschiedenste Lösungen und Ansätze, getrennte virtuelle Umgebungen für einzelne Python-Projekte zu schaffen.
von/für Python:
- virtual environments vom Python-Projekt selbst
- Poetry: https://python-poetry.org/
oder weiter gefasst:
- Distrobox: Minimale Linux-Untercontainer als Laufzeitumgebung
- Deklarative Umgebungsmanager wie nix und guix: https://guix.gnu.org | https://nixos.org/
- Virtuelle Maschinen z.B. Oracle VirtualBox
Ich würde hier erstmal mit Nix starten.
- Poetry ist auf Python limitiert
- Distrobox ist bei mir nicht ganz stabil und ich bin beim testen teilweise über Themen gestolpert, z.B. in Bezug auf eine ungünstige Abstimmung/Vererbung bestimmter Eigenschaften (Nutzerrechte) vom Host auf den Gast...
- VMs /Virtualbox ist sehr schwerfällig
- Nix hat das größere Ökosystem im Vergleich zu Guix und ich habe mich im Zuge meiner NixOS-Experimente damit ansatzweise befasst. Also Nix!
Installation: aus den Repos mit zypper
9) Versionsverwaltung/Git: Codeberg
https://codeberg.org/
Europäischer Datenschutz, heimische Plattform...
So, mal sehen wie weit ich damit komme. ![]()