summaryrefslogtreecommitdiffstats
path: root/nixos/modules/services
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2024-06-28 22:57:59 +0200
committerGitHub <noreply@github.com>2024-06-28 22:57:59 +0200
commit0cbf178ddbe837e9ede282038cbdc585e5ee7490 (patch)
tree6810bd1b0e7b3c8529d9917086bd2115d43eb743 /nixos/modules/services
parent4e15c4a8ad30c02d6c2614565600865aec80edca (diff)
parentccd042b9695d0afbe62a5f9f8bd484b0eb2556d5 (diff)
Merge pull request #322508 from MarcelCoding/hound
hound: convert to use freeform type
Diffstat (limited to 'nixos/modules/services')
-rw-r--r--nixos/modules/services/search/hound.nix84
1 files changed, 41 insertions, 43 deletions
diff --git a/nixos/modules/services/search/hound.nix b/nixos/modules/services/search/hound.nix
index 059f514234eb..7aca1adc19b0 100644
--- a/nixos/modules/services/search/hound.nix
+++ b/nixos/modules/services/search/hound.nix
@@ -1,71 +1,66 @@
{ config, lib, pkgs, ... }:
-with lib;
let
cfg = config.services.hound;
+ settingsFormat = pkgs.formats.json { };
in {
imports = [
(lib.mkRemovedOptionModule [ "services" "hound" "extraGroups" ] "Use users.users.hound.extraGroups instead")
+ (lib.mkChangedOptionModule [ "services" "hound" "config" ] [ "services" "hound" "settings" ] (config: builtins.fromJSON config.services.hound.config))
];
- meta.maintainers = with maintainers; [ SuperSandro2000 ];
+ meta.maintainers = with lib.maintainers; [ SuperSandro2000 ];
options = {
services.hound = {
- enable = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Whether to enable the hound code search daemon.
- '';
- };
+ enable = lib.mkEnableOption "hound";
- package = mkPackageOption pkgs "hound" { };
+ package = lib.mkPackageOption pkgs "hound" { };
- user = mkOption {
+ user = lib.mkOption {
default = "hound";
- type = types.str;
+ type = lib.types.str;
description = ''
User the hound daemon should execute under.
'';
};
- group = mkOption {
+ group = lib.mkOption {
default = "hound";
- type = types.str;
+ type = lib.types.str;
description = ''
Group the hound daemon should execute under.
'';
};
- home = mkOption {
+ home = lib.mkOption {
default = "/var/lib/hound";
- type = types.path;
+ type = lib.types.path;
description = ''
The path to use as hound's $HOME.
If the default user "hound" is configured then this is the home of the "hound" user.
'';
};
- config = mkOption {
- type = types.str;
- description = ''
- The full configuration of the Hound daemon. Note the dbpath
- should be an absolute path to a writable location on disk.
- '';
- example = literalExpression ''
+ settings = lib.mkOption {
+ type = settingsFormat.type;
+ example = lib.literalExpression ''
{
- "max-concurrent-indexers" : 2,
- "repos" : {
- "nixpkgs": {
- "url" : "https://www.github.com/NixOS/nixpkgs.git"
- }
- }
+ max-concurrent-indexers = 2;
+ repos.nixpkgs.url = "https://www.github.com/NixOS/nixpkgs.git";
}
'';
+ description = ''
+ The full configuration of the Hound daemon.
+ See the upstream documentation <https://github.com/hound-search/hound/blob/main/docs/config-options.md> for details.
+
+ :::{.note}
+ The `dbpath` should be an absolute path to a writable directory.
+ :::.com/hound-search/hound/blob/main/docs/config-options.md>.
+ '';
};
- listen = mkOption {
- type = types.str;
+ listen = lib.mkOption {
+ type = lib.types.str;
default = "0.0.0.0:6080";
example = ":6080";
description = ''
@@ -75,7 +70,7 @@ in {
};
};
- config = mkIf cfg.enable {
+ config = lib.mkIf cfg.enable {
users.groups = lib.mkIf (cfg.group == "hound") {
hound = { };
};
@@ -89,16 +84,19 @@ in {
};
};
- systemd.services.hound = let
- configFile = pkgs.writeTextFile {
- name = "hound.json";
- text = cfg.config;
- checkPhase = ''
- # check if the supplied text is valid json
- ${lib.getExe pkgs.jq} . $target > /dev/null
- '';
- };
- in {
+ environment.etc."hound/config.json".source = pkgs.writeTextFile {
+ name = "hound-config";
+ text = builtins.toJSON cfg.settings;
+ checkPhase = ''
+ ${cfg.package}/bin/houndd -check-conf -conf $out
+ '';
+ };
+
+ services.hound.settings = {
+ dbpath = "${config.services.hound.home}/data";
+ };
+
+ systemd.services.hound = {
description = "Hound Code Search";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
@@ -107,7 +105,7 @@ in {
Group = cfg.group;
WorkingDirectory = cfg.home;
ExecStartPre = "${pkgs.git}/bin/git config --global --replace-all http.sslCAinfo /etc/ssl/certs/ca-certificates.crt";
- ExecStart = "${cfg.package}/bin/houndd -addr ${cfg.listen} -conf ${configFile}";
+ ExecStart = "${cfg.package}/bin/houndd -addr ${cfg.listen} -conf /etc/hound/config.json";
};
};
};