python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / networking / eternal-terminal.nix
blobc6b6b04dcf72e8d4cae3ab4803b4db853ad6d791
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   cfg = config.services.eternal-terminal;
9 in
13   ###### interface
15   options = {
17     services.eternal-terminal = {
19       enable = mkEnableOption (lib.mdDoc "Eternal Terminal server");
21       port = mkOption {
22         default = 2022;
23         type = types.port;
24         description = lib.mdDoc ''
25           The port the server should listen on. Will use the server's default (2022) if not specified.
27           Make sure to open this port in the firewall if necessary.
28         '';
29       };
31       verbosity = mkOption {
32         default = 0;
33         type = types.enum (lib.range 0 9);
34         description = lib.mdDoc ''
35           The verbosity level (0-9).
36         '';
37       };
39       silent = mkOption {
40         default = false;
41         type = types.bool;
42         description = lib.mdDoc ''
43           If enabled, disables all logging.
44         '';
45       };
47       logSize = mkOption {
48         default = 20971520;
49         type = types.int;
50         description = lib.mdDoc ''
51           The maximum log size.
52         '';
53       };
54     };
55   };
57   ###### implementation
59   config = mkIf cfg.enable {
61     # We need to ensure the et package is fully installed because
62     # the (remote) et client runs the `etterminal` binary when it
63     # connects.
64     environment.systemPackages = [ pkgs.eternal-terminal ];
66     systemd.services = {
67       eternal-terminal = {
68         description = "Eternal Terminal server.";
69         wantedBy = [ "multi-user.target" ];
70         after = [ "network.target" ];
71         serviceConfig = {
72           Type = "forking";
73           ExecStart = "${pkgs.eternal-terminal}/bin/etserver --daemon --cfgfile=${pkgs.writeText "et.cfg" ''
74             ; et.cfg : Config file for Eternal Terminal
75             ;
77             [Networking]
78             port = ${toString cfg.port}
80             [Debug]
81             verbose = ${toString cfg.verbosity}
82             silent = ${if cfg.silent then "1" else "0"}
83             logsize = ${toString cfg.logSize}
84           ''}";
85           Restart = "on-failure";
86           KillMode = "process";
87         };
88       };
89     };
90   };
92   meta = {
93     maintainers = with lib.maintainers; [ ];
94   };