Unverified Commit bc0944c0 authored by Anderson Torres's avatar Anderson Torres Committed by GitHub
Browse files

Merge pull request #214193 from jnsgruk/add-multipass-pkg

multipass: init at 1.11.0
parents 199753fa 97825936
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -7015,6 +7015,12 @@
    githubId = 2308444;
    name = "Joshua Gilman";
  };
  jnsgruk = {
    email = "jon@sgrs.uk";
    github = "jnsgruk";
    githubId = 668505;
    name = "Jon Seager";
  };
  jo1gi = {
    email = "joakimholm@protonmail.com";
    github = "jo1gi";
+1 −0
Original line number Diff line number Diff line
@@ -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
+61 −0
Original line number Diff line number Diff line
{ 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";
      };
    };
  };
}
+1 −0
Original line number Diff line number Diff line
@@ -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 {};
+37 −0
Original line number Diff line number Diff line
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")
  '';
})
Loading