52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| defaults = {
 | |
|     'apt': {
 | |
|         'packages': {
 | |
|             'lib32gcc-s1': {},
 | |
|             'unzip': {},
 | |
|         },
 | |
|     },
 | |
|     'steam': {
 | |
|         'games': {
 | |
|             'left4dead2': 222860,
 | |
|         },
 | |
|     },
 | |
|     'zfs': {
 | |
|         'datasets': {
 | |
|             'tank/steam': {
 | |
|                 'mountpoint': '/opt/steam',
 | |
|                 'backup': False,
 | |
|             },
 | |
|         },
 | |
|     },
 | |
| }
 | |
| 
 | |
| 
 | |
| @metadata_reactor.provides(
 | |
|     'systemd/units',
 | |
| )
 | |
| def initial_unit(metadata):
 | |
|     return {
 | |
|         'systemd': {
 | |
|             'units': {
 | |
|                 'steam-update.service': {
 | |
|                     'Unit': {
 | |
|                         'Description': 'steam: install and update games',
 | |
|                         'After': 'network-online.target',
 | |
|                     },
 | |
|                     'Service': {
 | |
|                         'Type': 'oneshot',
 | |
|                         'User': 'steam',
 | |
|                         'Group': 'steam',
 | |
|                         'WorkingDirectory': '/opt/steam',
 | |
|                         'ExecStart': {
 | |
|                             f'/opt/steam/steam/steamcmd.sh +force_install_dir /opt/steam/{game} +login anonymous +app_update {id} validate +quit'
 | |
|                                 for game, id in metadata.get('steam/games').items()
 | |
|                         }
 | |
|                     },
 | |
|                     'Install': {
 | |
|                         'WantedBy': {'multi-user.target'},
 | |
|                     },
 | |
|                 },
 | |
|             },
 | |
|         },
 | |
|     }
 |