diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 13fcc20ef3f3..e5b51f01540d 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -14668,6 +14668,11 @@ githubId = 146413; name = "Tobias Poschwatta"; }; + poweredbypie = { + name = "poweredbypie"; + github = "poweredbypie"; + githubId = 67135060; + }; PowerUser64 = { email = "blakelysnorth@gmail.com"; github = "PowerUser64"; diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix index b872142c313c..9885c9cfcf99 100644 --- a/maintainers/team-list.nix +++ b/maintainers/team-list.nix @@ -429,6 +429,7 @@ with lib.maintainers; { cleeyv ryantm lassulus + yayayayaka ]; scope = "Maintain Jitsi."; shortName = "Jitsi"; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 674707ec69e7..820ce54ddeb6 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -971,6 +971,7 @@ ./services/networking/iwd.nix ./services/networking/jibri/default.nix ./services/networking/jicofo.nix + ./services/networking/jigasi.nix ./services/networking/jitsi-videobridge.nix ./services/networking/jool.nix ./services/networking/kea.nix diff --git a/nixos/modules/services/misc/tandoor-recipes.nix b/nixos/modules/services/misc/tandoor-recipes.nix index 2d7d29b2e717..6c51a9bb8555 100644 --- a/nixos/modules/services/misc/tandoor-recipes.nix +++ b/nixos/modules/services/misc/tandoor-recipes.nix @@ -12,7 +12,7 @@ let DEBUG_TOOLBAR = "0"; MEDIA_ROOT = "/var/lib/tandoor-recipes"; } // optionalAttrs (config.time.timeZone != null) { - TIMEZONE = config.time.timeZone; + TZ = config.time.timeZone; } // ( lib.mapAttrs (_: toString) cfg.extraConfig ); diff --git a/nixos/modules/services/networking/jigasi.nix b/nixos/modules/services/networking/jigasi.nix new file mode 100644 index 000000000000..8d2d25c6edfc --- /dev/null +++ b/nixos/modules/services/networking/jigasi.nix @@ -0,0 +1,237 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.jigasi; + homeDirName = "jigasi-home"; + stateDir = "/tmp"; + sipCommunicatorPropertiesFile = "${stateDir}/${homeDirName}/sip-communicator.properties"; + sipCommunicatorPropertiesFileUnsubstituted = "${pkgs.jigasi}/etc/jitsi/jigasi/sip-communicator.properties"; +in +{ + options.services.jigasi = with types; { + enable = mkEnableOption "Jitsi Gateway to SIP - component of Jitsi Meet"; + + xmppHost = mkOption { + type = str; + example = "localhost"; + description = '' + Hostname of the XMPP server to connect to. + ''; + }; + + xmppDomain = mkOption { + type = nullOr str; + example = "meet.example.org"; + description = '' + Domain name of the XMMP server to which to connect as a component. + + If null, is used. + ''; + }; + + componentPasswordFile = mkOption { + type = str; + example = "/run/keys/jigasi-component"; + description = '' + Path to file containing component secret. + ''; + }; + + userName = mkOption { + type = str; + default = "callcontrol"; + description = '' + User part of the JID for XMPP user connection. + ''; + }; + + userDomain = mkOption { + type = str; + example = "internal.meet.example.org"; + description = '' + Domain part of the JID for XMPP user connection. + ''; + }; + + userPasswordFile = mkOption { + type = str; + example = "/run/keys/jigasi-user"; + description = '' + Path to file containing password for XMPP user connection. + ''; + }; + + bridgeMuc = mkOption { + type = str; + example = "jigasibrewery@internal.meet.example.org"; + description = '' + JID of the internal MUC used to communicate with Videobridges. + ''; + }; + + defaultJvbRoomName = mkOption { + type = str; + default = ""; + example = "siptest"; + description = '' + Name of the default JVB room that will be joined if no special header is included in SIP invite. + ''; + }; + + environmentFile = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + File containing environment variables to be passed to the jigasi service, + in which secret tokens can be specified securely by defining values for + JIGASI_SIPUSER, + JIGASI_SIPPWD, + JIGASI_SIPSERVER and + JIGASI_SIPPORT. + ''; + }; + + config = mkOption { + type = attrsOf str; + default = { }; + example = literalExample '' + { + "org.jitsi.jigasi.auth.URL" = "XMPP:jitsi-meet.example.com"; + } + ''; + description = '' + Contents of the sip-communicator.properties configuration file for jigasi. + ''; + }; + }; + + config = mkIf cfg.enable { + services.jicofo.config = { + "org.jitsi.jicofo.jigasi.BREWERY" = "${cfg.bridgeMuc}"; + }; + + services.jigasi.config = mapAttrs (_: v: mkDefault v) { + "org.jitsi.jigasi.BRIDGE_MUC" = cfg.bridgeMuc; + }; + + users.groups.jitsi-meet = {}; + + systemd.services.jigasi = let + jigasiProps = { + "-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION" = "${stateDir}"; + "-Dnet.java.sip.communicator.SC_HOME_DIR_NAME" = "${homeDirName}"; + "-Djava.util.logging.config.file" = "${pkgs.jigasi}/etc/jitsi/jigasi/logging.properties"; + }; + in + { + description = "Jitsi Gateway to SIP"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + preStart = '' + [ -f "${sipCommunicatorPropertiesFile}" ] && rm -f "${sipCommunicatorPropertiesFile}" + mkdir -p "$(dirname ${sipCommunicatorPropertiesFile})" + temp="${sipCommunicatorPropertiesFile}.unsubstituted" + + export DOMAIN_BASE="${cfg.xmppDomain}" + export JIGASI_XMPP_PASSWORD=$(cat "${cfg.userPasswordFile}") + export JIGASI_DEFAULT_JVB_ROOM_NAME="${cfg.defaultJvbRoomName}" + + # encode the credentials to base64 + export JIGASI_SIPPWD=$(echo -n "$JIGASI_SIPPWD" | base64 -w 0) + export JIGASI_XMPP_PASSWORD_BASE64=$(cat "${cfg.userPasswordFile}" | base64 -w 0) + + cp "${sipCommunicatorPropertiesFileUnsubstituted}" "$temp" + chmod 644 "$temp" + cat <>"$temp" + net.java.sip.communicator.impl.protocol.sip.acc1403273890647.SERVER_PORT=$JIGASI_SIPPORT + net.java.sip.communicator.impl.protocol.sip.acc1403273890647.PREFERRED_TRANSPORT=udp + EOF + chmod 444 "$temp" + + # Replace <<$VAR_NAME>> from example config to $VAR_NAME for environment substitution + sed -i -E \ + 's/<<([^>]+)>>/\$\1/g' \ + "$temp" + + sed -i \ + 's|\(net\.java\.sip\.communicator\.impl\.protocol\.jabber\.acc-xmpp-1\.PASSWORD=\).*|\1\$JIGASI_XMPP_PASSWORD_BASE64|g' \ + "$temp" + + sed -i \ + 's|\(#\)\(org.jitsi.jigasi.DEFAULT_JVB_ROOM_NAME=\).*|\2\$JIGASI_DEFAULT_JVB_ROOM_NAME|g' \ + "$temp" + + ${pkgs.envsubst}/bin/envsubst \ + -o "${sipCommunicatorPropertiesFile}" \ + -i "$temp" + + # Set the brewery room name + sed -i \ + 's|\(net\.java\.sip\.communicator\.impl\.protocol\.jabber\.acc-xmpp-1\.BREWERY=\).*|\1${cfg.bridgeMuc}|g' \ + "${sipCommunicatorPropertiesFile}" + sed -i \ + 's|\(org\.jitsi\.jigasi\.ALLOWED_JID=\).*|\1${cfg.bridgeMuc}|g' \ + "${sipCommunicatorPropertiesFile}" + + + # Disable certificate verification for self-signed certificates + sed -i \ + 's|\(# \)\(net.java.sip.communicator.service.gui.ALWAYS_TRUST_MODE_ENABLED=true\)|\2|g' \ + "${sipCommunicatorPropertiesFile}" + ''; + + restartTriggers = [ + config.environment.etc."jitsi/jigasi/sip-communicator.properties".source + ]; + environment.JAVA_SYS_PROPS = concatStringsSep " " (mapAttrsToList (k: v: "${k}=${toString v}") jigasiProps); + + script = '' + ${pkgs.jigasi}/bin/jigasi \ + --host="${cfg.xmppHost}" \ + --domain="${if cfg.xmppDomain == null then cfg.xmppHost else cfg.xmppDomain}" \ + --secret="$(cat ${cfg.componentPasswordFile})" \ + --user_name="${cfg.userName}" \ + --user_domain="${cfg.userDomain}" \ + --user_password="$(cat ${cfg.userPasswordFile})" \ + --configdir="${stateDir}" \ + --configdirname="${homeDirName}" + ''; + + serviceConfig = { + Type = "exec"; + + DynamicUser = true; + User = "jigasi"; + Group = "jitsi-meet"; + + CapabilityBoundingSet = ""; + NoNewPrivileges = true; + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + PrivateDevices = true; + ProtectHostname = true; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_UNIX" ]; + RestrictNamespaces = true; + LockPersonality = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + StateDirectory = baseNameOf stateDir; + EnvironmentFile = cfg.environmentFile; + }; + }; + + environment.etc."jitsi/jigasi/sip-communicator.properties".source = + mkDefault "${sipCommunicatorPropertiesFile}"; + environment.etc."jitsi/jigasi/logging.properties".source = + mkDefault "${stateDir}/logging.properties-journal"; + }; + + meta.maintainers = lib.teams.jitsi.members; +} diff --git a/nixos/modules/services/web-apps/jitsi-meet.nix b/nixos/modules/services/web-apps/jitsi-meet.nix index 0c0eb66e65b7..c4505534d635 100644 --- a/nixos/modules/services/web-apps/jitsi-meet.nix +++ b/nixos/modules/services/web-apps/jitsi-meet.nix @@ -35,6 +35,7 @@ let domain = cfg.hostName; muc = "conference.${cfg.hostName}"; focus = "focus.${cfg.hostName}"; + jigasi = "jigasi.${cfg.hostName}"; }; bosh = "//${cfg.hostName}/http-bind"; websocket = "wss://${cfg.hostName}/xmpp-websocket"; @@ -145,6 +146,16 @@ in ''; }; + jigasi.enable = mkOption { + type = bool; + default = false; + description = '' + Whether to enable jigasi instance and configure it to connect to Prosody. + + Additional configuration is possible with . + ''; + }; + nginx.enable = mkOption { type = bool; default = true; @@ -224,7 +235,7 @@ in roomDefaultPublicJids = true; extraConfig = '' storage = "memory" - admins = { "focus@auth.${cfg.hostName}", "jvb@auth.${cfg.hostName}" } + admins = { "focus@auth.${cfg.hostName}", "jvb@auth.${cfg.hostName}", "jigasi@auth.${cfg.hostName}" } ''; #-- muc_room_cache_size = 1000 } @@ -263,6 +274,9 @@ in Component "focus.${cfg.hostName}" "client_proxy" target_address = "focus@auth.${cfg.hostName}" + Component "jigasi.${cfg.hostName}" "client_proxy" + target_address = "jigasi@auth.${cfg.hostName}" + Component "speakerstats.${cfg.hostName}" "speakerstats_component" muc_component = "conference.${cfg.hostName}" @@ -356,7 +370,10 @@ in ${config.services.prosody.package}/bin/prosodyctl mod_roster_command subscribe focus.${cfg.hostName} focus@auth.${cfg.hostName} ${config.services.prosody.package}/bin/prosodyctl register jibri auth.${cfg.hostName} "$(cat /var/lib/jitsi-meet/jibri-auth-secret)" ${config.services.prosody.package}/bin/prosodyctl register recorder recorder.${cfg.hostName} "$(cat /var/lib/jitsi-meet/jibri-recorder-secret)" + '' + optionalString cfg.jigasi.enable '' + ${config.services.prosody.package}/bin/prosodyctl register jigasi auth.${cfg.hostName} "$(cat /var/lib/jitsi-meet/jigasi-user-secret)" ''; + serviceConfig = { EnvironmentFile = [ "/var/lib/jitsi-meet/secrets-env" ]; SupplementaryGroups = [ "jitsi-meet" ]; @@ -371,13 +388,13 @@ in systemd.services.jitsi-meet-init-secrets = { wantedBy = [ "multi-user.target" ]; - before = [ "jicofo.service" "jitsi-videobridge2.service" ] ++ (optional cfg.prosody.enable "prosody.service"); + before = [ "jicofo.service" "jitsi-videobridge2.service" ] ++ (optional cfg.prosody.enable "prosody.service") ++ (optional cfg.jigasi.enable "jigasi.service"); serviceConfig = { Type = "oneshot"; }; script = let - secrets = [ "jicofo-component-secret" "jicofo-user-secret" "jibri-auth-secret" "jibri-recorder-secret" ] ++ (optional (cfg.videobridge.passwordFile == null) "videobridge-secret"); + secrets = [ "jicofo-component-secret" "jicofo-user-secret" "jibri-auth-secret" "jibri-recorder-secret" ] ++ (optionals cfg.jigasi.enable [ "jigasi-user-secret" "jigasi-component-secret" ]) ++ (optional (cfg.videobridge.passwordFile == null) "videobridge-secret"); in '' cd /var/lib/jitsi-meet @@ -391,6 +408,7 @@ in # for easy access in prosody echo "JICOFO_COMPONENT_SECRET=$(cat jicofo-component-secret)" > secrets-env + echo "JIGASI_COMPONENT_SECRET=$(cat jigasi-component-secret)" >> secrets-env chown root:jitsi-meet secrets-env chmod 640 secrets-env '' @@ -592,6 +610,20 @@ in stripFromRoomDomain = "conference."; }; }; + + services.jigasi = mkIf cfg.jigasi.enable { + enable = true; + xmppHost = "localhost"; + xmppDomain = cfg.hostName; + userDomain = "auth.${cfg.hostName}"; + userName = "jigasi"; + userPasswordFile = "/var/lib/jitsi-meet/jigasi-user-secret"; + componentPasswordFile = "/var/lib/jitsi-meet/jigasi-component-secret"; + bridgeMuc = "jigasibrewery@internal.${cfg.hostName}"; + config = { + "org.jitsi.jigasi.ALWAYS_TRUST_MODE_ENABLED" = "true"; + }; + }; }; meta.doc = ./jitsi-meet.md; diff --git a/pkgs/applications/editors/vscode/extensions/default.nix b/pkgs/applications/editors/vscode/extensions/default.nix index 12a7c1768aed..d53c8af3fa68 100644 --- a/pkgs/applications/editors/vscode/extensions/default.nix +++ b/pkgs/applications/editors/vscode/extensions/default.nix @@ -3557,8 +3557,8 @@ let mktplcRef = { name = "uiua-vscode"; publisher = "uiua-lang"; - version = "0.0.25"; - sha256 = "sha256-qM+CLV8jWYkJWXZyELnR1H9pSWFifAOGqH+LgHr7nNA="; + version = "0.0.26"; + sha256 = "sha256-EKWThidMgbd+a4Vw4SQo988ggVbCTnCakohvq3/mZQ0="; }; meta = { description = "VSCode language extension for Uiua"; diff --git a/pkgs/applications/misc/lttoolbox/default.nix b/pkgs/applications/misc/lttoolbox/default.nix new file mode 100644 index 000000000000..25dbeba7d953 --- /dev/null +++ b/pkgs/applications/misc/lttoolbox/default.nix @@ -0,0 +1,65 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, autoconf +, automake +, pkg-config +, utf8cpp +, libtool +, libxml2 +, icu +, python3 +}: + +stdenv.mkDerivation rec { + pname = "lttoolbox"; + version = "3.7.1"; + + src = fetchFromGitHub { + owner = "apertium"; + repo = "lttoolbox"; + rev = "refs/tags/v${version}"; + hash = "sha256-3lHXKtwQSrMGQEGOGr27e3kB2qKkTFZcEzeAnIm89Rg="; + }; + + patches = [ + # can be removed once the version goes past this commit + # https://github.com/apertium/lttoolbox/commit/e682fe18a96d5a865cfbd3e5661dbc7b3ace1821 + (fetchpatch { + url = "https://github.com/apertium/lttoolbox/commit/e682fe18a96d5a865cfbd3e5661dbc7b3ace1821.patch"; + hash = "sha256-VeP8Mv2KYxX+eVjIRw/jHbURaWN665+fiFaoT3VxAno="; + }) + ]; + + nativeBuildInputs = [ + autoconf + automake + pkg-config + utf8cpp + libtool + ]; + buildInputs = [ + libxml2 + icu + ]; + buildFlags = [ + "CPPFLAGS=-I${utf8cpp}/include/utf8cpp" + ]; + configurePhase = '' + ./autogen.sh --prefix $out + ''; + doCheck = true; + checkPhase = '' + ${python3}/bin/python3 tests/run_tests.py + ''; + + meta = with lib; { + description = "Finite state compiler, processor and helper tools used by apertium"; + homepage = "https://github.com/apertium/lttoolbox"; + maintainers = with maintainers; [ onthestairs ]; + changelog = "https://github.com/apertium/lttoolbox/releases/tag/v${version}"; + license = licenses.gpl2; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/pkgs/applications/misc/tandoor-recipes/common.nix b/pkgs/applications/misc/tandoor-recipes/common.nix index fe52c50a1f8e..40882205420a 100644 --- a/pkgs/applications/misc/tandoor-recipes/common.nix +++ b/pkgs/applications/misc/tandoor-recipes/common.nix @@ -1,15 +1,15 @@ { lib, fetchFromGitHub }: rec { - version = "1.5.6"; + version = "1.5.10"; src = fetchFromGitHub { owner = "TandoorRecipes"; repo = "recipes"; rev = version; - hash = "sha256-3sitrTaIRKmjx+5vWOQXE0/Gu0jJ8VCpOq2cZZVLrbk="; + hash = "sha256-CkqNPG57e76TT/vF9lscS6m2FbXOvOfqiT/9aM2Il9E="; }; - yarnHash = "sha256-mZ8beCF+3mnpgKED0fP96RBbGbKNNXqEJkGSjgrEGBc="; + yarnHash = "sha256-atl2XrY9LmWh2USp6K2W50/khEsnY6OqKBUS26Ln9ZM="; meta = with lib; { homepage = "https://tandoor.dev/"; diff --git a/pkgs/applications/misc/tandoor-recipes/default.nix b/pkgs/applications/misc/tandoor-recipes/default.nix index f5ce961e401a..2dde47d25f27 100644 --- a/pkgs/applications/misc/tandoor-recipes/default.nix +++ b/pkgs/applications/misc/tandoor-recipes/default.nix @@ -5,28 +5,7 @@ , fetchpatch }: let - python = python3.override { - packageOverrides = self: super: { - django = super.django_4; - - django-crispy-forms = super.django-crispy-forms.overridePythonAttrs (_: rec { - version = "1.14.0"; - format = "setuptools"; - - src = fetchFromGitHub { - owner = "django-crispy-forms"; - repo = "django-crispy-forms"; - rev = "refs/tags/${version}"; - hash = "sha256-NZ2lWxsQHc7Qc4HDoWgjJTZ/bJHmjpBf3q1LVLtzA+8="; - }; - }); - - # Tests are incompatible with Django 4 - django-js-reverse = super.django-js-reverse.overridePythonAttrs (_: { - doCheck = false; - }); - }; - }; + python = python3; common = callPackage ./common.nix { }; @@ -44,8 +23,8 @@ python.pkgs.pythonPackages.buildPythonPackage rec { ./media-root.patch # https://github.com/TandoorRecipes/recipes/pull/2706 (fetchpatch { - url = "https://github.com/TandoorRecipes/recipes/commit/8f66f5c3ca61751a80cc133ff4c59019d6fca406.patch"; - hash = "sha256-oF5YlPg1LEdLvKpxiSqjTmYPbrGquPlRIz6A05031gs="; + url = "https://github.com/TandoorRecipes/recipes/commit/702c1d67d3b2d13cf471bf9daa1d2ef0f1837dec.patch"; + hash = "sha256-6vmtYs6b0d38Ojxxc2I7oxqpkIlyRVlhzURBOTO2VlQ="; }) ]; @@ -63,6 +42,7 @@ python.pkgs.pythonPackages.buildPythonPackage rec { django-cleanup django-cors-headers django-crispy-forms + django-crispy-bootstrap4 django-hcaptcha django-js-reverse django-oauth-toolkit @@ -145,6 +125,11 @@ python.pkgs.pythonPackages.buildPythonPackage rec { pytest-factoryboy ]; + # flaky + disabledTests = [ + "test_search_count" + ]; + passthru = { inherit frontend python; diff --git a/pkgs/by-name/ae/aeron-cpp/aeron-all.patch b/pkgs/by-name/ae/aeron-cpp/aeron-all.patch new file mode 100644 index 000000000000..40dd24c14b0c --- /dev/null +++ b/pkgs/by-name/ae/aeron-cpp/aeron-all.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -323,7 +323,7 @@ if (BUILD_AERON_ARCHIVE_API) + "${CMAKE_CURRENT_SOURCE_DIR}}/aeron-archive/src/main/java/*.java") + + add_custom_command(OUTPUT ${AERON_ALL_JAR} +- COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=$ENV{JAVA_HOME} BUILD_JAVA_HOME=$ENV{BUILD_JAVA_HOME} BUILD_JAVA_VERSION=$ENV{BUILD_JAVA_VERSION} ${GRADLE_WRAPPER} :aeron-all:clean :aeron-all:assemble --no-daemon -x javadoc --console=plain -q ++ COMMAND ln --symbolic ${CMAKE_CURRENT_SOURCE_DIR}/aeron-all.jar ${AERON_ALL_JAR} + DEPENDS ${AERON_ALL_SOURCES} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Generating aeron-all jar") diff --git a/pkgs/by-name/ae/aeron-cpp/aeron-archive-sbe.patch b/pkgs/by-name/ae/aeron-cpp/aeron-archive-sbe.patch new file mode 100644 index 000000000000..d4a845f2bf7b --- /dev/null +++ b/pkgs/by-name/ae/aeron-cpp/aeron-archive-sbe.patch @@ -0,0 +1,11 @@ +--- a/aeron-archive/src/main/cpp/CMakeLists.txt ++++ b/aeron-archive/src/main/cpp/CMakeLists.txt +@@ -59,7 +59,7 @@ set(GENERATED_CODECS + ${ARCHIVE_CODEC_TARGET_DIR}/aeron_archive_client/RecordingSignalEvent.h) + + add_custom_command(OUTPUT ${GENERATED_CODECS} +- COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=$ENV{JAVA_HOME} BUILD_JAVA_HOME=$ENV{BUILD_JAVA_HOME} BUILD_JAVA_VERSION=$ENV{BUILD_JAVA_VERSION} ${GRADLE_WRAPPER} -Dcodec.target.dir=${ARCHIVE_CODEC_TARGET_DIR} :aeron-archive:generateCppCodecs --no-daemon --console=plain -q ++ COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=$ENV{JAVA_HOME} BUILD_JAVA_HOME=$ENV{BUILD_JAVA_HOME} BUILD_JAVA_VERSION=$ENV{BUILD_JAVA_VERSION} java -cp sbe.jar -Dsbe.output.dir=${ARCHIVE_CODEC_TARGET_DIR} -Dsbe.target.language=Cpp -Dsbe.target.namespace=aeron.archive.client uk.co.real_logic.sbe.SbeTool ${ARCHIVE_CODEC_SCHEMA_DIR}/aeron-archive-codecs.xml + DEPENDS ${CODEC_SCHEMA} aeron-all-jar + WORKING_DIRECTORY ${ARCHIVE_CODEC_WORKING_DIR} + COMMENT "Generating C++ Archive codecs") diff --git a/pkgs/by-name/ae/aeron-cpp/package.nix b/pkgs/by-name/ae/aeron-cpp/package.nix new file mode 100644 index 000000000000..28feed78cc49 --- /dev/null +++ b/pkgs/by-name/ae/aeron-cpp/package.nix @@ -0,0 +1,134 @@ +{ + autoPatchelfHook, + cmake, + fetchFromGitHub, + fetchMavenArtifact, + jdk11, + lib, + libbsd, + libuuid, + makeWrapper, + patchelf, + stdenv, + zlib +}: + +let + version = "1.42.1"; + + aeronAll = fetchMavenArtifact { + artifactId = "aeron-all"; + groupId = "io.aeron"; + inherit version; + hash = "sha512-pjX+JopK6onDwElMIroj+ZXrKwdPj5H2uPg08XgNlrK1rAkHo9MUT8weBGbuFVFDLeqOZrHj0bt1wJ9XgYY5aA=="; + }; + + sbeAll_1_29_0 = fetchMavenArtifact { + groupId = "uk.co.real-logic"; + version = "1.29.0"; + artifactId = "sbe-all"; + hash = "sha512-exklKS9MgOH369lyuv+5vAWRHt+Iwg/FmsWy8PsSMjenvjs8I2KA1VTa00pIXkw/YNqbUDBIWvS07b4mS8YdPQ=="; + }; + + sbeAll = sbeAll_1_29_0; + +in + +stdenv.mkDerivation { + pname = "aeron-cpp"; + inherit version; + + src = fetchFromGitHub { + owner = "real-logic"; + repo = "aeron"; + rev = version; + hash = "sha256-ODJeJ4XLazPeNLdzaoclPnE59NpxFUqZu3Aw3iTVQT8="; + }; + + patches = [ + ./aeron-all.patch + # Use pre-built aeron-all.jar from Maven repo, avoiding Gradle + + ./aeron-archive-sbe.patch + # Use SBE tool to generate C++ codecs, avoiding Gradle + ]; + + buildInputs = [ + jdk11 + libbsd + libuuid + zlib + ]; + + nativeBuildInputs = [ + autoPatchelfHook + cmake + makeWrapper + patchelf + ]; + + configurePhase = '' + runHook preConfigure + + mkdir --parents cppbuild/Release + ( + cd cppbuild/Release + cmake \ + -G "CodeBlocks - Unix Makefiles" \ + -DCMAKE_BUILD_TYPE=Release \ + -DAERON_TESTS=OFF \ + -DAERON_SYSTEM_TESTS=OFF \ + -DAERON_BUILD_SAMPLES=OFF \ + -DCMAKE_INSTALL_PREFIX:PATH=../../install \ + ../.. + ) + + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + + ln --symbolic "${aeronAll.jar}" ./aeron-all.jar + ln --symbolic "${sbeAll.jar}" ./sbe.jar + mkdir --parents aeron-all/build/libs + ( + cd cppbuild/Release + + make -j $NIX_BUILD_CORES \ + aeron \ + aeron_archive_client \ + aeron_client_shared \ + aeron_driver \ + aeron_client \ + aeron_driver_static \ + aeronmd + + make -j $NIX_BUILD_CORES install + ) + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir --parents "$out" + cp --archive --verbose --target-directory="$out" install/* + + runHook postInstall + ''; + + meta = with lib; { + description = "Aeron Messaging C++ Library"; + homepage = "https://aeron.io/"; + license = licenses.asl20; + mainProgram = "aeronmd"; + maintainers = [ maintainers.vaci ]; + sourceProvenance = [ + sourceTypes.fromSource + sourceTypes.binaryBytecode + ]; + }; +} + diff --git a/pkgs/by-name/me/mercure/package.nix b/pkgs/by-name/me/mercure/package.nix index e90bd8d10ba4..06b674d6a5bb 100644 --- a/pkgs/by-name/me/mercure/package.nix +++ b/pkgs/by-name/me/mercure/package.nix @@ -8,18 +8,18 @@ buildGoModule rec { pname = "mercure"; - version = "0.15.5"; + version = "0.15.6"; src = fetchFromGitHub { owner = "dunglas"; repo = "mercure"; rev = "v${version}"; - hash = "sha256-DyKNKhxjnOfxYcp3w1nB6kxs9c4ZaHL0AN0Eb5vc6mA="; + hash = "sha256-sGMjb7Ilm+RqR6bRGLAYB/nciE5oHeitDllr4H11uHU="; }; sourceRoot = "source/caddy"; - vendorHash = "sha256-2SZv6iwEZjq/50WwwupfHjbg0vNpff/Cn21nPqeHJMw="; + vendorHash = "sha256-v0YKlkflo7eKXh38uqsnxZlLr3+fFl8EMeUsf8UMU48="; subPackages = [ "mercure" ]; excludedPackages = [ "../cmd/mercure" ]; diff --git a/pkgs/by-name/no/nomnatong/package.nix b/pkgs/by-name/no/nomnatong/package.nix new file mode 100644 index 000000000000..e4913f463e6b --- /dev/null +++ b/pkgs/by-name/no/nomnatong/package.nix @@ -0,0 +1,51 @@ +{ lib +, stdenvNoCC +, fetchFromGitHub +, python3Packages +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "nomnatong"; + version = "5.07"; + + src = fetchFromGitHub { + owner = "nomfoundation"; + repo = "font"; + rev = "v${finalAttrs.version}"; + hash = "sha256-31sqjOIrJByfTx4Ez6KvQDApCeVYMQnGeiM9INMR3zI="; + }; + + nativeBuildInputs = [ + python3Packages.afdko + python3Packages.fonttools + ]; + + sourceRoot = "${finalAttrs.src.name}/src"; + + buildPhase = '' + runHook preBuild + + makeotf -r -f font.pfa -omitMacNames -ff features.txt -mf FontMenuNameDB -ga -ci UnicodeVariationSequences.txt + otf2ttf NomNaTong-Regular.otf + sfntedit -d DSIG NomNaTong-Regular.otf + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + install -Dm444 NomNaTong-Regular.otf -t $out/share/fonts/opentype/ + install -Dm444 NomNaTong-Regular.ttf -t $out/share/fonts/truetype/ + + runHook postInstall + ''; + + meta = { + homepage = "http://nomfoundation.org/nom-tools/Nom-Font"; + description = "The Hán-Nôm Coded Character Set and Nom Na Tong Regular Reference Font"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ eclairevoyant ]; + platforms = lib.platforms.all; + }; +}) diff --git a/pkgs/by-name/sa/satty/package.nix b/pkgs/by-name/sa/satty/package.nix index 40592a3d7dc3..e358397a48b3 100644 --- a/pkgs/by-name/sa/satty/package.nix +++ b/pkgs/by-name/sa/satty/package.nix @@ -9,31 +9,22 @@ , gtk4 , libadwaita , pango -, fetchpatch , copyDesktopItems }: rustPlatform.buildRustPackage rec { pname = "satty"; - version = "0.7.0"; + version = "0.8.0"; src = fetchFromGitHub { owner = "gabm"; repo = "Satty"; rev = "v${version}"; - hash = "sha256-x2ljheG7ZqaeiPersC/e8Er2jvk5TJs65Y3N1GjTiNU="; + hash = "sha256-w2kosnPDWUZqp6iyj6ypAGRlmYSby+9B6epsAkFK6eY="; }; - cargoPatches = [ - (fetchpatch { - name = "fix-Cargo.lock"; - url = "https://github.com/gabm/Satty/commit/39be6ddce264552df971e949a6a3175b102530b2.patch"; - hash = "sha256-GUHupZE1A7AmXvZ8WvRzBkQyH7qlMTetBjHuakfIZ7w="; - }) - ]; - - cargoHash = "sha256-0GsbWd/gpKZm7nNXkuJhB02YKUj3XCrSfpRA9KBXydU="; + cargoHash = "sha256-XeuzoHXSiKtA9ofCBOMHnKKzcmur+/TS96DnzIfpqUA="; nativeBuildInputs = [ copyDesktopItems diff --git a/pkgs/by-name/ui/uiua/package.nix b/pkgs/by-name/ui/uiua/package.nix index 5e91612f3613..8ad589954ceb 100644 --- a/pkgs/by-name/ui/uiua/package.nix +++ b/pkgs/by-name/ui/uiua/package.nix @@ -14,16 +14,16 @@ rustPlatform.buildRustPackage rec { pname = "uiua"; - version = "0.5.1"; + version = "0.6.1"; src = fetchFromGitHub { owner = "uiua-lang"; repo = "uiua"; rev = version; - hash = "sha256-xDHr3U+Lc/C2L7jER2VqJvvw9mxCkDzO+K8tzC4Fw2A="; + hash = "sha256-/yeLsuwEKw6+jBKd7CAnR9RuVaKwXjVpcvO3v0FaAck="; }; - cargoHash = "sha256-9xjTXQJVGIvdx+SfJGPVa5Ax9wvS4Fms7blxAVrt6IY="; + cargoHash = "sha256-4tR1n96s91EFZLO4RIBpNKLjOSbGrBIApJrS60RBuQQ="; nativeBuildInputs = lib.optionals stdenv.isDarwin [ rustPlatform.bindgenHook diff --git a/pkgs/development/misc/datafusion/default.nix b/pkgs/development/misc/datafusion/default.nix index 49f33e016ed5..bcd937a914ea 100644 --- a/pkgs/development/misc/datafusion/default.nix +++ b/pkgs/development/misc/datafusion/default.nix @@ -7,19 +7,19 @@ rustPlatform.buildRustPackage rec { pname = "datafusion-cli"; - version = "32.0.0"; + version = "33.0.0"; src = fetchFromGitHub { name = "datafusion-cli-source"; owner = "apache"; repo = "arrow-datafusion"; rev = version; - sha256 = "sha256-QJOv2neEOxLvWoGuS3QyBqGOBi1KJQ8feK6LOrHBL8g="; + sha256 = "sha256-ywyzvk50Fr9TSaCrqd14lSi1PJ9ggA1YQ/X0aFGFk1M="; }; sourceRoot = "${src.name}/datafusion-cli"; - cargoHash = "sha256-NYdxDFUBOBC3nTZB8STdZfOz3Dw0htFCqE0qBRMzQvw="; + cargoHash = "sha256-0a/O9nNi3JLufQxG+5EgCXtV0y03X7R6UY+f/tVGB90="; buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security diff --git a/pkgs/development/python-modules/guppy3/default.nix b/pkgs/development/python-modules/guppy3/default.nix index 80b4a19019a3..5c102f10a551 100644 --- a/pkgs/development/python-modules/guppy3/default.nix +++ b/pkgs/development/python-modules/guppy3/default.nix @@ -7,15 +7,15 @@ buildPythonPackage rec { pname = "guppy3"; - version = "3.1.4"; + version = "3.1.4.post1"; format = "setuptools"; - disabled = pythonOlder "3.6"; + disabled = pythonOlder "3.8"; src = fetchFromGitHub { owner = "zhuyifei1999"; repo = pname; - rev = "v${version}"; - hash = "sha256-RMWIP4tVSCCEQpr0kZvsN1HwL6rBcLuubfBl175eSNg="; + rev = "refs/tags/v${version}"; + hash = "sha256-HHy57P6WEHZKygAbdjEh6XAApFlQueiYGr02eSQMWfc="; }; propagatedBuildInputs = [ tkinter ]; diff --git a/pkgs/development/python-modules/m2crypto/default.nix b/pkgs/development/python-modules/m2crypto/default.nix index f8ec95604542..7353831bad39 100644 --- a/pkgs/development/python-modules/m2crypto/default.nix +++ b/pkgs/development/python-modules/m2crypto/default.nix @@ -1,4 +1,5 @@ { lib +, stdenv , buildPythonPackage , fetchPypi , openssl @@ -10,7 +11,7 @@ buildPythonPackage rec { pname = "m2crypto"; - version = "0.39.0"; + version = "0.40.1"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -18,7 +19,7 @@ buildPythonPackage rec { src = fetchPypi { pname = "M2Crypto"; inherit version; - hash = "sha256-JMD0cTWLixmtTIqp2hLoaAMLZcH9syedAG32DJUBM4o="; + hash = "sha256-u/0RPsVXCMBYFiUqTwnkI33087v8gXHLvDMFfSV7uzA="; }; nativeBuildInputs = [ @@ -31,6 +32,11 @@ buildPythonPackage rec { parameterized ]; + env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin (toString [ + "-Wno-error=implicit-function-declaration" + "-Wno-error=incompatible-pointer-types" + ]); + nativeCheckInputs = [ pytestCheckHook ]; diff --git a/pkgs/development/tools/cue/default.nix b/pkgs/development/tools/cue/default.nix index 0ff3e90dc0db..1afee9cd7551 100644 --- a/pkgs/development/tools/cue/default.nix +++ b/pkgs/development/tools/cue/default.nix @@ -1,6 +1,5 @@ { buildGoModule , fetchFromGitHub -, fetchpatch , lib , installShellFiles , testers @@ -9,31 +8,18 @@ buildGoModule rec { pname = "cue"; - version = "0.6.0"; + version = "0.7.0"; src = fetchFromGitHub { owner = "cue-lang"; repo = "cue"; rev = "v${version}"; - hash = "sha256-1svWb83xbVZIlI9pviCYfQ6Kkp0QRjZwrauL7PPJLts="; + hash = "sha256-L2KEOnUmQ6K+VtyJEha0LBWPVt+FqNh94gi3cMg82x0="; }; - vendorHash = "sha256-ku4tPTXdnKau0kqnAAEHDdSF4oAC/6SDkTq8cECOiEk="; + vendorHash = "sha256-Eq51sydt2eu3pSCRjepvxpU01T0vr0axx9XEk34db28="; - patches = [ - # Fix tests with go1.21. See https://github.com/cue-lang/cue/issues/2548. - (fetchpatch { - url = "https://github.com/cue-lang/cue/commit/3bf3dbd655284d3628399a83a703f4849b5f9374.patch"; - hash = "sha256-9Zi2mrqB1JTFvadiqWTgzzi1pffZ3gOmTtrDDQWye1Q="; - }) - ]; - - postPatch = '' - # Disable script tests - rm -f cmd/cue/cmd/script_test.go - ''; - - excludedPackages = [ "internal/ci/updatetxtar" "internal/cmd/embedpkg" "internal/cmd/qgo" "pkg/gen" ]; + subPackages = [ "cmd/cue" ]; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/games/heroic/default.nix b/pkgs/games/heroic/default.nix index 9aacc0856c4f..239d78f973c8 100644 --- a/pkgs/games/heroic/default.nix +++ b/pkgs/games/heroic/default.nix @@ -17,18 +17,18 @@ let appName = "heroic"; in stdenv.mkDerivation rec { pname = "heroic-unwrapped"; - version = "2.10.0"; + version = "2.11.0"; src = fetchFromGitHub { owner = "Heroic-Games-Launcher"; repo = "HeroicGamesLauncher"; rev = "v${version}"; - hash = "sha256-umPQIxwIahjbO4QbkKEoeSSeYT2UatsTGRPrLgw5KW8="; + hash = "sha256-N+9wNlDARE1zdXW/vka6whFNu5CF240zCJ00EDT1cM0="; }; offlineCache = fetchYarnDeps { yarnLock = "${src}/yarn.lock"; - hash = "sha256-o5ztk4okH21Op1jqHZfranR12M8B1Y/K95aWb10tf5o="; + hash = "sha256-P7Mm9TMNjr2glLQppjJZRMeN9sYKyZWzRaerZIcY3Y8="; }; nativeBuildInputs = [ @@ -45,9 +45,6 @@ in stdenv.mkDerivation rec { ./remove-drm-support.patch # Make Heroic create Steam shortcuts (to non-steam games) with the correct path to heroic. ./fix-non-steam-shortcuts.patch - # Fix reg add infinite loop - # Submitted upstream: https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/pull/3210 - ./fix-infinite-loop.patch ]; postPatch = '' diff --git a/pkgs/games/heroic/fix-infinite-loop.patch b/pkgs/games/heroic/fix-infinite-loop.patch deleted file mode 100644 index 99aae02c3a1a..000000000000 --- a/pkgs/games/heroic/fix-infinite-loop.patch +++ /dev/null @@ -1,23 +0,0 @@ -From b698779053b7ba31bd8e69b230e86515e3019bf6 Mon Sep 17 00:00:00 2001 -From: K900 -Date: Sun, 5 Nov 2023 22:04:32 +0300 -Subject: [PATCH] Force add the registry entry - -Otherwise, newer Wine versions will prompt to overwrite it and loop there forever. ---- - src/backend/storeManagers/legendary/setup.ts | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/backend/storeManagers/legendary/setup.ts b/src/backend/storeManagers/legendary/setup.ts -index 1837106621..b5c2432435 100644 ---- a/src/backend/storeManagers/legendary/setup.ts -+++ b/src/backend/storeManagers/legendary/setup.ts -@@ -20,7 +20,7 @@ export const legendarySetup = async (appName: string) => { - - // Fixes games like Fallout New Vegas and Dishonored: Death of the Outsider - await runWineCommandOnGame(appName, { -- commandParts: ['reg', 'add', 'HKEY_CLASSES_ROOT\\com.epicgames.launcher'], -+ commandParts: ['reg', 'add', 'HKEY_CLASSES_ROOT\\com.epicgames.launcher', '/f'], - wait: true, - protonVerb: 'waitforexitandrun' - }) diff --git a/pkgs/os-specific/linux/raspberrypi-eeprom/default.nix b/pkgs/os-specific/linux/raspberrypi-eeprom/default.nix index 6a429a77c57b..6cc93b8dd3c6 100644 --- a/pkgs/os-specific/linux/raspberrypi-eeprom/default.nix +++ b/pkgs/os-specific/linux/raspberrypi-eeprom/default.nix @@ -3,13 +3,13 @@ }: stdenvNoCC.mkDerivation rec { pname = "raspberrypi-eeprom"; - version = "2023.01.11-138c0"; + version = "2023.10.30-2712"; src = fetchFromGitHub { owner = "raspberrypi"; repo = "rpi-eeprom"; - rev = "v${version}"; - hash = "sha256-z3VyqdSkvxAgVmtMI/Is9qYrOeDXlyVLwHSSC2+AxcA="; + rev = "refs/tags/v${version}"; + hash = "sha256-TKvby0qIXidM5Qk7q+ovLk0DpHsCbdQe7xndrgKrSXk="; }; buildInputs = [ python3 ]; @@ -24,18 +24,21 @@ stdenvNoCC.mkDerivation rec { ''; installPhase = '' - mkdir -p $out/bin $out/share/rpi-eeprom + mkdir -p "$out/bin" + cp rpi-eeprom-config rpi-eeprom-update rpi-eeprom-digest "$out/bin" - cp rpi-eeprom-config rpi-eeprom-update rpi-eeprom-digest $out/bin - cp -r firmware/{beta,critical,old,stable} $out/share/rpi-eeprom - cp -P firmware/default firmware/latest $out/share/rpi-eeprom + mkdir -p "$out/lib/firmware/raspberrypi" + for dirname in firmware-*; do + dirname_suffix="''${dirname/#firmware-}" + cp -rP "$dirname" "$out/lib/firmware/raspberrypi/bootloader-$dirname_suffix" + done ''; fixupPhase = '' patchShebangs $out/bin for i in rpi-eeprom-update rpi-eeprom-config; do wrapProgram $out/bin/$i \ - --set FIRMWARE_ROOT $out/share/rpi-eeprom \ + --set FIRMWARE_ROOT "$out/lib/firmware/raspberrypi/bootloader" \ ${lib.optionalString stdenvNoCC.isAarch64 "--set VCMAILBOX ${libraspberrypi}/bin/vcmailbox"} \ --prefix PATH : "${lib.makeBinPath ([ binutils-unwrapped @@ -51,9 +54,9 @@ stdenvNoCC.mkDerivation rec { ''; meta = with lib; { - description = "Installation scripts and binaries for the closed sourced Raspberry Pi 4 EEPROMs"; - homepage = "https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md"; + description = "Installation scripts and binaries for the closed sourced Raspberry Pi 4 and 5 bootloader EEPROMs"; + homepage = "https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-boot-eeprom"; license = with licenses; [ bsd3 unfreeRedistributableFirmware ]; - maintainers = with maintainers; [ das_j ]; + maintainers = with maintainers; [ das_j Luflosi ]; }; } diff --git a/pkgs/servers/aeron/default.nix b/pkgs/servers/aeron/default.nix index 5ce49660f4af..202f2748c4e8 100644 --- a/pkgs/servers/aeron/default.nix +++ b/pkgs/servers/aeron/default.nix @@ -1,138 +1,151 @@ { lib, stdenv, - fetchFromGitHub, + fetchMavenArtifact, jdk11, - gradle, - makeWrapper, - perl, - writeText + makeWrapper }: let pname = "aeron"; - version = "1.40.0"; + version = "1.42.1"; + groupId = "io.aeron"; - src = fetchFromGitHub { - owner = "real-logic"; - repo = pname; - rev = version; - sha256 = "sha256-4C5YofA/wxwa7bfc6IqsDrw8CLQWKoVBCIe8Ec7ifAg="; + aeronAll_1_40_0 = fetchMavenArtifact { + inherit groupId; + version = "1.40.0"; + artifactId = "aeron-all"; + hash = "sha512-NyhYaQqOWcSBwzwpje6DMAp36CEgGSNXBSdaRrDyP+Fn2Z0nvh5o2czog6GKKtbjH9inYfyyF/21gehfgLF6qA=="; }; - deps = stdenv.mkDerivation { - name = "${pname}-deps"; - inherit src; - - nativeBuildInputs = [ - gradle - jdk11 - perl - ]; - - buildPhase = '' - export GRADLE_USER_HOME=$(mktemp -d); - gradle \ - --console plain \ - --no-daemon \ - --system-prop org.gradle.java.home="${jdk11.home}" \ - --exclude-task javadoc \ - build - ''; - - # Mavenize dependency paths - # e.g. org.codehaus.groovy/groovy/2.4.0/{hash}/groovy-2.4.0.jar -> org/codehaus/groovy/groovy/2.4.0/groovy-2.4.0.jar - installPhase = '' - find "$GRADLE_USER_HOME/caches/modules-2" -type f -regex '.*\.\(jar\|pom\)' \ - | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \ - | sh - ln -s "$out/com/squareup/okio/okio/2.10.0/okio-jvm-2.10.0.jar" "$out/com/squareup/okio/okio/2.10.0/okio-2.10.0.jar" - ''; - - outputHashAlgo = "sha256"; - outputHashMode = "recursive"; - outputHash = "sha256-1hvQyEiCMfIw6wv9GOEehX0wrtBnAilVuTGUWAGoH6k="; + aeronAgent_1_40_0 = fetchMavenArtifact { + inherit groupId; + version = "1.40.0"; + artifactId = "aeron-agent"; + hash = "sha512-3XZ6XxPwlNchMe4p4MuDNTWntGokFPnetN7AUMlhXzIgeXBExXvn+BdxI2crfq/xgVGrF/hjHD2shwu2NBa0Tg=="; }; - # Point to our local deps repo - gradleInit = writeText "init.gradle" '' - settingsEvaluated { settings -> - settings.pluginManagement { - repositories { - clear() - maven { url '${deps}' } - } - } - } - gradle.projectsLoaded { - rootProject.allprojects { - repositories { - clear() - maven { url '${deps}' } - } - } - } - ''; + aeronArchive_1_40_0 = fetchMavenArtifact { + inherit groupId; + version = "1.40.0"; + artifactId = "aeron-archive"; + hash = "sha512-tmH+/020d1iNkGb8nvenDG9YU+H4PLuO2hSm2dULUIjSXX5AHLDkkrQ3uVQADV9koRNMtC4UXloqtqncay18kQ=="; + }; - # replace buildSrc - buildSrc = writeText "build.gradle" '' - repositories { - clear() - maven { url '${deps}' } - } + aeronClient_1_40_0 = fetchMavenArtifact { + inherit groupId; + version = "1.40.0"; + artifactId = "aeron-client"; + hash = "sha512-y3/8Lu2EgMICRNPEWe0hrKpVhF35pDjCO6ip/Af9nPZ70ZRqGmlfEG7OzWVok11DuI8pYJ64jv6bEtUfSHTYXQ=="; + }; - dependencies { - implementation 'org.asciidoctor:asciidoctorj:2.5.5' - implementation 'org.eclipse.jgit:org.eclipse.jgit:5.13.1.202206130422-r' - } - ''; + aeronCluster_1_40_0 =fetchMavenArtifact { + inherit groupId; + version = "1.40.0"; + artifactId = "aeron-cluster"; + hash = "sha512-28m14Etjse3MVKBLvaQONujMfvdRQZG0ArezzVcjPEqVqTGd33mrqjPngALV8CG2nJTtcrJmsieRGLEosaXqTw=="; + }; -in stdenv.mkDerivation rec { + aeronDriver_1_40_0 = fetchMavenArtifact { + inherit groupId; + version = "1.40.0"; + artifactId = "aeron-driver"; + hash = "sha512-SRWHMHR6J1YEtCbSHqSLYm3vo8XgkVXGK3cFQbONT60TZvawP5UlZs7e3eFNpu3qQSA4prqEjjWO9Xc9M/sjKw=="; + }; - inherit pname src version; + aeronSamples_1_40_0 = fetchMavenArtifact { + inherit groupId; + version = "1.40.0"; + artifactId = "aeron-samples"; + hash = "sha512-vyAq4mfLDDyaVk7wcIpPvPcxSt92Ek8mxfuuZwaX+0Wu9oJCpwbnjvS9+bvzcE4qSGxzY6eJIIX6nMdw0LkACg=="; + }; + + aeronAll_1_42_1 = fetchMavenArtifact { + inherit groupId; + artifactId = "aeron-all"; + inherit version; + hash = "sha512-pjX+JopK6onDwElMIroj+ZXrKwdPj5H2uPg08XgNlrK1rAkHo9MUT8weBGbuFVFDLeqOZrHj0bt1wJ9XgYY5aA=="; + }; + + aeronAgent_1_42_1 = fetchMavenArtifact { + inherit groupId; + version = "1.42.1"; + artifactId = "aeron-agent"; + hash = "sha512-3XZ6XvPwlNdiMe4p4MuDNTWntGokFPnetN7AUMlhXzIgeXBExXvn+BdxI2crfq/xgVGrF/hjHD2shwu2NBa0Tg=="; + }; + + aeronArchive_1_42_1 = fetchMavenArtifact { + inherit groupId; + version = "1.42.1"; + artifactId = "aeron-archive"; + hash = "sha512-1DmeI9flgfzanbP4jSNUSAQAv2SGBvnlb3G4LbO1m+BN/gPn/nahvVHzotvGJjJA5b65DE1Sc5tqPnItRTK0zQ=="; + }; + + aeronClient_1_42_1 = fetchMavenArtifact { + inherit groupId; + version = "1.42.1"; + artifactId = "aeron-client"; + hash = "sha512-td2k2WNpaD3+2PNvlCCJ8cZRr615sFjngiQDKzuY2e9/de1OUwvER3zzVAFOonEIV+s5EhwVeQvWq3Wj5Uhadg=="; + }; + + aeronCluster_1_42_1 =fetchMavenArtifact { + inherit groupId; + version = "1.42.1"; + artifactId = "aeron-cluster"; + hash = "sha512-RiqGeY3pRqN6wWpeJqbeB1SCxrZWnQghrJlCGhew2M/GZAaWHkhhJs5haJqRvR5oOAbaI4RfIWvi5U7TiUo88g=="; + }; + + aeronDriver_1_42_1 = fetchMavenArtifact { + inherit groupId; + version = "1.42.1"; + artifactId = "aeron-driver"; + hash = "sha512-fKEN5oQCxD1h3qPODKkqFwYbKW6L03RFHNylpsYaNlztNODlCJd0CS5dBR6K8rbOdb2dVIXK/dW/IPBvOi5q/g=="; + }; + aeronSamples_1_42_1 = fetchMavenArtifact { + inherit groupId; + version = "1.42.1"; + artifactId = "aeron-samples"; + hash = "sha512-4JnHn22vJf2lmOg6ev5PD+/YiaL3KgfuyWAK92djX3KBVXO7ERMY2kH79dveVCJG1rbekvE1j1pnjaAIxwJcqg=="; + }; + + aeronAll = aeronAll_1_42_1; + aeronArchive = aeronArchive_1_42_1; + aeronClient = aeronClient_1_42_1; + aeronCluster = aeronCluster_1_42_1; + aeronDriver= aeronDriver_1_42_1; + aeronSamples = aeronSamples_1_42_1; + +in stdenv.mkDerivation { + + inherit pname version; buildInputs = [ - jdk11 + aeronAll + aeronArchive + aeronClient + aeronCluster + aeronDriver + aeronSamples ]; nativeBuildInputs = [ - gradle makeWrapper ]; - buildPhase = '' - runHook preBuild - - export GRADLE_USER_HOME=$(mktemp -d) - cp ${buildSrc} ./buildSrc/build.gradle - - gradle \ - --console plain \ - --exclude-task checkstyleMain \ - --exclude-task checkstyleGenerated \ - --exclude-task checkstyleGeneratedTest \ - --exclude-task checkstyleMain \ - --exclude-task checkstyleTest \ - --exclude-task javadoc \ - --exclude-task test \ - --init-script "${gradleInit}" \ - --no-daemon \ - --offline \ - --project-prop VERSION=${version} \ - --system-prop org.gradle.java.home="${jdk11.home}" \ - assemble - - runHook postBuild - ''; + dontUnpack = true; + dontConfigure = true; + dontBuild = true; installPhase = '' runHook preInstall - install -D --mode=0444 --target-directory="$out/share/java" \ - "./aeron-all/build/libs/aeron-all-${version}.jar" \ - "./aeron-agent/build/libs/aeron-agent-${version}.jar" \ - "./aeron-archive/build/libs/aeron-archive-${version}.jar" \ - "./aeron-client/build/libs/aeron-client-${version}.jar" + mkdir --parents "$out/share/java" + ln --symbolic "${aeronAll.jar}" "$out/share/java/${pname}-all.jar" + ln --symbolic "${aeronArchive.jar}" "$out/share/java/${pname}-archive.jar" + ln --symbolic "${aeronClient.jar}" "$out/share/java/${pname}-client.jar" + ln --symbolic "${aeronCluster.jar}" "$out/share/java/${pname}-cluster.jar" + ln --symbolic "${aeronDriver.jar}" "$out/share/java/${pname}-driver.jar" + ln --symbolic "${aeronSamples.jar}" "$out/share/java/${pname}-samples.jar" runHook postInstall ''; @@ -141,7 +154,7 @@ in stdenv.mkDerivation rec { function wrap { makeWrapper "${jdk11}/bin/java" "$out/bin/$1" \ --add-flags "--add-opens java.base/sun.nio.ch=ALL-UNNAMED" \ - --add-flags "--class-path $out/share/java/aeron-all-${version}.jar" \ + --add-flags "--class-path ${aeronAll.jar}" \ --add-flags "$2" } @@ -150,30 +163,22 @@ in stdenv.mkDerivation rec { wrap "${pname}-archiving-media-driver" io.aeron.archive.ArchivingMediaDriver wrap "${pname}-archive-tool" io.aeron.archive.ArchiveTool wrap "${pname}-logging-agent" io.aeron.agent.DynamicLoggingAgent + wrap "${pname}-clustered-media-driver" io.aeron.cluster.ClusteredMediaDriver wrap "${pname}-cluster-tool" io.aeron.cluster.ClusterTool ''; - doCheck = true; - - checkPhase = '' - runHook preCheck - - gradle \ - --console plain \ - --init-script "${gradleInit}" \ - --no-daemon \ - --offline \ - --project-prop VERSION=${version} \ - --system-prop org.gradle.java.home="${jdk11.home}" \ - test - - runHook postCheck - ''; + passthru = { + jar = aeronAll.jar; + }; meta = with lib; { description = "Low-latency messaging library"; homepage = "https://aeron.io/"; license = licenses.asl20; + mainProgram = "${pname}-media-driver"; maintainers = [ maintainers.vaci ]; + sourceProvenance = [ + sourceTypes.binaryBytecode + ]; }; } diff --git a/pkgs/servers/jigasi/default.nix b/pkgs/servers/jigasi/default.nix new file mode 100644 index 000000000000..d9f8ed60c09b --- /dev/null +++ b/pkgs/servers/jigasi/default.nix @@ -0,0 +1,46 @@ +{ lib, stdenv, fetchurl, dpkg, jdk11, nixosTests }: + +let + pname = "jigasi"; + version = "1.1-311-g3de47d0"; + src = fetchurl { + url = "https://download.jitsi.org/stable/${pname}_${version}-1_all.deb"; + hash = "sha256-pwUgkId7AHFjbqYo02fBgm0gsiMqEz+wvwkdy6sgTD0="; + }; +in +stdenv.mkDerivation { + inherit pname version src; + + nativeBuildInputs = [ dpkg ]; + + dontBuild = true; + + unpackCmd = "dpkg-deb -x $src debcontents"; + + installPhase = '' + runHook preInstall + substituteInPlace usr/share/${pname}/${pname}.sh \ + --replace "exec java" "exec ${jdk11}/bin/java" + + mkdir -p $out/{share,bin} + mv usr/share/${pname} $out/share/ + mv etc $out/ + ln -s $out/share/${pname}/${pname}.sh $out/bin/${pname} + runHook postInstall + ''; + + passthru.tests = { + single-node-smoke-test = nixosTests.jitsi-meet; + }; + + meta = with lib; { + description = "A server-side application that allows regular SIP clients to join Jitsi Meet conferences"; + longDescription = '' + Jitsi Gateway to SIP: a server-side application that allows regular SIP clients to join Jitsi Meet conferences hosted by Jitsi Videobridge. + ''; + homepage = "https://github.com/jitsi/jigasi"; + license = licenses.asl20; + maintainers = teams.jitsi.members; + platforms = platforms.linux; + }; +} diff --git a/pkgs/shells/carapace/default.nix b/pkgs/shells/carapace/default.nix index 819e59d62dfc..c90096ca5a3c 100644 --- a/pkgs/shells/carapace/default.nix +++ b/pkgs/shells/carapace/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "carapace"; - version = "0.28.4"; + version = "0.28.5"; src = fetchFromGitHub { owner = "rsteube"; repo = "${pname}-bin"; rev = "v${version}"; - hash = "sha256-Yl/eRp+KRh9whSYjB3IK6vwtknWAicpYQ8/Rjjeef4s="; + hash = "sha256-mprwDx1SvvT96MR1YgLwIJaEHCknCkbJ9zq0HfNJy/Y="; }; - vendorHash = "sha256-pcvxIPyJwptYx5964NzR9LUJTld2JVA0zaSjGH5sz4E="; + vendorHash = "sha256-rR0mLO8jjhTPySQ/BTegNe9kd2DudULOuYBBB/P9K1s="; ldflags = [ "-s" diff --git a/pkgs/tools/misc/kak-lsp/0001-Use-full-Perl-path.patch b/pkgs/tools/misc/kak-lsp/0001-Use-full-Perl-path.patch new file mode 100644 index 000000000000..38f0d38cb215 --- /dev/null +++ b/pkgs/tools/misc/kak-lsp/0001-Use-full-Perl-path.patch @@ -0,0 +1,37 @@ +From b93660cfa8a80a5e5bf72e1f06fb7bf95272c7e4 Mon Sep 17 00:00:00 2001 +From: PoweredByPie +Date: Fri, 8 Dec 2023 04:39:01 -0800 +Subject: [PATCH] Use full Perl path + +--- + rc/lsp.kak | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/rc/lsp.kak b/rc/lsp.kak +index d695a2e..7c6a436 100644 +--- a/rc/lsp.kak ++++ b/rc/lsp.kak +@@ -2339,11 +2339,6 @@ define-command -hidden lsp-snippets-insert-completion -params 1 %{ evaluate-comm + }} + + define-command lsp-snippets-insert -hidden -params 1 %[ +- evaluate-commands %sh{ +- if ! command -v perl > /dev/null 2>&1; then +- printf "fail '''perl'' must be installed to use the ''snippets-insert'' command'" +- fi +- } + evaluate-commands -draft -save-regs '^"' %[ + set-register '"' %arg{1} + execute-keys +@@ -2397,7 +2392,7 @@ define-command lsp-snippets-insert -hidden -params 1 %[ + + define-command -hidden lsp-snippets-insert-perl-impl %[ + evaluate-commands %sh[ # $kak_quoted_selections +- perl -e ' ++ @perlPath@/bin/perl -e ' + use strict; + use warnings; + use Text::ParseWords(); +-- +2.42.0 + diff --git a/pkgs/tools/misc/kak-lsp/default.nix b/pkgs/tools/misc/kak-lsp/default.nix index 1f494dea8438..9a19d40bed23 100644 --- a/pkgs/tools/misc/kak-lsp/default.nix +++ b/pkgs/tools/misc/kak-lsp/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, rustPlatform, CoreServices, Security, SystemConfiguration }: +{ stdenv, lib, fetchFromGitHub, rustPlatform, perl, CoreServices, Security, SystemConfiguration }: rustPlatform.buildRustPackage rec { pname = "kak-lsp"; @@ -13,13 +13,20 @@ rustPlatform.buildRustPackage rec { cargoHash = "sha256-+3cpAL+8X8L833kmZapUoGSwHOj+hnDN6oDNJZ6y24Q="; - buildInputs = lib.optionals stdenv.isDarwin [ CoreServices Security SystemConfiguration ]; + buildInputs = [ perl ] ++ lib.optionals stdenv.isDarwin [ CoreServices Security SystemConfiguration ]; + + patches = [ ./0001-Use-full-Perl-path.patch ]; + + postPatch = '' + substituteInPlace rc/lsp.kak \ + --subst-var-by perlPath ${lib.getBin perl} + ''; meta = with lib; { description = "Kakoune Language Server Protocol Client"; homepage = "https://github.com/kak-lsp/kak-lsp"; license = with licenses; [ unlicense /* or */ mit ]; - maintainers = [ maintainers.spacekookie ]; + maintainers = with maintainers; [ spacekookie poweredbypie ]; mainProgram = "kak-lsp"; }; } diff --git a/pkgs/tools/misc/usbview/default.nix b/pkgs/tools/misc/usbview/default.nix index 71a4ddeefd8d..17402fe76120 100644 --- a/pkgs/tools/misc/usbview/default.nix +++ b/pkgs/tools/misc/usbview/default.nix @@ -3,23 +3,25 @@ , fetchFromGitHub , autoreconfHook , pkg-config +, imagemagick , gtk3 }: stdenv.mkDerivation rec { pname = "usbview"; - version = "2.0"; + version = "3.1"; src = fetchFromGitHub { owner = "gregkh"; repo = "usbview"; rev = "v${version}"; - sha256 = "1cw5jjpidjn34rxdjslpdlj99k4dqaq1kz6mplv5hgjdddijvn5p"; + hash = "sha256-h+sB83BYsrB2VxwtatPWNiM0WdTCMY289nh+/0o8GOw="; }; nativeBuildInputs = [ autoreconfHook pkg-config + imagemagick ]; buildInputs = [ @@ -30,7 +32,7 @@ stdenv.mkDerivation rec { description = "USB viewer for Linux"; license = licenses.gpl2Only; homepage = "http://www.kroah.com/linux-usb/"; - maintainers = with maintainers; [ shamilton ]; + maintainers = with maintainers; [ shamilton h7x4 ]; platforms = platforms.linux; mainProgram = "usbview"; }; diff --git a/pkgs/tools/security/grype/default.nix b/pkgs/tools/security/grype/default.nix index ff996562572b..db955a1a2086 100644 --- a/pkgs/tools/security/grype/default.nix +++ b/pkgs/tools/security/grype/default.nix @@ -7,13 +7,13 @@ buildGoModule rec { pname = "grype"; - version = "0.69.1"; + version = "0.73.4"; src = fetchFromGitHub { owner = "anchore"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-AXw2mtN4FC6EKWN8dObrU04+WSHDWLY19FSWqQlkq/Q="; + hash = "sha256-cYhgLMKj8fo49zr+NC7SARiyybCnqXf+DgB+6IkwkAw="; # populate values that require us to use git. By doing this in postFetch we # can delete .git afterwards and maintain better reproducibility of the src. leaveDotGit = true; @@ -28,7 +28,7 @@ buildGoModule rec { proxyVendor = true; - vendorHash = "sha256-iitWThvWVfeJMLcJLgmFnVguFVF4DejObZPZ3qB5cY0="; + vendorHash = "sha256-Zx8gJZVkobKjrGysrqYd6Hv2bGqEgOQ+EGSKDvOM33M="; nativeBuildInputs = [ installShellFiles @@ -73,6 +73,8 @@ buildGoModule rec { --replace "TestCmd" "SkipCmd" substituteInPlace grype/pkg/provider_test.go \ --replace "TestSyftLocationExcludes" "SkipSyftLocationExcludes" + substituteInPlace test/cli/cmd_test.go \ + --replace "Test_descriptorNameAndVersionSet" "Skip_descriptorNameAndVersionSet" # remove tests that depend on git substituteInPlace test/cli/db_validations_test.go \ --replace "TestDBValidations" "SkipDBValidations" @@ -83,6 +85,8 @@ buildGoModule rec { --replace "TestSBOMInput_AsArgument" "SkipSBOMInput_AsArgument" substituteInPlace test/cli/subprocess_test.go \ --replace "TestSubprocessStdin" "SkipSubprocessStdin" + substituteInPlace grype/internal/packagemetadata/names_test.go \ + --replace "TestAllNames" "SkipAllNames" # segfault rm grype/db/v5/namespace/cpe/namespace_test.go diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 245238b9a6ef..9751a698e099 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10046,6 +10046,8 @@ with pkgs; lua = lua5_2_compat; }; + lttoolbox = callPackage ../applications/misc/lttoolbox { }; + ltwheelconf = callPackage ../applications/misc/ltwheelconf { }; lunatask = callPackage ../applications/misc/lunatask { }; @@ -26610,6 +26612,8 @@ with pkgs; jitsi-excalidraw = callPackage ../servers/jitsi-excalidraw { }; + jigasi = callPackage ../servers/jigasi { }; + jitsi-meet = callPackage ../servers/web-apps/jitsi-meet { }; jitsi-meet-prosody = callPackage ../misc/jitsi-meet-prosody { };