> For the complete documentation index, see [llms.txt](https://cristiandis.gitbook.io/ntix/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cristiandis.gitbook.io/ntix/ntix-documentation/docs-it/introduction.md).

# Introduzione

## Cos'è NTIX?

NTIX è uno strumento dichiarativo di gestione pacchetti per Windows. Invece di installare manualmente i pacchetti attraverso più gestori di pacchetti, descrivi lo stato desiderato in un file di configurazione Lua e lasci che NTIX si occupi del resto.

### Perché NTIX?

Gli sviluppatori Windows spesso usano una combinazione di gestori di pacchetti, come winget per le app Microsoft Store, Chocolatey per le utilità di sistema e Scoop per gli strumenti di sviluppo. Ognuno ha la propria sintassi, il proprio meccanismo di aggiornamento e il proprio modo di tenere traccia di ciò che è installato.

NTIX li unifica in un'unica configurazione:

* **Un unico file di configurazione** descrive tutti i tuoi pacchetti su tutti i gestori
* **Gestione dei file di configurazione** ti permette di gestire in modo dichiarativo i dotfiles e le impostazioni delle app
* **Anteprima delle differenze** mostra esattamente cosa cambierà prima che tu confermi
* **Tracciamento dello stato** memorizza ciò che NTIX ha installato, così può ripulire gli orfani
* **Versioni bloccate** mantengono i pacchetti critici a versioni specifiche
* **Cambio di ambiente** ti consente di avere configurazioni diverse per lavoro, personale e CI

### Come funziona

```mermaid
flowchart LR
    A[config.lua] --> B[ConfigLoader]
    B --> C[DiffEngine]
    C --> D{Modifiche?}
    D -->|Sì| E[ExecutionEngine]
    D -->|No| F[Niente da fare]
    E --> G[winget / choco / scoop]
    E --> H[state.json]
```

1. **ConfigLoader** legge la tua configurazione Lua e analizza opzioni, pacchetti e file di configurazione
2. **DiffEngine** confronta la tua configurazione con lo stato corrente (pacchetti installati + file di stato NTIX), comprese le azioni sui file di configurazione
3. **ExecutionEngine** applica il diff: installando, aggiornando o rimuovendo pacchetti e creando o aggiornando file di configurazione
4. **StateService** salva ciò che è stato fatto, così alla prossima esecuzione saprà cosa gestisce NTIX

### Gestori di pacchetti

| Gestore        | Ideale per                                         | Pacchetti di esempio                          |
| -------------- | -------------------------------------------------- | --------------------------------------------- |
| **winget**     | App Microsoft Store, software di grandi dimensioni | `Google.Chrome`, `Microsoft.VisualStudioCode` |
| **Chocolatey** | Utilità di sistema, strumenti di amministrazione   | `ripgrep`, `docker-desktop`                   |
| **Scoop**      | Strumenti CLI per sviluppatori                     | `fd`, `bat`, `neovim`, `go`                   |

Puoi usare uno, due o tutti e tre i gestori. NTIX tocca solo i gestori che abiliti nella tua configurazione.
