grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / admin / salt / master.nix
blob1ffe6b6cb27aa9b0addfea539cb574e5271b938e
1 { config, pkgs, lib, ... }:
2 let
4   cfg  = config.services.salt.master;
6   fullConfig = lib.recursiveUpdate {
7     # Provide defaults for some directories to allow an immutable config dir
9     # Default is equivalent to /etc/salt/master.d/*.conf
10     default_include = "/var/lib/salt/master.d/*.conf";
11     # Default is in /etc/salt/pki/master
12     pki_dir = "/var/lib/salt/pki/master";
13   } cfg.configuration;
18   options = {
19     services.salt.master = {
20       enable = lib.mkEnableOption "Salt configuration management system master service";
21       configuration = lib.mkOption {
22         type = lib.types.attrs;
23         default = {};
24         description = "Salt master configuration as Nix attribute set.";
25       };
26     };
27   };
29   config = lib.mkIf cfg.enable {
30     environment = {
31       # Set this up in /etc/salt/master so `salt`, `salt-key`, etc. work.
32       # The alternatives are
33       # - passing --config-dir to all salt commands, not just the master unit,
34       # - setting a global environment variable,
35       etc."salt/master".source = pkgs.writeText "master" (
36         builtins.toJSON fullConfig
37       );
38       systemPackages = with pkgs; [ salt ];
39     };
40     systemd.services.salt-master = {
41       description = "Salt Master";
42       wantedBy = [ "multi-user.target" ];
43       after = [ "network.target" ];
44       path = with pkgs; [
45         util-linux  # for dmesg
46       ];
47       serviceConfig = {
48         ExecStart = "${pkgs.salt}/bin/salt-master";
49         LimitNOFILE = 16384;
50         Type = "notify";
51         NotifyAccess = "all";
52       };
53       restartTriggers = [
54         config.environment.etc."salt/master".source
55       ];
56     };
57   };
59   meta.maintainers = with lib.maintainers; [ Flakebi ];