# Fichier principal de configuration de NixOS # TODO: penser à git commit les modifications. # # Commandes usuelles pour configurer NixOS : # - nix-upgrade : Applique au système la présente configuration. # NOTE: à faire pour prendre en compte toute modification, # comme l’ajout ou la suppression d’un logiciel. # # - nix-rollback : Applique au système la précédente configuration disponible. # NOTE: utile pour retrouver un état fonctionnel # si problème avec la nouvelle configuration. # # - nix-history : Liste les anciennes configurations encore diponibles. # # - nix-clean : Supprime les anciennes configurations # (vers lesquelles faire un nix-rollback) # et libère l’espace utilisé par les paquets inutilisés # (avec le ramasse-miettes, aka. garbage collector). # NOTE: à faire si le système convient depuis un moment # ou si manque d’espace sur la partition racine. # # - nix-catalog : Liste les catalogues des paquets disponibles. # # - nix-update : Récupère les mise-à-jours depuis les catalogues des paquets disponibles. # NOTE: à faire de temps en temps avant un nix-upgrade. # # - nix-upstream : Affiche la version de NixOS stabilisée bi-annuellement # (de mars ou de septembre) et utilisée # pour récupérer le catalogue des paquets (avec nix-update). # NOTE: À changer grosso-modo en avril et en octobre, # par exemple en avril 2019 : # $ sudo nix-channel --remove nixos # $ sudo nix-channel --add https://nixos.org/channels/nixos-19.03 nixos # et en octobre 2019 : # $ sudo nix-channel --remove nixos # $ sudo nix-channel --add https://nixos.org/channels/nixos-19.09 nixos # # C’est une manip' qui pourrait être évitée en suivant # https://nixos.org/channels/nixos-unstable, # mais c’est plus... stable comme ça. # Entête usuelle d”une configuration de NixOS. { config, pkgs, ... }: { # Import d’autres fichiers de configuration. imports = [ ./hardware.nix # Fichier de configuration du matériel. # NOTE: à modifier seulement en cas de changement # d’ordinateur ou de disque dur. ./system.nix # Fichier de configuration de base du système. # NOTE: pour la configuration experte. ]; # Configuration de l’user sevy users.users.sevy = { isNormalUser = true; uid = 1000; extraGroups = [ "wheel" # Permet d’utiliser sudo. "networkmanager" ]; }; # Liste de programmes à installer environment.systemPackages = with pkgs; [ # Internet amule chromium firefox liferea transmission-gtk thunderbird # Bureautique #djview evince geeqie gimp git gnome3.gnome-calculator hledger imagemagick # convert, mogrify, ... parcellite # Presse papier libreoffice vimHugeX # gvim xsane # scan # Sécurité gnupg networkmanager-openvpn pass # Trousseau de clés # - Créer : pass generate example.com/mon-compte@mon-mail.coop 24 # - Récupérer : pass -c example.com/mon-compte@mon-mail.coop #torbrowser firefoxPackages.tor-browser # Multimédia libdvdcss # Clés pour lire les DVD mplayer vlc #youtubeDL # Jeux #freeciv_gtk ]; # Le nom du paquet est suggéré en essayant # de lancer dans un terminal une commande qu’il fournit, # par exemple : # $ inkscape # The program ‘inkscape’ is currently not installed. You can install it by typing: # nix-env -iA nixos.inkscape # # NOTE: installer avec nix-env est possible # mais cela revient à fonctionner comme avec apt install sous Debian # c’est-à-dire à perdre la reproductibilité que fournit # la déclaration complète de ce que l’on veut en l’écrivant # dans le présent fichier de configuration. # Mais ça peut être pertinent pour tester de manière jetable. # # Alternativement, on peut chercher un paquet ainsi : # $ nix search inkscape # * nixpkgs.inkscape (inkscape) # Vector graphics editor # VirtualBox virtualisation.virtualbox.host.enable = true; users.extraUsers.sevy.extraGroups = ["vboxusers"]; }