57 lines
1.6 KiB
Markdown
57 lines
1.6 KiB
Markdown
# 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](./inventory.md)
|
|
|
|
`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 )`
|