at 17.09-beta 1.2 kB view raw
1{ config, pkgs, lib, ... }: 2 3with lib; 4let 5 cfg = config.services.ssm-agent; 6 7 # The SSM agent doesn't pay attention to our /etc/os-release yet, and the lsb-release tool 8 # in nixpkgs doesn't seem to work properly on NixOS, so let's just fake the two fields SSM 9 # looks for. See https://github.com/aws/amazon-ssm-agent/issues/38 for upstream fix. 10 fake-lsb-release = pkgs.writeScriptBin "lsb_release" '' 11 #!${pkgs.stdenv.shell} 12 13 case "$1" in 14 -i) echo "nixos";; 15 -r) echo "${config.system.nixosVersion}";; 16 esac 17 ''; 18in { 19 options.services.ssm-agent = { 20 enable = mkEnableOption "AWS SSM agent"; 21 22 package = mkOption { 23 type = types.path; 24 description = "The SSM agent package to use"; 25 default = pkgs.ssm-agent; 26 defaultText = "pkgs.ssm-agent"; 27 }; 28 }; 29 30 config = mkIf cfg.enable { 31 systemd.services.ssm-agent = { 32 inherit (cfg.package.meta) description; 33 after = [ "network.target" ]; 34 wantedBy = [ "multi-user.target" ]; 35 36 path = [ fake-lsb-release ]; 37 serviceConfig = { 38 ExecStart = "${cfg.package.bin}/bin/agent"; 39 KillMode = "process"; 40 Restart = "on-failure"; 41 RestartSec = "15min"; 42 }; 43 }; 44 }; 45} 46