73 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, pkgs, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let
 | |
| 
 | |
|   cfg = config.services.virtlyst;
 | |
|   stateDir = "/var/lib/virtlyst";
 | |
| 
 | |
|   ini = pkgs.writeText "virtlyst-config.ini" ''
 | |
|     [wsgi]
 | |
|     master = true
 | |
|     threads = auto
 | |
|     http-socket = ${cfg.httpSocket}
 | |
|     application = ${pkgs.virtlyst}/lib/libVirtlyst.so
 | |
|     chdir2 = ${stateDir}
 | |
|     static-map = /static=${pkgs.virtlyst}/root/static
 | |
| 
 | |
|     [Cutelyst]
 | |
|     production = true
 | |
|     DatabasePath = virtlyst.sqlite
 | |
|     TemplatePath = ${pkgs.virtlyst}/root/src
 | |
| 
 | |
|     [Rules]
 | |
|     cutelyst.* = true
 | |
|     virtlyst.* = true
 | |
|   '';
 | |
| 
 | |
| in
 | |
| 
 | |
| {
 | |
| 
 | |
|   options.services.virtlyst = {
 | |
|     enable = mkEnableOption "Virtlyst libvirt web interface";
 | |
| 
 | |
|     adminPassword = mkOption {
 | |
|       type = types.str;
 | |
|       description = ''
 | |
|         Initial admin password with which the database will be seeded.
 | |
|       '';
 | |
|     };
 | |
| 
 | |
|     httpSocket = mkOption {
 | |
|       type = types.str;
 | |
|       default = "localhost:3000";
 | |
|       description = ''
 | |
|         IP and/or port to which to bind the http socket.
 | |
|       '';
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
|     users.users.virtlyst = {
 | |
|       home = stateDir;
 | |
|       createHome = true;
 | |
|       group = mkIf config.virtualisation.libvirtd.enable "libvirtd";
 | |
|     };
 | |
| 
 | |
|     systemd.services.virtlyst = {
 | |
|       wantedBy = [ "multi-user.target" ];
 | |
|       environment = {
 | |
|         VIRTLYST_ADMIN_PASSWORD = cfg.adminPassword;
 | |
|       };
 | |
|       serviceConfig = {
 | |
|         ExecStart = "${pkgs.cutelyst}/bin/cutelyst-wsgi2 --ini ${ini}";
 | |
|         User = "virtlyst";
 | |
|         WorkingDirectory = stateDir;
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| 
 | |
| }
 | 
