about summary refs log tree commit diff
path: root/pkgs/by-name
diff options
context:
space:
mode:
authorVladimír Čunát <v@cunat.cz>2023-11-16 22:06:22 +0100
committerVladimír Čunát <v@cunat.cz>2023-11-16 22:06:22 +0100
commita7a8f8253db3f32cc15baf527d36ef7171425eba (patch)
tree5de25f1c82e7892f6aec7b3e5ddb718ff0c50df2 /pkgs/by-name
parentf31242fcfd14e870eb6898fc8849bc4dee883054 (diff)
parent391aafc3d6b17ed5517795eb8b9c41ed7c6082e3 (diff)
Merge #263535: staging-next 2023-10-26
Diffstat (limited to 'pkgs/by-name')
-rw-r--r--pkgs/by-name/al/alsa-ucm-conf/package.nix4
-rw-r--r--pkgs/by-name/ar/arrpc/package.nix3
-rw-r--r--pkgs/by-name/ce/celluloid/package.nix2
-rw-r--r--pkgs/by-name/cm/cmake/001-search-path.diff95
-rw-r--r--pkgs/by-name/cm/cmake/002-application-services.diff39
-rw-r--r--pkgs/by-name/cm/cmake/003-libuv-application-services.diff55
-rw-r--r--pkgs/by-name/cm/cmake/004-cygwin.diff274
-rw-r--r--pkgs/by-name/cm/cmake/005-remove-systemconfiguration-dep.diff70
-rw-r--r--pkgs/by-name/cm/cmake/006-darwin-always-set-runtime-c-flag.diff14
-rw-r--r--pkgs/by-name/cm/cmake/check-pc-files-hook.sh18
-rw-r--r--pkgs/by-name/cm/cmake/package.nix188
-rwxr-xr-xpkgs/by-name/cm/cmake/setup-hook.sh184
-rw-r--r--pkgs/by-name/co/cosmic-applets/package.nix5
-rw-r--r--pkgs/by-name/co/cosmic-panel/package.nix4
-rw-r--r--pkgs/by-name/ju/justbuild/package.nix6
-rw-r--r--pkgs/by-name/me/meson/001-fix-rpath.patch24
-rw-r--r--pkgs/by-name/me/meson/002-clear-old-rpath.patch20
-rw-r--r--pkgs/by-name/me/meson/003-more-env-vars.patch12
-rw-r--r--pkgs/by-name/me/meson/004-gir-fallback-path.patch21
-rw-r--r--pkgs/by-name/me/meson/005-boost-Do-not-add-system-paths-on-nix.patch21
-rw-r--r--pkgs/by-name/me/meson/006-disable-bitcode.patch24
-rw-r--r--pkgs/by-name/me/meson/emulator-hook.sh5
-rw-r--r--pkgs/by-name/me/meson/package.nix166
-rw-r--r--pkgs/by-name/me/meson/setup-hook.sh87
-rw-r--r--pkgs/by-name/va/valijson/package.nix28
25 files changed, 1358 insertions, 11 deletions
diff --git a/pkgs/by-name/al/alsa-ucm-conf/package.nix b/pkgs/by-name/al/alsa-ucm-conf/package.nix
index 75ec2932c8904..b7203a7376387 100644
--- a/pkgs/by-name/al/alsa-ucm-conf/package.nix
+++ b/pkgs/by-name/al/alsa-ucm-conf/package.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "alsa-ucm-conf";
-  version = "1.2.9";
+  version = "1.2.10";
 
   src = fetchurl {
     url = "mirror://alsa/lib/${pname}-${version}.tar.bz2";
-    hash = "sha256-N09oM7/XfQpGdeSqK/t53v6FDlpGpdRUKkWWL0ueJyo=";
+    hash = "sha256-nCHj8B/wC6p1jfF+hnzTbiTrtBpr7ElzfpkQXhbyrpc=";
   };
 
   dontBuild = true;
diff --git a/pkgs/by-name/ar/arrpc/package.nix b/pkgs/by-name/ar/arrpc/package.nix
index 15ad34b39d7ff..eeb4dd4fef250 100644
--- a/pkgs/by-name/ar/arrpc/package.nix
+++ b/pkgs/by-name/ar/arrpc/package.nix
@@ -21,7 +21,8 @@ buildNpmPackage {
   # Remove after next release
   patches = [
     (fetchpatch {
-      url = "https://github.com/OpenAsar/arrpc/pull/50.patch";
+      # https://github.com/OpenAsar/arrpc/pull/50
+      url = "https://github.com/OpenAsar/arrpc/commit/7fa6c90204450eb3952ce9cddfecb0a5ba5e4313.patch";
       hash = "sha256-qFlrbe2a4x811wpmWUcGDe2CPlt9x3HI+/t0P2v4kPc=";
     })
   ];
diff --git a/pkgs/by-name/ce/celluloid/package.nix b/pkgs/by-name/ce/celluloid/package.nix
index c0ada66edc605..64ee44b1ad166 100644
--- a/pkgs/by-name/ce/celluloid/package.nix
+++ b/pkgs/by-name/ce/celluloid/package.nix
@@ -5,6 +5,7 @@
 , desktop-file-utils
 , glib
 , gtk4
+, libGL
 , libepoxy
 , libadwaita
 , meson
@@ -40,6 +41,7 @@ stdenv.mkDerivation (finalAttrs: {
   buildInputs = [
     glib
     gtk4
+    libGL
     libadwaita
     libepoxy
     mpv
diff --git a/pkgs/by-name/cm/cmake/001-search-path.diff b/pkgs/by-name/cm/cmake/001-search-path.diff
new file mode 100644
index 0000000000000..04ab0847a7074
--- /dev/null
+++ b/pkgs/by-name/cm/cmake/001-search-path.diff
@@ -0,0 +1,95 @@
+diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake
+index b9381c3d7d..5e944640b5 100644
+--- a/Modules/Platform/UnixPaths.cmake
++++ b/Modules/Platform/UnixPaths.cmake
+@@ -26,9 +26,6 @@ get_filename_component(_CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" PATH)
+ # please make sure to keep Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
+ # synchronized
+ list(APPEND CMAKE_SYSTEM_PREFIX_PATH
+-  # Standard
+-  /usr/local /usr /
+-
+   # CMake install location
+   "${_CMAKE_INSTALL_DIR}"
+   )
+@@ -47,48 +44,49 @@ endif()
+ 
+ # Non "standard" but common install prefixes
+ list(APPEND CMAKE_SYSTEM_PREFIX_PATH
+-  /usr/X11R6
+-  /usr/pkg
+-  /opt
+   )
+ 
+ # List common include file locations not under the common prefixes.
++if(DEFINED ENV{NIX_CC}
++  AND IS_DIRECTORY "$ENV{NIX_CC}"
++  AND EXISTS "$ENV{NIX_CC}/nix-support/orig-libc"
++  AND EXISTS "$ENV{NIX_CC}/nix-support/orig-libc-dev")
++  file(STRINGS "$ENV{NIX_CC}/nix-support/orig-libc" _nix_cmake_libc)
++  file(STRINGS "$ENV{NIX_CC}/nix-support/orig-libc-dev" _nix_cmake_libc_dev)
++else()
++  set(_nix_cmake_libc @libc_lib@)
++  set(_nix_cmake_libc_dev @libc_dev@)
++endif()
++
+ list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
+-  # X11
+-  /usr/include/X11
++  "${_nix_cmake_libc_dev}/include"
+   )
+ 
+ list(APPEND CMAKE_SYSTEM_LIBRARY_PATH
+-  # X11
+-  /usr/lib/X11
++  "${_nix_cmake_libc}/lib"
+   )
+ 
+ list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
+-  /lib /lib32 /lib64 /usr/lib /usr/lib32 /usr/lib64
++  "${_nix_cmake_libc}/lib"
+   )
+ 
+-if(CMAKE_SYSROOT_COMPILE)
+-  set(_cmake_sysroot_compile "${CMAKE_SYSROOT_COMPILE}")
+-else()
+-  set(_cmake_sysroot_compile "${CMAKE_SYSROOT}")
+-endif()
+-
+ # Default per-language values.  These may be later replaced after
+ # parsing the implicit directory information from compiler output.
+ set(_CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES_INIT
+   ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}
+-  "${_cmake_sysroot_compile}/usr/include"
++  "${_nix_cmake_libc_dev}/include"
+   )
+ set(_CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES_INIT
+   ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}
+-  "${_cmake_sysroot_compile}/usr/include"
++  "${_nix_cmake_libc_dev}/include"
+   )
+ set(_CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES_INIT
+   ${CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES}
+-  "${_cmake_sysroot_compile}/usr/include"
++  "${_nix_cmake_libc_dev}/include"
+   )
+ 
+-unset(_cmake_sysroot_compile)
++unset(_nix_cmake_libc)
++unset(_nix_cmake_libc_dev)
+ 
+ # Reminder when adding new locations computed from environment variables
+ # please make sure to keep Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
+diff --git a/Modules/Platform/WindowsPaths.cmake b/Modules/Platform/WindowsPaths.cmake
+index b9e2f17979..ab517cd4a7 100644
+--- a/Modules/Platform/WindowsPaths.cmake
++++ b/Modules/Platform/WindowsPaths.cmake
+@@ -70,7 +70,7 @@ endif()
+ 
+ if(CMAKE_CROSSCOMPILING AND NOT CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
+   # MinGW (useful when cross compiling from linux with CMAKE_FIND_ROOT_PATH set)
+-  list(APPEND CMAKE_SYSTEM_PREFIX_PATH /)
++  # list(APPEND CMAKE_SYSTEM_PREFIX_PATH /)
+ endif()
+ 
+ list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
diff --git a/pkgs/by-name/cm/cmake/002-application-services.diff b/pkgs/by-name/cm/cmake/002-application-services.diff
new file mode 100644
index 0000000000000..56f7cd266b7af
--- /dev/null
+++ b/pkgs/by-name/cm/cmake/002-application-services.diff
@@ -0,0 +1,39 @@
+diff -Naur cmake-3.25.1-old/Source/CMakeLists.txt cmake-3.25.1-new/Source/CMakeLists.txt
+--- cmake-3.25.1-old/Source/CMakeLists.txt	2022-11-30 10:57:03.000000000 -0300
++++ cmake-3.25.1-new/Source/CMakeLists.txt	2022-12-19 01:00:08.412064304 -0300
+@@ -916,7 +916,6 @@
+ # On Apple we need CoreFoundation and CoreServices
+ if(APPLE)
+   target_link_libraries(CMakeLib PUBLIC "-framework CoreFoundation")
+-  target_link_libraries(CMakeLib PUBLIC "-framework CoreServices")
+ endif()
+ 
+ if(WIN32 AND NOT UNIX)
+diff -Naur cmake-3.25.1-old/Source/cmGlobalXCodeGenerator.cxx cmake-3.25.1-new/Source/cmGlobalXCodeGenerator.cxx
+--- cmake-3.25.1-old/Source/cmGlobalXCodeGenerator.cxx	2022-11-30 10:57:03.000000000 -0300
++++ cmake-3.25.1-new/Source/cmGlobalXCodeGenerator.cxx	2022-12-19 01:00:56.065135169 -0300
+@@ -56,10 +56,6 @@
+ 
+ #if !defined(CMAKE_BOOTSTRAP) && defined(__APPLE__)
+ #  include <CoreFoundation/CoreFoundation.h>
+-#  if !TARGET_OS_IPHONE
+-#    define HAVE_APPLICATION_SERVICES
+-#    include <ApplicationServices/ApplicationServices.h>
+-#  endif
+ #endif
+ 
+ #if !defined(CMAKE_BOOTSTRAP)
+diff -Naur cmake-3.25.1-old/Utilities/cmlibarchive/CMakeLists.txt cmake-3.25.1-new/Utilities/cmlibarchive/CMakeLists.txt
+--- cmake-3.25.1-old/Utilities/cmlibarchive/CMakeLists.txt	2022-11-30 10:57:03.000000000 -0300
++++ cmake-3.25.1-new/Utilities/cmlibarchive/CMakeLists.txt	2022-12-19 01:01:43.392205981 -0300
+@@ -2041,10 +2041,6 @@
+   ADD_CUSTOM_TARGET(run_all_tests)
+ ENDIF(ENABLE_TEST)
+ 
+-# We need CoreServices on Mac OS.
+-IF(APPLE)
+-  LIST(APPEND ADDITIONAL_LIBS "-framework CoreServices")
+-ENDIF(APPLE)
+ 
+ add_subdirectory(libarchive)
+ IF(0) # CMake does not build libarchive's command-line tools.
diff --git a/pkgs/by-name/cm/cmake/003-libuv-application-services.diff b/pkgs/by-name/cm/cmake/003-libuv-application-services.diff
new file mode 100644
index 0000000000000..6607a9c6ed1f3
--- /dev/null
+++ b/pkgs/by-name/cm/cmake/003-libuv-application-services.diff
@@ -0,0 +1,55 @@
+diff --git a/Utilities/cmlibuv/CMakeLists.txt b/Utilities/cmlibuv/CMakeLists.txt
+index 7625cf65d9..167903e309 100644
+--- a/Utilities/cmlibuv/CMakeLists.txt
++++ b/Utilities/cmlibuv/CMakeLists.txt
+@@ -193,6 +193,22 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+     src/unix/kqueue.c
+     src/unix/proctitle.c
+     )
++
++  include(CheckIncludeFile)
++
++  check_include_file("ApplicationServices/ApplicationServices.h" HAVE_ApplicationServices)
++  if (HAVE_ApplicationServices)
++    list(APPEND uv_defines
++      HAVE_APPLICATIONSERVICES_APPLICATIONSERVICES_H=1
++      )
++  endif()
++
++  check_include_file("CoreServices/CoreServices.h" HAVE_CoreServices)
++  if (HAVE_CoreServices)
++    list(APPEND uv_defines
++      HAVE_CORESERVICES_CORESERVICES_H=1
++      )
++  endif()
+ endif()
+ 
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+diff --git a/Utilities/cmlibuv/src/unix/fsevents.c b/Utilities/cmlibuv/src/unix/fsevents.c
+index a51f29b3f6..3f6bf01968 100644
+--- a/Utilities/cmlibuv/src/unix/fsevents.c
++++ b/Utilities/cmlibuv/src/unix/fsevents.c
+@@ -21,7 +21,7 @@
+ #include "uv.h"
+ #include "internal.h"
+ 
+-#if TARGET_OS_IPHONE || MAC_OS_X_VERSION_MAX_ALLOWED < 1070
++#if !HAVE_CORESERVICES_CORESERVICES_H || MAC_OS_X_VERSION_MAX_ALLOWED < 1070
+ 
+ /* iOS (currently) doesn't provide the FSEvents-API (nor CoreServices) */
+ /* macOS prior to 10.7 doesn't provide the full FSEvents API so use kqueue */
+@@ -39,7 +39,7 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
+ void uv__fsevents_loop_delete(uv_loop_t* loop) {
+ }
+ 
+-#else /* TARGET_OS_IPHONE */
++#else /* !HAVE_CORESERVICES_CORESERVICES_H */
+ 
+ #include "darwin-stub.h"
+ 
+@@ -920,4 +920,4 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
+   return 0;
+ }
+ 
+-#endif /* TARGET_OS_IPHONE */
++#endif /* !HAVE_CORESERVICES_CORESERVICES_H */
diff --git a/pkgs/by-name/cm/cmake/004-cygwin.diff b/pkgs/by-name/cm/cmake/004-cygwin.diff
new file mode 100644
index 0000000000000..982aba17e874d
--- /dev/null
+++ b/pkgs/by-name/cm/cmake/004-cygwin.diff
@@ -0,0 +1,274 @@
+--- cmake-3.2.2/Source/cmFileCommand.cxx	2015-04-13 19:09:00.000000000 +0200
++++ cmake-3.2.2/Source/ccmFileCommand.cxx	2015-06-10 11:02:27.345598700 +0200
+@@ -1179,7 +1179,7 @@
+   MatchProperties CollectMatchProperties(const char* file)
+     {
+     // Match rules are case-insensitive on some platforms.
+-#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
++#if defined(_WIN32) || defined(__APPLE__)
+     std::string lower = cmSystemTools::LowerCase(file);
+     const char* file_to_match = lower.c_str();
+ #else
+--- cmake-3.2.2/Source/cmInstallCommand.cxx	2015-04-13 19:09:00.000000000 +0200
++++ cmake-3.2.2/Source/cmInstallCommand.cxx	2015-06-10 11:04:19.257935200 +0200
+@@ -1138,7 +1138,7 @@
+       {
+       literal_args += " REGEX \"";
+     // Match rules are case-insensitive on some platforms.
+-#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
++#if defined(_WIN32) || defined(__APPLE__)
+       std::string regex = cmSystemTools::LowerCase(args[i]);
+ #else
+       std::string regex = args[i];
+--- cmake-3.2.2/Source/kwsys/Glob.cxx	2015-04-13 19:09:00.000000000 +0200
++++ cmake-3.2.2/Source/kwsys/Glob.cxx	2015-06-10 11:05:51.602674000 +0200
+@@ -37,7 +37,7 @@
+ #include <string.h>
+ namespace KWSYS_NAMESPACE
+ {
+-#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
++#if defined(_WIN32) || defined(__APPLE__)
+ // On Windows and apple, no difference between lower and upper case
+ # define KWSYS_GLOB_CASE_INDEPENDENT
+ #endif
+--- cmake-3.2.2/Source/kwsys/SystemInformation.cxx	2015-04-13 19:09:00.000000000 +0200
++++ cmake-3.2.2/Source/kwsys/SystemInformation.cxx	2015-06-10 11:13:00.308303500 +0200
+@@ -911,7 +911,7 @@
+ // Hide implementation details in an anonymous namespace.
+ namespace {
+ // *****************************************************************************
+-#if defined(__linux) || defined(__APPLE__)
++#if defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__)
+ int LoadLines(
+       FILE *file,
+       kwsys_stl::vector<kwsys_stl::string> &lines)
+@@ -947,7 +947,7 @@
+   return nRead;
+ }
+ 
+-# if defined(__linux)
++# if defined(__linux) || defined(__CYGWIN__)
+ // *****************************************************************************
+ int LoadLines(
+       const char *fileName,
+@@ -986,7 +986,7 @@
+ }
+ #endif
+ 
+-#if defined(__linux)
++#if defined(__linux) || defined(__CYGWIN__)
+ // ****************************************************************************
+ template<typename T>
+ int GetFieldsFromFile(
+@@ -3132,7 +3132,6 @@
+     pos = buffer.find("processor\t",pos+1);
+     }
+ 
+-#ifdef __linux
+   // Find the largest physical id.
+   int maxId = -1;
+   kwsys_stl::string idc =
+@@ -3165,14 +3164,6 @@
+             atoi(this->ExtractValueFromCpuInfoFile(buffer,"ncpus active").c_str());
+     }
+ 
+-#else // __CYGWIN__
+-  // does not have "physical id" entries, neither "cpu cores"
+-  // this has to be fixed for hyper-threading.
+-  kwsys_stl::string cpucount =
+-    this->ExtractValueFromCpuInfoFile(buffer,"cpu count");
+-  this->NumberOfPhysicalCPU=
+-    this->NumberOfLogicalCPU = atoi(cpucount.c_str());
+-#endif
+   // gotta have one, and if this is 0 then we get a / by 0n
+   // better to have a bad answer than a crash
+   if(this->NumberOfPhysicalCPU <= 0)
+@@ -3370,7 +3361,7 @@
+   GlobalMemoryStatusEx(&statex);
+   return statex.ullTotalPhys/1024;
+ # endif
+-#elif defined(__linux)
++#elif defined(__linux) || defined(__CYGWIN__)
+   SystemInformation::LongLong memTotal=0;
+   int ierr=GetFieldFromFile("/proc/meminfo","MemTotal:",memTotal);
+   if (ierr)
+@@ -3501,7 +3492,7 @@
+   GlobalMemoryStatusEx(&statex);
+   return (statex.ullTotalPhys - statex.ullAvailPhys)/1024;
+ # endif
+-#elif defined(__linux)
++#elif defined(__linux) || defined(__CYGWIN__)
+   const char *names[3]={"MemTotal:","MemFree:",NULL};
+   SystemInformation::LongLong values[2]={SystemInformation::LongLong(0)};
+   int ierr=GetFieldsFromFile("/proc/meminfo",names,values);
+@@ -3560,7 +3551,7 @@
+     return -2;
+     }
+   return pmc.WorkingSetSize/1024;
+-#elif defined(__linux)
++#elif defined(__linux) || defined(__CYGWIN__)
+   SystemInformation::LongLong memUsed=0;
+   int ierr=GetFieldFromFile("/proc/self/status","VmRSS:",memUsed);
+   if (ierr)
+@@ -3612,7 +3603,7 @@
+ {
+ #if defined(_WIN32)
+   return GetCurrentProcessId();
+-#elif defined(__linux) || defined(__APPLE__)
++#elif defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__)
+   return getpid();
+ #else
+   return -1;
+--- cmake-3.2.2/Source/kwsys/SystemTools.cxx	2015-04-13 19:09:00.000000000 +0200
++++ cmake-3.2.2/Source/kwsys/SystemTools.cxx	2015-06-10 11:21:58.980443200 +0200
+@@ -93,19 +93,12 @@
+ # if defined(_MSC_VER) && _MSC_VER >= 1800
+ #  define KWSYS_WINDOWS_DEPRECATED_GetVersionEx
+ # endif
+-#elif defined (__CYGWIN__)
+-# include <windows.h>
+-# undef _WIN32
+ #endif
+ 
+ #if !KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H
+ extern char **environ;
+ #endif
+ 
+-#ifdef __CYGWIN__
+-# include <sys/cygwin.h>
+-#endif
+-
+ // getpwnam doesn't exist on Windows and Cray Xt3/Catamount
+ // same for TIOCGWINSZ
+ #if defined(_WIN32) || defined (__LIBCATAMOUNT__)
+@@ -1148,15 +1141,7 @@
+     {
+     return false;
+     }
+-#if defined(__CYGWIN__)
+-  // Convert filename to native windows path if possible.
+-  char winpath[MAX_PATH];
+-  if(SystemTools::PathCygwinToWin32(filename.c_str(), winpath))
+-    {
+-    return (GetFileAttributesA(winpath) != INVALID_FILE_ATTRIBUTES);
+-    }
+-  return access(filename.c_str(), R_OK) == 0;
+-#elif defined(_WIN32)
++#if defined(_WIN32)
+   return (GetFileAttributesW(
+             SystemTools::ConvertToWindowsExtendedPath(filename).c_str())
+           != INVALID_FILE_ATTRIBUTES);
+@@ -1190,28 +1175,6 @@
+ }
+ 
+ //----------------------------------------------------------------------------
+-#ifdef __CYGWIN__
+-bool SystemTools::PathCygwinToWin32(const char *path, char *win32_path)
+-{
+-  SystemToolsTranslationMap::iterator i =
+-    SystemTools::Cyg2Win32Map->find(path);
+-
+-  if (i != SystemTools::Cyg2Win32Map->end())
+-    {
+-    strncpy(win32_path, i->second.c_str(), MAX_PATH);
+-    }
+-  else
+-    {
+-    if(cygwin_conv_path(CCP_POSIX_TO_WIN_A, path, win32_path, MAX_PATH) != 0)
+-      {
+-      win32_path[0] = 0;
+-      }
+-    SystemToolsTranslationMap::value_type entry(path, win32_path);
+-    SystemTools::Cyg2Win32Map->insert(entry);
+-    }
+-  return win32_path[0] != 0;
+-}
+-#endif
+ 
+ bool SystemTools::Touch(const kwsys_stl::string& filename, bool create)
+ {
+@@ -4307,7 +4270,7 @@
+ 
+ bool SystemTools::FileIsFullPath(const char* in_name, size_t len)
+ {
+-#if defined(_WIN32) || defined(__CYGWIN__)
++#if defined(_WIN32)
+   // On Windows, the name must be at least two characters long.
+   if(len < 2)
+     {
+@@ -5078,9 +5041,6 @@
+ static unsigned int SystemToolsManagerCount;
+ SystemToolsTranslationMap *SystemTools::TranslationMap;
+ SystemToolsTranslationMap *SystemTools::LongPathMap;
+-#ifdef __CYGWIN__
+-SystemToolsTranslationMap *SystemTools::Cyg2Win32Map;
+-#endif
+ 
+ // SystemToolsManager manages the SystemTools singleton.
+ // SystemToolsManager should be included in any translation unit
+@@ -5126,9 +5086,6 @@
+   // Allocate the translation map first.
+   SystemTools::TranslationMap = new SystemToolsTranslationMap;
+   SystemTools::LongPathMap = new SystemToolsTranslationMap;
+-#ifdef __CYGWIN__
+-  SystemTools::Cyg2Win32Map = new SystemToolsTranslationMap;
+-#endif
+ 
+   // Add some special translation paths for unix.  These are not added
+   // for windows because drive letters need to be maintained.  Also,
+@@ -5183,9 +5140,6 @@
+ {
+   delete SystemTools::TranslationMap;
+   delete SystemTools::LongPathMap;
+-#ifdef __CYGWIN__
+-  delete SystemTools::Cyg2Win32Map;
+-#endif
+ }
+ 
+ 
+--- cmake-3.2.2/Source/kwsys/SystemTools.hxx.in	2015-04-13 19:09:00.000000000 +0200
++++ cmake-3.2.2/Source/kwsys/SystemTools.hxx.in	2015-06-10 11:24:24.271286600 +0200
+@@ -298,15 +298,6 @@
+   static bool FileExists(const kwsys_stl::string& filename);
+ 
+   /**
+-   * Converts Cygwin path to Win32 path. Uses dictionary container for
+-   * caching and calls to cygwin_conv_to_win32_path from Cygwin dll
+-   * for actual translation.  Returns true on success, else false.
+-   */
+-#ifdef __CYGWIN__
+-  static bool PathCygwinToWin32(const char *path, char *win32_path);
+-#endif
+-
+-  /**
+    * Return file length
+    */
+   static unsigned long FileLength(const kwsys_stl::string& filename);
+@@ -942,9 +933,6 @@
+    */
+   static SystemToolsTranslationMap *TranslationMap;
+   static SystemToolsTranslationMap *LongPathMap;
+-#ifdef __CYGWIN__
+-  static SystemToolsTranslationMap *Cyg2Win32Map;
+-#endif
+   friend class SystemToolsManager;
+ };
+ 
+--- cmake-3.2.2/Modules/FindCurses.cmake	2015-04-13 19:09:00.000000000 +0200
++++ cmake-3.2.2/Modules/FindCurses.cmake	2015-06-10 12:10:19.682030300 +0200
+@@ -60,15 +60,6 @@
+ if(CURSES_NCURSES_LIBRARY  AND ((NOT CURSES_CURSES_LIBRARY) OR CURSES_NEED_NCURSES))
+   set(CURSES_USE_NCURSES TRUE)
+ endif()
+-# http://cygwin.com/ml/cygwin-announce/2010-01/msg00002.html
+-# cygwin ncurses stopped providing curses.h symlinks see above
+-# message.  Cygwin is an ncurses package, so force ncurses on
+-# cygwin if the curses.h is missing
+-if(CYGWIN)
+-  if(NOT EXISTS /usr/include/curses.h)
+-    set(CURSES_USE_NCURSES TRUE)
+-  endif()
+-endif()
+ 
+ 
+ # Not sure the logic is correct here.
diff --git a/pkgs/by-name/cm/cmake/005-remove-systemconfiguration-dep.diff b/pkgs/by-name/cm/cmake/005-remove-systemconfiguration-dep.diff
new file mode 100644
index 0000000000000..ffd3077d301e6
--- /dev/null
+++ b/pkgs/by-name/cm/cmake/005-remove-systemconfiguration-dep.diff
@@ -0,0 +1,70 @@
+diff -Naur cmake-3.27.7/Utilities/cmcurl/CMakeLists.txt cmake-3.27.7-new/Utilities/cmcurl/CMakeLists.txt
+--- cmake-3.27.7/Utilities/cmcurl/CMakeLists.txt	2023-10-06 10:08:35.000000000 -0300
++++ cmake-3.27.7-new/Utilities/cmcurl/CMakeLists.txt	2023-10-22 21:51:09.231609901 -0300
+@@ -414,13 +414,6 @@
+ 
+   if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT ENABLE_ARES)
+     set(use_core_foundation ON)
+-
+-    find_library(SYSTEMCONFIGURATION_FRAMEWORK "SystemConfiguration")
+-    if(NOT SYSTEMCONFIGURATION_FRAMEWORK)
+-      message(FATAL_ERROR "SystemConfiguration framework not found")
+-    endif()
+-
+-    list(APPEND CURL_LIBS "-framework SystemConfiguration")
+   endif()
+ endif()
+ 
+diff -Naur cmake-3.27.7/Utilities/cmcurl/lib/curl_setup.h cmake-3.27.7-new/Utilities/cmcurl/lib/curl_setup.h
+--- cmake-3.27.7/Utilities/cmcurl/lib/curl_setup.h	2023-10-06 10:08:35.000000000 -0300
++++ cmake-3.27.7-new/Utilities/cmcurl/lib/curl_setup.h	2023-10-22 21:52:00.214748294 -0300
+@@ -260,11 +260,7 @@
+  * performing this task will result in a synthesized IPv6 address.
+  */
+ #if defined(__APPLE__) && !defined(USE_ARES)
+-#include <TargetConditionals.h>
+ #define USE_RESOLVE_ON_IPS 1
+-#  if defined(TARGET_OS_OSX) && TARGET_OS_OSX
+-#    define CURL_OSX_CALL_COPYPROXIES 1
+-#  endif
+ #endif
+ 
+ #ifdef USE_LWIPSOCK
+diff -Naur cmake-3.27.7/Utilities/cmcurl/lib/hostip.c cmake-3.27.7-new/Utilities/cmcurl/lib/hostip.c
+--- cmake-3.27.7/Utilities/cmcurl/lib/hostip.c	2023-10-06 10:08:35.000000000 -0300
++++ cmake-3.27.7-new/Utilities/cmcurl/lib/hostip.c	2023-10-22 21:53:29.249989934 -0300
+@@ -67,10 +67,6 @@
+ #include "curl_memory.h"
+ #include "memdebug.h"
+ 
+-#if defined(ENABLE_IPV6) && defined(CURL_OSX_CALL_COPYPROXIES)
+-#include <SystemConfiguration/SCDynamicStoreCopySpecific.h>
+-#endif
+-
+ #if defined(CURLRES_SYNCH) &&                   \
+   defined(HAVE_ALARM) &&                        \
+   defined(SIGALRM) &&                           \
+@@ -743,23 +739,6 @@
+         return CURLRESOLV_ERROR;
+     }
+ 
+-#if defined(ENABLE_IPV6) && defined(CURL_OSX_CALL_COPYPROXIES)
+-    {
+-      /*
+-       * The automagic conversion from IPv4 literals to IPv6 literals only
+-       * works if the SCDynamicStoreCopyProxies system function gets called
+-       * first. As Curl currently doesn't support system-wide HTTP proxies, we
+-       * therefore don't use any value this function might return.
+-       *
+-       * This function is only available on a macOS and is not needed for
+-       * IPv4-only builds, hence the conditions above.
+-       */
+-      CFDictionaryRef dict = SCDynamicStoreCopyProxies(NULL);
+-      if(dict)
+-        CFRelease(dict);
+-    }
+-#endif
+-
+ #ifndef USE_RESOLVE_ON_IPS
+     /* First check if this is an IPv4 address string */
+     if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
diff --git a/pkgs/by-name/cm/cmake/006-darwin-always-set-runtime-c-flag.diff b/pkgs/by-name/cm/cmake/006-darwin-always-set-runtime-c-flag.diff
new file mode 100644
index 0000000000000..dc10e6b342311
--- /dev/null
+++ b/pkgs/by-name/cm/cmake/006-darwin-always-set-runtime-c-flag.diff
@@ -0,0 +1,14 @@
+Revert of commit 1af23c4de2c7d58c06171d70b37794b5c860d5f4.
+--- b/Modules/Platform/Darwin.cmake
++++ a/Modules/Platform/Darwin.cmake
+@@ -47,9 +47,7 @@
+ set(CMAKE_SHARED_MODULE_SUFFIX ".so")
+ set(CMAKE_MODULE_EXISTS 1)
+ set(CMAKE_DL_LIBS "")
++set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
+-if(NOT "${_CURRENT_OSX_VERSION}" VERSION_LESS "10.5")
+-  set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
+-endif()
+ 
+ foreach(lang C CXX OBJC OBJCXX)
+   set(CMAKE_${lang}_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
diff --git a/pkgs/by-name/cm/cmake/check-pc-files-hook.sh b/pkgs/by-name/cm/cmake/check-pc-files-hook.sh
new file mode 100644
index 0000000000000..94d1b7b53556e
--- /dev/null
+++ b/pkgs/by-name/cm/cmake/check-pc-files-hook.sh
@@ -0,0 +1,18 @@
+cmakePcfileCheckPhase() {
+    while IFS= read -rd $'\0' file; do
+        grepout=$(grep --line-number '}//nix/store' "$file" || true)
+        if [ -n "$grepout" ]; then
+            {
+            echo "Broken paths found in a .pc file! $file"
+            echo "The following lines have issues (specifically '//' in paths)."
+            echo "$grepout"
+            echo "It is very likely that paths are being joined improperly."
+            echo 'ex: "${prefix}/@CMAKE_INSTALL_LIBDIR@" should be "@CMAKE_INSTALL_FULL_LIBDIR@"'
+            echo "Please see https://github.com/NixOS/nixpkgs/issues/144170 for more details."
+            exit 1
+            } 1>&2
+        fi
+    done < <(find "${!outputDev}" -iname "*.pc" -print0)
+}
+
+postFixupHooks+=(cmakePcfileCheckPhase)
diff --git a/pkgs/by-name/cm/cmake/package.nix b/pkgs/by-name/cm/cmake/package.nix
new file mode 100644
index 0000000000000..a573147915012
--- /dev/null
+++ b/pkgs/by-name/cm/cmake/package.nix
@@ -0,0 +1,188 @@
+{ lib
+, stdenv
+, fetchurl
+, buildPackages
+, bzip2
+, curlMinimal
+, expat
+, libarchive
+, libuv
+, ncurses
+, openssl
+, pkg-config
+, ps
+, rhash
+, sphinx
+, texinfo
+, xz
+, zlib
+, isBootstrap ? null
+, isMinimalBuild ? (
+  if isBootstrap != null
+  then lib.warn
+    "isBootstrap argument is deprecated and will be removed; use isMinimalBuild instead"
+    isBootstrap
+  else false)
+, useOpenSSL ? !isMinimalBuild
+, useSharedLibraries ? (!isMinimalBuild && !stdenv.isCygwin)
+, uiToolkits ? [] # can contain "ncurses" and/or "qt5"
+, buildDocs ? !(isMinimalBuild || (uiToolkits == []))
+, darwin
+, libsForQt5
+}:
+
+let
+  inherit (darwin.apple_sdk.frameworks) SystemConfiguration;
+  inherit (libsForQt5) qtbase wrapQtAppsHook;
+  cursesUI = lib.elem "ncurses" uiToolkits;
+  qt5UI = lib.elem "qt5" uiToolkits;
+in
+# Accepts only "ncurses" and "qt5" as possible uiToolkits
+assert lib.subtractLists [ "ncurses" "qt5" ] uiToolkits == [];
+# Minimal, bootstrap cmake does not have toolkits
+assert isMinimalBuild -> (uiToolkits == []);
+stdenv.mkDerivation (finalAttrs: {
+  pname = "cmake"
+    + lib.optionalString isMinimalBuild "-minimal"
+    + lib.optionalString cursesUI "-cursesUI"
+    + lib.optionalString qt5UI "-qt5UI";
+  version = "3.27.7";
+
+  src = fetchurl {
+    url = "https://cmake.org/files/v${lib.versions.majorMinor finalAttrs.version}/cmake-${finalAttrs.version}.tar.gz";
+    hash = "sha256-CPcaEGA2vwUfaSdg75VYwFd8Qqw56Wugl+dmK9QVjY4=";
+  };
+
+  patches = [
+    # Don't search in non-Nix locations such as /usr, but do search in our libc.
+    ./001-search-path.diff
+    # Don't depend on frameworks.
+    ./002-application-services.diff
+    # Derived from https://github.com/libuv/libuv/commit/1a5d4f08238dd532c3718e210078de1186a5920d
+    ./003-libuv-application-services.diff
+  ]
+  ++ lib.optional stdenv.isCygwin ./004-cygwin.diff
+  # Derived from https://github.com/curl/curl/commit/31f631a142d855f069242f3e0c643beec25d1b51
+  ++ lib.optional (stdenv.isDarwin && isMinimalBuild) ./005-remove-systemconfiguration-dep.diff
+  # On Darwin, always set CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG.
+  ++ lib.optional stdenv.isDarwin ./006-darwin-always-set-runtime-c-flag.diff;
+
+  outputs = [ "out" ] ++ lib.optionals buildDocs [ "man" "info" ];
+  setOutputFlags = false;
+
+  setupHooks = [
+    ./setup-hook.sh
+    ./check-pc-files-hook.sh
+  ];
+
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
+
+  nativeBuildInputs = finalAttrs.setupHooks ++ [
+    pkg-config
+  ]
+  ++ lib.optionals buildDocs [ texinfo ]
+  ++ lib.optionals qt5UI [ wrapQtAppsHook ];
+
+  buildInputs = lib.optionals useSharedLibraries [
+    bzip2
+    curlMinimal
+    expat
+    libarchive
+    xz
+    zlib
+    libuv
+    rhash
+  ]
+  ++ lib.optional useOpenSSL openssl
+  ++ lib.optional cursesUI ncurses
+  ++ lib.optional qt5UI qtbase
+  ++ lib.optional (stdenv.isDarwin && !isMinimalBuild) SystemConfiguration;
+
+  propagatedBuildInputs = lib.optional stdenv.isDarwin ps;
+
+  preConfigure = ''
+    fixCmakeFiles .
+    substituteInPlace Modules/Platform/UnixPaths.cmake \
+      --subst-var-by libc_bin ${lib.getBin stdenv.cc.libc} \
+      --subst-var-by libc_dev ${lib.getDev stdenv.cc.libc} \
+      --subst-var-by libc_lib ${lib.getLib stdenv.cc.libc}
+    # CC_FOR_BUILD and CXX_FOR_BUILD are used to bootstrap cmake
+    configureFlags="--parallel=''${NIX_BUILD_CORES:-1} CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD $configureFlags"
+  '';
+
+  # The configuration script is not autoconf-based, although being similar;
+  # triples and other interesting info are passed via CMAKE_* environment
+  # variables and commandline switches
+  configurePlatforms = [ ];
+
+  configureFlags = [
+    "CXXFLAGS=-Wno-elaborated-enum-base"
+    "--docdir=share/doc/${finalAttrs.pname}-${finalAttrs.version}"
+  ] ++ (if useSharedLibraries
+        then [
+          "--no-system-cppdap"
+          "--no-system-jsoncpp"
+          "--system-libs"
+        ]
+        else [
+          "--no-system-libs"
+        ]) # FIXME: cleanup
+  ++ lib.optional qt5UI "--qt-gui"
+  ++ lib.optionals buildDocs [
+    "--sphinx-build=${sphinx}/bin/sphinx-build"
+    "--sphinx-info"
+    "--sphinx-man"
+  ]
+  # Workaround https://gitlab.kitware.com/cmake/cmake/-/issues/20568
+  ++ lib.optionals stdenv.hostPlatform.is32bit [
+    "CFLAGS=-D_FILE_OFFSET_BITS=64"
+    "CXXFLAGS=-D_FILE_OFFSET_BITS=64"
+  ]
+  ++ [
+    "--"
+    # We should set the proper `CMAKE_SYSTEM_NAME`.
+    # http://www.cmake.org/Wiki/CMake_Cross_Compiling
+    #
+    # Unfortunately cmake seems to expect absolute paths for ar, ranlib, and
+    # strip. Otherwise they are taken to be relative to the source root of the
+    # package being built.
+    (lib.cmakeFeature "CMAKE_CXX_COMPILER" "${stdenv.cc.targetPrefix}c++")
+    (lib.cmakeFeature "CMAKE_C_COMPILER" "${stdenv.cc.targetPrefix}cc")
+    (lib.cmakeFeature "CMAKE_AR"
+      "${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ar")
+    (lib.cmakeFeature "CMAKE_RANLIB"
+      "${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ranlib")
+    (lib.cmakeFeature "CMAKE_STRIP"
+      "${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}strip")
+
+    (lib.cmakeBool "CMAKE_USE_OPENSSL" useOpenSSL)
+    (lib.cmakeBool "BUILD_CursesDialog" cursesUI)
+  ];
+
+  # make install attempts to use the just-built cmake
+  preInstall = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+    sed -i 's|bin/cmake|${buildPackages.cmakeMinimal}/bin/cmake|g' Makefile
+  '';
+
+  dontUseCmakeConfigure = true;
+  enableParallelBuilding = true;
+
+  doCheck = false; # fails
+
+  meta = {
+    homepage = "https://cmake.org/";
+    description = "Cross-platform, open-source build system generator";
+    longDescription = ''
+      CMake is an open-source, cross-platform family of tools designed to build,
+      test and package software. CMake is used to control the software
+      compilation process using simple platform and compiler independent
+      configuration files, and generate native makefiles and workspaces that can
+      be used in the compiler environment of your choice.
+    '';
+    changelog = "https://cmake.org/cmake/help/v${lib.versions.majorMinor finalAttrs.version}/release/${lib.versions.majorMinor finalAttrs.version}.html";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ ttuegel lnl7 AndersonTorres ];
+    platforms = lib.platforms.all;
+    broken = (qt5UI && stdenv.isDarwin);
+  };
+})
diff --git a/pkgs/by-name/cm/cmake/setup-hook.sh b/pkgs/by-name/cm/cmake/setup-hook.sh
new file mode 100755
index 0000000000000..b28ed42b6896b
--- /dev/null
+++ b/pkgs/by-name/cm/cmake/setup-hook.sh
@@ -0,0 +1,184 @@
+addCMakeParams() {
+    addToSearchPath CMAKE_PREFIX_PATH $1
+}
+
+fixCmakeFiles() {
+    # Replace occurences of /usr and /opt by /var/empty.
+    echo "fixing cmake files..."
+    find "$1" \( -type f -name "*.cmake" -o -name "*.cmake.in" -o -name CMakeLists.txt \) -print |
+        while read fn; do
+            sed -e 's^/usr\([ /]\|$\)^/var/empty\1^g' -e 's^/opt\([ /]\|$\)^/var/empty\1^g' < "$fn" > "$fn.tmp"
+            mv "$fn.tmp" "$fn"
+        done
+}
+
+cmakeConfigurePhase() {
+    runHook preConfigure
+
+    # default to CMake defaults if unset
+    : ${cmakeBuildDir:=build}
+
+    export CTEST_OUTPUT_ON_FAILURE=1
+    if [ -n "${enableParallelChecking-1}" ]; then
+        export CTEST_PARALLEL_LEVEL=$NIX_BUILD_CORES
+    fi
+
+    if [ -z "${dontFixCmake-}" ]; then
+        fixCmakeFiles .
+    fi
+
+    if [ -z "${dontUseCmakeBuildDir-}" ]; then
+        mkdir -p "$cmakeBuildDir"
+        cd "$cmakeBuildDir"
+        : ${cmakeDir:=..}
+    else
+        : ${cmakeDir:=.}
+    fi
+
+    if [ -z "${dontAddPrefix-}" ]; then
+        cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix $cmakeFlags"
+    fi
+
+    # We should set the proper `CMAKE_SYSTEM_NAME`.
+    # http://www.cmake.org/Wiki/CMake_Cross_Compiling
+    #
+    # Unfortunately cmake seems to expect absolute paths for ar, ranlib, and
+    # strip. Otherwise they are taken to be relative to the source root of the
+    # package being built.
+    cmakeFlags="-DCMAKE_CXX_COMPILER=$CXX $cmakeFlags"
+    cmakeFlags="-DCMAKE_C_COMPILER=$CC $cmakeFlags"
+    cmakeFlags="-DCMAKE_AR=$(command -v $AR) $cmakeFlags"
+    cmakeFlags="-DCMAKE_RANLIB=$(command -v $RANLIB) $cmakeFlags"
+    cmakeFlags="-DCMAKE_STRIP=$(command -v $STRIP) $cmakeFlags"
+
+    # on macOS we want to prefer Unix-style headers to Frameworks
+    # because we usually do not package the framework
+    cmakeFlags="-DCMAKE_FIND_FRAMEWORK=LAST $cmakeFlags"
+
+    # we never want to use the global macOS SDK
+    cmakeFlags="-DCMAKE_OSX_SYSROOT= $cmakeFlags"
+
+    # correctly detect our clang compiler
+    cmakeFlags="-DCMAKE_POLICY_DEFAULT_CMP0025=NEW $cmakeFlags"
+
+    # This installs shared libraries with a fully-specified install
+    # name. By default, cmake installs shared libraries with just the
+    # basename as the install name, which means that, on Darwin, they
+    # can only be found by an executable at runtime if the shared
+    # libraries are in a system path or in the same directory as the
+    # executable. This flag makes the shared library accessible from its
+    # nix/store directory.
+    cmakeFlags="-DCMAKE_INSTALL_NAME_DIR=${!outputLib}/lib $cmakeFlags"
+
+    # The docdir flag needs to include PROJECT_NAME as per GNU guidelines,
+    # try to extract it from CMakeLists.txt.
+    if [[ -z "$shareDocName" ]]; then
+        local cmakeLists="${cmakeDir}/CMakeLists.txt"
+        if [[ -f "$cmakeLists" ]]; then
+            local shareDocName="$(grep --only-matching --perl-regexp --ignore-case '\bproject\s*\(\s*"?\K([^[:space:]")]+)' < "$cmakeLists" | head -n1)"
+        fi
+        # The argument sometimes contains garbage or variable interpolation.
+        # When that is the case, let’s fall back to the derivation name.
+        if [[ -z "$shareDocName" ]] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_+-]'; then
+            if [[ -n "${pname-}" ]]; then
+                shareDocName="$pname"
+            else
+                shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"
+            fi
+        fi
+    fi
+
+    # This ensures correct paths with multiple output derivations
+    # It requires the project to use variables from GNUInstallDirs module
+    # https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
+    cmakeFlags="-DCMAKE_INSTALL_BINDIR=${!outputBin}/bin $cmakeFlags"
+    cmakeFlags="-DCMAKE_INSTALL_SBINDIR=${!outputBin}/sbin $cmakeFlags"
+    cmakeFlags="-DCMAKE_INSTALL_INCLUDEDIR=${!outputInclude}/include $cmakeFlags"
+    cmakeFlags="-DCMAKE_INSTALL_OLDINCLUDEDIR=${!outputInclude}/include $cmakeFlags"
+    cmakeFlags="-DCMAKE_INSTALL_MANDIR=${!outputMan}/share/man $cmakeFlags"
+    cmakeFlags="-DCMAKE_INSTALL_INFODIR=${!outputInfo}/share/info $cmakeFlags"
+    cmakeFlags="-DCMAKE_INSTALL_DOCDIR=${!outputDoc}/share/doc/${shareDocName} $cmakeFlags"
+    cmakeFlags="-DCMAKE_INSTALL_LIBDIR=${!outputLib}/lib $cmakeFlags"
+    cmakeFlags="-DCMAKE_INSTALL_LIBEXECDIR=${!outputLib}/libexec $cmakeFlags"
+    cmakeFlags="-DCMAKE_INSTALL_LOCALEDIR=${!outputLib}/share/locale $cmakeFlags"
+
+    # Don’t build tests when doCheck = false
+    if [ -z "${doCheck-}" ]; then
+        cmakeFlags="-DBUILD_TESTING=OFF $cmakeFlags"
+    fi
+
+    # Always build Release, to ensure optimisation flags
+    cmakeFlags="-DCMAKE_BUILD_TYPE=${cmakeBuildType:-Release} $cmakeFlags"
+
+    # Disable user package registry to avoid potential side effects
+    # and unecessary attempts to access non-existent home folder
+    # https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#disabling-the-package-registry
+    cmakeFlags="-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON $cmakeFlags"
+    cmakeFlags="-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF $cmakeFlags"
+    cmakeFlags="-DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF $cmakeFlags"
+
+    if [ "${buildPhase-}" = ninjaBuildPhase ]; then
+        cmakeFlags="-GNinja $cmakeFlags"
+    fi
+
+    echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}"
+
+    cmake "$cmakeDir" $cmakeFlags "${cmakeFlagsArray[@]}"
+
+    if ! [[ -v enableParallelBuilding ]]; then
+        enableParallelBuilding=1
+        echo "cmake: enabled parallel building"
+    fi
+
+    if ! [[ -v enableParallelInstalling ]]; then
+        enableParallelInstalling=1
+        echo "cmake: enabled parallel installing"
+    fi
+
+    runHook postConfigure
+}
+
+if [ -z "${dontUseCmakeConfigure-}" -a -z "${configurePhase-}" ]; then
+    setOutputFlags=
+    configurePhase=cmakeConfigurePhase
+fi
+
+addEnvHooks "$targetOffset" addCMakeParams
+
+makeCmakeFindLibs(){
+  isystem_seen=
+  iframework_seen=
+  for flag in ${NIX_CFLAGS_COMPILE-} ${NIX_LDFLAGS-}; do
+    if test -n "$isystem_seen" && test -d "$flag"; then
+      isystem_seen=
+      export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag}"
+    elif test -n "$iframework_seen" && test -d "$flag"; then
+      iframework_seen=
+      export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag}"
+    else
+      isystem_seen=
+      iframework_seen=
+      case $flag in
+        -I*)
+          export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag:2}"
+          ;;
+        -L*)
+          export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH-}${CMAKE_LIBRARY_PATH:+:}${flag:2}"
+          ;;
+        -F*)
+          export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag:2}"
+          ;;
+        -isystem)
+          isystem_seen=1
+          ;;
+        -iframework)
+          iframework_seen=1
+          ;;
+      esac
+    fi
+  done
+}
+
+# not using setupHook, because it could be a setupHook adding additional
+# include flags to NIX_CFLAGS_COMPILE
+postHooks+=(makeCmakeFindLibs)
diff --git a/pkgs/by-name/co/cosmic-applets/package.nix b/pkgs/by-name/co/cosmic-applets/package.nix
index efb2529e9df25..b71f6d1996893 100644
--- a/pkgs/by-name/co/cosmic-applets/package.nix
+++ b/pkgs/by-name/co/cosmic-applets/package.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, rust
 , rustPlatform
 , just
 , pkg-config
@@ -52,11 +51,11 @@ rustPlatform.buildRustPackage {
 
   justFlags = [
     "--set" "prefix" (placeholder "out")
-    "--set" "target" "${rust.lib.toRustTargetSpecShort stdenv.hostPlatform}/release"
+    "--set" "target" "${stdenv.hostPlatform.rust.cargoShortTarget}/release"
   ];
 
   # Force linking to libwayland-client, which is always dlopen()ed.
-  "CARGO_TARGET_${rust.toRustTargetForUseInEnvVars stdenv.hostPlatform}_RUSTFLAGS" =
+  "CARGO_TARGET_${stdenv.hostPlatform.rust.cargoEnvVarTarget}_RUSTFLAGS" =
     map (a: "-C link-arg=${a}") [
       "-Wl,--push-state,--no-as-needed"
       "-lwayland-client"
diff --git a/pkgs/by-name/co/cosmic-panel/package.nix b/pkgs/by-name/co/cosmic-panel/package.nix
index 9177bcc7ef677..7c8c31f511d41 100644
--- a/pkgs/by-name/co/cosmic-panel/package.nix
+++ b/pkgs/by-name/co/cosmic-panel/package.nix
@@ -41,11 +41,11 @@ rustPlatform.buildRustPackage {
 
   justFlags = [
     "--set" "prefix" (placeholder "out")
-    "--set" "bin-src" "target/${rust.lib.toRustTargetSpecShort stdenv.hostPlatform}/release/cosmic-panel"
+    "--set" "bin-src" "target/${stdenv.hostPlatform.rust.cargoShortTarget}/release/cosmic-panel"
   ];
 
   # Force linking to libEGL, which is always dlopen()ed.
-  "CARGO_TARGET_${rust.toRustTargetForUseInEnvVars stdenv.hostPlatform}_RUSTFLAGS" =
+  "CARGO_TARGET_${stdenv.hostPlatform.rust.cargoEnvVarTarget}_RUSTFLAGS" =
     map (a: "-C link-arg=${a}") [
       "-Wl,--push-state,--no-as-needed"
       "-lEGL"
diff --git a/pkgs/by-name/ju/justbuild/package.nix b/pkgs/by-name/ju/justbuild/package.nix
index 3403edcaaccfc..d630bdf22b308 100644
--- a/pkgs/by-name/ju/justbuild/package.nix
+++ b/pkgs/by-name/ju/justbuild/package.nix
@@ -11,7 +11,7 @@
   openssl,
 
   pkg-config,
-  protobuf3_23,
+  protobuf_23,
   grpc,
   pandoc,
   python3,
@@ -87,14 +87,14 @@ stdenv.mkDerivation rec {
     # For future updates: The currently used version can be found in the file
     # etc/repos.json: https://github.com/just-buildsystem/justbuild/blob/master/etc/repos.json
     # under the key .repositories.protobuf
-    protobuf3_23
+    protobuf_23
     python3
   ];
 
   postPatch = ''
     sed -ie 's|\./bin/just-mr.py|${python3}/bin/python3 ./bin/just-mr.py|' bin/bootstrap.py
     sed -ie 's|#!/usr/bin/env python3|#!${python3}/bin/python3|' bin/parallel-bootstrap-traverser.py
-    jq '.repositories.protobuf.pkg_bootstrap.local_path = "${protobuf3_23}"' etc/repos.json > etc/repos.json.patched
+    jq '.repositories.protobuf.pkg_bootstrap.local_path = "${protobuf_23}"' etc/repos.json > etc/repos.json.patched
     mv etc/repos.json.patched etc/repos.json
     jq '.repositories.com_github_grpc_grpc.pkg_bootstrap.local_path = "${grpc}"' etc/repos.json > etc/repos.json.patched
     mv etc/repos.json.patched etc/repos.json
diff --git a/pkgs/by-name/me/meson/001-fix-rpath.patch b/pkgs/by-name/me/meson/001-fix-rpath.patch
new file mode 100644
index 0000000000000..29bec7903ca98
--- /dev/null
+++ b/pkgs/by-name/me/meson/001-fix-rpath.patch
@@ -0,0 +1,24 @@
+--- a/mesonbuild/backend/backends.py
++++ b/mesonbuild/backend/backends.py
+@@ -723,6 +723,21 @@
+     @staticmethod
+     def get_rpath_dirs_from_link_args(args: T.List[str]) -> T.Set[str]:
+         dirs: T.Set[str] = set()
++
++        nix_ldflags = os.environ.get('NIX_LDFLAGS', '').split()
++        next_is_path = False
++        # Try to add rpaths set by user or ld-wrapper so that they are not removed.
++        # Based on https://github.com/NixOS/nixpkgs/blob/69711a2f5ffe8cda208163be5258266172ff527f/pkgs/build-support/bintools-wrapper/ld-wrapper.sh#L148-L177
++        for flag in nix_ldflags:
++            if flag == '-rpath' or flag == '-L':
++                next_is_path = True
++            elif next_is_path or flag.startswith('-L/'):
++                if flag.startswith('-L/'):
++                    flag = flag[2:]
++                if flag.startswith('@storeDir@'):
++                    dirs.add(flag)
++                next_is_path = False
++
+         # Match rpath formats:
+         # -Wl,-rpath=
+         # -Wl,-rpath,
diff --git a/pkgs/by-name/me/meson/002-clear-old-rpath.patch b/pkgs/by-name/me/meson/002-clear-old-rpath.patch
new file mode 100644
index 0000000000000..f1e3c76e8b53b
--- /dev/null
+++ b/pkgs/by-name/me/meson/002-clear-old-rpath.patch
@@ -0,0 +1,20 @@
+diff --git a/mesonbuild/scripts/depfixer.py b/mesonbuild/scripts/depfixer.py
+index 4176b9a03..faaabf616 100644
+--- a/mesonbuild/scripts/depfixer.py
++++ b/mesonbuild/scripts/depfixer.py
+@@ -336,6 +336,15 @@ class Elf(DataSizes):
+         if not new_rpath:
+             self.remove_rpath_entry(entrynum)
+         else:
++            # Clear old rpath to avoid stale references,
++            # not heeding the warning above about de-duplication
++            # since it does not seem to cause issues for us
++            # and not doing so trips up Nix’s reference checker.
++            # See https://github.com/NixOS/nixpkgs/pull/46020
++            # and https://github.com/NixOS/nixpkgs/issues/95163
++            self.bf.seek(rp_off)
++            self.bf.write(b'\0'*len(old_rpath))
++
+             self.bf.seek(rp_off)
+             self.bf.write(new_rpath)
+             self.bf.write(b'\0')
diff --git a/pkgs/by-name/me/meson/003-more-env-vars.patch b/pkgs/by-name/me/meson/003-more-env-vars.patch
new file mode 100644
index 0000000000000..e4ad43550423d
--- /dev/null
+++ b/pkgs/by-name/me/meson/003-more-env-vars.patch
@@ -0,0 +1,12 @@
+diff -Naur meson-0.60.2-old/mesonbuild/environment.py meson-0.60.2-new/mesonbuild/environment.py
+--- meson-0.60.2-old/mesonbuild/environment.py	2021-11-02 16:58:13.000000000 -0300
++++ meson-0.60.2-new/mesonbuild/environment.py	2021-12-12 17:44:00.350499307 -0300
+@@ -68,7 +68,7 @@
+         # compiling we fall back on the unprefixed host version. This
+         # allows native builds to never need to worry about the 'BUILD_*'
+         # ones.
+-        ([var_name + '_FOR_BUILD'] if is_cross else [var_name]),
++        [var_name + '_FOR_BUILD'] + ([] if is_cross else [var_name]),
+         # Always just the unprefixed host versions
+         [var_name]
+     )[for_machine]
diff --git a/pkgs/by-name/me/meson/004-gir-fallback-path.patch b/pkgs/by-name/me/meson/004-gir-fallback-path.patch
new file mode 100644
index 0000000000000..e6d7402652778
--- /dev/null
+++ b/pkgs/by-name/me/meson/004-gir-fallback-path.patch
@@ -0,0 +1,21 @@
+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
+index 1c6952df7..9466a0b7d 100644
+--- a/mesonbuild/modules/gnome.py
++++ b/mesonbuild/modules/gnome.py
+@@ -923,6 +923,16 @@ class GnomeModule(ExtensionModule):
+         if fatal_warnings:
+             scan_command.append('--warn-error')
+
++        if len(set(girtarget.get_custom_install_dir()[0] for girtarget in girtargets if girtarget.get_custom_install_dir())) > 1:
++            raise MesonException('generate_gir tries to build multiple libraries with different install_dir at once: {}'.format(','.join([str(girtarget) for girtarget in girtargets])))
++
++        if girtargets[0].get_custom_install_dir():
++            fallback_libpath = girtargets[0].get_custom_install_dir()[0]
++        else:
++            fallback_libpath = None
++        if fallback_libpath is not None and isinstance(fallback_libpath, str) and len(fallback_libpath) > 0 and fallback_libpath[0] == "/":
++            scan_command += ['--fallback-library-path=' + fallback_libpath]
++
+         generated_files = [f for f in libsources if isinstance(f, (GeneratedList, CustomTarget, CustomTargetIndex))]
+ 
+         scan_target = self._make_gir_target(state, girfile, scan_command, generated_files, depends, kwargs)
diff --git a/pkgs/by-name/me/meson/005-boost-Do-not-add-system-paths-on-nix.patch b/pkgs/by-name/me/meson/005-boost-Do-not-add-system-paths-on-nix.patch
new file mode 100644
index 0000000000000..0a2eda9de9ac6
--- /dev/null
+++ b/pkgs/by-name/me/meson/005-boost-Do-not-add-system-paths-on-nix.patch
@@ -0,0 +1,21 @@
+diff -Naur meson-0.60.2-old/mesonbuild/dependencies/boost.py meson-0.60.2-new/mesonbuild/dependencies/boost.py
+--- meson-0.60.2-old/mesonbuild/dependencies/boost.py	2021-11-02 16:58:07.000000000 -0300
++++ meson-0.60.2-new/mesonbuild/dependencies/boost.py	2021-12-12 19:21:27.895705897 -0300
+@@ -682,16 +682,7 @@
+         else:
+             tmp = []  # type: T.List[Path]
+ 
+-            # Add some default system paths
+-            tmp += [Path('/opt/local')]
+-            tmp += [Path('/usr/local/opt/boost')]
+-            tmp += [Path('/usr/local')]
+-            tmp += [Path('/usr')]
+-
+-            # Cleanup paths
+-            tmp = [x for x in tmp if x.is_dir()]
+-            tmp = [x.resolve() for x in tmp]
+-            roots += tmp
++            # Remove such spurious, non-explicit "system" paths for Nix&Nixpkgs
+ 
+         self.check_and_set_roots(roots, use_system=True)
+ 
diff --git a/pkgs/by-name/me/meson/006-disable-bitcode.patch b/pkgs/by-name/me/meson/006-disable-bitcode.patch
new file mode 100644
index 0000000000000..a72997c104399
--- /dev/null
+++ b/pkgs/by-name/me/meson/006-disable-bitcode.patch
@@ -0,0 +1,24 @@
+--- a/mesonbuild/compilers/mixins/clang.py
++++ b/mesonbuild/compilers/mixins/clang.py
+@@ -56,10 +56,6 @@ class ClangCompiler(GnuLikeCompiler):
+             {OptionKey('b_colorout'), OptionKey('b_lto_threads'), OptionKey('b_lto_mode'), OptionKey('b_thinlto_cache'),
+              OptionKey('b_thinlto_cache_dir')})
+ 
+-        # TODO: this really should be part of the linker base_options, but
+-        # linkers don't have base_options.
+-        if isinstance(self.linker, AppleDynamicLinker):
+-            self.base_options.add(OptionKey('b_bitcode'))
+         # All Clang backends can also do LLVM IR
+         self.can_compile_suffixes.add('ll')
+ 
+--- a/mesonbuild/linkers/linkers.py
++++ b/mesonbuild/linkers/linkers.py
+@@ -785,7 +785,7 @@ class AppleDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker):
+         return self._apply_prefix('-headerpad_max_install_names')
+ 
+     def bitcode_args(self) -> T.List[str]:
+-        return self._apply_prefix('-bitcode_bundle')
++        raise MesonException('Nixpkgs cctools does not support bitcode bundles')
+ 
+     def fatal_warnings(self) -> T.List[str]:
+         return self._apply_prefix('-fatal_warnings')
diff --git a/pkgs/by-name/me/meson/emulator-hook.sh b/pkgs/by-name/me/meson/emulator-hook.sh
new file mode 100644
index 0000000000000..4f08087cf5f55
--- /dev/null
+++ b/pkgs/by-name/me/meson/emulator-hook.sh
@@ -0,0 +1,5 @@
+add_meson_exe_wrapper_cross_flag() {
+  mesonFlagsArray+=(--cross-file=@crossFile@)
+}
+
+preConfigureHooks+=(add_meson_exe_wrapper_cross_flag)
diff --git a/pkgs/by-name/me/meson/package.nix b/pkgs/by-name/me/meson/package.nix
new file mode 100644
index 0000000000000..6239927848aa5
--- /dev/null
+++ b/pkgs/by-name/me/meson/package.nix
@@ -0,0 +1,166 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, installShellFiles
+, coreutils
+, darwin
+, libxcrypt
+, ninja
+, pkg-config
+, python3
+, substituteAll
+, zlib
+}:
+
+let
+  inherit (darwin.apple_sdk.frameworks) AppKit Cocoa Foundation OpenGL;
+in
+python3.pkgs.buildPythonApplication rec {
+  pname = "meson";
+  version = "1.2.3";
+
+  src = fetchFromGitHub {
+    owner = "mesonbuild";
+    repo = "meson";
+    rev = "refs/tags/${version}";
+    hash = "sha256-dgYYz3tQDG6Z4eE77WO2dXdardxVzzGaFLQ5znPcTlw=";
+  };
+
+  patches = [
+    # In typical distributions, RPATH is only needed for internal libraries so
+    # meson removes everything else. With Nix, the locations of libraries
+    # are not as predictable, therefore we need to keep them in the RPATH.
+    # At the moment we are keeping the paths starting with /nix/store.
+    # https://github.com/NixOS/nixpkgs/issues/31222#issuecomment-365811634
+    (substituteAll {
+      src = ./001-fix-rpath.patch;
+      inherit (builtins) storeDir;
+    })
+
+    # When Meson removes build_rpath from DT_RUNPATH entry, it just writes
+    # the shorter NUL-terminated new rpath over the old one to reduce
+    # the risk of potentially breaking the ELF files.
+    # But this can cause much bigger problem for Nix as it can produce
+    # cut-in-half-by-\0 store path references.
+    # Let’s just clear the whole rpath and hope for the best.
+    ./002-clear-old-rpath.patch
+
+    # Meson is currently inspecting fewer variables than autoconf does, which
+    # makes it harder for us to use setup hooks, etc.
+    # https://github.com/mesonbuild/meson/pull/6827
+    ./003-more-env-vars.patch
+
+    # Unlike libtool, vanilla Meson does not pass any information about the path
+    # library will be installed to to g-ir-scanner, breaking the GIR when path
+    # other than ${!outputLib}/lib is used.
+    # We patch Meson to add a --fallback-library-path argument with library
+    # install_dir to g-ir-scanner.
+    ./004-gir-fallback-path.patch
+
+    # Patch out default boost search paths to avoid impure builds on
+    # unsandboxed non-NixOS builds, see:
+    # https://github.com/NixOS/nixpkgs/issues/86131#issuecomment-711051774
+    ./005-boost-Do-not-add-system-paths-on-nix.patch
+
+    # Nixpkgs cctools does not have bitcode support.
+    ./006-disable-bitcode.patch
+
+    # Fix passing multiple --define-variable arguments to pkg-config.
+    # https://github.com/mesonbuild/meson/pull/10670
+    (fetchpatch {
+      url = "https://github.com/mesonbuild/meson/commit/d5252c5d4cf1c1931fef0c1c98dd66c000891d21.patch";
+      hash = "sha256-GiUNVul1N5Fl8mfqM7vA/r1FdKqImiDYLXMVDt77gvw=";
+      excludes = [
+        "docs/yaml/objects/dep.yaml"
+      ];
+    })
+  ];
+
+  buildInputs = lib.optionals (python3.pythonOlder "3.9") [
+    libxcrypt
+  ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  nativeCheckInputs = [
+    ninja
+    pkg-config
+  ];
+
+  checkInputs = [
+    zlib
+  ]
+  ++ lib.optionals stdenv.isDarwin [
+    AppKit
+    Cocoa
+    Foundation
+    OpenGL
+  ];
+
+  checkPhase = lib.concatStringsSep "\n" ([
+    "runHook preCheck"
+    ''
+      patchShebangs 'test cases'
+      substituteInPlace \
+        'test cases/native/8 external program shebang parsing/script.int.in' \
+          --replace /usr/bin/env ${coreutils}/bin/env
+    ''
+  ]
+  # Remove problematic tests
+  ++ (builtins.map (f: ''rm -vr "${f}";'') [
+    # requires git, creating cyclic dependency
+    ''test cases/common/66 vcstag''
+    # requires glib, creating cyclic dependency
+    ''test cases/linuxlike/6 subdir include order''
+    ''test cases/linuxlike/9 compiler checks with dependencies''
+    # requires static zlib, see #66461
+    ''test cases/linuxlike/14 static dynamic linkage''
+    # Nixpkgs cctools does not have bitcode support.
+    ''test cases/osx/7 bitcode''
+  ])
+  ++ [
+    ''HOME="$TMPDIR" python ./run_project_tests.py''
+    "runHook postCheck"
+  ]);
+
+  postInstall = ''
+    installShellCompletion --zsh data/shell-completions/zsh/_meson
+    installShellCompletion --bash data/shell-completions/bash/meson
+  '';
+
+  postFixup = ''
+    pushd $out/bin
+    # undo shell wrapper as meson tools are called with python
+    for i in *; do
+      mv ".$i-wrapped" "$i"
+    done
+    popd
+
+    # Do not propagate Python
+    rm $out/nix-support/propagated-build-inputs
+
+    substituteInPlace "$out/share/bash-completion/completions/meson" \
+      --replace "python3 -c " "${python3.interpreter} -c "
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  meta = {
+    homepage = "https://mesonbuild.com";
+    description = "An open source, fast and friendly build system made in Python";
+    longDescription = ''
+      Meson is an open source build system meant to be both extremely fast, and,
+      even more importantly, as user friendly as possible.
+
+      The main design point of Meson is that every moment a developer spends
+      writing or debugging build definitions is a second wasted. So is every
+      second spent waiting for the build system to actually start compiling
+      code.
+    '';
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+    inherit (python3.meta) platforms;
+  };
+}
+# TODO: a more Nixpkgs-tailoired test suite
diff --git a/pkgs/by-name/me/meson/setup-hook.sh b/pkgs/by-name/me/meson/setup-hook.sh
new file mode 100644
index 0000000000000..85849fbec734a
--- /dev/null
+++ b/pkgs/by-name/me/meson/setup-hook.sh
@@ -0,0 +1,87 @@
+# shellcheck shell=bash disable=SC2206
+
+mesonConfigurePhase() {
+    runHook preConfigure
+
+    local flagsArray=()
+
+    if [ -z "${dontAddPrefix-}" ]; then
+        flagsArray+=("--prefix=$prefix")
+    fi
+
+    # See multiple-outputs.sh and meson’s coredata.py
+    flagsArray+=(
+        "--libdir=${!outputLib}/lib"
+        "--libexecdir=${!outputLib}/libexec"
+        "--bindir=${!outputBin}/bin"
+        "--sbindir=${!outputBin}/sbin"
+        "--includedir=${!outputInclude}/include"
+        "--mandir=${!outputMan}/share/man"
+        "--infodir=${!outputInfo}/share/info"
+        "--localedir=${!outputLib}/share/locale"
+        "-Dauto_features=${mesonAutoFeatures:-enabled}"
+        "-Dwrap_mode=${mesonWrapMode:-nodownload}"
+        ${crossMesonFlags}
+        "--buildtype=${mesonBuildType:-plain}"
+    )
+
+    flagsArray+=(
+        $mesonFlags
+        "${mesonFlagsArray[@]}"
+    )
+
+    echoCmd 'mesonConfigurePhase flags' "${flagsArray[@]}"
+
+    meson setup build "${flagsArray[@]}"
+    cd build || { echoCmd 'mesonConfigurePhase' "could not cd to build"; exit 1; }
+
+    if ! [[ -v enableParallelBuilding ]]; then
+        enableParallelBuilding=1
+        echoCmd 'mesonConfigurePhase' "enabled parallel building"
+    fi
+
+    if [[ ${checkPhase-ninjaCheckPhase} = ninjaCheckPhase && -z $dontUseMesonCheck ]]; then
+        checkPhase=mesonCheckPhase
+    fi
+    if [[ ${installPhase-ninjaInstallPhase} = ninjaInstallPhase && -z $dontUseMesonInstall ]]; then
+        installPhase=mesonInstallPhase
+    fi
+
+    runHook postConfigure
+}
+
+mesonCheckPhase() {
+    runHook preCheck
+
+    local flagsArray=($mesonCheckFlags "${mesonCheckFlagsArray[@]}")
+
+    echoCmd 'mesonCheckPhase flags' "${flagsArray[@]}"
+    meson test --no-rebuild "${flagsArray[@]}"
+
+    runHook postCheck
+}
+
+mesonInstallPhase() {
+    runHook preInstall
+
+    local flagsArray=()
+
+    if [[ -n "$mesonInstallTags" ]]; then
+        flagsArray+=("--tags" "${mesonInstallTags// /,}")
+    fi
+    flagsArray+=(
+        $mesonInstallFlags
+        "${mesonInstallFlagsArray[@]}"
+    )
+
+    echoCmd 'mesonInstallPhase flags' "${flagsArray[@]}"
+    meson install --no-rebuild "${flagsArray[@]}"
+
+    runHook postInstall
+}
+
+if [ -z "${dontUseMesonConfigure-}" ] && [ -z "${configurePhase-}" ]; then
+    # shellcheck disable=SC2034
+    setOutputFlags=
+    configurePhase=mesonConfigurePhase
+fi
diff --git a/pkgs/by-name/va/valijson/package.nix b/pkgs/by-name/va/valijson/package.nix
new file mode 100644
index 0000000000000..777e192aee4a0
--- /dev/null
+++ b/pkgs/by-name/va/valijson/package.nix
@@ -0,0 +1,28 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+}:
+
+stdenv.mkDerivation rec {
+  pname = "valijson";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "tristanpenman";
+    repo = "valijson";
+    rev = "v${version}";
+    hash = "sha256-COVFBZtuTd1nyI/25feUYCurBwPlQV3qbxSSkn6aLl4=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  meta = with lib; {
+    description = "Header-only C++ library for JSON Schema validation, with support for many popular parsers";
+    homepage = "https://github.com/tristanpenman/valijson";
+    license = licenses.bsd2;
+    platforms = platforms.all;
+  };
+}