Par quoi remplacer Debian? Par Nixos la distribution reproductible et déclaratif.
Pour ma part, Debian c’est fini, je veux dire enfin, j’en ai fini avec Debian, tout ce qui touche de près ou de loin à cette distribution, j’ai fait un gros travail sur moi pour me purger de mes habitudes et de mes contraintes.
Comme je le disais en Janvier de cette année (parlant de Nixos):
J’arrête donc pour ne pas tomber plus dans la marmite de potion magique et ne pas devenir un second Obélix, rien d’autre. Mon but était de passer ma machine principale de Debian stable à openSUSE Tumbleweed, ça a toujours été mon but depuis trois ans maintenant, Nixos n’a été qu’une étape intermédiaire pour couper le cordon, le final était openSUSE, mais il y avait toujours un truc qui me rattachait à Debian. Pendant longtemps ce fut mon paquet Ghotwriter dont j’avais la responsabilité et la maintenance, l’ayant transféré à l’équipe kde de Debian, je n’ai plus ce poids. Ce fut aussi, le besoin d’une machine toujours opérationnelle car madame travaillait dessus pour son boulot, donc connaissant bien Debian, c’était l’OS choisi, ayant maintenant une machine bien à elle de la part de son employeur, je vous laisse deviner la suite. La dernière raison c’est que j’avais tout mes scripts pour me faciliter la vie, notamment pour ce qui concerne la maintenance de paquets Debian, mes scripts post-installation, reproductibilité, … J’ai perdu tout ça récemment avec une malheureuse aide de timeshift, oui c’est comique, il devait me sauvegarder tout ça, il me l’a fait perdre. Les planètes sont donc alignées.
Je n’ai plus de liens avec Debian:
- ma femme ayant une machine pro pour son boulot, sous Windows mais c’est son boulot qui lui fait parvenir donc on a rien à dire,
- j’ai transféré mon paquet Ghotwriter (dont j’avais la responsabilité et la maintenance) à l’équipe kde de Debian,
- j’ai perdu la totalité de ce que j’avais emmagasiné depuis 17 ans sous Debian, ça prendrait beaucoup trop de temps à refaire la quasi-totalité de mes scripts et autres astuces,
- J’ai perdu (aussi) la totalité de mes paquets rebuildés ou simplement construits (une centaine).
Tout ça, fait que à ce jour, Debian n’est pas plus une solution pour moi qu’une autre distribution, et qu’à la limite j’irais plus volontiers sur une Ubuntu, au passage Ubuntu n’est pas un mot voulant dire “je ne sais pas installer/configurer/maintenir une Debian” mais juste “je n’ai plus le temps de finaliser une Debian…”.
Par quoi remplacer Debian? J’ai pas mal d’idées et j’ai déjà trouvé une solution qui me plaît à 200%, mais avant d’aller à la solution choisie, je donnerai des pistes possibles.
LA première est Ubuntu, oui pourquoi pas aller sur la distribution la plus utilisée, se basant sur Debian mais ayant une finition acceptable et une qualité mais aussi la facilité, la maintenance, la fiabilité… Je resterai sur une distribution à base de Debian, donc des paquets .deb, une façon de ranger les fichiers de conf à la Debian, bref que du bon. Quoique, pour ça il faudrait que j’arrive à fermer les yeux sur les Snap qu’on met partout et pour rien, la calculatrice de Gnome est en snap, mais plus grave pour moi c’est Firefox --je crois Thunderbird aussi-- qui est dans ce format de paquets. A voir avec le temps, faudrait que je regarde ce que ça vaut.
Je ne vais pas plus loin sans dire que je n’irait même pas tenter une Archlinux, ou une dérivée, comme je n’irai pas sur du Slackware ou de la Gentoo. Mais en parlant de cette dernière (Gentoo), pourquoi pas une Calculate linux? Le monde Gentoo m’a toujours intrigué, j’ai bien aimé le petit moment sur Calculate, seulement les mises-à-jour sont bien longues et ceci même si ce n’est que des binaires.
Fedora n’est pas une option, je pourrai mais non, trop de trucs qui sont dans ses gènes, ce coté labo, puis la proximité de REDHAT.
Non, celle qui me vient en tête est simplement openSUSE, je viens d’arrêter après cinq mois dessus mais je dois dire qu’elle marche fort, que mes paquets et même plus sont dans ses dépôts, que la communauté est accueillante, que j’ai déjà mes passes pour contribuer, bref c’est certainement là où je serai le plus apte à passer un bon moment.
Oui mais voila, il y a Nixos, c’est le genre de distribution que quand on t’explique ça te fait penser à un truc futile, pour geeks, un truc pour développeurs et non pour être utilisé en simple utilisateur du dimanche, c’est totalement abstrait, on ne voit pas ce que ça peut apporter, du moins pas autant qu’une fois dans les mains, puis on se dit que ça demande des efforts, beaucoup car tout est à réapprendre sauf que ce qu’on y apprend est pour cette distribution et ne s’applique pas aux autres. Une fois qu’on la lance, c’est le bordel, on y comprends pas des masses, ça change beaucoup de ce qu’on connaît, on est perdu, on doit se taper un wiki et toute la documentation qu’on peut trouver… Enfin on tente des choses, mais chaque changement demande de rebuilder l’OS, comme avec un générateur de sites statiques (GSS), oui c’est ça si on veut comprendre ce que c’est que Nixos, faut prendre l’exemple des GSS, les distributions classiques (Arch, Debian, Fedora, Gentoo, openSUSE, Slack, Ubuntu…) sont comme les CMS, comme un Wordpress, un PluXml, ou encore un SPIP, on donne en directe ce que l’on veut et il nous donne directement ce que l’on souhaite, si on fait un changement c’est de suite que ça s’opère, généralement la configuration est explosé en plusieurs endroits. Si il y a une couille dans le pâté, c’est foutu, pas de retours en arrière, pas de sauvegardes, pas de possibilités de rattraper sans faire des sauvegardes par nous même. Or, Nixos est comme un GSS, comme Astro, Eleventy, Hexo, Hugo, Jeckyll, Pelican, Zola; on a un fichier pour régler comme on le souhaite, généralement un unique fichier mais on peut l’exploser pour qu’il soit plus visible, et lui va interpréter ce fichier pour construire notre site selon ce qu’on y a mit dedans, après une phase de build/compilation, le site est là. Comme pour les GSS, c’est un coup à prendre, au début on trouve ça durs et on ne voit pas trop les bénéfices, puis une fois dedans, on se demande comment on a pu faire autrement.
je l’ai donc installé une nouvelle fois, l’installation est vraiment facile avec l’installateur graphique qui nous pond un fichier de conf pré-mâché qui n’attends par la suite que les modifications voulues par l’utilisateur. Sinon, il y a l’autre façon de l’installer (Minimal ISO image), celui qui ne dépaysera pas les utilisateurs de Arch ou Gentoo, il suffit de booter sur un live usb et lire la documentation. L’administration est inexistante tout comme la maintenance qui pourra se faire automatiser mais j’en parlerais plus loin.
C’est simple, tout se passe dans le fichier /etc/nixos/configuration.nix
qui contient l’état désiré du système (ce que veut l’utilisateur) et la commande nixos-rebuild
applique et s’occupe de tout. Voyons voir un cas concret, prenons mon fichier:
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.supportedFilesystems = [ "ntfs" ];
networking.hostName = "debiancerlinux"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Paris";
# Select internationalisation properties.
i18n.defaultLocale = "fr_FR.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "fr_FR.UTF-8";
LC_IDENTIFICATION = "fr_FR.UTF-8";
LC_MEASUREMENT = "fr_FR.UTF-8";
LC_MONETARY = "fr_FR.UTF-8";
LC_NAME = "fr_FR.UTF-8";
LC_NUMERIC = "fr_FR.UTF-8";
LC_PAPER = "fr_FR.UTF-8";
LC_TELEPHONE = "fr_FR.UTF-8";
LC_TIME = "fr_FR.UTF-8";
};
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
#services.xserver.displayManager.gdm.enable = true;
#services.xserver.desktopManager.gnome.enable = true;
services.gnome.games.enable = true;
# Enable the KDE Plasma Desktop Environment.
#services.xserver.displayManager.sddm.enable = true;
#services.xserver.desktopManager.plasma5.enable = true;
# Enable autres bureaux.
services.xserver.displayManager.lightdm.enable = true;
services.xserver.desktopManager.xfce.enable = true;
services.xserver.desktopManager.mate.enable = true;
#services.xserver.windowManager.xmonad.enable = true;
#services.xserver.windowManager.twm.enable = true;
#services.xserver.windowManager.icewm.enable = true;
#services.xserver.windowManager.i3.enable = true;
#services.xserver.windowManager.herbstluftwm.enable = true;
# Activer l'autologin.
services.xserver.displayManager.autoLogin.enable = true;
services.xserver.displayManager.autoLogin.user = "sebastien";
services.xserver.videoDrivers = [ "nvidia" ];
#services.xserver.displayManager.defaultSession = "gnome";
# Pour l'utilisation de flatpak:
services.flatpak.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
#xdg.portal.config.common.default = "gtk";
# Configure keymap in X11
services.xserver = {
layout = "fr";
xkbVariant = "";
};
# Configure console keymap
console.keyMap = "fr";
# Enable CUPS to print documents.
services.printing.enable = true;
services.printing.drivers = [ pkgs.hplip ];
services.avahi.enable = true;
# for a WiFi printer
services.avahi.openFirewall = true;
# for an USB printer
#services.ipp-usb.enable = true;
# scan
hardware.sane.enable = true;
hardware.sane.extraBackends = [ pkgs.hplipWithPlugin ];
# Activer le Bluetooth
hardware.bluetooth.enable = true;
#hardware.bluetooth.package = [ pkgs.bluez ];
services.blueman.enable = true;
hardware.bluetooth.powerOnBoot = false;
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.sebastien = {
isNormalUser = true;
description = "Sebastien CHAVAUX";
extraGroups = [ "networkmanager" "wheel" "scanner" "lp" "disk" ];
packages = with pkgs; [
# firefox
# thunderbird
];
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
appimage-run
amber-theme
amule
aspell
aspellDicts.fr
blueman
bashInteractiveFHS
#bluez
bluez-tools
brasero
cataclysm-dda
claws-mail
deluge
detox
dgen-sdl
discord
enchant
fceux
firefox
filezilla
flare
#flatpak
gimp
git
glaxnimate
gnome.gnome-boxes
gnome.gnome-tweaks
gnome-multi-writer
gnomeExtensions.gsconnect
gnome.simple-scan
hexchat
hplip
htop
hugo
humanity-icon-theme
hunspell
hunspellDicts.fr-moderne
hunspellDicts.fr-any
hunspellDicts.fr-classique
ispell
libsForQt5.ghostwriter
libsForQt5.kdenlive
libsForQt5.soundkonverter
libsForQt5.libkdegames
libreoffice
gspell
mc
minidlna
minetest
mldonkey
mplayer
mpv
neofetch
nestopia
nodejs_18
ntfs3g
obs-studio
p7zip
pitivi
qbittorrent
quodlibet
retroarchFull
rocksndiamonds
scummvm
smplayer
soundconverter
sound-juicer
the-legend-of-edgar
thunderbird
typora
ubuntu_font_family
vlc
wesnoth
wget
wine-staging
#vscode-with-extensions
vscode-fhs
xsane
xarchiver
xfce.thunar-archive-plugin
xfce.thunar-volman
xfce.xfce4-pulseaudio-plugin
#xfce.xfce4-volumed-pulse
yaru-theme
yt-dlp
zeroadPackages.zeroad-unwrapped
zola
# wget
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
#services.openssh.enable = true;
#services.openssh.openFirewall = true;
#services.openssh.ports = [ 4444 ];
# Open ports in the firewall.
#networking.firewall.allowedTCPPorts = [ 4444 ];
#networking.firewall.allowedUDPPorts = [ 4444 ];
# Or disable the firewall altogether.
networking.firewall.enable = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.11"; # Did you read the comment?
system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = false;
system.autoUpgrade.channel = "https://channels.nixos.org/nixos-23.11";
nix.optimise.automatic = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
nix.settings.auto-optimise-store = true;
##Commandes Experimentales
nix.settings.experimental-features = [ "flakes" "nix-command" ];
}
Commençons par le langage, c’est du nix
, c’est spécial, c’est pas pire que d’autres, c’est pas mieux, je trouve que le fichier de conf est compréhensible, d’après Wikipedia c’est un langage de programmation fonctionnel paresseux. Perso, je trouve que ça me fait penser de loin à JS, en même temps je ne suis pas développeur.
Maintenant qu’on a fait cet aparté, reprenons, ce fichier (configuration.nix) placé au bon endroit (/etc/nixos/) suivit d’un sudo nixos-rebuild switch
va demander au système de construire comme je l’entends mon OS:
- définir mon hostname:
networking.hostName = "debiancerlinux"; # Define your hostname.
- mes locales:
# Set your time zone.
time.timeZone = "Europe/Paris";
# Select internationalisation properties.
i18n.defaultLocale = "fr_FR.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "fr_FR.UTF-8";
LC_IDENTIFICATION = "fr_FR.UTF-8";
LC_MEASUREMENT = "fr_FR.UTF-8";
LC_MONETARY = "fr_FR.UTF-8";
LC_NAME = "fr_FR.UTF-8";
LC_NUMERIC = "fr_FR.UTF-8";
LC_PAPER = "fr_FR.UTF-8";
LC_TELEPHONE = "fr_FR.UTF-8";
LC_TIME = "fr_FR.UTF-8";
};
- activer l’interface graphique avec l’environnement qui va bien:
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
#services.xserver.displayManager.gdm.enable = true;
#services.xserver.desktopManager.gnome.enable = true;
services.gnome.games.enable = true;
# Enable the KDE Plasma Desktop Environment.
#services.xserver.displayManager.sddm.enable = true;
#services.xserver.desktopManager.plasma5.enable = true;
# Enable autres bureaux.
services.xserver.displayManager.lightdm.enable = true;
services.xserver.desktopManager.xfce.enable = true;
services.xserver.desktopManager.mate.enable = true;
#services.xserver.windowManager.xmonad.enable = true;
#services.xserver.windowManager.twm.enable = true;
#services.xserver.windowManager.icewm.enable = true;
#services.xserver.windowManager.i3.enable = true;
#services.xserver.windowManager.herbstluftwm.enable = true;
- activer l’autologin pour mon utilisateur:
# Activer l'autologin.
# services.xserver.displayManager.autoLogin.enable = true;
# services.xserver.displayManager.autoLogin.user = "sebastien";
- utiliser les pilotes proprios de Nvidia:
services.xserver.videoDrivers = [ "nvidia" ];
#services.xserver.displayManager.defaultSession = "gnome";
Bon, je pense que vous avez compris un peu l’idée et que c’est assez explicite pour ne pas passer au scribe ligne par ligne, mais rajoutons tout de même le choix des paquets (logiciels) qu’on veut, ceux-ci sont déclarables au niveau de l’utilisateur (users.users.sebastien
) ou au niveau du système (environment.systemPackages
). Je peux déclarer les paquets pour l’ensemble des utilisateurs (typiquement les trucs tel que neofetch
, htop
, mc
) et je peux installer des paquets qui ne seront visibles qu’au niveau de l’utilisateur. Je pourrai très bien créer un second utilisateur et lui donner une autre liste de paquets, il n’aura pas les mêmes programmes d’installés, en gros il ne verra pas les programmes qui sont pour moi et moi je ne verrai pas les siens à moins qu’ils fassent partie de la déclaration du système ou qu’on l’a en commun et si paquets communs y a, les données sont mutualisés pour économiser de la place. Bref, chacun peut avoir son OS personnalisé sans empiéter sur celui des autres.
Si quelque chose ne va pas, il ne construit pas le système et nous préviens de ce qui ne va pas, nous donnant même un exemple de ce qui est attendu. Si c’est bon, il build (littéralement c’est de la compilation) et on reboot, on s’aperçoit alors qu’il nous a fait une ligne de plus dans le grub avec l’ancien système et le nouveau.
Alors pourquoi NixOS est mieux pour moi? C’est assez simple à comprendre, Debian était déjà ennuyeuse car elle nécessite une maintenance proche de zéro, avec Nixos on est sur du zéro maintenance puisque celle-ci se résume à l’édition du fichier configuration.nix
, rien d’autre. Si ce fichier ne bouge pas, il n’y a rien de changé, on peut aussi automatiser les mises à jour, mais on verra plus bas. Si changement, nixpkg va s’occuper de tout, tout seul, d’une façon invisible, comme par magie, un peu comme une boite noire et incompréhensible, c’est efficace, ça “justemarchecommeilfaut”!
De manière un peu obscure, cette magie s’occupe de désinstaller et d’installer ce qui est demandé, générer les configurations des services, faire une sauvegarde avant et après le build… C’est tellement puissant que je peux versionner ma config avec git. C’est tout aussi facilement que je reviens en arrière si je ne suis pas satisfait de mes changements.
Bref, le système est toujours dans un état propre et à jour. J’aime cette sensation du tank que ça procure, puisque le système aussi est versionné. Chaque nouveau nixos-rebuild
exécuté avec succès, ajoute une nouvelle entrée dans Grub pour charger votre système nouvellement créé. Actuellement, je peux choisir de booter sur différentes générations du système (différentes options sont disponibles tel que “NixOS generation 35 - 2024-05-15” ou “NixOS generation 36 - 2024-05-15”) qui me permettent de facilement démarrer à un état antérieur du système. C’est simple, magique, ça “justemarche”, j’adhère…
La gestion des paquets est vraiment originale, il n’y en a pas, pas comme on l’entends classiquement dans les autres distributions! C’est très simple je demande au système que tel logiciel soit disponible en l’ajoutant dans la liste des applications de configuration.nix
(vu plus haut) et lui s’occupe de tout. À l’inverse, je ne veux plus d’un logiciel, je supprime (ou commente) sa ligne dans configuration.nix
, c’est tout. Mon système est propre et il le reste, pas de dépendances restantes, pas de restes de configurations, ni de fichiers…
Exemple d’applications ajoutées:
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
appimage-run
amber-theme
amule
aspell
aspellDicts.fr
Exemple d’applications retirées:
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
#appimage-run
amber-theme
#amule
aspell
aspellDicts.fr
Notez que pour supprimer les logiciels appimage-run
et amule
j’ai seulement commenté (rajouté un # devant) les lignes et que j’aurais très bien pu supprimer les lignes directement.
Tous les fichiers de l’OS sont en lecture seule, il n’est pas possible d’éditer un fichier de configuration pour ajouter ou changer une option. Par exemple, pour Lightdm, il n’y aura pas de fichier lightdm.conf dans /ect pour automatiser la connexion d’un utilisateur, il suffira de rajouter deux lignes dans configuration.nix
:
# Activer l'autologin.
services.xserver.displayManager.autoLogin.enable = true;
services.xserver.displayManager.autoLogin.user = "sebastien";
Mais allons plus loin, admettons que je veux tester un truc, je sais pas moi, par exemple Element
un client pour matrix, juste le tester car il y a plein d’autres clients et je veux faire mon choix, pas la peine de l’installer, Nixos ou plutôt la commande Nix
va créer un nouvel environnement temporaire (shell) où le programme est disponible. Tant que je ne quitte pas le shell, j’aurais le programme , si je quitte le shell, l’environnement est détruit. J’aime bien ce que je lis un peu partout en parlant de Nixos: Pensez containers, mais sans les containers. Plus concrètement, sous Linux (et ailleurs aussi), quand on appelle un binaire ls
par exemple, le shell (bash par exemple) va chercher le chemin dans $PATH
, Nix utilise ça pour permettre de faire des “virtualenv” généralisés, quand on fait un nix-shell
, ça met temporairement dans le $PATH
le chemin des paquets demandés. Nix-env
(je n’en parle pas plus car on perd la puissance de Nix
pour l’utiliser comme un simple gestionnaire de paquets classique, style DNF
, APT
, Pacman
…) fonctionne pareil, sauf que ça le met dans virtualenv global (celui de la session utilisateur). En gros nix-shell
c’est comme bash -c 'source venv/bin/activate; bash'
, si on sort du shell les dépendances disparaissent. Prenons un cas concret, je vais repartir sur mon exemple avec Element
que je n’ai pas sur mon système:
[sebastien@debiancerlinux:~/git/11ty]$ element
The program 'element' is not in your PATH. It is provided by several packages.
You can make it available in an ephemeral shell by typing one of the following:
nix-shell -p element
nix-shell -p elements
nix-shell -p elementsd
nix-shell -p element-web
nix-shell -p element-desktop
nix-shell -p element-web-unwrapped
...
Je l’installe temporairement dans un shell et je le lance depuis celui-ci:
[sebastien@debiancerlinux:~/git/11ty]$nix-shell -p element-desktop
[nix-shell:~/git/11ty]$ element-desktop
Voila, je peux l’utiliser comme si il était réellement installer en durs sur mon système…
Pour quitter le shell:
[nix-shell:~/git/11ty]$ exit
exit
[sebastien@debiancerlinux:~/git/11ty]$
Ça permet de créer des environnements de développement reproductibles qu’on pourra partager. On fait notre shell.nix
qui aura tout le nécessaire à notre projet et un nix-shell
plus tard ça roule.
C’est une nouvelle façon de voir l’informatique, il n’y a plus de sens d’installer à tout va des applications qu’on utilise rarement, ces trucs dont je n’ai besoin que trop ponctuellement. Et puis les autres applications que j’utilise quotidiennement, voir plusieurs fois par jour et que je continue d’indiquer dans mon configuration.nix
.
Parlons d’automatisation, dans le code qui suit nous donnons une version (channel) pour les mises à jour, on active les updates automatiques au démarrage de la machine, on désactive le reboot auto après update:
system.stateVersion = "23.11"; # Did you read the comment?
system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = false;
system.autoUpgrade.channel = "https://channels.nixos.org/nixos-23.11";
Le ramasse miettes pour gagner de la place.
nix.optimise.automatic = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
nix.settings.auto-optimise-store = true;
Commencer la discussion: Venez écrire un commentaire dans le forum.