2025-10-04 17:37:53 +02:00
2025-09-16 18:40:31 +02:00
2025-10-04 17:37:53 +02:00
2025-10-04 17:37:53 +02:00
2025-09-25 20:36:34 +02:00
2025-09-25 20:36:34 +02:00
2025-10-02 21:48:48 +02:00

NixOS dotfiles

Structure des fichiers

+ hosts
|   |
|   + generic <- Iso minimal pour nixos-anywhere
|   |
|   + myhost <- Tout ce qui est unique à une machine vient ici
|
+ modules
|   |
|   + core <- Modules partagés entre toutes les machines
|   |
|   + optionnal <- Modules pour au moins deux machines
|
+ flake.nix
|
+ custom.iso
  • Si un seul fichier nix, pas de sous dossier (openfortivpn)
  • Si plusieurs fihchiers nix, un sous dossier (ex desktop)

Workflow

  1. Création d'une iso (push en ligne pour kexec)
  2. Copie de l'iso sur le repo
  3. nixos-anywhere (pour déployer une install minimale)
  4. copie du disk-config.nix et du hardware-config.nix dans le dossier host qui va bien
  5. deploy-rs pour push une config sur une image generic ou maj existant.

Création d'une iso

nixos-generate --format iso --configuration ./customiso.nix -o ~/Downloads/nixos.iso

si on veut utiliser kexec, il faut pousser l'iso en ligne pour que le serveur cible puisse la télécharger.

Nixos anywhere

On ajoute à ~/.ssh/config

Match User root
  IdentityFile ~/.ssh/id_ed25519_beastie
  PasswordAuthentication yes
  PubkeyAuthentication yes

On lance l'installation à distance

nixos-anywhere --flake .#generic --target-host root@192.168.122.204 -i ~/.ssh/id_ed25519_beastie --generate-hardware-config nixos-generate-config ./hosts/generic/hardware-configuration.nix

Si l'installation est en local, on peux créer le partitionnement avec la commande suivante :

sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --yes-wipe-all-disks --mode destroy,format,mount ./disko.nix

et faire une installation standard. Le mieux est de download le repo et de faire un nixos-anywhere en ssh sur localhost ou depuis un autre pc

Une fois la manipulation finie, on copie hosts/generic dans hosts/hostname. Ainsi, on garde le bon disk-config.nix et hardware-configuration.nix

déployer la bonne configuration

Avant de déployer la configuration, il faut ajouter la clé sops-nix

cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age
vi .sops.yaml
sops updatekeys secrets.yaml
git commit -am "add myhost sops key"
git push origin main
nix flake update mysecrets

On édite hosts/hostname/default.nix et on inclus les bons modules.

On lance le rebuild :

nixos-rebuild switch --flake ~/dev#test-kvm --target-host beastie@192.168.122.204 --sudo

TODO

  1. simplifier pkgs.rofi dans la conf du au merge rofi et rofi-wayland
Description
No description provided
Readme 315 KiB
Languages
Nix 85.9%
Shell 5.7%
Lua 4.3%
CSS 4.1%