summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorDaniel Peebles <copumpkin@users.noreply.github.com>2017-02-16 12:44:49 -0500
committerGitHub <noreply@github.com>2017-02-16 12:44:49 -0500
commit19a9099eb25795a8caa408f842a5254920157456 (patch)
tree3c0dc30dab676ab61618f1fea2ec2233a6709eaf /nixos
parent1c366b4e0647abea0385395dcb2981a5b3161cf8 (diff)
parentb172684c17aa1eea76a996ab888cef13ea7a16af (diff)
downloadnixlib-19a9099eb25795a8caa408f842a5254920157456.tar
nixlib-19a9099eb25795a8caa408f842a5254920157456.tar.gz
nixlib-19a9099eb25795a8caa408f842a5254920157456.tar.bz2
nixlib-19a9099eb25795a8caa408f842a5254920157456.tar.lz
nixlib-19a9099eb25795a8caa408f842a5254920157456.tar.xz
nixlib-19a9099eb25795a8caa408f842a5254920157456.tar.zst
nixlib-19a9099eb25795a8caa408f842a5254920157456.zip
Merge pull request #22869 from copumpkin/amazon-init-fix
amazon-init NixOS module: fix (I think) race condition with network
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/virtualisation/amazon-init.nix29
1 files changed, 21 insertions, 8 deletions
diff --git a/nixos/modules/virtualisation/amazon-init.nix b/nixos/modules/virtualisation/amazon-init.nix
index c9356c9b4eaa..5797d9db4362 100644
--- a/nixos/modules/virtualisation/amazon-init.nix
+++ b/nixos/modules/virtualisation/amazon-init.nix
@@ -1,20 +1,18 @@
-{ config, pkgs, modulesPath, ... }:
-
-# This attempts to pull a nix expression from this EC2 instance's user-data.
+{ config, pkgs, ... }:
 
 let
-  bootScript = pkgs.writeScript "bootscript.sh" ''
+  script = ''
     #!${pkgs.stdenv.shell} -eu
 
     echo "attempting to fetch configuration from EC2 user data..."
 
+    export HOME=/root
     export PATH=${pkgs.lib.makeBinPath [ config.nix.package pkgs.systemd pkgs.gnugrep pkgs.gnused config.system.build.nixos-rebuild]}:$PATH
     export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels
 
     userData=/etc/ec2-metadata/user-data
 
     if [ -s "$userData" ]; then
-
       # If the user-data looks like it could be a nix expression,
       # copy it over. Also, look for a magic three-hash comment and set
       # that as the channel.
@@ -43,7 +41,22 @@ let
     nixos-rebuild switch
   '';
 in {
-  boot.postBootCommands = ''
-    ${bootScript} &
-  '';
+  systemd.services.amazon-init = {
+    inherit script;
+    description = "Reconfigure the system from EC2 userdata on startup";
+
+    wantedBy = [ "sshd.service" ];
+    before = [ "sshd.service" ];
+    after = [ "network-online.target" ];
+    requires = [ "network-online.target" ];
+ 
+    restartIfChanged = false;
+    unitConfig.X-StopOnRemoval = false;
+
+    serviceConfig = {
+      Type = "oneshot";
+      RemainAfterExit = true;
+    };
+  };
 }
+