diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml index 73ff5a09b264..6e6f9c3d3b43 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml @@ -387,6 +387,13 @@ services.seafile. + + + rasdaemon, + a hardware error logging daemon. Available as + hardware.rasdaemon. + +
diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index f2a4388e8a41..acc0dd70c772 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -118,6 +118,8 @@ In addition to numerous new and upgraded packages, this release has the followin - [seafile](https://www.seafile.com/en/home/), an open source file syncing & sharing software. Available as [services.seafile](options.html#opt-services.seafile.enable). +- [rasdaemon](https://github.com/mchehab/rasdaemon), a hardware error logging daemon. Available as [hardware.rasdaemon](#opt-hardware.rasdaemon.enable). + ## Backward Incompatibilities {#sec-release-21.11-incompatibilities} - The `services.wakeonlan` option was removed, and replaced with `networking.interfaces..wakeOnLan`. diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 00d0103e6b79..0dbdda68d3c0 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -420,6 +420,7 @@ ./services/hardware/pcscd.nix ./services/hardware/pommed.nix ./services/hardware/power-profiles-daemon.nix + ./services/hardware/rasdaemon.nix ./services/hardware/ratbagd.nix ./services/hardware/sane.nix ./services/hardware/sane_extra_backends/brscan4.nix diff --git a/nixos/modules/services/hardware/rasdaemon.nix b/nixos/modules/services/hardware/rasdaemon.nix new file mode 100644 index 000000000000..b1efe0f18c88 --- /dev/null +++ b/nixos/modules/services/hardware/rasdaemon.nix @@ -0,0 +1,171 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.hardware.rasdaemon; + +in +{ + options.hardware.rasdaemon = { + + enable = mkEnableOption "RAS logging daemon"; + + record = mkOption { + type = types.bool; + default = true; + description = "record events via sqlite3, required for ras-mc-ctl"; + }; + + mainboard = mkOption { + type = types.lines; + default = ""; + description = "Custom mainboard description, see ras-mc-ctl8 for more details."; + example = '' + vendor = ASRock + model = B450M Pro4 + + # it should default to such values from + # /sys/class/dmi/id/board_[vendor|name] + # alternatively one can supply a script + # that returns the same format as above + + script = + ''; + }; + + # TODO, accept `rasdaemon.labels = " ";` or `rasdaemon.labels = { dell = " "; asrock = " "; };' + + labels = mkOption { + type = types.lines; + default = ""; + description = "Additional memory module label descriptions to be placed in /etc/ras/dimm_labels.d/labels"; + example = '' + # vendor and model may be shown by 'ras-mc-ctl --mainboard' + vendor: ASRock + product: To Be Filled By O.E.M. + model: B450M Pro4 + # these labels are names for the motherboard slots + # the numbers may be shown by `ras-mc-ctl --error-count` + # they are mc:csrow:channel + DDR4_A1: 0.2.0; DDR4_B1: 0.2.1; + DDR4_A2: 0.3.0; DDR4_B2: 0.3.1; + ''; + }; + + config = mkOption { + type = types.lines; + default = ""; + description = '' + rasdaemon configuration, currently only used for CE PFA + for details, read rasdaemon.outPath/etc/sysconfig/rasdaemon's comments + ''; + example = '' + # defaults from included config + PAGE_CE_REFRESH_CYCLE="24h" + PAGE_CE_THRESHOLD="50" + PAGE_CE_ACTION="soft" + ''; + }; + + extraModules = mkOption { + type = types.listOf types.str; + default = []; + description = "extra kernel modules to load"; + example = [ "i7core_edac" ]; + }; + + testing = mkEnableOption "error injection infrastructure"; + }; + + config = mkIf cfg.enable { + + environment.etc = { + "ras/mainboard" = { + enable = cfg.mainboard != ""; + text = cfg.mainboard; + }; + # TODO, handle multiple cfg.labels.brand = " "; + "ras/dimm_labels.d/labels" = { + enable = cfg.labels != ""; + text = cfg.labels; + }; + "sysconfig/rasdaemon" = { + enable = cfg.config != ""; + text = cfg.config; + }; + }; + environment.systemPackages = [ pkgs.rasdaemon ] + ++ optionals (cfg.testing) (with pkgs.error-inject; [ + edac-inject + mce-inject + aer-inject + ]); + + boot.initrd.kernelModules = cfg.extraModules + ++ optionals (cfg.testing) [ + # edac_core and amd64_edac should get loaded automatically + # i7core_edac may not be, and may not be required, but should load successfully + "edac_core" + "amd64_edac" + "i7core_edac" + "mce-inject" + "aer-inject" + ]; + + boot.kernelPatches = optionals (cfg.testing) [{ + name = "rasdaemon-tests"; + patch = null; + extraConfig = '' + EDAC_DEBUG y + X86_MCE_INJECT y + + PCIEPORTBUS y + PCIEAER y + PCIEAER_INJECT y + ''; + }]; + + # i tried to set up a group for this + # but rasdaemon needs higher permissions? + # `rasdaemon: Can't locate a mounted debugfs` + + # most of this taken from src/misc/ + systemd.services = { + rasdaemon = { + description = "the RAS logging daemon"; + documentation = [ "man:rasdaemon(1)" ]; + wantedBy = [ "multi-user.target" ]; + after = [ "syslog.target" ]; + + serviceConfig = { + StateDirectory = optionalString (cfg.record) "rasdaemon"; + + ExecStart = "${pkgs.rasdaemon}/bin/rasdaemon --foreground" + + optionalString (cfg.record) " --record"; + ExecStop = "${pkgs.rasdaemon}/bin/rasdaemon --disable"; + Restart = "on-abort"; + + # src/misc/rasdaemon.service.in shows this: + # ExecStartPost = ${pkgs.rasdaemon}/bin/rasdaemon --enable + # but that results in unpredictable existence of the database + # and everything seems to be enabled without this... + }; + }; + ras-mc-ctl = mkIf (cfg.labels != "") { + description = "register DIMM labels on startup"; + documentation = [ "man:ras-mc-ctl(8)" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "oneshot"; + ExecStart = "${pkgs.rasdaemon}/bin/ras-mc-ctl --register-labels"; + RemainAfterExit = true; + }; + }; + }; + }; + + meta.maintainers = [ maintainers.evils ]; + +} diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index b559d0af5cc5..8790fed807c8 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -237,7 +237,6 @@ in locate = handleTest ./locate.nix {}; login = handleTest ./login.nix {}; loki = handleTest ./loki.nix {}; - lsd = handleTest ./lsd.nix {}; lxd = handleTest ./lxd.nix {}; lxd-nftables = handleTest ./lxd-nftables.nix {}; #logstash = handleTest ./logstash.nix {}; @@ -387,6 +386,7 @@ in rabbitmq = handleTest ./rabbitmq.nix {}; radarr = handleTest ./radarr.nix {}; radicale = handleTest ./radicale.nix {}; + rasdaemon = handleTest ./rasdaemon.nix {}; redis = handleTest ./redis.nix {}; redmine = handleTest ./redmine.nix {}; restartByActivationScript = handleTest ./restart-by-activation-script.nix {}; diff --git a/nixos/tests/lsd.nix b/nixos/tests/lsd.nix deleted file mode 100644 index c643f2f0b7b7..000000000000 --- a/nixos/tests/lsd.nix +++ /dev/null @@ -1,12 +0,0 @@ -import ./make-test-python.nix ({ pkgs, ... }: { - name = "lsd"; - meta = with pkgs.lib.maintainers; { maintainers = [ nequissimus ]; }; - - nodes.lsd = { pkgs, ... }: { environment.systemPackages = [ pkgs.lsd ]; }; - - testScript = '' - lsd.succeed('echo "abc" > /tmp/foo') - assert "4 B /tmp/foo" in lsd.succeed('lsd --classic --blocks "size,name" -l /tmp/foo') - assert "lsd ${pkgs.lsd.version}" in lsd.succeed("lsd --version") - ''; -}) diff --git a/nixos/tests/rasdaemon.nix b/nixos/tests/rasdaemon.nix new file mode 100644 index 000000000000..e4bd8d96a8d5 --- /dev/null +++ b/nixos/tests/rasdaemon.nix @@ -0,0 +1,34 @@ +import ./make-test-python.nix ({ pkgs, ... } : { + name = "rasdaemon"; + meta = with pkgs.lib.maintainers; { + maintainers = [ evils ]; + }; + + machine = { pkgs, ... }: { + imports = [ ../modules/profiles/minimal.nix ]; + hardware.rasdaemon = { + enable = true; + # should be enabled by default, just making sure + record = true; + # nonsense label + labels = '' + vendor: none + product: none + model: none + DIMM_0: 0.0.0; + ''; + }; + }; + + testScript = + '' + start_all() + machine.wait_for_unit("multi-user.target") + # confirm rasdaemon is running and has a valid database + # some disk errors detected in qemu for some reason ¯\_(ツ)_/¯ + machine.succeed("ras-mc-ctl --errors | tee /dev/stderr | grep -q 'No .* errors.'") + # confirm the supplied labels text made it into the system + machine.succeed("grep -q 'vendor: none' /etc/ras/dimm_labels.d/labels >&2") + machine.shutdown() + ''; +}) diff --git a/pkgs/applications/graphics/weylus/default.nix b/pkgs/applications/graphics/weylus/default.nix index 54b86c09341e..d3eef3400739 100644 --- a/pkgs/applications/graphics/weylus/default.nix +++ b/pkgs/applications/graphics/weylus/default.nix @@ -14,11 +14,11 @@ stdenv.mkDerivation rec { pname = "weylus"; - version = "0.11.2"; + version = "0.11.3"; src = fetchzip { url = "https://github.com/H-M-H/Weylus/releases/download/v${version}/linux.zip"; - sha256 = "sha256-coA8qUpUgRjVBF/0LZgimx61fTTpdck/AO6e+r2uNu0="; + sha256 = "sha256-1nEdn3KKCMWIzYv4ryqTxtQvR9eln9IX1Z4Y6/vuo7o="; stripRoot = false; }; diff --git a/pkgs/applications/misc/cherrytree/default.nix b/pkgs/applications/misc/cherrytree/default.nix index d4fc82b91393..61150d56fbbd 100644 --- a/pkgs/applications/misc/cherrytree/default.nix +++ b/pkgs/applications/misc/cherrytree/default.nix @@ -19,13 +19,13 @@ stdenv.mkDerivation rec { pname = "cherrytree"; - version = "0.99.41"; + version = "0.99.42"; src = fetchFromGitHub { owner = "giuspen"; repo = "cherrytree"; rev = version; - sha256 = "sha256-Bhk5xpJiVDSTxP1wAFTL39MgAIOa6Is9NTF1WEh6S1A="; + sha256 = "sha256-PKjl9n6J0iNdcA56CZ/nAzvgRNwqRLTHjwi3HQYWIMU="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/networking/flexget/default.nix b/pkgs/applications/networking/flexget/default.nix index cb2abecf8287..22fd08e3f4a8 100644 --- a/pkgs/applications/networking/flexget/default.nix +++ b/pkgs/applications/networking/flexget/default.nix @@ -2,14 +2,14 @@ python3Packages.buildPythonApplication rec { pname = "flexget"; - version = "3.1.148"; + version = "3.1.149"; # Fetch from GitHub in order to use `requirements.in` src = fetchFromGitHub { owner = "flexget"; repo = "flexget"; rev = "v${version}"; - sha256 = "0gf07qa1wsysvl0mckh2r3a40065rxhgszf4767jkbryz8z174bc"; + sha256 = "1yrb8cfrc6y7gpfgzn0q6ldx9vk06qp229wjs4q8rccp72p6d6gg"; }; postPatch = '' diff --git a/pkgs/applications/networking/instant-messengers/quaternion/default.nix b/pkgs/applications/networking/instant-messengers/quaternion/default.nix index 359c0fa7aac5..268a077e7c5b 100644 --- a/pkgs/applications/networking/instant-messengers/quaternion/default.nix +++ b/pkgs/applications/networking/instant-messengers/quaternion/default.nix @@ -3,7 +3,6 @@ , lib , fetchFromGitHub , cmake -, qtbase , qtquickcontrols , qtquickcontrols2 , qtkeychain @@ -15,19 +14,17 @@ mkDerivation rec { pname = "quaternion"; - version = "0.0.95"; + version = "0.0.95.1"; src = fetchFromGitHub { owner = "QMatrixClient"; repo = "Quaternion"; rev = version; - sha256 = "sha256-WqhHqo4ySxufulC+TxS2ko2R5hUiORgdNAkp5Awdcw8="; + sha256 = "sha256-6FLj/hVY13WO7sMgHCHV57eMJu39cwQHXQX7m0lmv4I="; }; buildInputs = [ - qtbase qtmultimedia - qtquickcontrols qtquickcontrols2 qtkeychain libquotient @@ -47,11 +44,10 @@ mkDerivation rec { ''; meta = with lib; { - description = - "Cross-platform desktop IM client for the Matrix protocol"; + description = "Cross-platform desktop IM client for the Matrix protocol"; homepage = "https://matrix.org/docs/projects/client/quaternion.html"; license = licenses.gpl3; maintainers = with maintainers; [ peterhoeg ]; - inherit (qtbase.meta) platforms; + inherit (qtquickcontrols2.meta) platforms; }; } diff --git a/pkgs/applications/networking/seafile-client/default.nix b/pkgs/applications/networking/seafile-client/default.nix index 2783373ef322..b0975c56b059 100644 --- a/pkgs/applications/networking/seafile-client/default.nix +++ b/pkgs/applications/networking/seafile-client/default.nix @@ -29,6 +29,6 @@ mkDerivation rec { description = "Desktop client for Seafile, the Next-generation Open Source Cloud Storage"; license = licenses.asl20; platforms = platforms.linux; - maintainers = with maintainers; [ ]; + maintainers = with maintainers; [ schmittlauch ]; }; } diff --git a/pkgs/applications/radio/dump1090/default.nix b/pkgs/applications/radio/dump1090/default.nix index 927fa32bd55b..00e5e0089cf8 100644 --- a/pkgs/applications/radio/dump1090/default.nix +++ b/pkgs/applications/radio/dump1090/default.nix @@ -5,17 +5,19 @@ , libusb1 , ncurses , rtl-sdr +, hackrf +, limesuite }: stdenv.mkDerivation rec { pname = "dump1090"; - version = "5.0"; + version = "6.1"; src = fetchFromGitHub { owner = "flightaware"; repo = pname; rev = "v${version}"; - sha256 = "1fckfcgypmplzl1lidd04jxiabczlfx9mv21d6rbsfknghsjpn03"; + sha256 = "sha256-OLXnT5TD6ZBNJUk4qXOMbr+NWdw3j1rv1xkFPZi4Wo8="; }; nativeBuildInputs = [ pkg-config ]; @@ -25,7 +27,15 @@ stdenv.mkDerivation rec { libusb1 ncurses rtl-sdr - ]; + hackrf + ] ++ lib.optional stdenv.isLinux limesuite; + + NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang + "-Wno-implicit-function-declaration -Wno-int-conversion"; + + buildFlags = [ "dump1090" "view1090" ]; + + doCheck = true; installPhase = '' runHook preInstall @@ -41,7 +51,7 @@ stdenv.mkDerivation rec { description = "A simple Mode S decoder for RTLSDR devices"; homepage = "https://github.com/flightaware/dump1090"; license = licenses.gpl2Plus; - platforms = platforms.linux; + platforms = platforms.unix; maintainers = with maintainers; [ earldouglas ]; }; } diff --git a/pkgs/desktops/pantheon/apps/elementary-videos/default.nix b/pkgs/desktops/pantheon/apps/elementary-videos/default.nix index 9bb7939217cb..a87ac48c7f30 100644 --- a/pkgs/desktops/pantheon/apps/elementary-videos/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-videos/default.nix @@ -1,6 +1,6 @@ -{ lib, stdenv +{ lib +, stdenv , fetchFromGitHub -, fetchpatch , nix-update-script , pantheon , pkg-config @@ -12,6 +12,7 @@ , gtk3 , granite , libgee +, libhandy , clutter-gst , clutter-gtk , gst_all_1 @@ -21,7 +22,7 @@ stdenv.mkDerivation rec { pname = "elementary-videos"; - version = "2.7.3"; + version = "2.8.0"; repoName = "videos"; @@ -29,22 +30,7 @@ stdenv.mkDerivation rec { owner = "elementary"; repo = repoName; rev = version; - sha256 = "04nl9kn33dysvsg0n5qx1z8qgrifkgfwsm7gh1l308v3n8c69lh7"; - }; - - patches = [ - # Upstream code not respecting our localedir - # https://github.com/elementary/videos/pull/233 - (fetchpatch { - url = "https://github.com/elementary/videos/commit/19ba2a9148be09ea521d2e9ac29dede6b9c6fa07.patch"; - sha256 = "0ffp7ana98846xi7vxrzfg6dbs4yy28x2i4ky85mqs1gj6fjqin5"; - }) - ]; - - passthru = { - updateScript = nix-update-script { - attrPath = "pantheon.${pname}"; - }; + sha256 = "sha256-FFCtQ42LygfjowehwZcISWTfv8PBZTH0X8mPrpiG8Ug="; }; nativeBuildInputs = [ @@ -70,6 +56,7 @@ stdenv.mkDerivation rec { gstreamer gtk3 libgee + libhandy ]; postPatch = '' @@ -77,6 +64,12 @@ stdenv.mkDerivation rec { patchShebangs meson/post_install.py ''; + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + meta = with lib; { description = "Video player and library app designed for elementary OS"; homepage = "https://github.com/elementary/videos"; diff --git a/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix b/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix index a3dd5a694373..c5ccba962e44 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix @@ -1,7 +1,6 @@ { lib , stdenv , fetchFromGitHub -, fetchpatch , nix-update-script , pantheon , meson @@ -17,7 +16,7 @@ stdenv.mkDerivation rec { pname = "elementary-default-settings"; - version = "6.0.1"; + version = "6.0.2"; repoName = "default-settings"; @@ -25,18 +24,9 @@ stdenv.mkDerivation rec { owner = "elementary"; repo = repoName; rev = version; - sha256 = "0gqnrm968j4v699yhhiyw5fqjy4zbvvrjci2v1jrlycn09c2yrwf"; + sha256 = "sha256-qaPj/Qp7RYzHgElFdM8bHV42oiPUbCMTC9Q+MUj4Q6Y="; }; - patches = [ - # Update gtk-theme-name and gtk-font-name for Pantheon 6 - # https://github.com/elementary/default-settings/pull/252 - (fetchpatch { - url = "https://github.com/elementary/default-settings/commit/be24c151492bb9115c75bd1a7abc88714240294a.patch"; - sha256 = "sha256-EglFiN4CLbL8osfNGLvjD220Al35uBXuRNC9Ud3QYBI="; - }) - ]; - nativeBuildInputs = [ accountsservice dbus diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix index ad030277463c..8226ed5b0b3c 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix @@ -1,6 +1,6 @@ -{ lib, stdenv +{ lib +, stdenv , fetchFromGitHub -, fetchpatch , nix-update-script , substituteAll , pantheon @@ -24,20 +24,24 @@ stdenv.mkDerivation rec { pname = "wingpanel-indicator-datetime"; - version = "2.3.0"; + version = "2.3.1"; src = fetchFromGitHub { owner = "elementary"; repo = pname; rev = version; - sha256 = "1mdm0fsnmmyw8c0ik2jmfri3kas9zkz1hskzf8wvbd51vnazfpgw"; + sha256 = "sha256-/kbwZVzOlC3ATCuXVMdf2RIskoGQKG1evaDYO3yFerg="; }; - passthru = { - updateScript = nix-update-script { - attrPath = "pantheon.${pname}"; - }; - }; + patches = [ + (substituteAll { + src = ./fix-paths.patch; + elementary_calendar = elementary-calendar; + }) + # Fix incorrect month shown on re-opening indicator if previously changed month + # https://github.com/elementary/wingpanel-indicator-datetime/pull/284 + ./fix-incorrect-month.patch + ]; nativeBuildInputs = [ libxml2 @@ -60,24 +64,17 @@ stdenv.mkDerivation rec { libgdata # required by some dependency transitively ]; - patches = [ - (substituteAll { - src = ./fix-paths.patch; - elementary_calendar = elementary-calendar; - }) - # Upstream code not respecting our localedir - # https://github.com/elementary/wingpanel-indicator-datetime/pull/269 - (fetchpatch { - url = "https://github.com/elementary/wingpanel-indicator-datetime/commit/f7befa68a9fd6215297c334a366919d3431cae65.patch"; - sha256 = "0l997b1pnpjscs886xy28as5yykxamxacvxdv8466zin7zynarfs"; - }) - ]; - postPatch = '' chmod +x meson/post_install.py patchShebangs meson/post_install.py ''; + passthru = { + updateScript = nix-update-script { + attrPath = "pantheon.${pname}"; + }; + }; + meta = with lib; { description = "Date & Time Indicator for Wingpanel"; homepage = "https://github.com/elementary/wingpanel-indicator-datetime"; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/fix-incorrect-month.patch b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/fix-incorrect-month.patch new file mode 100644 index 000000000000..7e0dc09b16c2 --- /dev/null +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/fix-incorrect-month.patch @@ -0,0 +1,26 @@ +From 401cb05d7181e69ae8edd347644f2518904e9acb Mon Sep 17 00:00:00 2001 +From: Jeremy Paul Wootten +Date: Sat, 30 Oct 2021 17:44:12 +0100 +Subject: [PATCH] Reset position and relative position after rebuilding + carousel + +--- + src/Widgets/calendar/CalendarView.vala | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/Widgets/calendar/CalendarView.vala b/src/Widgets/calendar/CalendarView.vala +index a41b37a4..f946b91c 100644 +--- a/src/Widgets/calendar/CalendarView.vala ++++ b/src/Widgets/calendar/CalendarView.vala +@@ -216,7 +216,11 @@ public class DateTime.Widgets.CalendarView : Gtk.Grid { + carousel.add (right_grid); + carousel.scroll_to (start_month_grid); + label.label = calmodel.month_start.format (_("%OB, %Y")); ++ ++ position = 1; ++ rel_postion = 0; + } ++ + carousel.no_show_all = false; + } + diff --git a/pkgs/development/interpreters/clojure/default.nix b/pkgs/development/interpreters/clojure/default.nix index 4a6a82e1aa21..2a44ca4161c3 100644 --- a/pkgs/development/interpreters/clojure/default.nix +++ b/pkgs/development/interpreters/clojure/default.nix @@ -2,12 +2,12 @@ stdenv.mkDerivation rec { pname = "clojure"; - version = "1.10.3.998"; + version = "1.10.3.1013"; src = fetchurl { # https://clojure.org/releases/tools url = "https://download.clojure.org/install/clojure-tools-${version}.tar.gz"; - sha256 = "zvIgswjAGfvaTKRb29KGKETqggjmOToCBzb99/C7chA="; + sha256 = "EmIdcQ7ANbDjOBUX/UQwdd1C+JzeCZaC4XaNdW49E/A="; }; nativeBuildInputs = [ diff --git a/pkgs/development/libraries/arrow-cpp/default.nix b/pkgs/development/libraries/arrow-cpp/default.nix index 7f3896f41be5..fe06a64bcf56 100644 --- a/pkgs/development/libraries/arrow-cpp/default.nix +++ b/pkgs/development/libraries/arrow-cpp/default.nix @@ -1,6 +1,6 @@ { stdenv, lib, fetchurl, fetchFromGitHub, fixDarwinDylibNames , autoconf, boost, brotli, cmake, flatbuffers, gflags, glog, gtest, lz4 -, perl, python3, rapidjson, re2, snappy, thrift, utf8proc, which, xsimd +, perl, python3, rapidjson, re2, snappy, thrift, tzdata , utf8proc, which , zlib, zstd , enableShared ? !stdenv.hostPlatform.isStatic }: @@ -9,25 +9,25 @@ let arrow-testing = fetchFromGitHub { owner = "apache"; repo = "arrow-testing"; - rev = "6d98243093c0b36442da94de7010f3eacc2a9909"; - hash = "sha256-n57Fuz2k6sX1o3vYBmC41eRKGnyt9+YL5r3WTHHRRzw="; + rev = "a60b715263d9bbf7e744527fb0c084b693f58043"; + hash = "sha256-Dz1dCV0m5Y24qzXdVaqrZ7hK3MRSb4GF0PXrjMAsjZU="; }; parquet-testing = fetchFromGitHub { owner = "apache"; repo = "parquet-testing"; - rev = "ddd898958803cb89b7156c6350584d1cda0fe8de"; - hash = "sha256-gK04mj1Fuhkf82NDMrXplFa+cr/3Ij7I9VnYfinuJlg="; + rev = "d4d485956a643c693b5549e1a62d52ca61c170f1"; + hash = "sha256-GmOAS8gGhzDI0WzORMkWHRRUl/XBwmNen2d3VefZxxc="; }; in stdenv.mkDerivation rec { pname = "arrow-cpp"; - version = "5.0.0"; + version = "6.0.0"; src = fetchurl { url = "mirror://apache/arrow/arrow-${version}/apache-arrow-${version}.tar.gz"; - hash = "sha256-w7QxPspZTCD3Yag2cZchqvB2AAGviWuuw6tkQg/5kQo="; + hash = "sha256-adJo+egtPr71la0b3IPUywKyDBgZRqaGMfZkXXwfepA="; }; sourceRoot = "apache-arrow-${version}/cpp"; @@ -81,6 +81,8 @@ in stdenv.mkDerivation rec { preConfigure = '' patchShebangs build-support/ + substituteInPlace "src/arrow/vendored/datetime/tz.cpp" \ + --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" ''; cmakeFlags = [ @@ -117,7 +119,10 @@ in stdenv.mkDerivation rec { "-DCMAKE_INSTALL_RPATH=@loader_path/../lib" # needed for tools executables ] ++ lib.optional (!stdenv.isx86_64) "-DARROW_USE_SIMD=OFF"; - ARROW_XSIMD_URL = xsimd.src; + ARROW_XSIMD_URL = fetchurl { + url = "https://github.com/xtensor-stack/xsimd/archive/aeec9c872c8b475dedd7781336710f2dd2666cb2.tar.gz"; + sha256 = "09kvl962c6b0wnb7pb2n9dhvkflzwalgq6gwwi8628fgi9n1x10a"; + }; doInstallCheck = true; ARROW_TEST_DATA = @@ -148,10 +153,10 @@ in stdenv.mkDerivation rec { ''; meta = with lib; { - description = "A cross-language development platform for in-memory data"; + description = "A cross-language development platform for in-memory data"; homepage = "https://arrow.apache.org/"; license = licenses.asl20; platforms = platforms.unix; - maintainers = with maintainers; [ tobim veprbl ]; + maintainers = with maintainers; [ tobim veprbl cpcloud ]; }; } diff --git a/pkgs/development/libraries/libquotient/default.nix b/pkgs/development/libraries/libquotient/default.nix index b64e9de9ceed..eea7eeb88fc7 100644 --- a/pkgs/development/libraries/libquotient/default.nix +++ b/pkgs/development/libraries/libquotient/default.nix @@ -1,20 +1,25 @@ -{ mkDerivation, lib, fetchFromGitHub, cmake, qtbase, qtmultimedia }: +{ mkDerivation, lib, fetchFromGitHub, cmake, qtmultimedia }: mkDerivation rec { pname = "libquotient"; - version = "0.6.9"; + version = "0.6.11"; src = fetchFromGitHub { owner = "quotient-im"; repo = "libQuotient"; rev = version; - sha256 = "sha256-1YiS2b4lYknNSB+8LKB/s6AcF0yQVsakrkp6/Sjkczo="; + sha256 = "sha256-FPtxeZOfChIPi4e/h/eZkByH1QL3Fn0OJxe0dnMcTRw="; }; - buildInputs = [ qtbase qtmultimedia ]; + buildInputs = [ qtmultimedia ]; nativeBuildInputs = [ cmake ]; + cmakeFlags = [ + # we need libqtolm for this + "-DQuotient_ENABLE_E2EE=OFF" + ]; + meta = with lib; { description = "A Qt5 library to write cross-platform clients for Matrix"; homepage = "https://matrix.org/docs/projects/sdk/quotient"; diff --git a/pkgs/development/libraries/opendkim/default.nix b/pkgs/development/libraries/opendkim/default.nix index b3d18748f74b..22c5fca76a48 100644 --- a/pkgs/development/libraries/opendkim/default.nix +++ b/pkgs/development/libraries/opendkim/default.nix @@ -1,5 +1,5 @@ { lib, stdenv, fetchFromGitHub, pkg-config, libbsd, openssl, libmilter -, autoreconfHook, perl, makeWrapper }: +, autoreconfHook, perl, makeWrapper, unbound }: stdenv.mkDerivation rec { pname = "opendkim"; @@ -16,11 +16,11 @@ stdenv.mkDerivation rec { "--with-milter=${libmilter}" "ac_cv_func_malloc_0_nonnull=yes" "ac_cv_func_realloc_0_nonnull=yes" - ]; + ] ++ lib.optional stdenv.isDarwin "--with-unbound=${unbound}"; nativeBuildInputs = [ autoreconfHook pkg-config makeWrapper ]; - buildInputs = [ libbsd openssl libmilter perl ]; + buildInputs = [ libbsd openssl libmilter perl ] ++ lib.optional stdenv.isDarwin unbound; postInstall = '' wrapProgram $out/sbin/opendkim-genkey \ diff --git a/pkgs/development/python-modules/zstandard/default.nix b/pkgs/development/python-modules/zstandard/default.nix index 724a5d9d6794..5f8909577171 100755 --- a/pkgs/development/python-modules/zstandard/default.nix +++ b/pkgs/development/python-modules/zstandard/default.nix @@ -7,11 +7,11 @@ buildPythonPackage rec { pname = "zstandard"; - version = "0.15.2"; + version = "0.16.0"; src = fetchPypi { inherit pname version; - sha256 = "52de08355fd5cfb3ef4533891092bb96229d43c2069703d4aff04fdbedf9c92f"; + sha256 = "eaae2d3e8fdf8bfe269628385087e4b648beef85bb0c187644e7df4fb0fe9046"; }; propagatedBuildInputs = [ cffi ]; diff --git a/pkgs/development/tools/devpi-client/default.nix b/pkgs/development/tools/devpi-client/default.nix index 5ac113fda3e0..dcc3f38b995e 100644 --- a/pkgs/development/tools/devpi-client/default.nix +++ b/pkgs/development/tools/devpi-client/default.nix @@ -32,6 +32,12 @@ buildPythonApplication rec { sha256 = "24ac6d94108996efad4ff5185dabb1e5120ae238134b8175d6de2ca9e766cd92"; }; + postPatch = '' + # can be removed after 5.2.2, updated upstream + substituteInPlace setup.py \ + --replace "pluggy>=0.6.0,<1.0" "pluggy" + ''; + buildInputs = [ glibcLocales ]; propagatedBuildInputs = [ py devpi-common pluggy setuptools check-manifest pkginfo ]; diff --git a/pkgs/os-specific/linux/error-inject/default.nix b/pkgs/os-specific/linux/error-inject/default.nix new file mode 100644 index 000000000000..87a40580deb7 --- /dev/null +++ b/pkgs/os-specific/linux/error-inject/default.nix @@ -0,0 +1,68 @@ +{ lib, stdenv, fetchgit +, bison, flex, rasdaemon +}: + +{ + edac-inject = rasdaemon.inject; + + mce-inject = stdenv.mkDerivation rec { + pname = "mce-inject"; + version = "4cbe46321b4a81365ff3aafafe63967264dbfec5"; + + src = fetchgit { + url = "git://git.kernel.org/pub/scm/utils/cpu/mce/mce-inject.git"; + rev = version; + sha256 = "0gjapg2hrlxp8ssrnhvc19i3r1xpcnql7xv0zjgbv09zyha08g6z"; + }; + + nativeBuildInputs = [ bison flex ]; + + makeFlags = [ "destdir=${placeholder "out"}" ]; + + postInstall = '' + mkdir $out/sbin + mv $out/usr/sbin/mce-inject $out/sbin/mce-inject + + mkdir $out/test + cp test/* $out/test/. + ''; + + meta = with lib; { + description = "MCE error injection tool"; + license = licenses.gpl2Only; + platforms = platforms.linux; + maintainers = [ maintainers.evils ]; + }; + }; + + aer-inject = stdenv.mkDerivation rec { + pname = "aer-inject"; + version = "9bd5e2c7886fca72f139cd8402488a2235957d41"; + + src = fetchgit { + url = "git://git.kernel.org/pub/scm/linux/kernel/git/gong.chen/aer-inject.git"; + rev = version; + sha256 = "0bh6mzpk2mr4xidkammmkfk21b4dbq793qjg25ryyxd1qv0c6cg4"; + }; + + nativeBuildInputs = [ bison flex ]; + + # how is this necessary? + makeFlags = [ "DESTDIR=${placeholder "out"}" ]; + + postInstall = '' + mkdir $out/bin + mv $out/usr/local/aer-inject $out/bin/aer-inject + + mkdir -p $out/examples + cp examples/* $out/examples/. + ''; + + meta = with lib; { + description = "PCIE AER error injection tool"; + license = licenses.gpl2Only; + platforms = platforms.linux; + maintainers = [ maintainers.evils ]; + }; + }; +} diff --git a/pkgs/os-specific/linux/rasdaemon/default.nix b/pkgs/os-specific/linux/rasdaemon/default.nix new file mode 100644 index 000000000000..22ca59bff536 --- /dev/null +++ b/pkgs/os-specific/linux/rasdaemon/default.nix @@ -0,0 +1,111 @@ +{ lib, stdenv, fetchFromGitHub +, autoreconfHook +, glibcLocales, kmod, coreutils, perl +, dmidecode, hwdata, sqlite +, nixosTests +}: + +stdenv.mkDerivation rec { + pname = "rasdaemon"; + version = "0.6.7"; + + src = fetchFromGitHub { + owner = "mchehab"; + repo = "rasdaemon"; + rev = "v${version}"; + sha256 = "sha256-vyUDwqDe+HD4mka6smdQuVSM5U9uMv/TrfHkyqVJMIo="; + }; + + nativeBuildInputs = [ autoreconfHook ]; + + buildInputs = [ + coreutils + glibcLocales + hwdata + kmod + sqlite + (perl.withPackages (ps: with ps; [ DBI DBDSQLite ])) + ] + ++ lib.optionals (!stdenv.isAarch64) [ dmidecode ]; + + configureFlags = [ + "--sysconfdir=/etc" + "--localstatedir=/var" + "--with-sysconfdefdir=${placeholder "out"}/etc/sysconfig" + "--enable-sqlite3" + "--enable-aer" + "--enable-mce" + "--enable-extlog" + "--enable-non-standard" + "--enable-abrt-report" + "--enable-hisi-ns-decode" + "--enable-devlink" + "--enable-diskerror" + "--enable-memory-failure" + "--enable-memory-ce-pfa" + "--enable-amp-ns-decode" + ] + ++ lib.optionals (stdenv.isAarch64) [ "--enable-arm" ]; + + # The installation attempts to create the following directories: + # /var/lib/rasdaemon + # location of the RAS event log generated by rasdaemon -r + # /etc/ras/dimm_labels.d + # location of the DIMM labels generated by ras-mc-ctl + # /etc/sysconfig/rasdaemon + # location of rasdaemon config file, currently only used for CE PFA config + + # these are optional (for logging, DIMM label storage and user config) + # /var/lib/rasdaemon should be created by the NixOS module + # /etc/ras/dimm_labels.d should probably be generated, + # from user supplied content, in the NixOS module + # /etc/sysconfig/rasdaemon should be generated if there is user supplied content + # and default to $out/etc/sysconfig/rasdaemon which should hold the supplied default + + # therefore, stripping these from the generated Makefile + # (needed in the config flags because those set where the tools look for these) + +# easy way out, ends up installing /nix/store/...rasdaemon/bin in $out + + postConfigure = '' + substituteInPlace Makefile \ + --replace '"$(DESTDIR)/etc/ras/dimm_labels.d"' '"$(prefix)/etc/ras/dimm_labels.d"' + ''; + + outputs = [ "out" "dev" "man" "inject" ]; + + postInstall = '' + install -Dm 0755 contrib/edac-fake-inject $inject/bin/edac-fake-inject + install -Dm 0755 contrib/edac-tests $inject/bin/edac-tests + ''; + + postFixup = '' + # Fix dmidecode and modprobe paths + substituteInPlace $out/bin/ras-mc-ctl \ + --replace 'find_prog ("modprobe") or exit (1)' '"${kmod}/bin/modprobe"' + '' + + lib.optionalString (!stdenv.isAarch64) '' + substituteInPlace $out/bin/ras-mc-ctl \ + --replace 'find_prog ("dmidecode")' '"${dmidecode}/bin/dmidecode"' + ''; + + passthru.tests = nixosTests.rasdaemon; + + meta = with lib; { + description = '' + A Reliability, Availability and Serviceability (RAS) logging tool using EDAC kernel tracing events + ''; + longDescription = '' + Rasdaemon is a RAS (Reliability, Availability and Serviceability) logging + tool. It records memory errors, using the EDAC tracing events. EDAC is a + Linux kernel subsystem with handles detection of ECC errors from memory + controllers for most chipsets on i386 and x86_64 architectures. EDAC + drivers for other architectures like arm also exists. + ''; + homepage = "https://github.com/mchehab/rasdaemon"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + changelog = "https://github.com/mchehab/rasdaemon/blob/v${version}/ChangeLog"; + maintainers = with maintainers; [ evils ]; + }; +} diff --git a/pkgs/os-specific/linux/vm-tools/default.nix b/pkgs/os-specific/linux/vm-tools/default.nix new file mode 100644 index 000000000000..c5981bfc2713 --- /dev/null +++ b/pkgs/os-specific/linux/vm-tools/default.nix @@ -0,0 +1,16 @@ +{ lib, stdenv, linux }: + +stdenv.mkDerivation { + pname = "vm-tools"; + inherit (linux) version src; + + makeFlags = [ "sbindir=${placeholder "out"}/bin" ]; + + preConfigure = "cd tools/vm"; + + meta = with lib; { + inherit (linux.meta) license platforms; + description = "Set of virtual memory tools"; + maintainers = [ maintainers.evils ]; + }; +} diff --git a/pkgs/tools/misc/lsd/default.nix b/pkgs/tools/misc/lsd/default.nix index 54b3b443d0a4..c0d1c278bfdd 100644 --- a/pkgs/tools/misc/lsd/default.nix +++ b/pkgs/tools/misc/lsd/default.nix @@ -1,5 +1,4 @@ { lib -, nixosTests , fetchFromGitHub , rustPlatform , installShellFiles @@ -26,7 +25,18 @@ rustPlatform.buildRustPackage rec { # Found argument '--test-threads' which wasn't expected, or isn't valid in this context doCheck = false; - passthru.tests = { inherit (nixosTests) lsd; }; + doInstallCheck = true; + installCheckPhase = '' + runHook preInstallCheck + + testFile=$(mktemp /tmp/lsd-test.XXXX) + echo 'abc' > $testFile + $out/bin/lsd --classic --blocks "size,name" -l $testFile | grep "4 B $testFile" + $out/bin/lsd --version | grep "${version}" + rm $testFile + + runHook postInstallCheck + ''; meta = with lib; { homepage = "https://github.com/Peltoche/lsd"; diff --git a/pkgs/tools/misc/qt5ct/default.nix b/pkgs/tools/misc/qt5ct/default.nix index 133a1a87d661..bbb8f96f5fb6 100644 --- a/pkgs/tools/misc/qt5ct/default.nix +++ b/pkgs/tools/misc/qt5ct/default.nix @@ -4,11 +4,11 @@ let inherit (lib) getDev; in mkDerivation rec { pname = "qt5ct"; - version = "1.3"; + version = "1.5"; src = fetchurl { url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2"; - sha256 = "sha256-3UQ7FOWQr/dqFuExbVbmiIguMkjEcN9PcbyVJWnzw7w="; + sha256 = "sha256-1j0M4W4CQnIH2GUx9wpxxbnIUARN1bLcsihVMfQW5JA="; }; nativeBuildInputs = [ qmake qttools ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8ed82217a4a2..fe6a6ab5f6b3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -21752,6 +21752,8 @@ with pkgs; ebtables = callPackage ../os-specific/linux/ebtables { }; + error-inject = callPackages ../os-specific/linux/error-inject { }; + extrace = callPackage ../os-specific/linux/extrace { }; facetimehd-firmware = callPackage ../os-specific/linux/firmware/facetimehd-firmware { }; @@ -22387,6 +22389,8 @@ with pkgs; radeontop = callPackage ../os-specific/linux/radeontop { }; + rasdaemon = callPackage ../os-specific/linux/rasdaemon { }; + raspberrypifw = callPackage ../os-specific/linux/firmware/raspberrypi {}; raspberrypiWirelessFirmware = callPackage ../os-specific/linux/firmware/raspberrypi-wireless { }; diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 4220d57aee1d..c5bda0b37142 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -432,6 +432,8 @@ in { virtualbox = pkgs.virtualboxHardened; }; + vm-tools = callPackage ../os-specific/linux/vm-tools { }; + wireguard = if lib.versionOlder kernel.version "5.6" then callPackage ../os-specific/linux/wireguard { } else null; x86_energy_perf_policy = callPackage ../os-specific/linux/x86_energy_perf_policy { };