https://github.com/palumbou/nixos_configurations_generator
A script to generate NixOS Configurations from template files
https://github.com/palumbou/nixos_configurations_generator
nixos nixos-config nixos-configuration script
Last synced: over 1 year ago
JSON representation
A script to generate NixOS Configurations from template files
- Host: GitHub
- URL: https://github.com/palumbou/nixos_configurations_generator
- Owner: palumbou
- License: other
- Created: 2025-01-30T17:39:24.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-01T06:15:16.000Z (over 1 year ago)
- Last Synced: 2025-04-01T07:25:53.116Z (over 1 year ago)
- Topics: nixos, nixos-config, nixos-configuration, script
- Language: Shell
- Homepage:
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.it.md
- License: LICENSE
Awesome Lists containing this project
README
# NixOS Configurations Generator
> **Lingue disponibili**: [English](README.md) | [Italiano (corrente)](README.it.md)
**Nota**: Questo script dipende dai file presenti nel repository
[another_nixos_configurations_template](https://github.com/palumbou/another_nixos_configurations_template).
Leggi il **README** presente in quel repository prima di utilizzare questo script.
Questo script facilita la modifica dei template dei file di configurazione di NixOS.
Attualmente è piuttosto basilare e svolge alcune operazioni principali:
1. **Rinomina la cartella template**
- Rinomina la cartella `nixos_configs_template` in `nixos_configs` all'interno della cartella `another_nixos_configurations_template`.
2. **Rinomina file template**
- Cerca ricorsivamente tutti i file che terminano con `.template` nella cartella `nixos_configs`.
- Rinomina ciascun file rimuovendo il suffisso `.template`.
3. **Carica variabili d'ambiente**
- Legge il file `env.conf`, che deve contenere variabili d'ambiente nel formato:
```bash
export KEY=value
```
- Rende queste variabili disponibili per la sostituzione nello script.
4. **Sostituisce variabili**
- Usa `envsubst` per sostituire placeholder (es. `${VARIABLE}`) nei seguenti file:
- `nixos_configs/common/gui/gnome.nix`
- `nixos_configs/common/gui/kde.nix`
- `nixos_configs/common/gui/hyprland.nix`
- `nixos_configs/common/system.nix`
5. **Chiede l'hostname**
- Richiede all'utente di inserire un hostname.
- Valida che l'hostname corrisponda a un pattern valido (senza caratteri non consentiti).
6. **Duplica cartella host**
- Copia la cartella `ABC` dentro `nixos_configs/hosts/` e rinomina la copia usando l'hostname specificato.
7. **Imposta `BASEPATHNM`**
- Calcola `BASEPATHNM` come la directory di lavoro corrente meno la cartella `nixos_configs_generator`.
- Sostituisce tutte le occorrenze di `${BASEPATHNM}` con questo valore nel file `nm_configurations.nix`.
8. **Sostituisce l'hostname nei file**
- Sostituisce `${HOSTNAME}` con l'hostname inserito dall'utente in tutti i file nella nuova cartella host.
9. **Chiede username e password**
- Chiede all'utente di inserire un nome utente e una password.
- Valida che il nome utente sia valido per sistemi Linux (senza caratteri non consentiti).
10. **Duplica cartella utente**
- Copia la cartella `XYZ` dentro `nixos_configs/users/` e la rinomina con il nome utente specificato.
- Rinomina il file `user.nix` in `.nix` nella nuova cartella utente.
11. **Sostituisce placeholder nel file utente**
- Nel file `.nix`, sostituisce:
- `${USER}` con il nome utente fornito
- `${DICTIONARY}` con il valore `DICTIONARY` presente in `env.conf`
- `${BASEPATHUSER}` con il valore calcolato di `BASEPATHUSER`
Infine, lo script termina con `exit 0`.
---
## Utilizzo
1. **Scarica** i file dal repository [another_nixos_configurations_template](https://github.com/palumbou/another_nixos_configurations_template) o lascia che sia lo script a effettuare automaticamente il clone del repository.
2. **Modifica** il file `env.conf` con i valori desiderati.
3. **Scarica** lo script `nixos_configs_generator.sh`.
4. **Verifica** che lo script abbia i permessi di esecuzione.
5. **Esegui** lo script e segui le istruzioni a schermo.
---
## Piani Futuri
Nelle prossime versioni prevedo di **ampliare** lo script per supportare ulteriori scelte e automatizzare ulteriori fasi della configurazione.