diff --git a/readme.md b/readme.md index 1f6e619..8ae5b37 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,71 @@ -# NixOS Config +# NixOS & Home Manager Config -This is my personal configuration for my devices, powered by both NixOS and Home Manager. +Configuration personnelle pour mes différentes machines, alimentée par **NixOS**, **Lix**, **Home Manager** et **Jujutsu**. + +--- + +## 💻 Présentation des Machines + +* **`gl-desktop`** : Laptop Framework 13" (Intel i7 11ᵉ gén, Linux Zen Kernel, `thermald`, Btrfs + LUKS). +* **`na-desktop`** : Poste fixe / Gaming (CPU AMD, Linux Zen Kernel, Btrfs + LUKS). +* **`na-server`** : Serveur Amérique du Nord (CPU AMD, Syncthing, Grafana, Btrfs). +* **`eu-server`** : Serveur Europe (Intel Haswell, Syncthing, Prometheus, Grafana, n8n). + +--- + +## 🛠️ Reconstitution & Commandes (`nh`, `nix`, `jj`) + +### Reconstruire avec `nh` (Nix CLI Helper) +Utilisez `nh` pour déployer et basculer les configurations système et home-manager : + +```bash +# Reconstruire et appliquer la configuration système (ex: gl-desktop) +nh os switch . --hostname gl-desktop + +# Reconstruire et appliquer Home Manager +nh home switch . --configuration desktop + +# Nettoyer les anciennes générations du Nix Store +nh clean all +``` + +### Utilisation de Nix Moderne +* Utiliser exclusivement les commandes Nix modernes (pas de `nix-shell`) : + * `nix shell nixpkgs#nom_paquet` + * `nix run nixpkgs#nom_paquet -- [arguments]` + * `nix flake check` + +### Gestion de versions avec Jujutsu (`jj`) +Le dépôt est géré via **Jujutsu (`jj`)** : + +```bash +# Consulter les modifications +jj diff + +# Créer un nouveau commit avec un message normé +jj commit -m "type(scope): description" + +# Consulter l'historique +jj log +``` + +--- + +## 📋 Règles de Contribution & de Style + +1. **Messages de Commit (Conventional Commits) :** + Chaque commit DOIT respecter le format conventionnel : + * `feat(scope): description` + * `refactor(scope): description` + * `fix(scope): description` + * `style(scope): description` + * `chore(scope): description` + +2. **Formatage Nix :** + Tous les fichiers `.nix` doivent être formatés avec `nixfmt`. + +3. **Ordre des Attributs :** + Conserver l'ordre standardisé des sous-ensembles dans les modules (`imports` -> `networking` -> `boot` -> `hardware` -> `fileSystems` -> `sops` -> `services` -> `programs`). + +4. **Outils requis :** + Utiliser Jujutsu (`jj`) au lieu de Git, les CLI modernisées Nix (`nix shell`, `nix run`), et `nh` pour l'application des configurations.