105 lines
4.8 KiB
Markdown
105 lines
4.8 KiB
Markdown
# How to use
|
|
## Structure :
|
|
```shell
|
|
~/nixos-config/
|
|
├── flake.nix
|
|
│ # permet de fixer la source/version des packages utilisés et du point d'entrée user / host
|
|
├── flake.lock
|
|
├── hosts/
|
|
│ # configuration système
|
|
│ ├── nixos-home/
|
|
│ │ # mon host PC maison
|
|
│ │ └── nixos/
|
|
│ │ ├── configuration.nix # entrée des fichiers de configuration
|
|
│ │ ├── hardware-configuration.nix # fichier hardware généré à l'installation
|
|
│ │ └── config/ # tous fichiers config système (packages et services)
|
|
│ │ └── ...
|
|
│ └── nixos-laptop/
|
|
│ # mon host PC travail
|
|
│ └── nixos/
|
|
│ ├── configuration.nix # entrée des fichiers de configuration
|
|
│ ├── hardware-configuration.nix # fichier hardware généré à l'installation
|
|
│ └── config/ # tous fichiers config système (packages et services)
|
|
│ └── ...
|
|
├── home/
|
|
│ # configuration user
|
|
│ └── afoucaultc/
|
|
│ # mon user
|
|
│ ├── 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
|
|
│ └── ...
|
|
├── install.sh # script d'installation
|
|
├── rebuild.sh # script de rebuild
|
|
└── update.sh # script d'update
|
|
```
|
|
|
|
## 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 sur la machine (pas sur la clé USB !)
|
|
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 et les fichiers de config, 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
|
|
|
|
> [!NOTE]
|
|
> Pour les GPU ou CPU spécifiques, des changements peuvent être nécessaires, il faut adapter le host
|
|
> L'installation en ligne de commande n'est pas traitée ici, mais peut être indispensable pour une vieille machine. Perso, j'ai eu des soucis parce que j'ai installé avec l'utilisateur sudo, puis ai dû tout migrer vers un nouvel utilisateur créé après réinstallation (et me connecter la première fois avec sudo)
|
|
|
|
## 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`
|
|
|
|
Il est possible de mettre à jour la config sans mettre à jour tous les packages, en utilisant `rebuild.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.
|