1{ pkgs, lib, ... }:
2
3with lib;
4
5let
6 metadataFetcher = import ./openstack-metadata-fetcher.nix {
7 targetRoot = "/";
8 wgetExtraOptions = "--retry-connrefused";
9 };
10in
11{
12 imports = [
13 ../profiles/qemu-guest.nix
14 ../profiles/headless.nix
15 # The Openstack Metadata service exposes data on an EC2 API also.
16 ./ec2-data.nix
17 ./amazon-init.nix
18 ];
19
20 config = {
21 fileSystems."/" = {
22 device = "/dev/disk/by-label/nixos";
23 fsType = "ext4";
24 autoResize = true;
25 };
26
27 boot.growPartition = true;
28 boot.kernelParams = [ "console=ttyS0" ];
29 boot.loader.grub.device = "/dev/vda";
30 boot.loader.timeout = 0;
31
32 # Allow root logins
33 services.openssh = {
34 enable = true;
35 permitRootLogin = "prohibit-password";
36 passwordAuthentication = mkDefault false;
37 };
38
39 # Force getting the hostname from Openstack metadata.
40 networking.hostName = mkDefault "";
41
42 systemd.services.openstack-init = {
43 path = [ pkgs.wget ];
44 description = "Fetch Metadata on startup";
45 wantedBy = [ "multi-user.target" ];
46 before = [ "apply-ec2-data.service" "amazon-init.service"];
47 wants = [ "network-online.target" ];
48 after = [ "network-online.target" ];
49 script = metadataFetcher;
50 restartIfChanged = false;
51 unitConfig.X-StopOnRemoval = false;
52 serviceConfig = {
53 Type = "oneshot";
54 RemainAfterExit = true;
55 };
56 };
57 };
58}