44 lines
1.7 KiB
Nix
44 lines
1.7 KiB
Nix
{ 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.
|
|
|
|
# Also enable lockdep tracepoints, this is disabled by default because it
|
|
# does not work well on architectures other than x86_64 (i think that arm) as
|
|
# I was told on the mailing list.
|
|
lttng-modules-fixed = config.boot.kernelPackages.lttng-modules.overrideAttrs (finalAttrs: previousAttrs: {
|
|
patchPhase = (lib.optionalString (previousAttrs ? patchPhase) previousAttrs.patchPhase) + ''
|
|
# disable btrfs
|
|
substituteInPlace src/probes/Kbuild \
|
|
--replace " obj-\$(CONFIG_LTTNG) += lttng-probe-btrfs.o" " #obj-\$(CONFIG_LTTNG) += lttng-probe-btrfs.o"
|
|
|
|
# enable lockdep tracepoints
|
|
substituteInPlace src/probes/Kbuild \
|
|
--replace "#ifneq (\$(CONFIG_LOCKDEP),)" "ifneq (\$(CONFIG_LOCKDEP),)" \
|
|
--replace "# obj-\$(CONFIG_LTTNG) += lttng-probe-lock.o" " obj-\$(CONFIG_LTTNG) += lttng-probe-lock.o" \
|
|
--replace "#endif # CONFIG_LOCKDEP" "endif # CONFIG_LOCKDEP"
|
|
'';
|
|
});
|
|
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
|
|
'';
|
|
};
|
|
};
|
|
}
|