at master 1.6 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7 8let 9 cfg = config.virtualisation.multipass; 10in 11{ 12 options = { 13 virtualisation.multipass = { 14 enable = lib.mkEnableOption "Multipass, a simple manager for virtualised Ubuntu instances"; 15 16 logLevel = lib.mkOption { 17 type = lib.types.enum [ 18 "error" 19 "warning" 20 "info" 21 "debug" 22 "trace" 23 ]; 24 default = "debug"; 25 description = '' 26 The logging verbosity of the multipassd binary. 27 ''; 28 }; 29 30 package = lib.mkPackageOption pkgs "multipass" { }; 31 }; 32 }; 33 34 config = lib.mkIf cfg.enable { 35 environment.systemPackages = [ cfg.package ]; 36 37 systemd.services.multipass = { 38 description = "Multipass orchestrates virtual Ubuntu instances."; 39 40 wantedBy = [ "multi-user.target" ]; 41 wants = [ "network-online.target" ]; 42 after = [ "network-online.target" ]; 43 44 environment = { 45 "XDG_DATA_HOME" = "/var/lib/multipass/data"; 46 "XDG_CACHE_HOME" = "/var/lib/multipass/cache"; 47 "XDG_CONFIG_HOME" = "/var/lib/multipass/config"; 48 }; 49 50 serviceConfig = { 51 ExecStart = "${cfg.package}/bin/multipassd --logger platform --verbosity ${cfg.logLevel}"; 52 SyslogIdentifier = "multipassd"; 53 Restart = "on-failure"; 54 TimeoutStopSec = 300; 55 Type = "simple"; 56 57 WorkingDirectory = "/var/lib/multipass"; 58 59 StateDirectory = "multipass"; 60 StateDirectoryMode = "0750"; 61 CacheDirectory = "multipass"; 62 CacheDirectoryMode = "0750"; 63 }; 64 }; 65 }; 66}