{ lib, pkgs, ... }: let makeWrapper = "${pkgs.makeWrapper}/nix-support/setup-hook"; # bool -> nixpkgs[] wrappedNixExecutables = inEnvironment: assert builtins.isBool inEnvironment; pkgs.symlinkJoin { name = "${pkgs.nix.name}-wrap"; paths = [ pkgs.nix ]; postBuild = '' . ${makeWrapper} wrapProgram $out/bin/nix-build \ --add-flags "--log-format" \ --add-flags "bar${lib.optionalString inEnvironment "-with-logs"}" wrapProgram $out/bin/nix-shell \ --add-flags "--log-format" \ --add-flags "bar" ''; }; wrappedNixosExecutables = pkgs.symlinkJoin { name = "${pkgs.nixos-rebuild.name}-wrap"; paths = [ pkgs.nixos-rebuild ]; postBuild = '' . ${makeWrapper} wrapProgram $out/bin/nixos-rebuild \ --add-flags "--log-format" \ --add-flags "bar" ''; }; wrappedNix = (pkgs.symlinkJoin { name = "wrappedNix-${pkgs.nix.version}"; paths = [ pkgs.nix ] ++ [( wrappedNixExecutables false )]; }).overrideAttrs { version = pkgs.nix.version; passthru.meta = pkgs.nix.meta; }; in { config = { nix.package = wrappedNix; environment.systemPackages = lib.map (lib.hiPrio) [ (wrappedNixExecutables true) wrappedNixosExecutables ]; }; }