diff options
Diffstat (limited to 'pkgs/by-name/me')
22 files changed, 541 insertions, 170 deletions
diff --git a/pkgs/by-name/me/mealie/mealie-frontend.nix b/pkgs/by-name/me/mealie/mealie-frontend.nix index a98d22761e71e..477dcd993abcf 100644 --- a/pkgs/by-name/me/mealie/mealie-frontend.nix +++ b/pkgs/by-name/me/mealie/mealie-frontend.nix @@ -6,7 +6,7 @@ src: version: yarnOfflineCache = fetchYarnDeps { yarnLock = "${src}/frontend/yarn.lock"; - hash = "sha256-zQUD/PQWzp2Q6fiVmLicvSusXffu6s9q3x/aAUnCN38="; + hash = "sha256-a2kIOQHaMzaMWId6+SSYN+SPQM2Ipa+F1ztFZgo3R6A="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/me/mealie/mealie-logs-to-stdout.patch b/pkgs/by-name/me/mealie/mealie-logs-to-stdout.patch deleted file mode 100644 index 521c5cebcf74d..0000000000000 --- a/pkgs/by-name/me/mealie/mealie-logs-to-stdout.patch +++ /dev/null @@ -1,103 +0,0 @@ -diff --git a/mealie/core/root_logger.py b/mealie/core/root_logger.py -index 29db504f..3da5ef84 100644 ---- a/mealie/core/root_logger.py -+++ b/mealie/core/root_logger.py -@@ -9,7 +9,6 @@ DATA_DIR = determine_data_dir() - - from .config import get_app_settings # noqa E402 - --LOGGER_FILE = DATA_DIR.joinpath("mealie.log") - DATE_FORMAT = "%d-%b-%y %H:%M:%S" - LOGGER_FORMAT = "%(levelname)s: %(asctime)s \t%(message)s" - -@@ -40,19 +39,17 @@ def get_logger_config(): - level=log_level, - ) - -- output_file_handler = logging.FileHandler(LOGGER_FILE) - handler_format = logging.Formatter(LOGGER_FORMAT, datefmt=DATE_FORMAT) -- output_file_handler.setFormatter(handler_format) - - # Stdout - stdout_handler = logging.StreamHandler(sys.stdout) - stdout_handler.setFormatter(handler_format) - - return LoggerConfig( -- handlers=[output_file_handler, stdout_handler], -+ handlers=[stdout_handler], - format="%(levelname)s: %(asctime)s \t%(message)s", - date_format="%d-%b-%y %H:%M:%S", -- logger_file=LOGGER_FILE, -+ logger_file=None, - level=log_level, - ) - -diff --git a/mealie/routes/admin/admin_log.py b/mealie/routes/admin/admin_log.py -index ac12c12e..0de98b99 100644 ---- a/mealie/routes/admin/admin_log.py -+++ b/mealie/routes/admin/admin_log.py -@@ -1,6 +1,5 @@ - from fastapi import APIRouter - --from mealie.core.root_logger import LOGGER_FILE - from mealie.core.security import create_file_token - - router = APIRouter(prefix="/logs") -@@ -9,15 +8,13 @@ router = APIRouter(prefix="/logs") - @router.get("/{num}") - async def get_log(num: int): - """Doc Str""" -- with open(LOGGER_FILE, "rb") as f: -- log_text = tail(f, num) -- return log_text -+ return "" - - - @router.get("") - async def get_log_file(): - """Returns a token to download a file""" -- return {"fileToken": create_file_token(LOGGER_FILE)} -+ return {"fileToken": create_file_token("nofile")} - - - def tail(f, lines=20): -diff --git a/mealie/routes/admin/admin_maintenance.py b/mealie/routes/admin/admin_maintenance.py -index 23ef8369..322b580f 100644 ---- a/mealie/routes/admin/admin_maintenance.py -+++ b/mealie/routes/admin/admin_maintenance.py -@@ -6,7 +6,6 @@ from pathlib import Path - - from fastapi import APIRouter, HTTPException - --from mealie.core.root_logger import LOGGER_FILE - from mealie.pkgs.stats import fs_stats - from mealie.routes._base import BaseAdminController, controller - from mealie.schema.admin import MaintenanceSummary -@@ -73,8 +72,6 @@ class AdminMaintenanceController(BaseAdminController): - Get the maintenance summary - """ - log_file_size = 0 -- with contextlib.suppress(FileNotFoundError): -- log_file_size = os.path.getsize(LOGGER_FILE) - - return MaintenanceSummary( - data_dir_size=fs_stats.pretty_size(fs_stats.get_dir_size(self.folders.DATA_DIR)), -@@ -85,7 +82,7 @@ class AdminMaintenanceController(BaseAdminController): - - @router.get("/logs", response_model=MaintenanceLogs) - def get_logs(self, lines: int = 200): -- return MaintenanceLogs(logs=tail_log(LOGGER_FILE, lines)) -+ return MaintenanceLogs(logs="") - - @router.get("/storage", response_model=MaintenanceStorageDetails) - def get_storage_details(self): -@@ -137,9 +134,6 @@ class AdminMaintenanceController(BaseAdminController): - Purges the logs - """ - try: -- with contextlib.suppress(FileNotFoundError): -- os.remove(LOGGER_FILE) -- LOGGER_FILE.touch() - return SuccessResponse.respond("Logs cleaned") - except Exception as e: - raise HTTPException(status_code=500, detail=ErrorResponse.respond("Failed to clean logs")) from e diff --git a/pkgs/by-name/me/mealie/package.nix b/pkgs/by-name/me/mealie/package.nix index 2d1512f67ebcb..f93d6de6fb764 100644 --- a/pkgs/by-name/me/mealie/package.nix +++ b/pkgs/by-name/me/mealie/package.nix @@ -1,7 +1,6 @@ { lib , callPackage , fetchFromGitHub -, fetchpatch , makeWrapper , nixosTests , python3Packages @@ -10,21 +9,17 @@ }: let - version = "1.2.0"; + version = "1.9.0"; src = fetchFromGitHub { owner = "mealie-recipes"; repo = "mealie"; rev = "v${version}"; - sha256 = "sha256-Kc49XDWcZLeJaYgiAO2/mHeVSOLMeiPr3U32e0IYfdU="; + hash = "sha256-gg7ClclBS9j9n4/3HLxbX8HXTz9Zw5+BYG2MEYRsRBU="; }; frontend = callPackage (import ./mealie-frontend.nix src version) { }; - pythonpkgs = python3Packages.override { - overrides = self: super: { - pydantic = python3Packages.pydantic_1; - }; - }; + pythonpkgs = python3Packages; python = pythonpkgs.python; crfpp = stdenv.mkDerivation { @@ -37,37 +32,13 @@ let hash = "sha256-XNps3ZApU8m07bfPEnvip1w+3hLajdn9+L5+IpEaP0c="; }; }; - - mealie_patch = { name, commit, hash }: fetchpatch { - inherit name hash; - url = "https://github.com/mealie-recipes/mealie/commit/${commit}.patch"; - }; - in pythonpkgs.buildPythonPackage rec { pname = "mealie"; inherit version src; pyproject = true; - patches = [ - # See https://github.com/mealie-recipes/mealie/pull/3102 - # Replace hardcoded paths in code with environment variables (meant for inside Docker only) - # So we can configure easily where the data is stored on the server - (mealie_patch { - name = "model-path.patch"; - commit = "e445705c5d26b895d806b96b2f330d4e9aac3723"; - hash = "sha256-cf0MwvT81lNBTjvag8UUEbXkBu8Jyi/LFwUcs4lBVcY="; - }) - (mealie_patch { - name = "alembic-cfg-path.patch"; - commit = "06c528bfac0708af66aa0629f2e2232ddf07768f"; - hash = "sha256-IOgdZK7dmWeX2ox16J9v+bOS7nHgCMvCJy6RNJLj0p8="; - }) - ./mealie-logs-to-stdout.patch - ]; - nativeBuildInputs = [ pythonpkgs.poetry-core - pythonpkgs.pythonRelaxDepsHook makeWrapper ]; @@ -82,6 +53,7 @@ in pythonpkgs.buildPythonPackage rec { aniso8601 appdirs apprise + authlib bcrypt extruct fastapi @@ -90,15 +62,16 @@ in pythonpkgs.buildPythonPackage rec { httpx jinja2 lxml + openai orjson paho-mqtt - passlib pillow + pillow-heif psycopg2 + pydantic-settings pyhumps - pytesseract + pyjwt python-dotenv - python-jose python-ldap python-multipart python-slugify @@ -112,7 +85,7 @@ in pythonpkgs.buildPythonPackage rec { postPatch = '' substituteInPlace mealie/__init__.py \ - --replace-fail '__version__ = ' '__version__ = "${version}" #' + --replace-fail '__version__ = ' '__version__ = "v${version}" #' ''; postInstall = let @@ -150,7 +123,7 @@ in pythonpkgs.buildPythonPackage rec { }; meta = with lib; { - description = "A self hosted recipe manager and meal planner"; + description = "Self hosted recipe manager and meal planner"; longDescription = '' Mealie is a self hosted recipe manager and meal planner with a REST API and a reactive frontend application built in NuxtJS for a pleasant user experience for the whole family. Easily add recipes into your @@ -160,7 +133,7 @@ in pythonpkgs.buildPythonPackage rec { homepage = "https://mealie.io"; changelog = "https://github.com/mealie-recipes/mealie/releases/tag/${src.rev}"; license = licenses.agpl3Only; - maintainers = with maintainers; [ litchipi ]; + maintainers = with maintainers; [ litchipi anoa ]; mainProgram = "mealie"; }; } diff --git a/pkgs/by-name/me/media-downloader/package.nix b/pkgs/by-name/me/media-downloader/package.nix new file mode 100644 index 0000000000000..8053f6a93adaf --- /dev/null +++ b/pkgs/by-name/me/media-downloader/package.nix @@ -0,0 +1,67 @@ +{ + aria2, + cmake, + # https://github.com/mhogomchungu/media-downloader?tab=readme-ov-file#extensions + extraPackages ? [ + aria2 + yt-dlp + ffmpeg + python3 + ], + fetchFromGitHub, + ffmpeg, + lib, + libsForQt5, + python3, + stdenv, + yt-dlp, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "media-downloader"; + version = "4.7.0"; + + src = fetchFromGitHub { + owner = "mhogomchungu"; + repo = "media-downloader"; + rev = finalAttrs.version; + hash = "sha256-ykPYxRgzKZrA0KwS1FoxZOkSL+7TbLgy0yLfs7Iqpf4="; + }; + + # Disable automatically updating extensions when starting the program because this will + # invalidate the dependence on extensions and may cause potential security issues + # Can still be enabled in Configure > Actions At Startup + postPatch = '' + substituteInPlace src/settings.cpp \ + --replace-fail '"ShowVersionInfoAndAutoDownloadUpdates",true' '"ShowVersionInfoAndAutoDownloadUpdates",false' \ + ''; + + nativeBuildInputs = [ + cmake + libsForQt5.wrapQtAppsHook + ]; + + buildInputs = [ libsForQt5.qtbase ]; + + qtWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath extraPackages}" ]; + + meta = { + description = "Qt/C++ GUI front end for yt-dlp and others"; + longDescription = '' + Media Downloader is a GUI front end to yt-dlp, youtube-dl, gallery-dl, + lux, you-get, svtplay-dl, aria2c, wget and safari books. + + Read https://github.com/mhogomchungu/media-downloader/wiki/Extensions + for further information. We have packaged most of them, and they can + be added by overriding `extraPackages`. + ''; + homepage = "https://github.com/mhogomchungu/media-downloader"; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ + zendo + aleksana + ]; + platforms = lib.platforms.linux; + mainProgram = "media-downloader"; + }; +}) diff --git a/pkgs/by-name/me/mediainfo-gui/package.nix b/pkgs/by-name/me/mediainfo-gui/package.nix index a321db523179e..7016a9a6cc4c9 100644 --- a/pkgs/by-name/me/mediainfo-gui/package.nix +++ b/pkgs/by-name/me/mediainfo-gui/package.nix @@ -6,11 +6,11 @@ let in stdenv.mkDerivation rec { pname = "mediainfo-gui"; - version = "24.03"; + version = "24.04"; src = fetchurl { url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; - hash = "sha256-b/jx+i+FmhMJH3Wiz5E0hmRPbiWa0cJa+5qT5IRExWM="; + hash = "sha256-6+sctwGiMFnHNsszuRoxcsT5jnNB5EoLMKEZGRkaJ00="; }; nativeBuildInputs = [ autoreconfHook pkg-config ]; diff --git a/pkgs/by-name/me/mediainfo/package.nix b/pkgs/by-name/me/mediainfo/package.nix index 4fcaf4636d42a..581b37dcde307 100644 --- a/pkgs/by-name/me/mediainfo/package.nix +++ b/pkgs/by-name/me/mediainfo/package.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "mediainfo"; - version = "24.03"; + version = "24.04"; src = fetchurl { url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; - hash = "sha256-b/jx+i+FmhMJH3Wiz5E0hmRPbiWa0cJa+5qT5IRExWM="; + hash = "sha256-6+sctwGiMFnHNsszuRoxcsT5jnNB5EoLMKEZGRkaJ00="; }; nativeBuildInputs = [ autoreconfHook pkg-config ]; diff --git a/pkgs/by-name/me/mediasynclite/package.nix b/pkgs/by-name/me/mediasynclite/package.nix new file mode 100644 index 0000000000000..869142da9acc8 --- /dev/null +++ b/pkgs/by-name/me/mediasynclite/package.nix @@ -0,0 +1,54 @@ +{ lib +, stdenv +, fetchFromGitHub +, gtk3 +, glib +, gsettings-desktop-schemas +, pkg-config +, curl +, openssl +, jansson +, wrapGAppsHook3 +}: + +stdenv.mkDerivation rec { + pname = "mediasynclite"; + version = "0.4.2"; + + src = fetchFromGitHub { + owner = "iBroadcastMediaServices"; + repo = "MediaSyncLiteLinux"; + rev = version; + hash = "sha256-ToSkR6tPJMBCcj1NUBAywKjCAPlpmh+ngIopFrT2PIA="; + }; + + buildInputs = [ + curl + glib + gtk3 + openssl + jansson + ]; + + strictDeps = true; + + nativeBuildInputs = [ + gsettings-desktop-schemas + pkg-config + wrapGAppsHook3 + ]; + + makeFlags = [ "PREFIX=$(out)" ]; + + postPatch = '' + substitute ./src/ibmsl.c ./src/ibmsl.c --subst-var out + ''; + + meta = with lib; { + description = "Linux-native graphical uploader for iBroadcast"; + downloadPage = "https://github.com/tobz619/MediaSyncLiteLinuxNix"; + homepage = "https://github.com/iBroadcastMediaServices/MediaSyncLiteLinux"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ tobz619 ]; + }; +} diff --git a/pkgs/by-name/me/mednafen/package.nix b/pkgs/by-name/me/mednafen/package.nix index a001edd0e0f15..88079e48155d8 100644 --- a/pkgs/by-name/me/mednafen/package.nix +++ b/pkgs/by-name/me/mednafen/package.nix @@ -5,7 +5,7 @@ alsa-lib, fetchurl, flac, - freeglut, + libglut, libGL, libGLU, libX11, @@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: { SDL2 SDL2_net flac - freeglut + libglut libcdio libjack2 libsamplerate @@ -70,7 +70,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { homepage = "https://mednafen.github.io/"; - description = "A portable, CLI-driven, SDL+OpenGL-based, multi-system emulator"; + description = "Portable, CLI-driven, SDL+OpenGL-based, multi-system emulator"; longDescription = '' Mednafen is a portable, utilizing OpenGL and SDL, argument(command-line)-driven multi-system emulator. Mednafen has the diff --git a/pkgs/by-name/me/megapixels/package.nix b/pkgs/by-name/me/megapixels/package.nix index 74ced5c3af268..91bd2b302b948 100644 --- a/pkgs/by-name/me/megapixels/package.nix +++ b/pkgs/by-name/me/megapixels/package.nix @@ -29,13 +29,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "megapixels"; - version = "1.8.1"; + version = "1.8.2"; src = fetchFromGitLab { owner = "megapixels-org"; repo = "Megapixels"; rev = finalAttrs.version; - hash = "sha256-TXiPJbd4TPpsEvmD97F7xkm4rS1g+ViTVTNlxeXrQaw="; + hash = "sha256-odsOYrk//ZhodsumLpJjhPDcwF1gkE/no166u+IDxSY="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/me/meletrix-udev-rules/meletrix.rules b/pkgs/by-name/me/meletrix-udev-rules/meletrix.rules new file mode 100644 index 0000000000000..fc7cafd1e563f --- /dev/null +++ b/pkgs/by-name/me/meletrix-udev-rules/meletrix.rules @@ -0,0 +1,26 @@ +# Download VIA jsons from https://drive.google.com/drive/folders/1ky4kmGxZo1i0WyRZiY9V6FQlGzjegcPk for USB vendor and product ids + +# Zoom 65 Olivia Wired +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="806c", ATTRS{idProduct}=="0005", MODE:="0660", GROUP="input" + +# Zoom 65 EE +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="7777", MODE:="0660", GROUP="input" +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="cc65", MODE:="0660", GROUP="input" + +# Zoom 65 V2 +# also 1ea7:7777 +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="ccbb", MODE:="0660", GROUP="input" + +# Zoom 65 V2.5 +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="ccc3", MODE:="0660", GROUP="input" + +# Zoom 75 (production unit) +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="ced3", MODE:="0660", GROUP="input" + +# Zoom 75 (prototype) +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="ce81", MODE:="0660", GROUP="input" + +# ZoomTKL +# also 1ea7:7777 +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1ea7", ATTRS{idProduct}=="cd87", MODE:="0660", GROUP="input" + diff --git a/pkgs/by-name/me/meletrix-udev-rules/package.nix b/pkgs/by-name/me/meletrix-udev-rules/package.nix new file mode 100644 index 0000000000000..43fd2b94cdd5b --- /dev/null +++ b/pkgs/by-name/me/meletrix-udev-rules/package.nix @@ -0,0 +1,24 @@ +{ + lib, + stdenvNoCC, +}: +stdenvNoCC.mkDerivation { + pname = "meletrix-udev-rules"; + version = "0-unstable-2023-10-20"; + + src = [./meletrix.rules]; + + dontUnpack = true; + dontBuild = true; + + installPhase = '' + install -Dpm644 $src $out/lib/udev/rules.d/70-meletrix.rules + ''; + + meta = with lib; { + description = "udev rules to configure Meletrix keyboards"; + license = licenses.cc0; + maintainers = with maintainers; [Scrumplex]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/by-name/me/meli/package.nix b/pkgs/by-name/me/meli/package.nix index a4ff654ad892c..ab5542bb8cb69 100644 --- a/pkgs/by-name/me/meli/package.nix +++ b/pkgs/by-name/me/meli/package.nix @@ -17,12 +17,13 @@ , sqlite # runtime deps +, gpgme , gnum4 }: rustPlatform.buildRustPackage rec { pname = "meli"; - version = "0.8.4"; + version = "0.8.6"; src = fetchzip { urls = [ @@ -30,10 +31,10 @@ rustPlatform.buildRustPackage rec { "https://codeberg.org/meli/meli/archive/v${version}.tar.gz" "https://github.com/meli/meli/archive/refs/tags/v${version}.tar.gz" ]; - hash = "sha256-wmIlYgXB17/i9Q+6C7pbcEjVlEuvhmqrSH+cDmaBKLs="; + hash = "sha256-7lSxXv2i8B6vRWIJqMiXlMqHH6fmgACy9X5qNKuj+IU="; }; - cargoHash = "sha256-gYS/dxNMz/HkCmRXH5AdHPXJ2giqpAHc4eVXJGOpMDM="; + cargoHash = "sha256-vZkMfaALnRBK9ZwMB2uvvJgQq+BdUX7enNnr9t5H+MY="; # Needed to get openssl-sys to use pkg-config OPENSSL_NO_VENDOR=1; @@ -60,6 +61,7 @@ rustPlatform.buildRustPackage rec { installManPage meli/docs/*.{1,5,7} wrapProgram $out/bin/meli \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ gpgme ]} \ --prefix PATH : ${lib.makeBinPath [ gnum4 ]} ''; diff --git a/pkgs/by-name/me/melonDS/package.nix b/pkgs/by-name/me/melonDS/package.nix index 334b5909496c7..5c943e71370ca 100644 --- a/pkgs/by-name/me/melonDS/package.nix +++ b/pkgs/by-name/me/melonDS/package.nix @@ -23,13 +23,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "melonDS"; - version = "0.9.5-unstable-2024-04-18"; + version = "0.9.5-unstable-2024-06-18"; src = fetchFromGitHub { owner = "melonDS-emu"; repo = "melonDS"; - rev = "ba8d547dfa81539f4e8474152d92e866ad89241b"; - hash = "sha256-va4KegM2z0GSA43goUynRPNPvQnrV2b8oNOfLKPE+Zc="; + rev = "cbb0f4b872ea8a5e2348c7f1a22695056968192f"; + hash = "sha256-J1i7+VrOVQruHFhzjBnSf+DbmIa3o+rWISsdm8kMRC8="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/me/memorado/package.nix b/pkgs/by-name/me/memorado/package.nix new file mode 100644 index 0000000000000..e7282d01d90e6 --- /dev/null +++ b/pkgs/by-name/me/memorado/package.nix @@ -0,0 +1,51 @@ +{ lib +, stdenv +, fetchFromGitHub +, meson +, ninja +, gtk4 +, pkg-config +, libadwaita +, blueprint-compiler +, python3 +, desktop-file-utils +, gobject-introspection +, wrapGAppsHook4 +}: + +stdenv.mkDerivation rec { + pname = "memorado"; + version = "0.3"; + + src = fetchFromGitHub { + owner = "wbernard"; + repo = "Memorado"; + rev = "refs/tags/${version}"; + hash = "sha256-bArcYUHSfpjYsySGZco4fmb6bKRFtG6efhzNSqUROX0="; + }; + + nativeBuildInputs = [ + blueprint-compiler + desktop-file-utils + gobject-introspection + meson + ninja + pkg-config + wrapGAppsHook4 + ]; + + buildInputs = [ + gtk4 + libadwaita + (python3.withPackages (ps: with ps; [ + pygobject3 + ])) + ]; + + meta = with lib; { + description = "Simple and clean flashcard memorizing app"; + homepage = "https://github.com/wbernard/Memorado"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ onny ]; + }; +} diff --git a/pkgs/by-name/me/menulibre/package.nix b/pkgs/by-name/me/menulibre/package.nix index 414f591965eb9..b8ad319c89576 100644 --- a/pkgs/by-name/me/menulibre/package.nix +++ b/pkgs/by-name/me/menulibre/package.nix @@ -12,7 +12,7 @@ }: python3Packages.buildPythonApplication rec { - name = "menulibre"; + pname = "menulibre"; version = "2.4.0"; src = fetchFromGitHub { @@ -55,7 +55,7 @@ python3Packages.buildPythonApplication rec { }; meta = with lib; { - description = "An advanced menu editor with an easy-to-use interface"; + description = "Advanced menu editor with an easy-to-use interface"; homepage = "https://bluesabre.org/projects/menulibre"; license = licenses.gpl3Plus; maintainers = with maintainers; [ lelgenio ]; diff --git a/pkgs/by-name/me/mercure/package.nix b/pkgs/by-name/me/mercure/package.nix index 0e8cc02fbe724..b66483d29ae25 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.11"; + version = "0.16.0"; src = fetchFromGitHub { owner = "dunglas"; repo = "mercure"; rev = "v${version}"; - hash = "sha256-qPKfF0awRsMfXu7N/xNwFVmmuqTMGsDDqrVgt6LwviI="; + hash = "sha256-HHErk1KX8HgAt4UrBuchK6ysNsxEsrf5uBzzvSNz+to="; }; sourceRoot = "${src.name}/caddy"; - vendorHash = "sha256-evUGa1kFWbj0ynDQruBRDx2opzh7Tc7eHnWn3H4xwxY="; + vendorHash = "sha256-aO0EvxZNOCAaqEWN1VIdPpS+y8KcsuXo7o8msicspNE="; subPackages = [ "mercure" ]; excludedPackages = [ "../cmd/mercure" ]; @@ -42,7 +42,7 @@ buildGoModule rec { }; meta = with lib; { - description = "An open, easy, fast, reliable and battery-efficient solution for real-time communications"; + description = "Open, easy, fast, reliable and battery-efficient solution for real-time communications"; homepage = "https://github.com/dunglas/mercure"; changelog = "https://github.com/dunglas/mercure/releases/tag/v${version}"; license = licenses.agpl3Only; diff --git a/pkgs/by-name/me/mermaid-cli/package.nix b/pkgs/by-name/me/mermaid-cli/package.nix index d00da6941cf82..a11b5504bca5a 100644 --- a/pkgs/by-name/me/mermaid-cli/package.nix +++ b/pkgs/by-name/me/mermaid-cli/package.nix @@ -11,18 +11,18 @@ stdenv.mkDerivation rec { pname = "mermaid-cli"; - version = "10.8.0"; + version = "10.9.0"; src = fetchFromGitHub { owner = "mermaid-js"; repo = "mermaid-cli"; rev = version; - hash = "sha256-nCLLv8QXx9N4WiUFw3WB+Rpfd4H4oCFa1ac01al+ovY="; + hash = "sha256-o9QaJsJlfqsAguYGHAdf8aqZWbOgDJs+0KVQAVtRlA0="; }; offlineCache = fetchYarnDeps { yarnLock = "${src}/yarn.lock"; - hash = "sha256-thZxaa7S3vlS1Ws+G5dklun+ISCV908p1Ov7qb8fP3c="; + hash = "sha256-SfRzn5FxO+Ls+ne7ay3tySNLr+awEJ9fo/nwcAY11qA="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/me/meson/007-Allow-building-via-ninja-12.patch b/pkgs/by-name/me/meson/007-Allow-building-via-ninja-12.patch new file mode 100644 index 0000000000000..009d826aab036 --- /dev/null +++ b/pkgs/by-name/me/meson/007-Allow-building-via-ninja-12.patch @@ -0,0 +1,190 @@ +From 8e46d3e37f81bf13f3f62a14fb603feb2e37229d Mon Sep 17 00:00:00 2001 +From: John Titor <50095635+JohnRTitor@users.noreply.github.com> +Date: Fri, 10 May 2024 23:25:58 +0530 +Subject: [PATCH] Fix builds with Ninja 12 and remove a 5 year old workaround. + +Co-authored-by: Jussi Pakkanen <jpakkane@gmail.com> +Co-authored-by: Masum Reza <masumrezarock100@gmail.com> +--- + run_project_tests.py | 3 +-- + run_tests.py | 35 ++++++++++------------------------ + unittests/baseplatformtests.py | 34 +++++++++++++++++++++++++++------ + 3 files changed, 39 insertions(+), 33 deletions(-) + +diff --git a/run_project_tests.py b/run_project_tests.py +index a14741364..222e12f74 100755 +--- a/run_project_tests.py ++++ b/run_project_tests.py +@@ -45,7 +45,7 @@ from mesonbuild.coredata import backendlist, version as meson_version + from mesonbuild.modules.python import PythonExternalProgram + from run_tests import ( + get_fake_options, run_configure, get_meson_script, get_backend_commands, +- get_backend_args_for_dir, Backend, ensure_backend_detects_changes, ++ get_backend_args_for_dir, Backend, + guess_backend, handle_meson_skip_test, + ) + +@@ -720,7 +720,6 @@ def _run_test(test: TestDef, + + # Touch the meson.build file to force a regenerate + def force_regenerate() -> None: +- ensure_backend_detects_changes(backend) + os.utime(str(test.path / 'meson.build')) + + # just test building +diff --git a/run_tests.py b/run_tests.py +index 207653219..0c51f3d69 100755 +--- a/run_tests.py ++++ b/run_tests.py +@@ -39,29 +39,27 @@ from mesonbuild.mesonlib import OptionKey, setup_vsenv + if T.TYPE_CHECKING: + from mesonbuild.coredata import SharedCMDOptions + +-NINJA_1_9_OR_NEWER = False ++NINJA_1_12_OR_NEWER = False + NINJA_CMD = None + # If we're on CI, detecting ninja for every subprocess unit test that we run is slow + # Optimize this by respecting $NINJA and skipping detection, then exporting it on + # first run. + try: +- NINJA_1_9_OR_NEWER = bool(int(os.environ['NINJA_1_9_OR_NEWER'])) ++ NINJA_1_12_OR_NEWER = bool(int(os.environ['NINJA_1_12_OR_NEWER'])) + NINJA_CMD = [os.environ['NINJA']] + except (KeyError, ValueError): +- # Look for 1.9 to see if https://github.com/ninja-build/ninja/issues/1219 +- # is fixed +- NINJA_CMD = detect_ninja('1.9') ++ # Look for 1.12, which removes -w dupbuild=err ++ NINJA_CMD = detect_ninja('1.12') + if NINJA_CMD is not None: +- NINJA_1_9_OR_NEWER = True ++ NINJA_1_12_OR_NEWER = True + else: +- mlog.warning('Found ninja <1.9, tests will run slower', once=True) + NINJA_CMD = detect_ninja() + + if NINJA_CMD is not None: +- os.environ['NINJA_1_9_OR_NEWER'] = str(int(NINJA_1_9_OR_NEWER)) ++ os.environ['NINJA_1_12_OR_NEWER'] = str(int(NINJA_1_12_OR_NEWER)) + os.environ['NINJA'] = NINJA_CMD[0] + else: +- raise RuntimeError('Could not find Ninja v1.7 or newer') ++ raise RuntimeError('Could not find Ninja.') + + # Emulate running meson with -X utf8 by making sure all open() calls have a + # sane encoding. This should be a python default, but PEP 540 considered it not +@@ -271,7 +269,9 @@ def get_backend_commands(backend: Backend, debug: bool = False) -> \ + test_cmd = cmd + ['-target', 'RUN_TESTS'] + elif backend is Backend.ninja: + global NINJA_CMD +- cmd = NINJA_CMD + ['-w', 'dupbuild=err', '-d', 'explain'] ++ cmd = NINJA_CMD + ['-d', 'explain'] ++ if not NINJA_1_12_OR_NEWER: ++ cmd += ['-w', 'dupbuild=err'] + if debug: + cmd += ['-v'] + clean_cmd = cmd + ['clean'] +@@ -282,21 +282,6 @@ def get_backend_commands(backend: Backend, debug: bool = False) -> \ + raise AssertionError(f'Unknown backend: {backend!r}') + return cmd, clean_cmd, test_cmd, install_cmd, uninstall_cmd + +-def ensure_backend_detects_changes(backend: Backend) -> None: +- global NINJA_1_9_OR_NEWER +- if backend is not Backend.ninja: +- return +- need_workaround = False +- # We're using ninja >= 1.9 which has QuLogic's patch for sub-1s resolution +- # timestamps +- if not NINJA_1_9_OR_NEWER: +- mlog.warning('Don\'t have ninja >= 1.9, enabling timestamp resolution workaround', once=True) +- need_workaround = True +- # Increase the difference between build.ninja's timestamp and the timestamp +- # of whatever you changed: https://github.com/ninja-build/ninja/issues/371 +- if need_workaround: +- time.sleep(1) +- + def run_mtest_inprocess(commandlist: T.List[str]) -> T.Tuple[int, str, str]: + out = StringIO() + with mock.patch.object(sys, 'stdout', out), mock.patch.object(sys, 'stderr', out): +diff --git a/unittests/baseplatformtests.py b/unittests/baseplatformtests.py +index 6125ed933..226b2e11e 100644 +--- a/unittests/baseplatformtests.py ++++ b/unittests/baseplatformtests.py +@@ -1,6 +1,8 @@ + # SPDX-License-Identifier: Apache-2.0 + # Copyright 2016-2021 The Meson development team ++# Copyright © 2024 Intel Corporation + ++from __future__ import annotations + from pathlib import PurePath + from unittest import mock, TestCase, SkipTest + import json +@@ -9,6 +11,7 @@ import os + import re + import subprocess + import sys ++import shutil + import tempfile + import typing as T + +@@ -28,7 +31,7 @@ import mesonbuild.modules.pkgconfig + + + from run_tests import ( +- Backend, ensure_backend_detects_changes, get_backend_commands, ++ Backend, get_backend_commands, + get_builddir_target_args, get_meson_script, run_configure_inprocess, + run_mtest_inprocess, handle_meson_skip_test, + ) +@@ -286,11 +289,11 @@ class BasePlatformTests(TestCase): + ''' + return self.build(target=target, override_envvars=override_envvars) + +- def setconf(self, arg, will_build=True): +- if not isinstance(arg, list): ++ def setconf(self, arg: T.Sequence[str], will_build: bool = True) -> None: ++ if isinstance(arg, str): + arg = [arg] +- if will_build: +- ensure_backend_detects_changes(self.backend) ++ else: ++ arg = list(arg) + self._run(self.mconf_command + arg + [self.builddir]) + + def getconf(self, optname: str): +@@ -304,7 +307,6 @@ class BasePlatformTests(TestCase): + windows_proof_rmtree(self.builddir) + + def utime(self, f): +- ensure_backend_detects_changes(self.backend) + os.utime(f) + + def get_compdb(self): +@@ -492,3 +494,23 @@ class BasePlatformTests(TestCase): + + def assertLength(self, val, length): + assert len(val) == length, f'{val} is not length {length}' ++ ++ def copy_srcdir(self, srcdir: str) -> str: ++ """Copies a source tree and returns that copy. ++ ++ ensures that the copied tree is deleted after running. ++ ++ :param srcdir: The locaiton of the source tree to copy ++ :return: The location of the copy ++ """ ++ dest = tempfile.mkdtemp() ++ self.addCleanup(windows_proof_rmtree, dest) ++ ++ # shutil.copytree expects the destinatin directory to not exist, Once ++ # python 3.8 is required the `dirs_exist_ok` parameter negates the need ++ # for this ++ dest = os.path.join(dest, 'subdir') ++ ++ shutil.copytree(srcdir, dest) ++ ++ return dest +\ No newline at end of file +-- +2.44.0 + diff --git a/pkgs/by-name/me/meson/007-freebsd-pkgconfig-path.patch b/pkgs/by-name/me/meson/007-freebsd-pkgconfig-path.patch new file mode 100644 index 0000000000000..3a9ba6f092dda --- /dev/null +++ b/pkgs/by-name/me/meson/007-freebsd-pkgconfig-path.patch @@ -0,0 +1,15 @@ +diff -ur a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py +--- a/mesonbuild/modules/pkgconfig.py 2024-05-17 17:52:30.880877000 -0700 ++++ b/mesonbuild/modules/pkgconfig.py 2024-05-17 17:53:10.901068000 -0700 +@@ -693,10 +693,7 @@ + pcfile = filebase + '.pc' + pkgroot = pkgroot_name = kwargs['install_dir'] or default_install_dir + if pkgroot is None: +- if mesonlib.is_freebsd(): +- pkgroot = os.path.join(_as_str(state.environment.coredata.get_option(mesonlib.OptionKey('prefix'))), 'libdata', 'pkgconfig') +- pkgroot_name = os.path.join('{prefix}', 'libdata', 'pkgconfig') +- elif mesonlib.is_haiku(): ++ if mesonlib.is_haiku(): + pkgroot = os.path.join(_as_str(state.environment.coredata.get_option(mesonlib.OptionKey('prefix'))), 'develop', 'lib', 'pkgconfig') + pkgroot_name = os.path.join('{prefix}', 'develop', 'lib', 'pkgconfig') + else: diff --git a/pkgs/by-name/me/meson/package.nix b/pkgs/by-name/me/meson/package.nix index b2c85c431e01d..22bbc1c2fbc3f 100644 --- a/pkgs/by-name/me/meson/package.nix +++ b/pkgs/by-name/me/meson/package.nix @@ -4,6 +4,8 @@ , installShellFiles , coreutils , darwin +, libblocksruntime +, llvmPackages , libxcrypt , openldap , ninja @@ -66,9 +68,16 @@ python3.pkgs.buildPythonApplication rec { # Nixpkgs cctools does not have bitcode support. ./006-disable-bitcode.patch + # This edge case is explicitly part of meson but is wrong for nix + ./007-freebsd-pkgconfig-path.patch + # Fix cross-compilation of proc-macro (and mesa) # https://github.com/mesonbuild/meson/issues/12973 ./0001-Revert-rust-recursively-pull-proc-macro-dependencies.patch + + # Fix compilation of Meson using Ninja 1.12 + # FIXME: remove in the next point release + ./007-Allow-building-via-ninja-12.patch ]; buildInputs = lib.optionals (python3.pythonOlder "3.9") [ @@ -93,6 +102,11 @@ python3.pkgs.buildPythonApplication rec { OpenAL OpenGL openldap + ] ++ lib.optionals (stdenv.cc.isClang && !stdenv.isDarwin) [ + # https://github.com/mesonbuild/meson/blob/bd3f1b2e0e70ef16dfa4f441686003212440a09b/test%20cases/common/184%20openmp/meson.build + llvmPackages.openmp + # https://github.com/mesonbuild/meson/blob/1670fca36fcb1a4fe4780e96731e954515501a35/test%20cases/frameworks/29%20blocks/meson.build + libblocksruntime ]; checkPhase = lib.concatStringsSep "\n" ([ @@ -106,7 +120,7 @@ python3.pkgs.buildPythonApplication rec { '' ] # Remove problematic tests - ++ (builtins.map (f: ''rm -vr "${f}";'') [ + ++ (builtins.map (f: ''rm -vr "${f}";'') ([ # requires git, creating cyclic dependency ''test cases/common/66 vcstag'' # requires glib, creating cyclic dependency @@ -116,7 +130,10 @@ python3.pkgs.buildPythonApplication rec { ''test cases/linuxlike/14 static dynamic linkage'' # Nixpkgs cctools does not have bitcode support. ''test cases/osx/7 bitcode'' - ]) + ] ++ lib.optionals stdenv.isFreeBSD [ + # pch doesn't work quite right on FreeBSD, I think + ''test cases/common/13 pch'' + ])) ++ [ ''HOME="$TMPDIR" python ./run_project_tests.py'' "runHook postCheck" @@ -146,7 +163,7 @@ python3.pkgs.buildPythonApplication rec { meta = { homepage = "https://mesonbuild.com"; - description = "An open source, fast and friendly build system made in Python"; + description = "Open source, fast and friendly build system made in Python"; mainProgram = "meson"; longDescription = '' Meson is an open source build system meant to be both extremely fast, and, diff --git a/pkgs/by-name/me/meson/setup-hook.sh b/pkgs/by-name/me/meson/setup-hook.sh index 85849fbec734a..3f3c7ac59fdea 100644 --- a/pkgs/by-name/me/meson/setup-hook.sh +++ b/pkgs/by-name/me/meson/setup-hook.sh @@ -56,7 +56,7 @@ mesonCheckPhase() { local flagsArray=($mesonCheckFlags "${mesonCheckFlagsArray[@]}") echoCmd 'mesonCheckPhase flags' "${flagsArray[@]}" - meson test --no-rebuild "${flagsArray[@]}" + meson test --no-rebuild --print-errorlogs "${flagsArray[@]}" runHook postCheck } diff --git a/pkgs/by-name/me/metacubexd/package.nix b/pkgs/by-name/me/metacubexd/package.nix new file mode 100644 index 0000000000000..c55083e5b224b --- /dev/null +++ b/pkgs/by-name/me/metacubexd/package.nix @@ -0,0 +1,55 @@ +{ + lib, + fetchFromGitHub, + nix-update-script, + nodejs, + pnpm, + stdenv, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "metacubexd"; + version = "1.140.0"; + + src = fetchFromGitHub { + owner = "MetaCubeX"; + repo = "metacubexd"; + rev = "v${finalAttrs.version}"; + hash = "sha256-OVLG+MHgwWTorPuBTHsHUAY1FSN91j7xWgRDJ7FiO7E="; + }; + + nativeBuildInputs = [ + pnpm.configHook + nodejs + ]; + + pnpmDeps = pnpm.fetchDeps { + inherit (finalAttrs) pname version src; + hash = "sha256-24PkWT5UZJwMtL3y8qdf3XFuf3v5PjiP9XESbw3oppY="; + }; + + buildPhase = '' + runHook preBuild + + pnpm build + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + cp -r ./dist $out + + runHook postInstall + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Clash.Meta Dashboard, The Official One, XD"; + homepage = "https://github.com/MetaCubeX/metacubexd"; + license = lib.licenses.mit; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ Guanran928 ]; + }; +}) |