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.extraUsers.mathics = { | ||
|  |       group = config.users.extraGroups.mathics.name; | ||
|  |       description = "Mathics user"; | ||
|  |       home = "/var/lib/mathics"; | ||
|  |       createHome = true; | ||
|  |       uid = config.ids.uids.mathics; | ||
|  |     }; | ||
|  | 
 | ||
|  |     users.extraGroups.mathics.gid = config.ids.gids.mathics; | ||
|  | 
 | ||
|  |     systemd.services.mathics = { | ||
|  |       description = "Mathics notebook server"; | ||
|  |       wantedBy = [ "multi-user.target" ]; | ||
|  |       after = [ "network.target" ]; | ||
|  |       serviceConfig = { | ||
|  |         User = config.users.extraUsers.mathics.name; | ||
|  |         Group = config.users.extraGroups.mathics.name; | ||
|  |         ExecStart = concatStringsSep " " [ | ||
|  |           "${pkgs.mathics}/bin/mathicsserver" | ||
|  |           "--port" (toString cfg.port) | ||
|  |           (if cfg.external then "--external" else "") | ||
|  |         ]; | ||
|  |       }; | ||
|  |     }; | ||
|  |   }; | ||
|  | } |