nixos-config/README.md
afoucaultc df94405cef yeeee
2026-07-07 20:42:01 +02:00

97 lines
4.1 KiB
Markdown

# 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.<system>.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 <empreinte>`
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.