67 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.3 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.extraUsers = singleton {
 | 
						|
      name = "fusion-inventory";
 | 
						|
      description = "FusionInventory user";
 | 
						|
    };
 | 
						|
 | 
						|
    systemd.services."fusion-inventory" = {
 | 
						|
      description = "Fusion Inventory Agent";
 | 
						|
      wantedBy = [ "multi-user.target" ];
 | 
						|
 | 
						|
      environment = {
 | 
						|
        OPTIONS = "--no-category=software";
 | 
						|
      };
 | 
						|
      serviceConfig = {
 | 
						|
        ExecStart = "${pkgs.fusionInventory}/bin/fusioninventory-agent --conf-file=${configFile} --daemon --no-fork";
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |