vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / networking / ngircd.nix
blob76e4642c861940abd17182947321933ecb5b1473
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.services.ngircd;
8   configFile = pkgs.stdenv.mkDerivation {
9     name = "ngircd.conf";
11     text = cfg.config;
13     preferLocalBuild = true;
15     buildCommand = ''
16       echo -n "$text" > $out
17       ${cfg.package}/sbin/ngircd --config $out --configtest
18     '';
19   };
20 in {
21   options = {
22     services.ngircd = {
23       enable = mkEnableOption "the ngircd IRC server";
25       config = mkOption {
26         description = "The ngircd configuration (see ngircd.conf(5)).";
28         type = types.lines;
29       };
31       package = mkPackageOption pkgs "ngircd" { };
32     };
33   };
35   config = mkIf cfg.enable {
36     #!!! TODO: Use ExecReload (see https://github.com/NixOS/nixpkgs/issues/1988)
37     systemd.services.ngircd = {
38       description = "The ngircd IRC server";
40       wantedBy = [ "multi-user.target" ];
42       serviceConfig.ExecStart = "${cfg.package}/sbin/ngircd --config ${configFile} --nodaemon";
44       serviceConfig.User = "ngircd";
45     };
47     users.users.ngircd = {
48       isSystemUser = true;
49       group = "ngircd";
50       description = "ngircd user.";
51     };
52     users.groups.ngircd = {};
54   };