Software-update: NixOS 20.09

NixOS logo (79 pix)NixOS is een Linux-distributie met een package manager die het mogelijk maakt om de configuratie declaratief te maken, in plaats van op te bouwen uit een sequentie van commando's en configuratiebestanden. Onder de motorkap gebruik Nix een functionele programmeertaal waarmee het systeem of de configuratie kan worden gedefinieerd. Nix is bedacht door Eelco Dolstra, een Nederlandse informaticus die aan de Universiteit van Utrecht op NixOS is gepromoveerd. Meer informatie over NixOS kan op ons eigen forum worden gevonden. Enkele dagen geleden is versie 20.09 van NixOS uitgekomen en de belangrijkste veranderingen daarin zijn hieronder voor je op een rijtje gezet.

Core version changes:
  • gcc: 9.2.0 -> 9.3.0
  • glibc: 2.30 -> 2.31
  • linux: still defaults to 5.4.x, all supported kernels available
  • mesa: 19.3.5 -> 20.1.7
Desktop Environments:
  • plasma5: 5.17.5 -> 5.18.5
  • kdeApplications: 19.12.3 -> 20.08.1
  • gnome3: 3.34 -> 3.36, see its release notes
  • cinnamon: added at 4.6
  • NixOS now distributes an official GNOME ISO
Programming Languages and Frameworks:
  • Agda ecosystem was heavily reworked (see more details below)
  • PHP now defaults to PHP 7.4, updated from 7.3
  • PHP 7.2 is no longer supported due to upstream not supporting this version for the entire lifecycle of the 20.09 release
  • Python 3 now defaults to Python 3.8 instead of 3.7
  • Python 3.5 reached its upstream EOL at the end of September 2020: it has been removed from the list of available packages
Databases and Service Monitoring:
  • MariaDB has been updated to 10.4, MariaDB Galera to 26.4. Please read the related upgrade instructions under backwards incompatibilities before upgrading.
  • Zabbix now defaults to 5.0, updated from 4.4. Please read related sections under backwards compatibilities before upgrading.
Major module changes:
  • Quickly configure a complete, private, self-hosted video conferencing solution with the new Jitsi Meet module.
  • Two new options, authorizedKeysCommand and authorizedKeysCommandUser, have been added to the openssh module. If you have AuthorizedKeysCommand in your services.openssh.extraConfig you should make use of these new options instead.
  • There is a new module for Podman (virtualisation.podman), a drop-in replacement for the Docker command line.
  • The new virtualisation.containers module manages configuration shared by the CRI-O and Podman modules.
  • Declarative Docker containers are renamed from docker-containers to virtualisation.oci-containers.containers. This is to make it possible to use podman instead of docker.
  • The new option documentation.man.generateCaches has been added to automatically generate the man-db caches, which are needed by utilities like whatis and apropos. The caches are generated during the build of the NixOS configuration: since this can be expensive when a large number of packages are installed, the feature is disabled by default.
  • services.postfix.sslCACert was replaced by services.postfix.tlsTrustedAuthorities which now defaults to system certificate authorities.
  • The various documented workarounds to use steam have been converted to a module. programs.steam.enable enables steam, controller support and the workarounds.
  • Support for built-in LCDs in various pieces of Logitech hardware (keyboards and USB speakers). hardware.logitech.lcd.enable enables support for all hardware supported by the g15daemon project.
  • The GRUB module gained support for basic password protection, which allows to restrict non-default entries in the boot menu to one or more users. The users and passwords are defined via the option boot.loader.grub.users. Note: Password support is only available in GRUB version 2.
NixOS module changes:
  • The NixOS module system now supports freeform modules as a mix between types.attrsOf and types.submodule. These allow you to explicitly declare a subset of options while still permitting definitions without an associated option. See Section 50.8, “Freeform modules” for how to use them.
  • Following its deprecation in 20.03, the Perl NixOS test driver has been removed. All remaining tests have been ported to the Python test framework. Code outside nixpkgs using make-test.nix or testing.nix needs to be ported to make-test-python.nix and testing-python.nix respectively.
  • Subordinate GID and UID mappings are now set up automatically for all normal users. This will make container tools like Podman work as non-root users out of the box.

NixOS

Versienummer 20.09
Releasestatus Final
Besturingssystemen Linux
Website NixOS
Download https://nixos.org/download.html
Bestandsgrootte 1,23GB
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Bart van Klaveren

Downloads en Best Buy Guide

30-10-2020 • 07:50

10

Submitter: terabyte

Bron: NixOS

Update-historie

06-'24 NixOS 24.05 43
11-'23 NixOS 23.11 16
12-'22 NixOS 22.11 19
05-'22 NixOS 22.05 6
12-'21 NixOS 21.11 0
06-'21 NixOS 21.05 15
10-'20 NixOS 20.09 10
Meer historie

Reacties (10)

10
10
9
3
0
1
Wijzig sortering
De filosofie van NixOS spreekt mij erg aan. Is ideaal om eenmaal je configuratie te definieren en dat te gebruiken voor meerdere computers waarbij je alleen je configuratie bestand hoeft te kopieren. Daarnaast het voordeel dat packages in isolatie van elkaar worden gebouwd, waardoor het reproduceerbaar is. Mocht je om wat voor reden een fout maken dan is het ook kinderlijk eenvoudig om terug te keren naar een vorige versie.
Verder vond ik het ook prettig om eenvoudig packages te proberen in de shell, zonder dat je deze direct in je environment hoeft te installeren.

Helaas heb ik onvoldoende tijd gehad om mijn systeem van Arch hiernaar om te zetten. Liep tegen wat zaken aan en er vooralsnog voor gekozen om bij te blijven Arch, maar hoop in het nieuwe jaar een nieuwe poging te kunnen ondernemen om over te gaan.

[Reactie gewijzigd door patviev op 23 juli 2024 04:13]

Aan de versienummers te zien, is NixOS niet meteen bleeding edge. Dat is wel een groot verschil t.o.v. Arch.

Ik wil overigens ook NixOS een kans geven, hoor er goede verhalen over en het hele idee spreekt mij wel aan.
Los van de de stabiele releases 2x per jaar, is er ook een Nixpkgs unstable channel - dit is een soort rolling release vergelijkbaar met Arch

zie ook: https://repology.org/repositories/graphs

[Reactie gewijzigd door terabyte op 23 juli 2024 04:13]

Ik heb denk ik iets meer uitleg nodig over een declaratief configuratiesysteem... Gelukkig is er een promotie onderzoek over geschreven dat ik kan lezen :+

Nee hoor, maar zonder grappen. Wat is precies anders aan dit type configuratiesysteem?
Het belangrijkste is het begrijpen wat declaratief betekent in deze context (versus imperatief).

Declaratief betekent dat je specificeert wat jij wil, en dat de computer vervolgens gaat bedenken hoe dat punt (jouw specificatie) bereikt moet worden.

Dit in tegenstelling tot imperatief, waarbij jij als mens aan de computer moet vertellen wat ie moet doen.

Deze tegenstelling bestaat ook bij programmeertalen:

imperatieve talen zijn bijv. C, Python, Java, shell scripts - je moet alles uitprogrammeren
declaratieve talen zijn bijv. Haskell, spreadsheets (jaja!), Prolog... en dus ook de Nix configuratie taal - je 'programmeert' niet, te vertelt alleen wat je wil bereiken (specificeert, declareert)

Helaas denkt 99% van de IT wereld nog in 'imperatieve modus' - maar het succes van Excel (buiten de IT wereld) laat zien waarom declaratief IMHO superieur is
Dit is een aanname van mijn kant, maar volgens mij ben je in plaats van het installeren en configureren van applicaties en het systeem meer aan het definiëren hoe je wilt dat het systeem eruit ziet en wat er op staat middels configuratie bestanden. zodat je na een herinstallatie systeem eigenlijk weer opnieuw opbouwt op basis van de configuratie (end-state) zoals die zou moeten zijn in plaats dat je dus alles na een herinstallatie opnieuw moet instellen of installeren (manueel).

Misschien heeft het wat weg van DSC (Desired State Configuration) of Puppet of Ansible.

[Reactie gewijzigd door laurensdekoning op 23 juli 2024 04:13]

Je aanname klopt. Je kunt het enigszins vergelijken met docker-compose e.d.
Ik moet ook nog de tijd vinden er eens mee te stoeien, maar interessant is het zeker!
Voor mensen die graag kennis willen maken met NixOS kan ik Nix (de package manager van NixOS) aanraden. Deze deelt namelijk de filosofie van NixOS, en kun je op ieder Linux en macOS installeren.

De vergelijking met Ansible van @laurensdekoning loopt overigens mank. Bij Ansible heb je geen rollbacks. Ook is de configuratietaal anders. Bovendien hebben packages geen unieke eigen hash (waardoor ze altijd overal hetzelfde zijn). En zo zijn er nog wel een aantal verschillen. Ik zou eerder willen omschrijven als Ansible on steroids, of: "Ansible, maar dan goed".
Je schrijft de 'recepten' en laat voor je kopen ipv dat je ingredienten bij elkaar sprokkelt en gaat koken.
of
Je specificeert wat je wilt en laat dat uitvoeren ipv dat je zelf stappen uitvoert om te krijgen wat je wilt.
Wat is precies anders aan dit type configuratiesysteem?
Declaratief betekent dat je beschrijft hoe het systeem eruit moet zien in plaats van dat je beschrijft wat er moet gebeuren. In NixOS beschrijf je dit in twee bestanden, /etc/nixos/hardware-configuration.nix (die voor je gegenereerd wordt met nixos-generate-config) en /etc/nixos/configuration.nix

Door enkel je configuration.nix mee te nemen naar een ander systeem kan je je complete install repliceren.

Een ander voordeel van Nix is dat je software on the fly kan installeren, bijvoorbeeld Zoom en Chromium: nix-shell -p zoom-us chromium
Sluit je de shell dan is de software ook niet meer beschikbaar. De software staat nog wel op disk omdat Nix elke software en updates daarvan in nieuwe directories plaatst (ook weer configureerbaar). Gaat er iets stuk na een update, dan rol of reboot je eenvoudig naar een vorige versie.

Veel software is in meerdere versies beschikbaar en kan zonder problemen naast elkaar bestaan: https://search.nixos.org/packages

Je kan binaries uit de cache gebruiken (default) of zelf alle software lokaal compileren. En je kan bepalen of je op een release zit (20.09) of dat je unstable volgt (rolling release).

Snippets uit mijn configuration.nix:
boot.loader.systemd-boot.enable = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.tmpOnTmpfs = true;

hardware.cpu.intel.updateMicrocode = true;
hardware.deviceTree.enable = true;
hardware.ksm.enable = true;

networking.networkmanager.wifi.backend = "iwd";

time.timeZone = "Europe/Amsterdam";

services.fwupd.enable = true;
services.sshd.enable = true;

programs.tmux = {
enable = true;
clock24 = true;
keyMode = "vi";
shortcut = "a";
historyLimit = 100000;
};

security.pam = {
services.login.makeHomeDir = true;
services.sddm.makeHomeDir = true;
services.sshd.makeHomeDir = true;
makeHomeDir.skelDirectory = "/etc/nixos/skel/";
};

environment.systemPackages = with pkgs; [
alacritty
coreutils
element-desktop
firefox-wayland
libreoffice-fresh-unwrapped
psmisc
signal-desktop
teams
];

users.mutableUsers = false;
users.users.root = {
hashedPassword = "xxxx";
};
users.users.ookhoi = {
extraGroups = [ "wheel" "audio" "cdrom" "dioalout" "video" ];
group = "users";
hashedPassword = "xxxx";
home = "/home/ookhoi/";
isNormalUser = true;
createHome = false;
};
Alle opties: https://nixos.org/manual/nixos/unstable/options.html

[Reactie gewijzigd door ookhoi op 23 juli 2024 04:13]

Op dit item kan niet meer gereageerd worden.