diff options
author | Vincent Ambo <tazjin@google.com> | 2020-05-26T00·18+0000 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2020-05-26T00·18+0000 |
commit | 587b0a8b0be72468214d2b98df3d3b83677c9abb (patch) | |
tree | db387db19ff49959fb96bb8f59034a61562fb86f | |
parent | 68e384a77f654ed3007bba11c799a850c807bedd (diff) |
feat(ops/nixos): Add a module for hound r/854
This module sets up hound, a generic code search engine.
-rw-r--r-- | ops/nixos/modules/hound.nix | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/ops/nixos/modules/hound.nix b/ops/nixos/modules/hound.nix new file mode 100644 index 000000000000..690055bde3b6 --- /dev/null +++ b/ops/nixos/modules/hound.nix @@ -0,0 +1,62 @@ +# This module serves hound. +# +# https://github.com/hound-search/hound +{ pkgs, config, lib, ... }: + +let + cfg = config.services.depot.hound; + configJson = with builtins; toFile "config.json" (toJSON { + inherit (cfg) title repos; + max-concurrent-indexers = cfg.maxConcurrentIndexers; + dbpath = "/var/lib/hound"; + health-check-uri = "/healthz"; + }); +in { + options.services.depot.hound = with lib; { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable the hound code search engine to forward + journald logs to Stackdriver Logging. + ''; + }; + + repos = mkOption { + type = lib.types.attrs; + description = "Repository configuration for hound."; + }; + + port = mkOption { + type = lib.types.int; + default = 6080; + description = "The port hound should listen on."; + }; + + title = mkOption { + type = lib.types.str; + description = "Page title for this hound instance"; + }; + + maxConcurrentIndexers = mkOption { + type = lib.types.int; + default = 2; + }; + }; + + config = { + systemd.services.hound = { + description = "Code search engine"; + script = "${config.depot.third_party.hound}/bin/houndd -addr ':${toString cfg.port}' -conf '${configJson}'"; + wantedBy = [ "multi-user.target" ]; + path = [ pkgs.git ]; + + serviceConfig = { + Restart = "always"; + DynamicUser = true; + StateDirectory = "hound"; + SupplementaryGroups = "git"; + }; + }; + }; +} |