diff options
Diffstat (limited to 'nixpkgs/nixos/modules/services/misc/mathics.nix')
-rw-r--r-- | nixpkgs/nixos/modules/services/misc/mathics.nix | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/services/misc/mathics.nix b/nixpkgs/nixos/modules/services/misc/mathics.nix new file mode 100644 index 00000000000..c588a30d76c --- /dev/null +++ b/nixpkgs/nixos/modules/services/misc/mathics.nix @@ -0,0 +1,54 @@ +{ 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 "") + ]; + }; + }; + }; +} |