my opinions are those of your lawyers, I am not an employer, and most importantly I am not YOUR employer.

I am forklift certified

#nixos #bi

  • 0 Posts
  • 5 Comments
Joined 1 year ago
cake
Cake day: June 13th, 2023

help-circle


  • Ich bin aktuell auf NixOS. NixOS ist eines dieser Distros die unglaublich komplex zu lernen sind. Paketinstallation und System Konfiguration geschieht über die Skriptsprache Nix. Die Software Repo ist eine Github Repo mit Buildskripten in Nix Sprache. Die Standard Buildskripte sind alle auf einem Cache Server verfügbar.

    Der Verkaufspunkt ist das NixOS reproduzierbar ist. Meine Konfiguration ist ein sogenanntes Nix Flake. Das heißt der genaue Commit der aus den Software Repos von Github verwendet wird, ist in der Konfiguration vermerkt. Meine Installation kann ich binär-identisch wiederherstellen. Selbst auf einem neuen Computer reicht es aus die Konfig zu laden und ich erhalte ein System das Hash-zu-Hash identisch ist. Jede Software Revision wird genauso wieder vom Internet aus dem Cache heruntergeladen oder einfach vor-Ort reproduzierbar neu gebaut. Hash ist derselbe.

    Aber das ist noch nichtmal das beste. Das beste ist das die Konfig Sprache Dinge einfach funktionieren lässt. Um Ton und meine Bluetooth Kopfhörer funktionsfähig zu machen habe ich folgendes Snippet in meiner Config:

    { ... }:
    {
      services.pipewire.enable = true;
      services.pipewire.pulse.enable = true; # Enable Pulse Audio Compatibility
      services.pipewire.wireplumber.enable = true;
      programs.dconf.enable = true; # Needed for KDE Bluetooth Integration
      hardware.bluetooth.enable = true;
      hardware.bluetooth.powerOnBoot = true; # Turn on Bluetooth when booting
    }
    

    Und das Snippet funktioniert so. Einfach so.

    Drucken?

    { pkgs, ... }:
    {
      services.printing.enable = true;
      services.avahi.enable = true;
      services.avahi.nssmdns = true; # Enable MDNS in /etc/nsswitch.conf
      services.avahi.openFirewall = true; # Configure Firewall defaults
      services.printing.drivers = with pkgs; [
        postscript-lexmark
        foomatic-db-ppds-withNonfreeDb
      ];
    }
    

    Via Home-Manager ist ein großteil meiner Konfig nichtmal System Konfig. System Konfig ist nur genug um KDE und Hardware funktionsfähig zu machen. In Home-Manager kannst du dann deine lokalen Sachen konfigurieren, wie z.B. deine Shell-RC oder sogar VSCode, siehe hier:

      programs.vscode = {
        enable = true;
        package = pkgs.vscode-with-extensions.override {
          vscodeExtensions = with pkgs-unstable.pkgs.vscode-extensions; [
            bbenoist.nix
            ms-vscode-remote.remote-ssh
            matklad.rust-analyzer
            mkhl.direnv
            elixir-lsp.vscode-elixir-ls
            gruntfuggly.todo-tree
            arrterian.nix-env-selector
            jnoortheen.nix-ide
            bungcip.better-toml
          ];
        };
      };
    

    Wenn was schiefgeht; meine Config ist in einer Git Repo, ich kann immer die vorherige Config wiederherstellen. Und der Bootloader wird von NixOS automatisch so konfiguriert das du die Letzten X Configurationen einfach so booten kannst. Dann ist alles wie vorher. Hat mir schon X mal den Arsch gerettet weil ich was fehlkonfiguriert hatte.

    Aber an sich? NixOS ist genial. Sachen funktionieren einfach. Und ich kann funktionierende Sachen reproduzieren.

    edit: Oh und ich vergaß; nix flakes kannst du mit einem Tool namens “direnv” dynamisch in die System Konfig mergen. D.h. wenn ich in ein Projekt gehe mit einer Nix Flake die eine Entwicklungsumgebung definiert, wird diese Umgebung automatisch geladen. Ich muss z.B. gar nicht Rust bei mir Global installieren. Die Nix Flake in meinen Rust Repos läd automatisch die Rust Toolsuite herunter und der exakten Version die vom Entwickler vorgesehen ist. Und dann ist Rust verfügbar solange ich am Projekt arbeite. Wenn ich das Projekt zumachen wir die Umgebung entladen und die Binaries irgendwann wegen nicht-verwendung aufgeräumt.



  • An sich eine toxische Seite. Ab und zu kommt mal was schönes auf aber die haben schon lange Probleme richtig zu moderieren. Aktuell ist das soweit dass HN für alle Links noreferrers gesetzt hat weil einige Webseiten versuchen HN zu blockieren. Und das aus gutem Grund wiel die Kommentare jedes mal Ausarten und die Mitwirkenden im Projekt von z.B. Asahi Linux beleidigen. Aktuell nutzt Asahi Linux den Submit Link von HN via CSS Styl um HN Nutzer zu erkennen und denen eine Meldung anzuzeigen.