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:
Recommended for nix people
-
flake.nix (i.e. via
buildClan
)machine
argumentinventory
argument
-
machines/
machine_name
/configuration.nix (autoincluded
if it exists)
Used by CLI & UI
- inventory.json
- machines/
machine_name
/hardware-configuration.nix (autoincluded
if it exists)
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 )