64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| # Fusion Inventory daemon.
 | |
| { config, lib, pkgs, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let
 | |
|   cfg = config.services.fusionInventory;
 | |
| 
 | |
|   configFile = pkgs.writeText "fusion_inventory.conf" ''
 | |
|     server = ${concatStringsSep ", " cfg.servers}
 | |
| 
 | |
|     logger = stderr
 | |
| 
 | |
|     ${cfg.extraConfig}
 | |
|   '';
 | |
| 
 | |
| in {
 | |
| 
 | |
|   ###### interface
 | |
| 
 | |
|   options = {
 | |
| 
 | |
|     services.fusionInventory = {
 | |
| 
 | |
|       enable = mkEnableOption "Fusion Inventory Agent";
 | |
| 
 | |
|       servers = mkOption {
 | |
|         type = types.listOf types.str;
 | |
|         description = ''
 | |
|           The urls of the OCS/GLPI servers to connect to.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       extraConfig = mkOption {
 | |
|         default = "";
 | |
|         type = types.lines;
 | |
|         description = ''
 | |
|           Configuration that is injected verbatim into the configuration file.
 | |
|         '';
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| 
 | |
| 
 | |
|   ###### implementation
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
| 
 | |
|     users.users.fusion-inventory = {
 | |
|       description = "FusionInventory user";
 | |
|       isSystemUser = true;
 | |
|     };
 | |
| 
 | |
|     systemd.services.fusion-inventory = {
 | |
|       description = "Fusion Inventory Agent";
 | |
|       wantedBy = [ "multi-user.target" ];
 | |
| 
 | |
|       serviceConfig = {
 | |
|         ExecStart = "${pkgs.fusionInventory}/bin/fusioninventory-agent --conf-file=${configFile} --daemon --no-fork";
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 | 
