# How to use ## Structure : ```shell ~/nixos-config/ ├── flake.nix # pour fixer la source/version des packages utilisés │ # permet de fixer la source/version des packages utilisés ├── flake.lock ├── hosts/ │ # configuration système │ ├── nixos-home/ │ │ # mon host de la maison │ │ └── nixos/ │ │ ├── configuration.nix # entrée des fichiers de configuration │ │ ├── hardware-configuration.nix # fichier hardware généré à l'installation │ │ └── config/ # tous fichiers config │ │ └── ... │ └── nixos-laptop/ │ # mon host du travail │ └── nixos/ │ ├── configuration.nix # entrée des fichiers de configuration │ ├── hardware-configuration.nix # fichier hardware généré à l'installation │ └── config/ # tous fichiers config │ └── ... ├── home/ │ # configuration user │ └── afoucaultc/ │ # mon user personnel │ ├── home.nix # point d'entrée home-manager classique │ ├── home_laptop.nix # point d'entrée home-manager pour machine light │ ├── dotfiles_apps.nix # liens vers mes dossier de configuration │ └── packages/ # lien vers les packages installés sur mon user └── ... ``` ## Installation : 1. Installer NixOS sur clé USB (via Rufus sous windows par exemple) 2. Boot sur clé USB 3. Suivre les indications (perso: chiffrement LUKS + swap activé + formatage auto) 4. Reboot dans NixOS 5. Cloner le repo git en utilisant git temporairement via nix shell : `nix-shell -p git --run "git clone https://gitlab.com/afoucaultc/nixos-config.git ~/nixos-config"` 6. Lancer le `./install` (copie hardware-configuration dans le host, ajoute le host, lance un rebuild) 7. C'est fini, reboot et lancer la nouvelle version avec Grub > [!WARNING] > Il peut y avoir besoin d'ajouter un utilisateur pour git, à voir par la suite > Pour les GPU ou CPU spécifiques, des changements peuvent être nécessaires, à adapter ## Installer un nouveau package et mettre à jour ### Pour update ```nix nix flake update sudo nixos-rebuild switch --flake ~/nixos-config#nixos-home ``` Ou utiliser `update.sh` ### Pour trouver un nouveau package : ```nix nix search nixpkgs nom_du_package ``` ### Pour savoir où le déclarer : 1. system wide : dans hosts 2. user-level : dans home ### Pour savoir comment le déclarer : 1. Avec un module `programs.*` s'il existe (à préférer, voir [lien](https://home-manager-options.extranix.com/)) 2. Avec `home.packages` (`home.packages = [ pkgs.xxx ];`) ### Pour gérer la version 1. version trop ancienne : référencer `pkgs-unstable.xxx` 2. Package pas encore dans nixpkgs : chercher un flake upstream officiel (packages..degault), ajouter comme input et le référencer ### Machine ancienne Bien utiliser la version `laptop` qui prend la plupart des paquets par cachix (pour éviter la compilation en locale qui dépasse les capacités de la RAM) ### Ensuite #### Thunderbird Générer clé GPG `gpg --quick-generate-key "afoucaultc" default default never` Afficher la clé `gpg --list-secret-keys --keyid-format=long` Initialiser avec pass (empreinte = dernière partie après sec) `pass init ` Fermer en partie les permissions sur .gnupg ```bash chmod 700 ~/.gnupg chmod 600 ~/.gnupg/* 2>/dev/null find ~/.gnupg -type d -exec chmod 700 {} \; find ~/.gnupg -type f -exec chmod 600 {} \; ``` Lancer le proton mail bridge ```shell protonmail-bridge --cli >>> login #(puis se login) ``` Ensuite normalement c'est bon, taper "info" pour récupérer le mot de passe Puis `cert export` et le mettre dans le home par exemple. Ensuite : `parametres -> vie privée et sécurité -> certificats -> gérer -> autorités -> importer` Importer et cocher site web. Puis se connecter à son compte sur thunderbird : il faut faire `info` sur le protonmail bridge, pour récupérer son mot de passe, puis valider l'exception pour le certificat.