envision-unwrapped: 0-unstable-2024-10-20 -> 1.1.1 (#360652)
[NixPkgs.git] / nixos / modules / virtualisation / multipass.nix
blob8a55282c88d8ce218f4ba34f222279dcd7cf20ae
1 { config
2 , lib
3 , pkgs
4 , ...
5 }:
7 let
8   cfg = config.virtualisation.multipass;
9 in
11   options = {
12     virtualisation.multipass = {
13       enable = lib.mkEnableOption "Multipass, a simple manager for virtualised Ubuntu instances";
15       logLevel = lib.mkOption {
16         type = lib.types.enum [ "error" "warning" "info" "debug" "trace" ];
17         default = "debug";
18         description = ''
19           The logging verbosity of the multipassd binary.
20         '';
21       };
23       package = lib.mkPackageOption pkgs "multipass" { };
24     };
25   };
27   config = lib.mkIf cfg.enable {
28     environment.systemPackages = [ cfg.package ];
30     systemd.services.multipass = {
31       description = "Multipass orchestrates virtual Ubuntu instances.";
33       wantedBy = [ "multi-user.target" ];
34       wants = [ "network-online.target" ];
35       after = [ "network-online.target" ];
37       environment = {
38         "XDG_DATA_HOME" = "/var/lib/multipass/data";
39         "XDG_CACHE_HOME" = "/var/lib/multipass/cache";
40         "XDG_CONFIG_HOME" = "/var/lib/multipass/config";
41       };
43       serviceConfig = {
44         ExecStart = "${cfg.package}/bin/multipassd --logger platform --verbosity ${cfg.logLevel}";
45         SyslogIdentifier = "multipassd";
46         Restart = "on-failure";
47         TimeoutStopSec = 300;
48         Type = "simple";
50         WorkingDirectory = "/var/lib/multipass";
52         StateDirectory = "multipass";
53         StateDirectoryMode = "0750";
54         CacheDirectory = "multipass";
55         CacheDirectoryMode = "0750";
56       };
57     };
58   };