46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								# LXC Configuration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{ config, lib, pkgs, ... }:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								with lib;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let
							 | 
						||
| 
								 | 
							
								  cfg = config.virtualisation.lxc.lxcfs;
							 | 
						||
| 
								 | 
							
								in {
							 | 
						||
| 
								 | 
							
								  meta.maintainers = [ maintainers.mic92 ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ###### interface
							 | 
						||
| 
								 | 
							
								  options.virtualisation.lxc.lxcfs = {
							 | 
						||
| 
								 | 
							
								    enable =
							 | 
						||
| 
								 | 
							
								      mkOption {
							 | 
						||
| 
								 | 
							
								        type = types.bool;
							 | 
						||
| 
								 | 
							
								        default = false;
							 | 
						||
| 
								 | 
							
								        description = ''
							 | 
						||
| 
								 | 
							
								          This enables LXCFS, a FUSE filesystem for LXC.
							 | 
						||
| 
								 | 
							
								          To use lxcfs in include the following configuration in your
							 | 
						||
| 
								 | 
							
								          container configuration:
							 | 
						||
| 
								 | 
							
								          <code>
							 | 
						||
| 
								 | 
							
								            virtualisation.lxc.defaultConfig = "lxc.include = ''${pkgs.lxcfs}/share/lxc/config/common.conf.d/00-lxcfs.conf";
							 | 
						||
| 
								 | 
							
								          </code>
							 | 
						||
| 
								 | 
							
								        '';
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ###### implementation
							 | 
						||
| 
								 | 
							
								  config = mkIf cfg.enable {
							 | 
						||
| 
								 | 
							
								    systemd.services.lxcfs = {
							 | 
						||
| 
								 | 
							
								      description = "FUSE filesystem for LXC";
							 | 
						||
| 
								 | 
							
								      wantedBy = [ "multi-user.target" ];
							 | 
						||
| 
								 | 
							
								      before = [ "lxc.service" ];
							 | 
						||
| 
								 | 
							
								      restartIfChanged = false;
							 | 
						||
| 
								 | 
							
								      serviceConfig = {
							 | 
						||
| 
								 | 
							
								        ExecStartPre="${pkgs.coreutils}/bin/mkdir -p /var/lib/lxcfs";
							 | 
						||
| 
								 | 
							
								        ExecStart="${pkgs.lxcfs}/bin/lxcfs /var/lib/lxcfs";
							 | 
						||
| 
								 | 
							
								        ExecStopPost="-${pkgs.fuse}/bin/fusermount -u /var/lib/lxcfs";
							 | 
						||
| 
								 | 
							
								        KillMode="process";
							 | 
						||
| 
								 | 
							
								        Restart="on-failure";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 |