Le Blog Utux

HTTP 200 GET /

Aperçu de NixOS en desktop

Rédigé par uTux 4 commentaires

Il y a un peu plus de 2 ans j'ai parlé de NixOS, distribution Linux atypique dans le sens où sa configuration se fait de manière déclarative à un unique emplacement.

NixOS logo

Mon ordinateur pro et ma machine gaming sont sous Windows, j'utilise donc très souvent des machines virtuelles Linux pour pouvoir travailler. Habituellement j'utilise Virtualbox + Debian + Mate, mais j'ai décidé d'expérimenter NixOS. Alors oui je sais qu'une machine virtuelle n'est pas représentative d'un cas d'usage réel, mais ça permet de se faire une première idée.

Installation

J'ai installé NixOS avec la configuration suivante:

# 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
    ];

  # Use the GRUB 2 boot loader.
  boot.loader.grub.enable = true;
  boot.loader.grub.version = 2;
  # Define on which hard drive you want to install Grub.
  boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only

  # Networking
  networking.hostName = "nixos"; # Define your hostname.
  networking.networkmanager.enable = true;

  # Select internationalisation properties.
  i18n = {
    consoleFont = "Lat2-Terminus16";
    consoleKeyMap = "fr";
    defaultLocale = "fr_FR.UTF-8";
  };

  # Set your time zone.
  time.timeZone = "Europe/Paris";

  # Repositories
  nixpkgs.config.allowUnfree = true;

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    ansible
    dnsutils
    firefox-bin
    gimp
    git
    htop
    keepassxc
    libreoffice
    networkmanagerapplet
    parcellite
    p7zip
    sudo
    syncthing
    syncthing-gtk
    thunderbird-bin
    tree
    unzip
    vim
    vscode
    xarchiver
  ];

  # Enable CUPS to print documents.
  services.printing.enable = true;

  # Enable sound.
  sound.enable = true;
  hardware.pulseaudio.enable = true;

  # Mate
  services.xserver = {
    enable = true;
    layout = "fr";
    xkbOptions = "eurosign:e";
    desktopManager = {
      default = "mate";
      xterm.enable = false;
      mate.enable = true;
    };
  };

  # Docker
  virtualisation.docker.enable = true;
  
  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.utux = {
    isNormalUser = true;
    extraGroups = [ "wheel" "networkmanager" "docker" ];
  };

  # Nix Garbage Collector
  nix.gc = {
    automatic = true;
    dates = "weekly";
    options = "--delete-older-than 30d";
  };

  # This value determines the NixOS release with which your system is to be
  # compatible, in order to avoid breaking some software such as database
  # servers. You should change this only after NixOS release notes say you
  # should.
  system.stateVersion = "19.09"; # Did you read the comment?
  system.autoUpgrade.enable = true;

}

Environnement desktop

NixOS Mate

La gestion centralisée de la configuration s'applique au système, mais pas au $HOME de l'utilisateur. Les raccourcis, les thèmes de bureau, les profils se gèrent "à la main", ce qui m'amène à penser que NixOS perd un peu d'intérêt en usage desktop. Cependant, ce point pourrait bientôt changer avec Home-manager.

Lors de la rédaction de cet article, la version de Mate est la 1.22.1 donc très récente, un bon point. Dans la liste des paquets installés, notez firefox-bin et thunderbird-bin. Couplés à l'activation du repo unfree, cela permet d'installer les versions à jour et upstream. Les paquets firefox et thunderbird sont des versions ESR dépourvues du branding de Mozilla, un peu comme Iceweasel et Icedove pour Debian il y a quelques années.

La version de Keepassx fournie par Nix (0.4.4) est trop vieille pour être utilisable avec le format .kdbx, j'ai donc du installer keepassxc à la place. Vscode est disponible lui aussi grâce au repo unfree.

Python...

Globalement je retrouve donc mon environnement et mes applications favorites, mais je dois quand même parler de Python. Sur Debian, j'utilise généralement pip pour installer une version récente de Ansible et Molecule, mais sur NixOS je n'ai simplement pas compris comment ça marche :/ Il y a pourtant une documentation dédiée à Python mais elle a tendance à ne pas situer correctement les contextes ou ne pas donner assez d'exemples. Donc pas de pip pour le moment, j'ai utilisé le paquet NixOS de Ansible.

Performances

En ce qui me concerne, l'utilisation du bureau Mate dans Virtualbox sur NixOS n'est pas très fluide :/ que ce soit l'ouverture d'un onglet, le déplacement d'un fenêtre, le lancement d'un logiciel, tout accuse de saccades et de lags. Debian s'en sort mieux sur ce point, à configuration presque identique (2 vspus, 2Go de ram, vboxsvga, 32Mo vram), mais cette dernière utilise Mate 1.20.4 et pas 1.22.1.

Lorsque j'ai fait des tests sur une machine peu puissante, j'ai remarqué que nixos-rebuild arrive à mettre à genoux le système et les autres VMs, à cause des écritures sur le disque. Et à propos du disque, il faut parler de l'utilisation du stockage. Par nature, NixOS garde plusieurs versions de la configuration (overlays) et des paquets installés, pensez à des snapshots, donc on se doute que l'espace utilisé est important, très important. On peut facilement consommer 30 Go après quelques semaines, ce qui m'amène au point suivant.

Penser au nettoyage (garbage collector)

Heureusement il existe le Garbage collector qu'il faut régulièrement lancer en root:

[utux@nixos:~]$ sudo nix-collect-garbage -d
[...]
deleting '/nix/store/39s914agmm045fv7l3lz81zcvw86m3vb-xsltml_2.1.2.zip.drv'
deleting '/nix/store/5vy6k04dhrwn0951z7dnpkqyxp3r7ws0-jasper-2.0.16-bin'
deleting '/nix/store/p5c18w2cksfxw748d4f8l31rlfk8z1vg-font-adobe-100dpi-1.0.3'
deleting '/nix/store/mny4fywzpgb2yi54a0vz97f5kxlb8932-unit-systemd-modules-load.service.drv'
deleting '/nix/store/xbl8wj6293nfw3vziwqd5xmhrk5gdq6b-rand_hc-0.1.0.tar.gz.drv'
deleting '/nix/store/trash'
deleting unused links...
note: currently hard linking saves -0.00 MiB
8134 store paths deleted, 11574.19 MiB freed

Dans l'exemple ci-dessus, le système a nettoyé pas loin de 11,6 Go de paquets inutiles ! Il est possible d'automatiser ce nettoyage.

Documentation

NixOS a un manuel très détaillé et très instructif. On trouve aussi beaucoup d'informations sur des fils reddit et github. Il est tout de même fréquent de devoir aller lire le code pour savoir comment se configurer un logiciel pour NixOS, ce qui est intimidant au début mais on s'habitue.

Conclusion

Hé hé, un test ou un aperçu d'une distribution est un exercice que je n'ai pas fait depuis longtemps. Je vous encourage à tester NixOS, sur serveur ou en desktop. Cette distribution n'est pas comme toutes les autres que vous connaissez et elle vous plaira particulièrement si vous faites du devops et que vous cherchez une solution pour versionner les configurations de vos bécanes.

Je dois tout de même avouer que l'utilisation desktop est un peu laborieuse, surtout à cause des mauvaises performances dans Virtualbox (qui font que je reviens souvent à ma Debian) mais aussi à l'absence de gestion centralisée des $HOME (pour cela je testerai Home-manager.).

Utiliser NixOS met un peu de piment dans ma vie de Linuxien trop habitué à la Debian family et à la Red Hat family :)

En vrac 2: DownloadHelper, eMMC 32 Go, Athlon II, NextINpact, Alyx

Rédigé par uTux Aucun commentaire

Je suis un peu en retard, mais je découvre que Video DownloadHelper, célèbre extension pour Firefox / Chrome permettant de télécharger les flux vidéo que l'on regarde dans les pages web, requiert depuis fin 2017 l'installation d'un logiciel additionnel sur la machine de l'utilisateur (appelé "Companion App"). Comme beaucoup j'ai été tenté de crier à l'adware, mais il est expliqué que cela serait du à des changements dans l'API de Firefox >= 57. Bon point: le code source est disponible sous github. En ce qui me concerne, j'ai tout de même préféré basculer sur youtube-dl.

On m'a confié un ordinateur portable Asus qui fonctionne bien mais sur lequel "on peut rien copier, il n'y a pas de place du tout alors qu'il est tout neuf". Il s'agit d'un L402S, donc le stockage est assuré par... 32 Go de eMMC. Oui vous avez bien lu, Windows 10 est installé sur un C: de 32 Go, clin d’œil à Cyrille qui a déjà eu affaire à ce genre de machine.

ASUS LS402

On se doute qu'avec aussi peu d'espace disque, on ne peut pas faire grand chose, pas même installer les mises à jour du système. Heureusement Asus a eu le bon goût de proposer un emplacement 2,5" il est donc possible en théorie d'y mettre un SSD et installer Windows dessus (le bios est accessible).

J'ai récupéré un Samsung R525 qui dormait dans une armoire. On trouve des articles évoquant cette machine en 2010, on a donc affaire à quelque chose de pas très récent. Equipé d'un Athlon II X2 M320 et de 3 Go de RAM, on a clairement affaire à un produit d'entrée de gamme, à une époque où AMD était le choix du pauvre pour les laptop.

Samsung R525

La dalle LCD est cassée, je l'ai donc remplacée par une autre achetée sur eBay et en ai profité pour nettoyer la poussière, changer la pâte thermique et installer un SSD. Après avoir installé Windows 10 en 32 bit, la machine fonctionne mais redémarre brutalement de manière intempestive. Un memtest affiche du rouge, il y a donc une barrette défectueuse qu'il faudra remplacer. Au passage la température CPU qui varie de 84°c à 93°c, c'est monstrueux.

J'ai toujours été opposé au passage au 100% payant de NextINpact, j'avais même décidé de ne pas renouveler mon abonnement pour cette raison. Suite à un appel à l'aide lancé en Aout, j'ai choisi de me réabonner. A l'heure où j'écris cet article il y a 473 commentaires dont beaucoup émanant de mécontents qui critiquent la politique du site. Les principaux reproches: Trop de juridique (Hadopi), la promesse non tenue du magasine papier, la situation économique mauvaise et les appels à l'aide qui se répète tous les ans. Il y a certainement du vrai, mais si je refusais de m'abonner je ne ferai qu’aggraver la situation.

Valve ressort la licence Half Life de la cave avec Alyx, un spin-off qui se déroule entre les événements de Half Life 1 et Half Life 2, conçu pour être joué en VR car oui le but est de promouvoir le casque SteamVR. Je suis aigri car je fais partie des joueurs qui attendent depuis bientôt 13 ans une suite à Half Life 2 Episode 2, et par ailleurs je ne suis pas convaincu par les jeux en VR que je trouve lents et rapidement lassants un peu comme si on jouait à une super Wii. Une prise de risque minimale donc pour Valve qui rappelle une fois de plus à son public que la plateforme de vente rapporte plus que les jeux...

Projet d'achat #2: l'œuf ou la poule

Rédigé par uTux 5 commentaires

J'ai évoqué le sujet il y a presque un an, j'en profite au passage pour remercier encore ceux qui m'ont expliqué comment fonctionne un TAEG :) Le projet a été mis en pause suite à de multiples changement de situation (pour le mieux). Mais aujourd'hui il reprend.

La question qui se pose maintenant est... comment estimer le montant du projet d'achat ? Pour savoir combien on emprunte, il faut connaître le coût du logement. Mais pour connaître le coût du logement, il faut savoir combien on emprunte... ce qui est un problème bien récursif.

Alors il y a deux possibilités pour débloquer la situation:

  • Utiliser les outils de simulation des banques pour estimer la capacité d'emprunt. Pas facile car l'estimation est réalisée à la truelle ou demande trop d'informations personnelles. De plus les résultats sont beaucoup trop prudents, à mon sens la mensualité estimée est bien inférieure à ce que je peux rembourser.
  • Regarder les annonces immobilières dans les zones où on veut acheter, afin d'avoir une idée du prix. Là encore c'est la jungle car il faut déchiffrer le blabla marketing. La localisation exacte n'est que rarement indiquée, parfois le bien n'est pas encore construit voire même il ne se situe pas du tout dans la zone demandée...

A cela s'ajoutent deux obstacles majeurs :

  • Les banques ne communiquent pas leur TAEG, tout est établi sur mesure ! Pas possible de faire des comparatifs rapides.
  • On vous demande de payer de votre poche les frais de notaires, ils ne peuvent pas faire partie de l'emprunt. Ou alors si, mais le TAEG augmente. C'est n'importe quoi.

La bonne nouvelle, c'est que les taux sont plutôt bas. On m'a dit que dans les années 80 les TAEG étaient aux alentours de 15%, aujourd'hui on est à 1-2% pour 25 ans. C'est tellement faible que pour le moment je ne ressens pas le besoin de passer par un courtier. A bientôt pour l'épisode 3.

Désactivation temporaire d'IPv6

Rédigé par uTux Aucun commentaire

J'ai remarqué que le blog ne fonctionnait plus en IPv6 depuis quelques jours. En attendant de trouver la cause (migration sur Traefik ?) j'ai retiré l'entrée AAAA du DNS. Vous passez donc exclusivement en IPv4.

Classé dans : Non classé Mots clés : aucun

Migration sur Traefik

Rédigé par uTux Aucun commentaire

Mon blog fonctionne sous Pluxml dans un container Docker. Jusqu'à présent l'accès http/https se faisait par une instance Nginx frontale faisant office de reverse-proxy et SSL offloading. Je viens de le remplacer par Traefik.

Qu'est-ce que Traefik ? Il se qualifie de Edge Router, un terme qui vous sera peut-être familier si vous travaillez avec Kubernetes ou Openshift. En fait c'est un reverse-proxy adaptatif :

  • Gère les certificats Let's Encrypt comme un grand.
  • Route le trafic http/https vers vos backends applicatifs dans Docker.
  • S'auto-configure, l'ajout d'un container Docker correctement labelisé va déclencher la création d'un certificat Let's Encrypt et d'une route.
  • Scalable
traefik diagram

Je reviendrais un peu plus tard sur la mise en place de Traefik !

Fil RSS des articles