# Install Install NixOS with nixos-anywhere ## Example ```hcl locals { ipv4 = "192.0.2.1" } module "system-build" { source = "github.com/nix-community/nixos-anywhere//terraform/nix-build" # with flakes attribute = ".#nixosConfigurations.mymachine.config.system.build.toplevel" # without flakes # file can use (pkgs.nixos []) function from nixpkgs #file = "${path.module}/../.." #attribute = "config.system.build.toplevel" } module "disko" { source = "github.com/nix-community/nixos-anywhere//terraform/nix-build" # with flakes attribute = ".#nixosConfigurations.mymachine.config.system.build.diskoScript" # without flakes # file can use (pkgs.nixos []) function from nixpkgs #file = "${path.module}/../.." #attribute = "config.system.build.diskoScript" } module "install" { source = "github.com/nix-community/nixos-anywhere//terraform/install" nixos_system = module.system-build.result.out nixos_partitioner = module.disko.result.out target_host = local.ipv4 } ``` ## Requirements No requirements. ## Providers | Name | Version | | --------------------------------------------------- | ------- | | [null](#provider_null) | n/a | ## Modules No modules. ## Resources | Name | Type | | ------------------------------------------------------------------------------------------------------------------- | -------- | | [null_resource.nixos-remote](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource | ## Inputs | Name | Description | Type | Default | Required | | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | -------- | :------: | | [build\_on\_remote](#input_build_on_remote) | Build the closure on the remote machine instead of building it locally and copying it over | `bool` | `false` | no | | [debug\_logging](#input_debug_logging) | Enable debug logging | `bool` | `false` | no | | [disk\_encryption\_key\_scripts](#input_disk_encryption_key_scripts) | Each of these script files will be executed locally and the output of each of them will be made present at the given path to disko during installation. The keys will be not copied to the final system |
list(object({
path = string
script = string
}))
| `[]` | no | | [extra\_environment](#input_extra_environment) | Extra environment variables to be set during installation. This can be usefull to set extra variables for the extra\_files\_script or disk\_encryption\_key\_scripts | `map(string)` | `{}` | no | | [extra\_files\_script](#input_extra_files_script) | A script file that prepares extra files to be copied to the target host during installation. The script expected to write all its files to the current directory. This directory is copied to the target host during installation to the / directory. | `string` | `null` | no | | [flake](#input_flake) | The flake to install the system from | `string` | `""` | no | | [instance\_id](#input_instance_id) | The instance id of the target\_host, used to track when to reinstall the machine | `string` | `null` | no | | [kexec\_tarball\_url](#input_kexec_tarball_url) | NixOS kexec installer tarball url | `string` | `null` | no | | [nixos\_partitioner](#input_nixos_partitioner) | nixos partitioner and mount script | `string` | `""` | no | | [nixos\_system](#input_nixos_system) | The nixos system to deploy | `string` | `""` | no | | [no\_reboot](#input_no_reboot) | Do not reboot the machine after installation | `bool` | `false` | no | | [ssh\_private\_key](#input_ssh_private_key) | Content of private key used to connect to the target\_host | `string` | `""` | no | | [stop\_after\_disko](#input_stop_after_disko) | Exit after disko formatting | `bool` | `false` | no | | [target\_host](#input_target_host) | DNS host to deploy to | `string` | n/a | yes | | [target\_port](#input_target_port) | SSH port used to connect to the target\_host | `number` | `22` | no | | [target\_user](#input_target_user) | SSH user used to connect to the target\_host | `string` | `"root"` | no | ## Outputs No outputs.