> 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/configuration.md).

# Configurazione

## Configurazione

NTIX utilizza file di configurazione Lua. Un file di configurazione deve restituire una tabella con due chiavi: `options` e `pkgs`.

### Configurazione minima

```lua
local options = {
    winget = { enable = true }
}

local pkgs = {}
pkgs.winget = { "Google.Chrome" }

return { options = options, pkgs = pkgs }
```

### Configurazione semplice completa

```lua
local options = {
    winget = {
        enable = true,
        acceptAgreements = true,
        silent = true,
        disableInteractivity = false
    },
    chocolatey = {
        enable = true,
        yes = true
    },
    scoop = {
        enable = true,
        buckets = { "main", "extras", "versions" }
    }
}

local pkgs = {}

pkgs.winget = {
    "Google.Chrome",
    { id = "7zip.7zip", version = "23.01" }
}

pkgs.chocolatey = { "ripgrep" }
pkgs.scoop = { "fd", "bat", "neovim" }

return { options = options, pkgs = pkgs }
```

### Struttura

| Chiave        | Scopo                                                       |
| ------------- | ----------------------------------------------------------- |
| `options`     | Configura il comportamento per ciascun gestore di pacchetti |
| `pkgs`        | Elenca i pacchetti che vuoi installare                      |
| `configFiles` | (Facoltativo) Gestisci file arbitrari su disco              |

Ogni sezione del gestore di pacchetti in `pkgs` è un array di pacchetti. I pacchetti possono essere stringhe (ultima versione) o tabelle con `id` e `version` campi.

### File di configurazione

NTIX può anche gestire in modo dichiarativo file arbitrari (dotfile, impostazioni, configurazioni). Dichiárali sotto `configFiles`, indicandoli con il percorso assoluto di destinazione come chiave e il percorso sorgente come valore:

```lua
return {
    options = { scoop = { enable = true } },
    pkgs = { scoop = { "fd" } },
    configFiles = {
        ["C:/Users/you/AppData/Roaming/kitty/kitty.conf"] = "configs/kitty.conf",
        ["C:/Users/you/.gitconfig"] = "configs/gitconfig",
    }
}
```

* Le destinazioni devono essere **percorsi assoluti**. Usa `/` come separatore - Lua considera `\` come sequenza di escape.
* I percorsi sorgente vengono risolti **in relazione alla directory del file di configurazione** e devono esistere quando la configurazione viene analizzata.
* `ntix diff -c` mostra in anteprima le azioni (`[new]`, `[update]`, `[orphan]`) e `ntix apply -c` le applica. La rimozione degli orfani elimina solo il tracciamento: il file su disco non viene mai toccato.
* I file di configurazione gestiti sono tracciati nello stato tramite hash del contenuto, quindi NTIX li riscrive solo quando cambia il sorgente.

### Scopri di più

* Riferimento delle opzioni - tutte le opzioni disponibili
* Elenchi dei pacchetti - stringhe vs bloccati, deduplicazione
* Multi-ambiente - importazioni e cambio di ambiente
