summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorAnderson Torres <torres.anderson.85@protonmail.com>2023-02-04 09:03:54 -0300
committerGitHub <noreply@github.com>2023-02-04 09:03:54 -0300
commitbc0944c06f75a65817a0640bdb67f3b1b4bb0af2 (patch)
tree4f869e3ae88e98c51e9fe0413ef6255c6939a4bb /nixos
parent199753fafc26559be5375525f45aca02cd245513 (diff)
parent978259361b723ffe808a0c4a35dd45b9f9c4b402 (diff)
Merge pull request #214193 from jnsgruk/add-multipass-pkg
multipass: init at 1.11.0
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/virtualisation/multipass.nix61
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/multipass.nix37
4 files changed, 100 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 2757a196555e..111eee47480f 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -1365,6 +1365,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";
+ };
+ };
+ };
+}
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 1fc8bb777db0..a23a0413160e 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -412,6 +412,7 @@ in {
mpd = handleTest ./mpd.nix {};
mpv = handleTest ./mpv.nix {};
mtp = handleTest ./mtp.nix {};
+ multipass = handleTest ./multipass.nix {};
mumble = handleTest ./mumble.nix {};
musescore = handleTest ./musescore.nix {};
munin = handleTest ./munin.nix {};
diff --git a/nixos/tests/multipass.nix b/nixos/tests/multipass.nix
new file mode 100644
index 000000000000..0980e9195f5a
--- /dev/null
+++ b/nixos/tests/multipass.nix
@@ -0,0 +1,37 @@
+import ./make-test-python.nix ({ pkgs, lib, ... }:
+
+let
+ multipass-image = import ../release.nix {
+ configuration = {
+ # Building documentation makes the test unnecessarily take a longer time:
+ documentation.enable = lib.mkForce false;
+ };
+ };
+
+in
+{
+ name = "multipass";
+
+ meta.maintainers = [ lib.maintainers.jnsgruk ];
+
+ nodes.machine = { lib, ... }: {
+ virtualisation = {
+ cores = 1;
+ memorySize = 1024;
+ diskSize = 4096;
+
+ multipass.enable = true;
+ };
+ };
+
+ testScript = ''
+ machine.wait_for_unit("sockets.target")
+ machine.wait_for_unit("multipass.service")
+ machine.wait_for_file("/var/lib/multipass/data/multipassd/network/multipass_subnet")
+
+ # Wait for Multipass to settle
+ machine.sleep(1)
+
+ machine.succeed("multipass list")
+ '';
+})