# 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 personnel (spécifique à ma machine) │ └── 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 │ ├── 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 ``` ### 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