summary refs log tree commit diff
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2017-05-11 07:12:50 +0100
committerGitHub <noreply@github.com>2017-05-11 07:12:50 +0100
commitea031fe7c15d964c9d9789d5718561064bc43c2a (patch)
treebb9539854d870f68c47acf81833e44f3c25225de
parentbe19ad150c452c5104cf7dd4d97d79746e5756b6 (diff)
parentad67c286e1626b44502984b11ac6f866e4fa19b2 (diff)
downloadnixpkgs-ea031fe7c15d964c9d9789d5718561064bc43c2a.tar
nixpkgs-ea031fe7c15d964c9d9789d5718561064bc43c2a.tar.gz
nixpkgs-ea031fe7c15d964c9d9789d5718561064bc43c2a.tar.bz2
nixpkgs-ea031fe7c15d964c9d9789d5718561064bc43c2a.tar.lz
nixpkgs-ea031fe7c15d964c9d9789d5718561064bc43c2a.tar.xz
nixpkgs-ea031fe7c15d964c9d9789d5718561064bc43c2a.tar.zst
nixpkgs-ea031fe7c15d964c9d9789d5718561064bc43c2a.zip
Merge pull request #25696 from aneeshusa/add-salt-minion-service
salt: Add minion service module
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/admin/salt/minion.nix56
2 files changed, 57 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index a76df76f40c..15d7caed38a 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -130,6 +130,7 @@
   ./security/wrappers/default.nix
   ./security/sudo.nix
   ./services/admin/salt/master.nix
+  ./services/admin/salt/minion.nix
   ./services/amqp/activemq/default.nix
   ./services/amqp/rabbitmq.nix
   ./services/audio/alsa.nix
diff --git a/nixos/modules/services/admin/salt/minion.nix b/nixos/modules/services/admin/salt/minion.nix
new file mode 100644
index 00000000000..9ecefb32cfa
--- /dev/null
+++ b/nixos/modules/services/admin/salt/minion.nix
@@ -0,0 +1,56 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+
+  cfg  = config.services.salt.minion;
+
+  fullConfig = lib.recursiveUpdate {
+    # Provide defaults for some directories to allow an immutable config dir
+    # NOTE: the config dir being immutable prevents `minion_id` caching
+
+    # Default is equivalent to /etc/salt/minion.d/*.conf
+    default_include = "/var/lib/salt/minion.d/*.conf";
+    # Default is in /etc/salt/pki/minion
+    pki_dir = "/var/lib/salt/pki/minion";
+  } cfg.configuration;
+  configDir = pkgs.writeTextDir "minion" (builtins.toJSON fullConfig);
+
+in
+
+{
+  options = {
+    services.salt.minion = {
+      enable = mkEnableOption "Salt minion service";
+      configuration = mkOption {
+        type = types.attrs;
+        default = {};
+        description = ''
+          Salt minion configuration as Nix attribute set.
+          See <link xlink:href="https://docs.saltstack.com/en/latest/ref/configuration/minion.html"/>                                                                                                 
+          for details.          
+        '';
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    environment.systemPackages = with pkgs; [ salt ];
+    systemd.services.salt-minion = {
+      description = "Salt Minion";
+      wantedBy = [ "multi-user.target" ];
+      after = [ "network.target" ];
+      path = with pkgs; [
+        utillinux
+      ];
+      serviceConfig = {
+        ExecStart = "${pkgs.salt}/bin/salt-minion --config-dir=${configDir}";
+        LimitNOFILE = 8192;
+        Type = "notify";
+        NotifyAccess = "all";
+      };
+    };
+  };
+}
+