summary refs log tree commit diff
path: root/nixos/modules/services/misc/ssm-agent.nix
diff options
context:
space:
mode:
authorDan Peebles <pumpkin@me.com>2017-02-13 04:01:28 +0000
committerDan Peebles <pumpkin@me.com>2017-02-13 04:01:38 +0000
commite928cb1c631fedde3837dabc518931ea12522163 (patch)
treee238f54907ec00452868054552119f8bedd3d97f /nixos/modules/services/misc/ssm-agent.nix
parent4450327c062a41f7df2f6756057df4ebb6548011 (diff)
downloadnixpkgs-e928cb1c631fedde3837dabc518931ea12522163.tar
nixpkgs-e928cb1c631fedde3837dabc518931ea12522163.tar.gz
nixpkgs-e928cb1c631fedde3837dabc518931ea12522163.tar.bz2
nixpkgs-e928cb1c631fedde3837dabc518931ea12522163.tar.lz
nixpkgs-e928cb1c631fedde3837dabc518931ea12522163.tar.xz
nixpkgs-e928cb1c631fedde3837dabc518931ea12522163.tar.zst
nixpkgs-e928cb1c631fedde3837dabc518931ea12522163.zip
ssm-agent NixOS module: init
Diffstat (limited to 'nixos/modules/services/misc/ssm-agent.nix')
-rw-r--r--nixos/modules/services/misc/ssm-agent.nix45
1 files changed, 45 insertions, 0 deletions
diff --git a/nixos/modules/services/misc/ssm-agent.nix b/nixos/modules/services/misc/ssm-agent.nix
new file mode 100644
index 00000000000..b04959a9686
--- /dev/null
+++ b/nixos/modules/services/misc/ssm-agent.nix
@@ -0,0 +1,45 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+let
+  cfg = config.services.ssm-agent;
+
+  # The SSM agent doesn't pay attention to our /etc/os-release yet, and the lsb-release tool
+  # in nixpkgs doesn't seem to work properly on NixOS, so let's just fake the two fields SSM
+  # looks for. See https://github.com/aws/amazon-ssm-agent/issues/38 for upstream fix.
+  fake-lsb-release = pkgs.writeScriptBin "lsb_release" ''
+    #!${pkgs.stdenv.shell}
+
+    case "$1" in
+      -i) echo "nixos";;
+      -r) echo "${config.system.nixosVersion}";;
+    esac
+  '';
+in {
+  options.services.ssm-agent = {
+    enable = mkEnableOption "AWS SSM agent";
+
+    package = mkOption {
+      type = types.path;
+      description = "The SSM agent package to use";
+      default = pkgs.ssm-agent;
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.services.ssm-agent = {
+      inherit (cfg.package.meta) description;
+      after    = [ "network.target" ];
+      wantedBy = [ "multi-user.target" ];
+
+      path = [ fake-lsb-release ];
+      serviceConfig = {
+        ExecStart = "${cfg.package.bin}/bin/agent";
+        KillMode = "process";
+        Restart = "on-failure";
+        RestartSec = "15min";
+      };
+    };
+  };
+}
+