diff --git a/pkgs/development/tools/misc/patsh/default.nix b/pkgs/development/tools/misc/patsh/default.nix new file mode 100644 index 000000000000..9d79fc8ba53e --- /dev/null +++ b/pkgs/development/tools/misc/patsh/default.nix @@ -0,0 +1,37 @@ +{ lib +, rustPlatform +, fetchFromGitHub +, stdenv +, runCommand +, tree-sitter +}: + +rustPlatform.buildRustPackage rec { + pname = "patsh"; + version = "0.1.3"; + + src = fetchFromGitHub { + owner = "nix-community"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-KmQVZwZC7KHlzNnL2IKQ76wHUDNUZKz/aFaY4ujvBo4="; + }; + + cargoSha256 = "sha256-vozQKBxAVELdqTnqBpgHX0Wyk18EZAtpiRsKjwz8xKE="; + + # tests fail on darwin due to rpath issues + doCheck = !stdenv.isDarwin; + + TREE_SITTER_BASH = runCommand "tree-sitter-bash" { } '' + mkdir $out + ln -s ${tree-sitter.builtGrammars.tree-sitter-bash}/parser $out/libtree-sitter-bash.a + ''; + + meta = with lib; { + description = "A command-line tool for patching shell scripts inspired by resholve"; + homepage = "https://github.com/nix-community/patsh"; + changelog = "https://github.com/nix-community/patsh/blob/v${version}/CHANGELOG.md"; + license = licenses.mpl20; + maintainers = with maintainers; [ figsoda ]; + }; +} diff --git a/pkgs/tools/X11/sx/default.nix b/pkgs/tools/X11/sx/default.nix index faddc7486809..f48e59c753eb 100644 --- a/pkgs/tools/X11/sx/default.nix +++ b/pkgs/tools/X11/sx/default.nix @@ -1,12 +1,11 @@ { lib -, bash -, coreutils +, stdenvNoCC , fetchFromGitHub -, resholve +, patsh , xorg }: -resholve.mkDerivation rec { +stdenvNoCC.mkDerivation rec { pname = "sx"; version = "2.1.7"; @@ -19,20 +18,16 @@ resholve.mkDerivation rec { makeFlags = [ "PREFIX=$(out)" ]; - solutions = { - sx = { - scripts = [ "bin/sx" ]; - interpreter = "${bash}/bin/sh"; - inputs = [ - coreutils - xorg.xauth - xorg.xorgserver - ]; - execer = [ - "cannot:${xorg.xorgserver}/bin/Xorg" - ]; - }; - }; + nativeBuildInputs = [ patsh ]; + + buildInputs = [ + xorg.xauth + xorg.xorgserver + ]; + + postInstall = '' + patsh -f $out/bin/sx -s ${builtins.storeDir} + ''; meta = with lib; { description = "Simple alternative to both xinit and startx for starting a Xorg server"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a286d86b7c23..e4c0d5a0bb52 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -17553,6 +17553,8 @@ with pkgs; patchelfUnstable = lowPrio (callPackage ../development/tools/misc/patchelf/unstable.nix { }); + patsh = callPackage ../development/tools/misc/patsh { }; + pax-rs = callPackage ../development/tools/pax-rs { }; perfect-hash = callPackage ../development/tools/misc/perfect-hash { };