summaryrefslogtreecommitdiffstats
path: root/nixos/modules/virtualisation/multipass.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/virtualisation/multipass.nix')
-rw-r--r--nixos/modules/virtualisation/multipass.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/nixos/modules/virtualisation/multipass.nix b/nixos/modules/virtualisation/multipass.nix
new file mode 100644
index 000000000000..d066932b6120
--- /dev/null
+++ b/nixos/modules/virtualisation/multipass.nix
@@ -0,0 +1,61 @@
+{ config
+, lib
+, pkgs
+, ...
+}:
+
+let
+ cfg = config.virtualisation.multipass;
+in
+{
+ options = {
+ virtualisation.multipass = {
+ enable = lib.mkEnableOption (lib.mdDoc ''
+ Multipass, a simple manager for virtualised Ubuntu instances.
+ '');
+
+ logLevel = lib.mkOption {
+ type = lib.types.enum [ "error" "warning" "info" "debug" "trace" ];
+ default = "debug";
+ description = lib.mdDoc ''
+ The logging verbosity of the multipassd binary.
+ '';
+ };
+
+ package = lib.mkPackageOptionMD pkgs "multipass" { };
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ environment.systemPackages = [ cfg.package ];
+
+ systemd.services.multipass = {
+ description = "Multipass orchestrates virtual Ubuntu instances.";
+
+ wantedBy = [ "multi-user.target" ];
+ wants = [ "network.target" ];
+ after = [ "network.target" ];
+
+ environment = {
+ "XDG_DATA_HOME" = "/var/lib/multipass/data";
+ "XDG_CACHE_HOME" = "/var/lib/multipass/cache";
+ "XDG_CONFIG_HOME" = "/var/lib/multipass/config";
+ };
+
+ serviceConfig = {
+ ExecStart = "${cfg.package}/bin/multipassd --logger platform --verbosity ${cfg.logLevel}";
+ SyslogIdentifer = "multipassd";
+ Restart = "on-failure";
+ TimeoutStopSec = 300;
+ Type = "simple";
+
+ WorkingDirectory = "/var/lib/multipass";
+
+ StateDirectory = "multipass";
+ StateDirectoryMode = "0750";
+ CacheDirectory = "multipass";
+ CacheDirectoryMode = "0750";
+ };
+ };
+ };
+}