From 587b0a8b0be72468214d2b98df3d3b83677c9abb Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Tue, 26 May 2020 00:18:53 +0000 Subject: feat(ops/nixos): Add a module for hound This module sets up hound, a generic code search engine. --- ops/nixos/modules/hound.nix | 62 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 ops/nixos/modules/hound.nix (limited to 'ops/nixos') 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"; + }; + }; + }; +} -- cgit 1.4.1