nix/hosts/thought/digitalocean.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
{ lib, modulesPath, ... }:
{
imports = [
"${modulesPath}/virtualisation/digital-ocean-config.nix"
];
# do not use DHCP, as DigitalOcean provisions IPs using cloud-init
networking.useDHCP = lib.mkForce false;
# Disables all modules that do not work with NixOS
services.cloud-init = {
enable = true;
network.enable = true;
settings = {
datasource_list = [
"ConfigDrive"
"Digitalocean"
];
datasource.ConfigDrive = { };
datasource.Digitalocean = { };
# Based on https://github.com/canonical/cloud-init/blob/main/config/cloud.cfg.tmpl
cloud_init_modules = [
"seed_random"
"bootcmd"
"write_files"
"growpart"
"resizefs"
"set_hostname"
"update_hostname"
# Not support on NixOS
#"update_etc_hosts"
# throws error
#"users-groups"
# tries to edit /etc/ssh/sshd_config
#"ssh"
"set_password"
];
cloud_config_modules = [
"ssh-import-id"
"keyboard"
# doesn't work with nixos
#"locale"
"runcmd"
"disable_ec2_metadata"
];
## The modules that run in the 'final' stage
cloud_final_modules = [
"write_files_deferred"
"puppet"
"chef"
"ansible"
"mcollective"
"salt_minion"
"reset_rmc"
# install dotty agent fails
#"scripts_vendor"
"scripts_per_once"
"scripts_per_boot"
# /var/lib/cloud/scripts/per-instance/machine_id.sh has broken shebang
#"scripts_per_instance"
"scripts_user"
"ssh_authkey_fingerprints"
"keys_to_console"
"install_hotplug"
"phone_home"
"final_message"
];
};
};
}
|