forked from rarias/jungle
		
	
		
			
				
	
	
		
			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
 | 
						|
      '';
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |