Files
clan-core/docs/site/concepts/configuration.md
2024-07-14 16:42:27 +02:00

1.6 KiB

Configuration

Introduction

When managing machine configuration this can be done through many possible ways. Ranging from writing nix expression in a flake.nix file; placing autoincluded files into your machine directory; or configuring everything in a simple UI (upcomming).

clan currently offers the following methods to configure machines:

!!! Success "Recommended for nix people"

- flake.nix (i.e. via `buildClan`)
    - `machine` argument
    - `inventory` argument

- machines/`machine_name`/configuration.nix (`autoincluded` if it exists)

???+ Note "Used by CLI & UI"

- inventory.json
- machines/`machine_name`/hardware-configuration.nix (`autoincluded` if it exists)

!!! Warning "Deprecated"

machines/`machine_name`/settings.json

BuildClan

The core function that produces a clan. It returns a set of consistent configurations for all machines with ready-to-use secrets, backups and other services.

Inputs

directory
The directory containing the machines subdirectory
machines
Allows to include machine-specific modules i.e. machines.${name} = { ... }
meta
An optional set

{ name :: string, icon :: string, description :: string }

inventory
Service set for easily configuring distributed services, such as backups

For more details see Inventory

specialArgs
Extra arguments to pass to nixosSystem i.e. useful to make self available
pkgsForSystem
A function that maps from architecture to pkgs, if specified this nixpkgs will be only imported once for each system. This improves performance, but all nipxkgs.* options will be ignored. (string -> pkgs )