diff --git a/xeon08/kernel/kernel.nix b/xeon08/kernel/kernel.nix index 5aca93c..ae3b91d 100644 --- a/xeon08/kernel/kernel.nix +++ b/xeon08/kernel/kernel.nix @@ -46,5 +46,8 @@ let latest = pkgs.linuxPackages_latest; in { + imports = [ + ./lttng.nix + ]; boot.kernelPackages = lib.mkForce kernel; } diff --git a/xeon08/kernel/lttng.nix b/xeon08/kernel/lttng.nix new file mode 100644 index 0000000..b9d6e4d --- /dev/null +++ b/xeon08/kernel/lttng.nix @@ -0,0 +1,36 @@ +{ config, pkgs, lib, ... }: + +let + + # the lttng btrfs probe crashes at compile time because of an undefined + # function. This disables the btrfs tracepoints to avoid the issue. + lttng-modules-fixed = config.boot.kernelPackages.lttng-modules.overrideAttrs (finalAttrs: previousAttrs: { + patchPhase = (lib.optionalString (previousAttrs ? patchPhase) previousAttrs.patchPhase) + '' + substituteInPlace src/probes/Kbuild \ + --replace " obj-\$(CONFIG_LTTNG) += lttng-probe-btrfs.o" " #obj-\$(CONFIG_LTTNG) += lttng-probe-btrfs.o" + ''; + }); +in { + + # add the lttng tools and modules to the system environment + boot.extraModulePackages = [ lttng-modules-fixed ]; + environment.systemPackages = with pkgs; [ + lttng-tools lttng-ust babeltrace + ]; + + # start the lttng root daemon to manage kernel events + systemd.services.lttng-sessiond = { + wantedBy = [ "multi-user.target" ]; + description = "LTTng session daemon for the root user"; + serviceConfig = { + User = "root"; + ExecStart = '' + ${pkgs.lttng-tools}/bin/lttng-sessiond + ''; + }; + }; + + # members of the tracing group can use the lttng-provided kernel events + # without root permissions + users.groups.tracing.members = [ "arocanon" ]; +}