55 lines
1.3 KiB
Nix
55 lines
1.3 KiB
Nix
{ pkgs, lib, config, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.services.mathics;
|
|
|
|
in {
|
|
options = {
|
|
services.mathics = {
|
|
enable = mkEnableOption "Mathics notebook service";
|
|
|
|
external = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Listen on all interfaces, rather than just localhost?";
|
|
};
|
|
|
|
port = mkOption {
|
|
type = types.int;
|
|
default = 8000;
|
|
description = "TCP port to listen on.";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
users.users.mathics = {
|
|
group = config.users.groups.mathics.name;
|
|
description = "Mathics user";
|
|
home = "/var/lib/mathics";
|
|
createHome = true;
|
|
uid = config.ids.uids.mathics;
|
|
};
|
|
|
|
users.groups.mathics.gid = config.ids.gids.mathics;
|
|
|
|
systemd.services.mathics = {
|
|
description = "Mathics notebook server";
|
|
wantedBy = [ "multi-user.target" ];
|
|
after = [ "network.target" ];
|
|
serviceConfig = {
|
|
User = config.users.users.mathics.name;
|
|
Group = config.users.groups.mathics.name;
|
|
ExecStart = concatStringsSep " " [
|
|
"${pkgs.mathics}/bin/mathicsserver"
|
|
"--port" (toString cfg.port)
|
|
(if cfg.external then "--external" else "")
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|