summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorJon Seager <jon@sgrs.uk>2023-02-03 09:27:35 +0000
committerJon Seager <jon@sgrs.uk>2023-02-04 07:44:03 +0000
commit63e3f8da0977526c783839c1ed3854d5681a80ad (patch)
tree803b3b2cab5f644614a255fb9b063e5220f805e7 /nixos
parentdb9d730b1ecaf9db00d519d91d9572dd115c0320 (diff)
nixos/multipass: init
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/virtualisation/multipass.nix61
2 files changed, 62 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 82eec40ecf10..9174ea9500d5 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -1364,6 +1364,7 @@
./virtualisation/lxc.nix
./virtualisation/lxcfs.nix
./virtualisation/lxd.nix
+ ./virtualisation/multipass.nix
./virtualisation/nixos-containers.nix
./virtualisation/oci-containers.nix
./virtualisation/openstack-options.nix
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";
+ };
+ };
+ };
+}