diff --git a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml index d35a71e51904..948f7ef23a44 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml @@ -1294,6 +1294,33 @@ example. + + + Existing resholve* functions have been + renamed and nested under pkgs.resholve. + Update uses to: + + + + + resholvePackage -> + resholve.mkDerivation + + + + + resholveScript -> + resholve.writeScript + + + + + resholveScriptBin -> + resholve.writeScriptBin + + + + pkgs.cosmopolitan no longer provides the diff --git a/nixos/doc/manual/release-notes/rl-2205.section.md b/nixos/doc/manual/release-notes/rl-2205.section.md index 371122f275d4..03d05c3a8ca7 100644 --- a/nixos/doc/manual/release-notes/rl-2205.section.md +++ b/nixos/doc/manual/release-notes/rl-2205.section.md @@ -456,6 +456,11 @@ In addition to numerous new and upgraded packages, this release has the followin See the `vscode` package for a more detailed example. +- Existing `resholve*` functions have been renamed and nested under `pkgs.resholve`. Update uses to: + - `resholvePackage` -> `resholve.mkDerivation` + - `resholveScript` -> `resholve.writeScript` + - `resholveScriptBin` -> `resholve.writeScriptBin` + - `pkgs.cosmopolitan` no longer provides the `cosmoc` command. It has been moved to `pkgs.cosmoc`. diff --git a/pkgs/applications/editors/vscode/vscode.nix b/pkgs/applications/editors/vscode/vscode.nix index a9ab7e8e55de..46864a05570d 100644 --- a/pkgs/applications/editors/vscode/vscode.nix +++ b/pkgs/applications/editors/vscode/vscode.nix @@ -14,17 +14,17 @@ let archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz"; sha256 = { - x86_64-linux = "077a847p8l2yk3dpn8qqwjdch5nqm8a7fxlnwg5xzx892lr6l4ax"; - x86_64-darwin = "03gbrnkzks4if3mkpwn4yjajj3z9cax0jskhw8pz5n1mibv4kg4p"; - aarch64-linux = "0xqpc69m5jmm6dyvhlc20bpbr2czmi0pn00jxpf5md8fqxmbvj90"; - aarch64-darwin = "1zd2s841xpq5fk6bkrbqbzbcyladpp8sp7wx2spkzj1gmbjfzw4a"; - armv7l-linux = "1swbg3zklixyk3cf0nh0xcwszm9rrvw1caqzmb80lc3c7qx9qx1s"; + x86_64-linux = "1j75ivy7lwxjpfhwsikk517a9bxhrbwfy8f8liql392839qryblj"; + x86_64-darwin = "0sjsrm31rbgq9j6hnry8f69mhhwlsd7drzz5jr31ljk75vgx3j8f"; + aarch64-linux = "1ll28djzf5xvc0yin1irxzn3nkizpgfz0azknaycjar261q3akdp"; + aarch64-darwin = "0mfhbdmz0db851mab83dmq654gwgdz9p20igwm9g5h4y6zrvdhg6"; + armv7l-linux = "1vicvzdj83vcj64rla9v5n9bmi0wgz507xxch3anjszah3n7ld89"; }.${system}; in callPackage ./generic.nix rec { # Please backport all compatible updates to the stable release. # This is important for the extension ecosystem. - version = "1.66.0"; + version = "1.66.1"; pname = "vscode"; executableName = "code" + lib.optionalString isInsiders "-insiders"; diff --git a/pkgs/applications/editors/vscode/vscodium.nix b/pkgs/applications/editors/vscode/vscodium.nix index 0101b896e8cf..50bfcc48f2f5 100644 --- a/pkgs/applications/editors/vscode/vscodium.nix +++ b/pkgs/applications/editors/vscode/vscodium.nix @@ -13,10 +13,10 @@ let archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz"; sha256 = { - x86_64-linux = "0dv28i8mxf45n7xj4gzgh4gsx76875nxs4yfqswxij8kzz72vqfn"; - x86_64-darwin = "0xs4f1ffqcbvzw1v64f9l8i7rflz7h1j5xgjxdz6l0hw0j4aalb2"; - aarch64-linux = "1fa7g531apigp8k7fxkp2ijmhz5axx7ixzdhlwgbsb80rb2mqhi0"; - armv7l-linux = "1ry9qm6rk46s0jn7hl30jbjdhi3fshzcs0x9krd9qin7by18hhz3"; + x86_64-linux = "0r5bzy1r9f0rp2wvcb703vpcfclqn8d4n9g8p9021hz0llslfha7"; + x86_64-darwin = "15aawk2b7a5dack2bgnp4axki8y3n0ilncww15sjnvwbgk94d4pg"; + aarch64-linux = "0kq39jx9nrfikcfcylz2gcg2d89yw6gf9sc8blyg1yfimfr9jcjv"; + armv7l-linux = "0581ksdb1j9xsin7s505gk9kxhf3i5dw8yvyfkxck84wrrvfh6pq"; }.${system}; sourceRoot = { @@ -31,7 +31,7 @@ in # Please backport all compatible updates to the stable release. # This is important for the extension ecosystem. - version = "1.66.0"; + version = "1.66.1"; pname = "vscodium"; executableName = "codium"; diff --git a/pkgs/applications/networking/cloudflared/default.nix b/pkgs/applications/networking/cloudflared/default.nix index e5a3fc2060e9..015612983c29 100644 --- a/pkgs/applications/networking/cloudflared/default.nix +++ b/pkgs/applications/networking/cloudflared/default.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "cloudflared"; - version = "2022.3.4"; + version = "2022.4.0"; src = fetchFromGitHub { owner = "cloudflare"; repo = "cloudflared"; rev = version; - hash = "sha256-W3XA3AOzuyHlFCps2ne4Fh2X+E48inJT4QrDJLOeD5M="; + hash = "sha256-+40OK2q4WdvlLhoPfZH6q+pghgS7ZLmaZl2VbZK4rdA="; }; vendorSha256 = null; @@ -22,6 +22,6 @@ buildGoModule rec { homepage = "https://www.cloudflare.com/products/tunnel"; license = licenses.asl20; platforms = platforms.unix; - maintainers = with maintainers; [ bbigras enorris thoughtpolice ]; + maintainers = with maintainers; [ bbigras enorris thoughtpolice techknowlogick ]; }; } diff --git a/pkgs/applications/version-management/git-and-tools/git-branchless/default.nix b/pkgs/applications/version-management/git-and-tools/git-branchless/default.nix index 19f794e6c916..13ba738c46fb 100644 --- a/pkgs/applications/version-management/git-and-tools/git-branchless/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git-branchless/default.nix @@ -15,16 +15,16 @@ rustPlatform.buildRustPackage rec { pname = "git-branchless"; - version = "0.3.10"; + version = "0.3.12"; src = fetchFromGitHub { owner = "arxanas"; repo = "git-branchless"; rev = "v${version}"; - sha256 = "sha256-TLqAU1/olSS59Zeb+2m9Jq19EYTO1TnbKPYciHPKO2A="; + sha256 = "sha256-1bUHltONLfJumkxPnzGJFMMyS02LVqjpDL+KgiewyoQ="; }; - cargoSha256 = "sha256-sA4KWGW4bxGUkotTWHUcRqcoaUJsSUCTK8hUkKiRcnY="; + cargoSha256 = "sha256-3+ULHqtKAhf4AdoLPK/3IqnfOcskoh6ctlQnY1oTHJ8="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/applications/version-management/yadm/default.nix b/pkgs/applications/version-management/yadm/default.nix index ffd5fdaab7c0..c48962841fd8 100644 --- a/pkgs/applications/version-management/yadm/default.nix +++ b/pkgs/applications/version-management/yadm/default.nix @@ -1,6 +1,6 @@ { lib , stdenv -, resholvePackage +, resholve , fetchFromGitHub , git , bash @@ -27,7 +27,7 @@ to support their use in yadm. , yadm }: -resholvePackage rec { +resholve.mkDerivation rec { pname = "yadm"; version = "3.1.1"; diff --git a/pkgs/applications/window-managers/i3/status-rust.nix b/pkgs/applications/window-managers/i3/status-rust.nix index ed518d8eb2e8..83406d33961c 100644 --- a/pkgs/applications/window-managers/i3/status-rust.nix +++ b/pkgs/applications/window-managers/i3/status-rust.nix @@ -15,16 +15,16 @@ rustPlatform.buildRustPackage rec { pname = "i3status-rust"; - version = "0.21.8"; + version = "0.21.9"; src = fetchFromGitHub { owner = "greshake"; repo = pname; rev = "v${version}"; - sha256 = "sha256-l0XfitQSmSkivEg8+XcA/+bWdy/wzIpii/Npc4p8kUw="; + sha256 = "sha256-UbQEPY/Qzu3akWqCTdbhO8V46KyNh/4XCA+PySQyNaw="; }; - cargoSha256 = "sha256-2rJ9ZZHK1acJu6r6EjuoolLJZMdBsbKgN1DNvGM7deA="; + cargoSha256 = "sha256-Bb4kkS0eSg0ue24UIy8f0kwD9w4kSCVTd1OqwEggyVs="; nativeBuildInputs = [ pkg-config makeWrapper ]; diff --git a/pkgs/desktops/gnome/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome/apps/gnome-boxes/default.nix index 7853a80f073d..e88a831821e0 100644 --- a/pkgs/desktops/gnome/apps/gnome-boxes/default.nix +++ b/pkgs/desktops/gnome/apps/gnome-boxes/default.nix @@ -62,6 +62,13 @@ stdenv.mkDerivation rec { sha256 = "GuIS/4mZFVQuxTtU2VtozfJx2VjPUSzcP+3Hgixu4SM="; }; + patches = [ + # Fix path to libgovf-0.1.so (and libgtk-frdp-0.1.so when enabling rdp meson option) + # in the gir file. We patch gobject-introspection to hardcode absolute paths but + # our Meson patch will only pass the info when install_dir is absolute as well. + ./fix-gir-lib-path.patch + ]; + doCheck = true; nativeBuildInputs = [ diff --git a/pkgs/desktops/gnome/apps/gnome-boxes/fix-gir-lib-path.patch b/pkgs/desktops/gnome/apps/gnome-boxes/fix-gir-lib-path.patch new file mode 100644 index 000000000000..6b0ba4732997 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-boxes/fix-gir-lib-path.patch @@ -0,0 +1,22 @@ +--- a/subprojects/libovf-glib/govf/meson.build ++++ b/subprojects/libovf-glib/govf/meson.build +@@ -39,7 +39,7 @@ govf_lib = shared_library('govf-' + api_version, + govf_sources, + dependencies: govf_deps, + install: true, +- install_dir: libdir ++ install_dir: get_option ('prefix') / libdir + ) + + govf_dep = declare_dependency( +--- a/subprojects/gtk-frdp/src/meson.build ++++ b/subprojects/gtk-frdp/src/meson.build +@@ -50,7 +50,7 @@ gtk_frdp_lib = shared_library('gtk-frdp-' + api_version, + gtk_frdp_sources, + dependencies: gtk_frdp_deps, + install: true, +- install_dir: libdir ++ install_dir: get_option ('prefix') / libdir + ) + + gtk_frdp_dep = declare_dependency( diff --git a/pkgs/desktops/gnome/games/hitori/default.nix b/pkgs/desktops/gnome/games/hitori/default.nix index bb210c2fffb1..c17ca56044e4 100644 --- a/pkgs/desktops/gnome/games/hitori/default.nix +++ b/pkgs/desktops/gnome/games/hitori/default.nix @@ -1,7 +1,6 @@ { stdenv , lib , fetchurl -, fetchpatch , meson , ninja , pkg-config @@ -15,27 +14,17 @@ , gettext , itstool , desktop-file-utils -, adwaita-icon-theme }: stdenv.mkDerivation rec { pname = "hitori"; - version = "3.38.3"; + version = "3.38.4"; src = fetchurl { url = "mirror://gnome/sources/hitori/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "99cQPLBjP7ATcwExqYw646IWK5+5SZ/H8ZUS1YG/ZWk="; + sha256 = "iZPMkfuSN4jjieA+wqp4dtFcErrZIEz2Wy/6DtOSL30="; }; - patches = [ - # Fix build with meson 0.61 - # data/meson.build:3:0: ERROR: Function does not take positional arguments. - (fetchpatch { - url = "https://gitlab.gnome.org/GNOME/hitori/-/commit/d25728e122f1d7b985029a5ba96810c3e57c27f7.patch"; - sha256 = "LwBpFFr+vLacLTpto7PwvO1p2lku6epyEv9YZvUvW+g="; - }) - ]; - nativeBuildInputs = [ meson ninja @@ -52,7 +41,6 @@ stdenv.mkDerivation rec { glib gtk3 cairo - adwaita-icon-theme ]; postPatch = '' diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix index 1118d52fb43c..18ccac20bb53 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix @@ -23,13 +23,13 @@ stdenv.mkDerivation rec { pname = "switchboard-plug-keyboard"; - version = "2.6.0"; + version = "2.7.0"; src = fetchFromGitHub { owner = "elementary"; repo = pname; rev = version; - sha256 = "sha256-Bl0T+8upTdBnLs03UIimcAg0LO40KwuMZRNSM+y/3Hc="; + sha256 = "sha256-ge87rctbd7iR9x9Xq4sMIC09DiPHbpbWBgMZUuJNWbw="; }; patches = [ diff --git a/pkgs/desktops/pantheon/desktop/gala/default.nix b/pkgs/desktops/pantheon/desktop/gala/default.nix index 75447adf4a26..0cab4d2e08f5 100644 --- a/pkgs/desktops/pantheon/desktop/gala/default.nix +++ b/pkgs/desktops/pantheon/desktop/gala/default.nix @@ -1,7 +1,6 @@ { lib , stdenv , fetchFromGitHub -, fetchpatch , nix-update-script , pkg-config , meson @@ -26,29 +25,19 @@ stdenv.mkDerivation rec { pname = "gala"; - version = "6.3.0"; + version = "6.3.1"; src = fetchFromGitHub { owner = "elementary"; repo = pname; rev = version; - sha256 = "sha256-f/WDm9/+lXgplg9tGpct4f+1cOhKgdypwiDRBhewRGw="; + sha256 = "sha256-7RZt6gA3wyp1cxIWBYFK+fYFSZDbjHcwYa2snOmDw1Y="; }; patches = [ + # We look for plugins in `/run/current-system/sw/lib/` because + # there are multiple plugin providers (e.g. gala and wingpanel). ./plugins-dir.patch - # Session crashes when switching windows with Alt+Tab - # https://github.com/elementary/gala/issues/1312 - (fetchpatch { - url = "https://github.com/elementary/gala/commit/cc83db8fe398feae9f3e4caa8352b65f0c8c96d4.patch"; - sha256 = "sha256-CPO3EHIzqHAV6ZLHngivCdsD8je8CK/NHznfxSEkhzc="; - }) - # WindowSwitcher: Clear indicator background - # https://github.com/elementary/gala/pull/1318 - (fetchpatch { - url = "https://github.com/elementary/gala/commit/cce53acffecba795b6cc48916d4621a47996d2c9.patch"; - sha256 = "sha256-5aTZE6poo4sQMTLfk9Nhw4G4BW8i9dvpWktizRIS58Q="; - }) ]; nativeBuildInputs = [ diff --git a/pkgs/desktops/pantheon/services/elementary-notifications/default.nix b/pkgs/desktops/pantheon/services/elementary-notifications/default.nix index 5a78bb9c8a2b..4cea8b0894d2 100644 --- a/pkgs/desktops/pantheon/services/elementary-notifications/default.nix +++ b/pkgs/desktops/pantheon/services/elementary-notifications/default.nix @@ -17,13 +17,13 @@ stdenv.mkDerivation rec { pname = "elementary-notifications"; - version = "6.0.0"; + version = "6.0.1"; src = fetchFromGitHub { owner = "elementary"; repo = "notifications"; rev = version; - sha256 = "0jfppafbc8jwhhnillylicz4zfds789d8b31ifsx0qijlxa7kji9"; + sha256 = "sha256-AEcZVQPAQLa202/Yvq0GihY8BfMEH46iXeQ5u3QvuXg="; }; nativeBuildInputs = [ diff --git a/pkgs/development/interpreters/bats/default.nix b/pkgs/development/interpreters/bats/default.nix index 3379d1370af1..da12e7a3e65f 100644 --- a/pkgs/development/interpreters/bats/default.nix +++ b/pkgs/development/interpreters/bats/default.nix @@ -1,4 +1,4 @@ -{ resholvePackage +{ resholve , lib , stdenv , fetchFromGitHub @@ -10,7 +10,7 @@ , doInstallCheck ? true }: -resholvePackage rec { +resholve.mkDerivation rec { pname = "bats"; version = "1.6.0"; diff --git a/pkgs/development/libraries/bashup-events/generic.nix b/pkgs/development/libraries/bashup-events/generic.nix index 2f99a2616816..bf46dcd8def2 100644 --- a/pkgs/development/libraries/bashup-events/generic.nix +++ b/pkgs/development/libraries/bashup-events/generic.nix @@ -1,7 +1,7 @@ { # general lib -, resholvePackage +, resholve , bash , doCheck ? true , doInstallCheck ? true @@ -32,7 +32,7 @@ let ''; in -resholvePackage rec { +resholve.mkDerivation rec { # bashup.events doesn't version yet but it has two variants with # differing features/performance characteristics: # - branch master: a variant for bash 3.2+ diff --git a/pkgs/development/libraries/notcurses/default.nix b/pkgs/development/libraries/notcurses/default.nix index ad10cfadf6eb..21b10ad4ed15 100644 --- a/pkgs/development/libraries/notcurses/default.nix +++ b/pkgs/development/libraries/notcurses/default.nix @@ -14,13 +14,13 @@ stdenv.mkDerivation rec { pname = "notcurses"; - version = "3.0.7"; + version = "3.0.8"; src = fetchFromGitHub { owner = "dankamongmen"; repo = "notcurses"; rev = "v${version}"; - sha256 = "sha256-tFdxQEYmSFr3GlJMud2ICToR+IB5sGnQkARUd/LtJXg="; + sha256 = "sha256-5SNWk1iKDNbyoo413Qvzl2bGaR5Lb+q/UPbPQg7YvRU="; }; outputs = [ "out" "dev" ]; diff --git a/pkgs/development/misc/datafusion/default.nix b/pkgs/development/misc/datafusion/default.nix new file mode 100644 index 000000000000..88859b976129 --- /dev/null +++ b/pkgs/development/misc/datafusion/default.nix @@ -0,0 +1,34 @@ +{ stdenv +, lib +, rustPlatform +, fetchFromGitHub +}: +let + pname = "datafusion-cli"; + version = "unstable-2022-04-08"; +in +rustPlatform.buildRustPackage { + inherit pname version; + + # TODO the crate has been yanked so not the best source + # the repo is a workspace with a lock inside a subdirectory, making + # compilation from github source not straightforward + # re-evaluate strategy on release after 7.0.0 + src = fetchFromGitHub { + owner = "apache"; + repo = "arrow-datafusion"; + rev = "9cbde6d0e30fd29f59b0a16e309bdb0843cc7c64"; + sha256 = "sha256-XXd9jvWVivOBRS0PVOU9F4RQ6MrS/q78JF4S6Htd67w="; + }; + sourceRoot = "source/datafusion-cli"; + + cargoSha256 = "sha256-Q0SjVofl1+sex15sSU9s7PgKeHG2b0gJPSqz7YZFOVs="; + + meta = with lib; { + description = "cli for Apache Arrow DataFusion"; + homepage = "https://arrow.apache.org/datafusion"; + license = licenses.asl20; + maintainers = with maintainers; [ happysalada ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/development/misc/resholve/README.md b/pkgs/development/misc/resholve/README.md index 0b4bcb371ade..1ea8843c01ed 100644 --- a/pkgs/development/misc/resholve/README.md +++ b/pkgs/development/misc/resholve/README.md @@ -1,9 +1,18 @@ # Using resholve's Nix API +resholve replaces bare references (subject to a PATH search at runtime) to external commands and scripts with absolute paths. -resholve converts bare executable references in shell scripts to absolute -paths. This will hopefully make its way into the Nixpkgs manual soon, but -until then I'll outline how to use the `resholvePackage`, `resholveScript`, -and `resholveScriptBin` functions. +This small super-power helps ensure script dependencies are declared, present, and don't unexpectedly shift when the PATH changes. + +resholve is developed to enable the Nix package manager to package and integrate Shell projects, but its features are not Nix-specific and inevitably have other applications. + + + +This will hopefully make its way into the Nixpkgs manual soon, but +until then I'll outline how to use the functions: +- `resholve.mkDerivation` (formerly `resholvePackage`) +- `resholve.writeScript` (formerly `resholveScript`) +- `resholve.writeScriptBin` (formerly `resholveScriptBin`) +- `resholve.phraseSolution` (new in resholve 0.8.0) > Fair warning: resholve does *not* aspire to resolving all valid Shell > scripts. It depends on the OSH/Oil parser, which aims to support most (but @@ -11,7 +20,7 @@ and `resholveScriptBin` functions. ## API Concepts -The main difference between `resholvePackage` and other builder functions +The main difference between `resholve.mkDerivation` and other builder functions is the `solutions` attrset, which describes which scripts to resolve and how. Each "solution" (k=v pair) in this attrset describes one resholve invocation. @@ -22,70 +31,81 @@ Each "solution" (k=v pair) in this attrset describes one resholve invocation. > - Packages with scripts that require conflicting directives can use multiple > solutions to resolve the scripts separately, but produce a single package. -The `resholveScript` and `resholveScriptBin` functions support a _single_ -`solution` attrset. This is basically the same as any single solution in `resholvePackage`, except that it doesn't need a `scripts` attr (it is automatically added). +`resholve.writeScript` and `resholve.writeScriptBin` support a _single_ +`solution` attrset. This is basically the same as any single solution in `resholve.mkDerivation`, except that it doesn't need a `scripts` attr (it is automatically added). `resholve.phraseSolution` also only accepts a single solution--but it _does_ still require the `scripts` attr. -## Basic `resholvePackage` Example +## Basic `resholve.mkDerivation` Example -Here's a simple example from one of my own projects, with annotations: - +Here's a simple example of how `resholve.mkDerivation` is already used in nixpkgs: + + ```nix -{ stdenv, lib, resholvePackage, fetchFromGitHub, bashup-events44, bashInteractive_5, doCheck ? true, shellcheck }: +{ lib +, fetchFromGitHub +, resholve +, substituteAll +, bash +, coreutils +, goss +, which +}: -resholvePackage rec { - pname = "shellswain"; - version = "unreleased"; +resholve.mkDerivation rec { + pname = "dgoss"; + version = "0.3.16"; src = fetchFromGitHub { - # ... + owner = "aelsabbahy"; + repo = "goss"; + rev = "v${version}"; + sha256 = "1m5w5vwmc9knvaihk61848rlq7qgdyylzpcwi64z84rkw8qdnj6p"; }; + dontConfigure = true; + dontBuild = true; + + installPhase = '' + sed -i '2i GOSS_PATH=${goss}/bin/goss' extras/dgoss/dgoss + install -D extras/dgoss/dgoss $out/bin/dgoss + ''; + solutions = { - # Give each solution a short name. This is what you'd use to - # override its settings, and it shows in (some) error messages. - profile = { - # the only *required* arguments are the 3 below - - # Specify 1 or more $out-relative script paths. Unlike many - # builders, resholvePackage modifies the output files during - # fixup (to correctly resolve in-package sourcing). - scripts = [ "bin/shellswain.bash" ]; - - # "none" for no shebang, "${bash}/bin/bash" for bash, etc. - interpreter = "none"; - - # packages resholve should resolve executables from - inputs = [ bashup-events44 ]; + default = { + scripts = [ "bin/dgoss" ]; + interpreter = "${bash}/bin/bash"; + inputs = [ coreutils which ]; + fake = { + external = [ "docker" ]; + }; }; }; - makeFlags = [ "prefix=${placeholder "out"}" ]; - - inherit doCheck; - checkInputs = [ shellcheck ]; - - # ... + meta = with lib; { + homepage = "https://github.com/aelsabbahy/goss/blob/v${version}/extras/dgoss/README.md"; + description = "Convenience wrapper around goss that aims to bring the simplicity of goss to docker containers"; + license = licenses.asl20; + platforms = platforms.linux; + maintainers = with maintainers; [ hyzual ]; + }; } ``` -## Basic `resholveScript` and `resholveScriptBin` examples + +## Basic `resholve.writeScript` and `resholve.writeScriptBin` examples Both of these functions have the same basic API. This example is a little trivial for now. If you have a real usage that you find helpful, please PR it. ```nix -resholvedScript = resholveScript "name" { +resholvedScript = resholve.writeScript "name" { inputs = [ file ]; interpreter = "${bash}/bin/bash"; } '' echo "Hello" file . ''; -resholvedScriptBin = resholveScriptBin "name" { +resholvedScriptBin = resholve.writeScriptBin "name" { inputs = [ file ]; interpreter = "${bash}/bin/bash"; } '' @@ -94,25 +114,56 @@ resholvedScriptBin = resholveScriptBin "name" { ''; ``` + +## Basic `resholve.phraseSolution` example + +This function has a similar API to `writeScript` and `writeScriptBin`, except it does require a `scripts` attr. It is intended to make resholve a little easier to mix into more types of build. This example is a little +trivial for now. If you have a real usage that you find helpful, please PR it. + +```nix +{ stdenv, resholve, module1 }: + +stdenv.mkDerivation { + # pname = "testmod3"; + # version = "unreleased"; + # src = ...; + + installPhase = '' + mkdir -p $out/bin + install conjure.sh $out/bin/conjure.sh + ${resholve.phraseSolution "conjure" { + scripts = [ "bin/conjure.sh" ]; + interpreter = "${bash}/bin/bash"; + inputs = [ module1 ]; + fake = { + external = [ "jq" "openssl" ]; + }; + }} + ''; +} +``` + + ## Options -`resholvePackage` maps Nix types/idioms into the flags and environment variables +`resholve.mkDerivation` maps Nix types/idioms into the flags and environment variables that the `resholve` CLI expects. Here's an overview: -| Option | Type | Containing | -| ------------- | ------- | ----------------------------------------------------- | -| scripts | list | $out-relative string paths to resolve | -| inputs | list | packages to resolve executables from | -| interpreter | string | 'none' or abspath for shebang | -| prologue | file | text to insert before the first code-line | -| epilogue | file | text to insert after the last code-line | -| flags | list | strings to pass as flags | -| fake | attrset | [directives](#controlling-resolution-with-directives) | -| fix | attrset | [directives](#controlling-resolution-with-directives) | -| keep | attrset | [directives](#controlling-resolution-with-directives) | -| lore | string | [lore directory](#controlling-nested-resolution-with-lore) | -| execers | list | [execer lore directive](#controlling-nested-resolution-with-lore) | -| wrappers | list | [wrapper lore directive](#controlling-nested-resolution-with-lore) | +| Option | Type | Containing | +|--------|------|------------| +| scripts | `` | scripts to resolve (`$out`-relative paths) | +| interpreter | `"none"` `` | The absolute interpreter `` for the script's shebang. The special value `none` ensures there is no shebang. | +| inputs | `` | Packages to resolve external dependencies from. | +| fake | `` | pretend some commands exist | +| fix | `` | fix things we can't auto-fix/ignore | +| keep | `` | keep things we can't auto-fix/ignore | +| lore | `` | control nested resolution | +| execer | `` | modify nested resolution | +| wrapper | `` | modify nested resolution | +| prologue | `` | insert file before resolved script | +| epilogue | `` | insert file after resolved script | + + ## Controlling resolution with directives @@ -184,6 +235,7 @@ keep = { }; ``` + > **Note:** For now, at least, you'll need to reference the manpage to completely understand these examples. ## Controlling nested resolution with lore @@ -213,7 +265,7 @@ There will be more mechanisms for controlling this process in the future the main lever is the ability to substitute your own lore. This is how you'd do it piecemeal: -``` +```nix # --execer 'cannot:${openssl.bin}/bin/openssl can:${openssl.bin}/bin/c_rehash' execer = [ /* @@ -237,5 +289,6 @@ execer = [ ]; ``` + The format is fairly simple to generate--you can script your own generator if you need to modify the lore. diff --git a/pkgs/development/misc/resholve/default.nix b/pkgs/development/misc/resholve/default.nix index 714c4ecabe08..b2ee3c1d1b57 100644 --- a/pkgs/development/misc/resholve/default.nix +++ b/pkgs/development/misc/resholve/default.nix @@ -1,5 +1,5 @@ { callPackage -, writeTextFile +, ... }: let @@ -7,47 +7,15 @@ let deps = callPackage ./deps.nix { }; in rec { + # resholve itself resholve = callPackage ./resholve.nix { inherit (source) rSrc version; inherit (deps.oil) oildev; + inherit resholve-utils; }; + # funcs to validate and phrase invocations of resholve + # and use those invocations to build packages resholve-utils = callPackage ./resholve-utils.nix { inherit resholve; }; - resholvePackage = callPackage ./resholve-package.nix { - inherit resholve resholve-utils; - }; - resholveScript = name: partialSolution: text: - writeTextFile { - inherit name text; - executable = true; - checkPhase = '' - ( - PS4=$'\x1f'"\033[33m[resholve context]\033[0m " - set -x - ${resholve-utils.makeInvocation name (partialSolution // { - scripts = [ "${placeholder "out"}" ]; - })} - ) - ${partialSolution.interpreter} -n $out - ''; - }; - resholveScriptBin = name: partialSolution: text: - writeTextFile rec { - inherit name text; - executable = true; - destination = "/bin/${name}"; - checkPhase = '' - ( - cd "$out" - PS4=$'\x1f'"\033[33m[resholve context]\033[0m " - set -x - : changing directory to $PWD - ${resholve-utils.makeInvocation name (partialSolution // { - scripts = [ "bin/${name}" ]; - })} - ) - ${partialSolution.interpreter} -n $out/bin/${name} - ''; - }; } diff --git a/pkgs/development/misc/resholve/resholve-package.nix b/pkgs/development/misc/resholve/resholve-package.nix deleted file mode 100644 index 89852efb8bac..000000000000 --- a/pkgs/development/misc/resholve/resholve-package.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ stdenv, lib, resholve, resholve-utils }: - -{ pname -, src -, version -, passthru ? { } -, solutions -, ... -}@attrs: -let - inherit stdenv; - - self = (stdenv.mkDerivation ((removeAttrs attrs [ "solutions" ]) - // { - inherit pname version src; - buildInputs = (lib.optionals (builtins.hasAttr "buildInputs" attrs) attrs.buildInputs) ++ [ resholve ]; - - # enable below for verbose debug info if needed - # supports default python.logging levels - # LOGLEVEL="INFO"; - /* - subshell/PS4/set -x and : command to output resholve envs - and invocation. Extra context makes it clearer what the - Nix API is doing, makes nix-shell debugging easier, etc. - */ - preFixup = '' - ( - cd "$out" - PS4=$'\x1f'"\033[33m[resholve context]\033[0m " - set -x - : changing directory to $PWD - ${builtins.concatStringsSep "\n" (resholve-utils.makeCommands solutions)} - ) - ''; - })); -in -lib.extendDerivation true passthru self diff --git a/pkgs/development/misc/resholve/resholve-utils.nix b/pkgs/development/misc/resholve/resholve-utils.nix index 2d3c55b87563..27e347e7c4aa 100644 --- a/pkgs/development/misc/resholve/resholve-utils.nix +++ b/pkgs/development/misc/resholve/resholve-utils.nix @@ -1,4 +1,4 @@ -{ lib, resholve, binlore }: +{ lib, stdenv, resholve, binlore, writeTextFile }: rec { /* These functions break up the work of partially validating the @@ -10,6 +10,7 @@ rec { # for brevity / line length spaces = l: builtins.concatStringsSep " " l; + colons = l: builtins.concatStringsSep ":" l; semicolons = l: builtins.concatStringsSep ";" l; /* Throw a fit with dotted attr path context */ @@ -17,58 +18,186 @@ rec { throw "${builtins.concatStringsSep "." path}: ${msg}"; /* Special-case directive value representations by type */ - makeDirective = solution: env: name: val: + phraseDirective = solution: env: name: val: if builtins.isInt val then builtins.toString val else if builtins.isString val then name else if true == val then name else if false == val then "" # omit! else if null == val then "" # omit! - else if builtins.isList val then "${name}:${semicolons val}" + else if builtins.isList val then "${name}:${semicolons (map lib.escapeShellArg val)}" else nope [ solution env name ] "unexpected type: ${builtins.typeOf val}"; /* Build fake/fix/keep directives from Nix types */ - makeDirectives = solution: env: val: - lib.mapAttrsToList (makeDirective solution env) val; + phraseDirectives = solution: env: val: + lib.mapAttrsToList (phraseDirective solution env) val; + + /* Custom ~search-path routine to handle relative path strings */ + relSafeBinPath = input: + if lib.isDerivation input then ((lib.getOutput "bin" input) + "/bin") + else if builtins.isString input then input + else throw "unexpected type for input: ${builtins.typeOf input}"; /* Special-case value representation by type/name */ - makeEnvVal = solution: env: val: - if env == "inputs" then lib.makeBinPath val + phraseEnvVal = solution: env: val: + if env == "inputs" then (colons (map relSafeBinPath val)) else if builtins.isString val then val else if builtins.isList val then spaces val - else if builtins.isAttrs val then spaces (makeDirectives solution env val) + else if builtins.isAttrs val then spaces (phraseDirectives solution env val) else nope [ solution env ] "unexpected type: ${builtins.typeOf val}"; /* Shell-format each env value */ shellEnv = solution: env: value: - lib.escapeShellArg (makeEnvVal solution env value); + lib.escapeShellArg (phraseEnvVal solution env value); /* Build a single ENV=val pair */ - makeEnv = solution: env: value: + phraseEnv = solution: env: value: "RESHOLVE_${lib.toUpper env}=${shellEnv solution env value}"; - /* Discard attrs claimed by makeArgs */ - removeCliArgs = value: - removeAttrs value [ "scripts" "flags" ]; + /* Discard attrs: + - claimed by phraseArgs + - only needed for binlore.collect + */ + removeUnneededArgs = value: + removeAttrs value [ "scripts" "flags" "unresholved" ]; /* Verify required arguments are present */ validateSolution = { scripts, inputs, interpreter, ... }: true; /* Pull out specific solution keys to build ENV=val pairs */ - makeEnvs = solution: value: - spaces (lib.mapAttrsToList (makeEnv solution) (removeCliArgs value)); + phraseEnvs = solution: value: + spaces (lib.mapAttrsToList (phraseEnv solution) (removeUnneededArgs value)); /* Pull out specific solution keys to build CLI argstring */ - makeArgs = { flags ? [ ], scripts, ... }: + phraseArgs = { flags ? [ ], scripts, ... }: spaces (flags ++ scripts); + phraseBinloreArgs = value: + let + hasUnresholved = builtins.hasAttr "unresholved" value; + in { + drvs = value.inputs ++ + lib.optionals hasUnresholved [ value.unresholved ]; + strip = if hasUnresholved then [ value.unresholved ] else [ ]; + }; + /* Build a single resholve invocation */ - makeInvocation = solution: value: + phraseInvocation = solution: value: if validateSolution value then # we pass resholve a directory - "RESHOLVE_LORE=${binlore.collect { drvs = value.inputs; } } ${makeEnvs solution value} ${resholve}/bin/resholve --overwrite ${makeArgs value}" + "RESHOLVE_LORE=${binlore.collect (phraseBinloreArgs value) } ${phraseEnvs solution value} ${resholve}/bin/resholve --overwrite ${phraseArgs value}" else throw "invalid solution"; # shouldn't trigger for now + injectUnresholved = solutions: unresholved: (builtins.mapAttrs (name: value: value // { inherit unresholved; } ) solutions); + /* Build resholve invocation for each solution. */ - makeCommands = solutions: - lib.mapAttrsToList makeInvocation solutions; + phraseCommands = solutions: unresholved: + builtins.concatStringsSep "\n" ( + lib.mapAttrsToList phraseInvocation (injectUnresholved solutions unresholved) + ); + + /* + subshell/PS4/set -x and : command to output resholve envs + and invocation. Extra context makes it clearer what the + Nix API is doing, makes nix-shell debugging easier, etc. + */ + phraseContext = { invokable, prep ? ''cd "$out"'' }: '' + ( + ${prep} + PS4=$'\x1f'"\033[33m[resholve context]\033[0m " + set -x + : invoking resholve with PWD=$PWD + ${invokable} + ) + ''; + phraseContextForPWD = invokable: phraseContext { inherit invokable; prep = ""; }; + phraseContextForOut = invokable: phraseContext { inherit invokable; }; + + phraseSolution = name: solution: (phraseContextForOut (phraseInvocation name solution)); + phraseSolutions = solutions: unresholved: + phraseContextForOut (phraseCommands solutions unresholved); + + writeScript = name: partialSolution: text: + writeTextFile { + inherit name text; + executable = true; + checkPhase = '' + ${(phraseContextForPWD ( + phraseInvocation name ( + partialSolution // { + scripts = [ "${placeholder "out"}" ]; + } + ) + ) + )} + ${partialSolution.interpreter} -n $out + ''; + }; + writeScriptBin = name: partialSolution: text: + writeTextFile rec { + inherit name text; + executable = true; + destination = "/bin/${name}"; + checkPhase = '' + ${phraseContextForOut ( + phraseInvocation name ( + partialSolution // { + scripts = [ "bin/${name}" ]; + } + ) + ) + } + ${partialSolution.interpreter} -n $out/bin/${name} + ''; + }; + mkDerivation = { pname + , src + , version + , passthru ? { } + , solutions + , ... + }@attrs: + let + inherit stdenv; + + /* + Knock out our special solutions arg, but otherwise + just build what the caller is giving us. We'll + actually resholve it separately below (after we + generate binlore for it). + */ + unresholved = (stdenv.mkDerivation ((removeAttrs attrs [ "solutions" ]) + // { + inherit pname version src; + })); + in + /* + resholve in a separate derivation; some concerns: + - we aren't keeping many of the user's args, so they + can't readily set LOGLEVEL and such... + - not sure how this affects multiple outputs + */ + lib.extendDerivation true passthru (stdenv.mkDerivation { + src = unresholved; + version = unresholved.version; + pname = "resholved-${unresholved.pname}"; + buildInputs = [ resholve ]; + + # retain a reference to the base + passthru = unresholved.passthru // { + unresholved = unresholved; + }; + + # do these imply that we should use NoCC or something? + dontConfigure = true; + dontBuild = true; + + installPhase = '' + cp -R $src $out + ''; + + # enable below for verbose debug info if needed + # supports default python.logging levels + # LOGLEVEL="INFO"; + preFixup = phraseSolutions solutions unresholved; + }); } diff --git a/pkgs/development/misc/resholve/resholve.nix b/pkgs/development/misc/resholve/resholve.nix index f364b73158e9..959e7ee0cb52 100644 --- a/pkgs/development/misc/resholve/resholve.nix +++ b/pkgs/development/misc/resholve/resholve.nix @@ -7,14 +7,13 @@ , version , oildev , binlore +, resholve-utils }: python27Packages.buildPythonApplication { pname = "resholve"; inherit version; src = rSrc; - format = "other"; - dontBuild = true; nativeBuildInputs = [ installShellFiles ]; @@ -32,13 +31,12 @@ python27Packages.buildPythonApplication { ]; patchPhase = '' - for file in resholve; do + for file in setup.cfg _resholve/version.py; do substituteInPlace $file --subst-var-by version ${version} done ''; - installPhase = '' - install -Dm755 resholve $out/bin/resholve + postInstall = '' installManPage resholve.1 ''; @@ -48,7 +46,10 @@ python27Packages.buildPythonApplication { rm $out/nix-support/propagated-build-inputs ''; - passthru.tests = callPackage ./test.nix { inherit rSrc; inherit binlore; }; + passthru = { + inherit (resholve-utils) mkDerivation phraseSolution writeScript writeScriptBin; + tests = callPackage ./test.nix { inherit rSrc binlore; }; + }; meta = with lib; { description = "Resolve external shell-script dependencies"; diff --git a/pkgs/development/misc/resholve/source.nix b/pkgs/development/misc/resholve/source.nix index f2d431d37ef8..ee69f6c21be9 100644 --- a/pkgs/development/misc/resholve/source.nix +++ b/pkgs/development/misc/resholve/source.nix @@ -3,7 +3,7 @@ }: rec { - version = "0.6.9"; + version = "0.8.0"; rSrc = # local build -> `make ci`; `make clean` to restore # return to remote source @@ -14,6 +14,6 @@ rec { owner = "abathur"; repo = "resholve"; rev = "v${version}"; - hash = "sha256-y9O5w4wA/kR8zoPay9pGs3vwxNqq3JEeZmX0wBJq4UQ="; + hash = "sha256-oWS4ZBPjgH2UvYmvHVVRcyl15r3VS964BmB89y9DGo8="; }; } diff --git a/pkgs/development/misc/resholve/test.nix b/pkgs/development/misc/resholve/test.nix index 2c17cf2ea038..2b8a3ec3d296 100644 --- a/pkgs/development/misc/resholve/test.nix +++ b/pkgs/development/misc/resholve/test.nix @@ -2,10 +2,8 @@ , stdenv , callPackage , resholve -, resholvePackage -, resholveScript -, resholveScriptBin , shunit2 +, fetchFromGitHub , coreutils , gnused , gnugrep @@ -34,46 +32,7 @@ let parsed_packages = [ coreutils sqlite util-linux gnused gawk findutils rlwrap gnutar bc ]; in rec { - re_shunit2 = with shunit2; - resholvePackage { - inherit pname src version installPhase; - solutions = { - shunit = { - interpreter = "none"; - scripts = [ "bin/shunit2" ]; - inputs = [ coreutils gnused gnugrep findutils ]; - # resholve's Nix API is analogous to the CLI flags - # documented in 'man resholve' - fake = { - # "missing" functions shunit2 expects the user to declare - function = [ - "oneTimeSetUp" - "oneTimeTearDown" - "setUp" - "tearDown" - "suite" - "noexec" - ]; - # shunit2 is both bash and zsh compatible, and in - # some zsh-specific code it uses this non-bash builtin - builtin = [ "setopt" ]; - }; - fix = { - # stray absolute path; make it resolve from coreutils - "/usr/bin/od" = true; - }; - keep = { - # variables invoked as commands; long-term goal is to - # resolve the *variable*, but that is complexish, so - # this is where we are... - "$__SHUNIT_CMD_ECHO_ESC" = true; - "$_SHUNIT_LINENO_" = true; - "$SHUNIT_CMD_TPUT" = true; - }; - }; - }; - }; - module1 = resholvePackage { + module1 = resholve.mkDerivation { pname = "testmod1"; version = "unreleased"; @@ -97,7 +56,7 @@ rec { is_it_okay_with_arbitrary_envs = "shonuff"; }; - module2 = resholvePackage { + module2 = resholve.mkDerivation { pname = "testmod2"; version = "unreleased"; @@ -105,19 +64,20 @@ rec { setSourceRoot = "sourceRoot=$(echo */tests/nix/openssl)"; installPhase = '' - mkdir -p $out/bin + mkdir -p $out/bin $out/libexec install openssl.sh $out/bin/openssl.sh + install libexec.sh $out/libexec/invokeme install profile $out/profile ''; - + # LOGLEVEL="DEBUG"; solutions = { openssl = { fix = { aliases = true; }; - scripts = [ "bin/openssl.sh" ]; + scripts = [ "bin/openssl.sh" "libexec/invokeme" ]; interpreter = "none"; - inputs = [ re_shunit2 openssl.bin ]; + inputs = [ shunit2 openssl.bin "libexec" "libexec/invokeme" ]; execer = [ /* This is the same verdict binlore will @@ -136,7 +96,8 @@ rec { }; }; }; - module3 = resholvePackage { + # demonstrate that we could use resholve in larger build + module3 = stdenv.mkDerivation { pname = "testmod3"; version = "unreleased"; @@ -146,15 +107,15 @@ rec { installPhase = '' mkdir -p $out/bin install conjure.sh $out/bin/conjure.sh - ''; - - solutions = { - conjure = { + ${resholve.phraseSolution "conjure" { scripts = [ "bin/conjure.sh" ]; interpreter = "${bash}/bin/bash"; inputs = [ module1 ]; - }; - }; + fake = { + external = [ "jq" "openssl" ]; + }; + }} + ''; }; cli = stdenv.mkDerivation { @@ -204,14 +165,14 @@ rec { }; # Caution: ci.nix asserts the equality of both of these w/ diff - resholvedScript = resholveScript "resholved-script" { + resholvedScript = resholve.writeScript "resholved-script" { inputs = [ file ]; interpreter = "${bash}/bin/bash"; } '' echo "Hello" file . ''; - resholvedScriptBin = resholveScriptBin "resholved-script-bin" { + resholvedScriptBin = resholve.writeScriptBin "resholved-script-bin" { inputs = [ file ]; interpreter = "${bash}/bin/bash"; } '' diff --git a/pkgs/development/tools/analysis/binlore/default.nix b/pkgs/development/tools/analysis/binlore/default.nix index ac46bd4c4185..e6d529b0684a 100644 --- a/pkgs/development/tools/analysis/binlore/default.nix +++ b/pkgs/development/tools/analysis/binlore/default.nix @@ -30,8 +30,8 @@ let src = fetchFromGitHub { owner = "abathur"; repo = "binlore"; - rev = "v0.1.4"; - hash = "sha256-+N0Bqyaj/mAwrcgFtUI8czmKo3VW6J8ZRxaPEghp7QM="; + rev = "v0.2.0"; + hash = "sha256-bBJky7Km+mieHTqoMz3mda3KaKxr9ipYpfQqn/4w8J0="; }; /* binlore has one one more yallbacks responsible for @@ -57,11 +57,11 @@ let # since this form will make it easier to pilot other # uses of binlore. callback = lore: drv: overrides: '' - if [[ -d "${drv}/bin" ]]; then + if [[ -d "${drv}/bin" ]] || [[ -d "${drv}/lib" ]] || [[ -d "${drv}/libexec" ]]; then echo generating binlore for $drv by running: - echo "${yara}/bin/yara ${lore.rules} ${drv}/bin | ${yallback}/bin/yallback ${lore.yallback}" + echo "${yara}/bin/yara --scan-list --recursive ${lore.rules} <(printf '%s\n' ${drv}/{bin,lib,libexec}) | ${yallback}/bin/yallback ${lore.yallback}" else - echo "failed to generate binlore for $drv (${drv}/bin doesn't exist)" + echo "failed to generate binlore for $drv (none of ${drv}/{bin,lib,libexec} exist)" fi '' + /* @@ -83,18 +83,19 @@ let fi ((i--)) || true # don't break build done # || true # don't break build - if [[ -d "${drv}/bin" ]]; then - ${yara}/bin/yara ${lore.rules} ${drv}/bin | ${yallback}/bin/yallback ${lore.yallback} "$filter" + if [[ -d "${drv}/bin" ]] || [[ -d "${drv}/lib" ]] || [[ -d "${drv}/libexec" ]]; then + ${yara}/bin/yara --scan-list --recursive ${lore.rules} <(printf '%s\n' ${drv}/{bin,lib,libexec}) | ${yallback}/bin/yallback ${lore.yallback} "$filter" fi ''; }; overrides = (src + /overrides); in rec { - collect = { lore ? loreDef, drvs }: (runCommand "more-binlore" { } '' + collect = { lore ? loreDef, drvs, strip ? [ ] }: (runCommand "more-binlore" { } '' mkdir $out for lorefile in ${toString lore.types}; do - cat ${lib.concatMapStrings (x: x + "/$lorefile ") (map (make lore) (map lib.getBin drvs))} > $out/$lorefile + cat ${lib.concatMapStrings (x: x + "/$lorefile ") (map (make lore) (map lib.getBin (builtins.filter lib.isDerivation drvs)))} > $out/$lorefile + substituteInPlace $out/$lorefile ${lib.concatMapStrings (x: "--replace '${x}/' '' ") strip} done ''); # TODO: echo for debug, can be removed at some point diff --git a/pkgs/development/tools/dprint/default.nix b/pkgs/development/tools/dprint/default.nix index f2bd4bb1b2a2..63f0324ac8f4 100644 --- a/pkgs/development/tools/dprint/default.nix +++ b/pkgs/development/tools/dprint/default.nix @@ -2,14 +2,14 @@ rustPlatform.buildRustPackage rec { pname = "dprint"; - version = "0.22.2"; + version = "0.24.3"; src = fetchCrate { inherit pname version; - sha256 = "sha256-iYqQABXd3Vra+U7cfGKBEyTXfQGwHxFSxEoDyCfKk5Y="; + sha256 = "sha256-QWPQ48mSTAeVz+iXid5fE/nSLt1+QxJ562m3FFZ8rcU="; }; - cargoSha256 = "sha256-QMOS8Pn3RwZZRtKqp077ihh91Q4VPe8alrtQ6dYIXmA="; + cargoSha256 = "sha256-XXGtY4vzS/mkF/aRlLA7A/tsSEqXlJQgU0wJp6q/Nu8="; buildInputs = lib.optionals stdenv.isDarwin [ Security ]; diff --git a/pkgs/development/tools/esbuild/default.nix b/pkgs/development/tools/esbuild/default.nix index 8844af40f4d1..1dcd8ff7b2e0 100644 --- a/pkgs/development/tools/esbuild/default.nix +++ b/pkgs/development/tools/esbuild/default.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "esbuild"; - version = "0.14.29"; + version = "0.14.32"; src = fetchFromGitHub { owner = "evanw"; repo = "esbuild"; rev = "v${version}"; - sha256 = "sha256-v16wKi+CphROS9s3PdzzuRoh3gLfSUgincyTp38WKxQ="; + sha256 = "sha256-NIF47eTGAC//4aPojrJbokB434MfGudi1pD+liRsA8k="; }; vendorSha256 = "sha256-QPkBR+FscUc3jOvH7olcGUhM6OW4vxawmNJuRQxPuGs="; diff --git a/pkgs/development/tools/jql/default.nix b/pkgs/development/tools/jql/default.nix index 0154df2c7fc0..ba3635260125 100644 --- a/pkgs/development/tools/jql/default.nix +++ b/pkgs/development/tools/jql/default.nix @@ -2,16 +2,16 @@ rustPlatform.buildRustPackage rec { pname = "jql"; - version = "3.2.0"; + version = "3.2.4"; src = fetchFromGitHub { owner = "yamafaktory"; repo = pname; rev = "v${version}"; - sha256 = "sha256-U++yypq9M1C6Sh9rv3rmn/qwTXWdPFDBpjFS6eoS2L4="; + sha256 = "sha256-wokdlmczClYwVskBDpKQyka1GiLf4JvRiooK+qo7Tv4="; }; - cargoSha256 = "sha256-uyD+QBDfnZa3nfZcUAqruYqJ9nVAa5+XOPONds0ysXU="; + cargoSha256 = "sha256-6L78LxxzqkjP9k71WmZhkhNVdKLXUwSYioKynaETTaA="; meta = with lib; { description = "A JSON Query Language CLI tool built with Rust"; diff --git a/pkgs/development/web/flyctl/default.nix b/pkgs/development/web/flyctl/default.nix index f70faf37fac9..8b3d40251ab7 100644 --- a/pkgs/development/web/flyctl/default.nix +++ b/pkgs/development/web/flyctl/default.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "flyctl"; - version = "0.0.310"; + version = "0.0.314"; src = fetchFromGitHub { owner = "superfly"; repo = "flyctl"; rev = "v${version}"; - sha256 = "sha256-69yyH4og7FGS3+M72YhlrwjatucfGliHYcMpPi1ddjA="; + sha256 = "sha256-UPr5crTddmR5tIzR0BulITGDbdlu3RZ1l5W007C3z+E="; }; preBuild = '' @@ -17,7 +17,7 @@ buildGoModule rec { subPackages = [ "." ]; - vendorSha256 = "sha256-2goglOmcUud9KT5accn/AMe4xEgRN2Ep1qMfQHtlI+Q="; + vendorSha256 = "sha256-QUi23Gmj6vdNXwINa54tfLeZ+eGWLlbAtWGj3yOnzhE="; doCheck = false; diff --git a/pkgs/servers/sql/mysql/8.0.x.nix b/pkgs/servers/sql/mysql/8.0.x.nix index ae2e170379df..f897e018d693 100644 --- a/pkgs/servers/sql/mysql/8.0.x.nix +++ b/pkgs/servers/sql/mysql/8.0.x.nix @@ -20,6 +20,8 @@ self = stdenv.mkDerivation rec { postPatch = '' substituteInPlace cmake/libutils.cmake --replace /usr/bin/libtool libtool substituteInPlace cmake/os/Darwin.cmake --replace /usr/bin/libtool libtool + substituteInPlace cmake/fido2.cmake \ + --replace ''$\{MY_PKG_CONFIG_EXECUTABLE\} "${pkg-config}/bin/pkg-config" ''; buildInputs = [ diff --git a/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix b/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix index ff5f464c8e51..dae538822385 100644 --- a/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix +++ b/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "plpgsql_check"; - version = "2.1.2"; + version = "2.1.3"; src = fetchFromGitHub { owner = "okbob"; repo = pname; rev = "v${version}"; - sha256 = "sha256-S/b6oQPYgaM6UvloYqlwhF5rxlyKG4Vw6ejN/gK8Spg="; + sha256 = "sha256-hVbx1eUrVQ35UzcokoqYCi6RFI5Dn7t9XH8q9VbyDbQ="; }; buildInputs = [ postgresql ]; diff --git a/pkgs/tools/misc/arch-install-scripts/default.nix b/pkgs/tools/misc/arch-install-scripts/default.nix index 0df8ae1e7337..a967e4989e61 100644 --- a/pkgs/tools/misc/arch-install-scripts/default.nix +++ b/pkgs/tools/misc/arch-install-scripts/default.nix @@ -1,5 +1,5 @@ { lib -, resholvePackage +, resholve , fetchFromGitHub , asciidoc , bash @@ -10,7 +10,7 @@ , util-linux }: -resholvePackage rec { +resholve.mkDerivation rec { pname = "arch-install-scripts"; version = "24"; @@ -43,7 +43,7 @@ resholvePackage rec { # the only *required* arguments are the 3 below # Specify 1 or more $out-relative script paths. Unlike many - # builders, resholvePackage modifies the output files during + # builders, resholve.mkDerivation modifies the output files during # fixup (to correctly resolve in-package sourcing). scripts = [ "bin/arch-chroot" "bin/genfstab" "bin/pacstrap" ]; diff --git a/pkgs/tools/misc/dgoss/default.nix b/pkgs/tools/misc/dgoss/default.nix index 5af576b3877a..e050ff0f26b4 100644 --- a/pkgs/tools/misc/dgoss/default.nix +++ b/pkgs/tools/misc/dgoss/default.nix @@ -1,6 +1,6 @@ { lib , fetchFromGitHub -, resholvePackage +, resholve , substituteAll , bash , coreutils @@ -8,7 +8,7 @@ , which }: -resholvePackage rec { +resholve.mkDerivation rec { pname = "dgoss"; version = "0.3.16"; diff --git a/pkgs/tools/misc/pre-commit/default.nix b/pkgs/tools/misc/pre-commit/default.nix index 72f7f66c9e43..addd7134b7f8 100644 --- a/pkgs/tools/misc/pre-commit/default.nix +++ b/pkgs/tools/misc/pre-commit/default.nix @@ -6,6 +6,7 @@ , dotnet-sdk , git , go +, libiconv , nodejs }: @@ -54,6 +55,11 @@ buildPythonPackage rec { re-assert ]; + buildInputs = [ + # Required for rust test on x86_64-darwin + libiconv + ]; + doCheck = true; postPatch = '' diff --git a/pkgs/tools/misc/shunit2/default.nix b/pkgs/tools/misc/shunit2/default.nix index a0ec572a409d..1120c756895b 100644 --- a/pkgs/tools/misc/shunit2/default.nix +++ b/pkgs/tools/misc/shunit2/default.nix @@ -1,5 +1,5 @@ { lib -, resholvePackage +, resholve , fetchFromGitHub , bash , coreutils @@ -9,7 +9,7 @@ , ncurses }: -resholvePackage rec { +resholve.mkDerivation rec { pname = "shunit2"; version = "2.1.8"; @@ -63,7 +63,7 @@ resholvePackage rec { interpreter, we can pre-test this. But if we go fiddle the interpreter later, I guess we _could_ break it. */ - "$__SHUNIT_CMD_ECHO_ESC" = [ "'echo -e'" ]; + "$__SHUNIT_CMD_ECHO_ESC" = [ "echo -e" ]; "$SHUNIT_CMD_TPUT" = [ "tput" ]; # from ncurses }; keep = { diff --git a/pkgs/tools/networking/gping/default.nix b/pkgs/tools/networking/gping/default.nix index 3ca9d3b553e4..89d07b851664 100644 --- a/pkgs/tools/networking/gping/default.nix +++ b/pkgs/tools/networking/gping/default.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage rec { pname = "gping"; - version = "1.3.0"; + version = "1.3.1"; src = fetchFromGitHub { owner = "orf"; repo = "gping"; rev = "gping-v${version}"; - sha256 = "sha256-Q7M/vDhECEIQ8s8qt1U7wESqv+Im79TyZ6s2vqjU5ps="; + sha256 = "sha256-/CH9cSOkgXxdxSN1G4Jg404KOHEYhnsSCK4QB6Zdk+A="; }; - cargoSha256 = "sha256-cnmjfvMqq8VDMvjFPnjmmH57Gaqttk36AwEtuuAT6qU="; + cargoSha256 = "sha256-2knD3MwrJKvbdovh6bd81GqHHqeAG1OFzXsLB4eO0Do="; buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ]; diff --git a/pkgs/tools/package-management/cargo-about/default.nix b/pkgs/tools/package-management/cargo-about/default.nix index 0ed6f978ba96..8b98858e823b 100644 --- a/pkgs/tools/package-management/cargo-about/default.nix +++ b/pkgs/tools/package-management/cargo-about/default.nix @@ -2,19 +2,19 @@ rustPlatform.buildRustPackage rec { pname = "cargo-about"; - version = "0.5.0"; + version = "0.5.1"; src = fetchFromGitHub { owner = "EmbarkStudios"; repo = "cargo-about"; rev = version; - sha256 = "sha256-M09X7UwrTtrOhOphhpGHSAqxneY50jNrFKJCeBQhRfc="; + sha256 = "sha256-T8Hhody0jMmZb6/xMkSvKCv4STZPbcrf/UB3APspYDM="; }; # enable pkg-config feature of zstd cargoPatches = [ ./zstd-pkg-config.patch ]; - cargoSha256 = "sha256-E1+OfVAzrezXoUz9Nlyhdq1xxEWm4UJhVyp+nG7UmYY="; + cargoSha256 = "sha256-x/HzDYNy0FDxJmhjSUUEiyahM7Sw27aC+ULP/Ii0X/8="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/tools/typesetting/pdf2odt/default.nix b/pkgs/tools/typesetting/pdf2odt/default.nix index f1568de60ebb..e0063d2f72e8 100644 --- a/pkgs/tools/typesetting/pdf2odt/default.nix +++ b/pkgs/tools/typesetting/pdf2odt/default.nix @@ -1,5 +1,5 @@ { lib -, resholvePackage +, resholve , fetchFromGitHub , bc , coreutils @@ -13,7 +13,7 @@ , findutils }: -resholvePackage rec { +resholve.mkDerivation rec { pname = "pdf2odt"; version = "20170207"; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 88dc713bd6c3..3382c6506d15 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1042,6 +1042,12 @@ mapAliases ({ redshift-wlr = throw "redshift-wlr has been replaced by gammastep"; # Added 2021-12-25 reicast = throw "reicast has been removed from nixpkgs as it is unmaintained, please use flycast instead"; # Added 2022-03-07 renpy = throw "renpy has been removed from nixpkgs, it was unmaintained and the latest packaged version required python2"; # Added 2022-01-12 + + # 3 resholve aliases below added 2022-04-08; drop after 2022-11-30? + resholvePackage = throw "resholvePackage has been renamed to resholve.mkDerivation"; + resholveScript = throw "resholveScript has been renamed to resholve.writeScript"; + resholveScriptBin = throw "resholveScriptBin has been renamed to resholve.writeScriptBin"; + residualvm = throw "residualvm was merged to scummvm code in 2018-06-15; consider using scummvm"; # Added 2021-11-27 retroArchCores = throw "retroArchCores has been removed. Please use overrides instead, e.g.: `retroarch.override { cores = with libretro; [ ... ]; }`"; # Added 2021-11-19 retroshare06 = retroshare; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 269af730822b..4dab4dd8153d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2872,6 +2872,8 @@ with pkgs; dasher = callPackage ../applications/accessibility/dasher { }; + datafusion-cli = callPackage ../development/misc/datafusion { }; + datamash = callPackage ../tools/misc/datamash { }; datasette = with python3Packages; toPythonApplication datasette; @@ -9544,7 +9546,7 @@ with pkgs; rescuetime = libsForQt5.callPackage ../applications/misc/rescuetime { }; inherit (callPackage ../development/misc/resholve { }) - resholve resholvePackage resholveScript resholveScriptBin; + resholve; restool = callPackage ../os-specific/linux/restool {};