grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / virtualisation / xe-guest-utilities.nix
blob9bc68c0a3d7d6f2b8188842ff1e4de78881368cd
1 { config, lib, pkgs, ... }:
2 let
3   cfg = config.services.xe-guest-utilities;
4 in {
5   options = {
6     services.xe-guest-utilities = {
7       enable = lib.mkEnableOption "the Xen guest utilities daemon";
8     };
9   };
10   config = lib.mkIf cfg.enable {
11     services.udev.packages = [ pkgs.xe-guest-utilities ];
12     systemd.tmpfiles.rules = [ "d /run/xenstored 0755 - - -" ];
14     systemd.services.xe-daemon = {
15       description = "xen daemon file";
16       wantedBy    = [ "multi-user.target" ];
17       after = [ "xe-linux-distribution.service" ];
18       requires = [ "proc-xen.mount" ];
19       path = [ pkgs.coreutils pkgs.iproute2 ];
20       serviceConfig = {
21         PIDFile = "/run/xe-daemon.pid";
22         ExecStart = "${pkgs.xe-guest-utilities}/bin/xe-daemon -p /run/xe-daemon.pid";
23         ExecStop = "${pkgs.procps}/bin/pkill -TERM -F /run/xe-daemon.pid";
24       };
25     };
27     systemd.services.xe-linux-distribution = {
28       description = "xen linux distribution service";
29       wantedBy    = [ "multi-user.target" ];
30       before = [ "xend.service" ];
31       path = [ pkgs.xe-guest-utilities pkgs.coreutils pkgs.gawk pkgs.gnused ];
32       serviceConfig = {
33         Type = "simple";
34         RemainAfterExit = "yes";
35         ExecStart = "${pkgs.xe-guest-utilities}/bin/xe-linux-distribution /var/cache/xe-linux-distribution";
36       };
37     };
39     systemd.mounts = [
40       { description = "Mount /proc/xen files";
41         what = "xenfs";
42         where = "/proc/xen";
43         type = "xenfs";
44         unitConfig = {
45           ConditionPathExists = "/proc/xen";
46           RefuseManualStop = "true";
47         };
48       }
49     ];
50   };