···214214215215In Nix, there are multiple approaches to building a Composer-based project.
216216217217-One such method is the `php.buildComposerProject` helper function, which serves
217217+One such method is the `php.buildComposerProject2` helper function, which serves
218218as a wrapper around `mkDerivation`.
219219220220Using this function, you can build a PHP project that includes both a
···249249you wish to modify the Composer version, use the `composer` attribute. It is
250250important to note that both attributes should be of the `derivation` type.
251251252252-Here's an example of working code example using `php.buildComposerProject`:
252252+Here's an example of working code example using `php.buildComposerProject2`:
253253254254```nix
255255{ php, fetchFromGitHub }:
256256257257-php.buildComposerProject (finalAttrs: {
257257+php.buildComposerProject2 (finalAttrs: {
258258 pname = "php-app";
259259 version = "1.0.0";
260260261261 src = fetchFromGitHub {
262262 owner = "git-owner";
263263 repo = "git-repo";
264264- rev = finalAttrs.version;
264264+ tag = finalAttrs.version;
265265 hash = "sha256-VcQRSss2dssfkJ+iUb5qT+FJ10GHiFDzySigcmuVI+8=";
266266 };
267267
+2
doc/release-notes/rl-2505.section.md
···98989999- `cassandra_3_0` and `cassandra_3_11` have been removed as they have reached end-of-life. Please update to `cassandra_4`. See the [changelog](https://github.com/apache/cassandra/blob/cassandra-4.0.17/NEWS.txt) for more information about the upgrade process.
100100101101+- `mariadb_105` has been removed as it has reached end-of-life in 2025-06. Please update to `mariadb_106`.
102102+101103- NetBox was updated to `>= 4.2.0`. Have a look at the breaking changes
102104 of the [4.1 release](https://github.com/netbox-community/netbox/releases/tag/v4.1.0)
103105 and the [4.2 release](https://github.com/netbox-community/netbox/releases/tag/v4.2.0),
···15931593 map (addContextFrom s) splits;
1594159415951595 /**
15961596+ Splits a string into substrings based on a predicate that examines adjacent characters.
15971597+15981598+ This function provides a flexible way to split strings by checking pairs of characters
15991599+ against a custom predicate function. Unlike simpler splitting functions, this allows
16001600+ for context-aware splitting based on character transitions and patterns.
16011601+16021602+ # Inputs
16031603+16041604+ `predicate`
16051605+ : Function that takes two arguments (previous character and current character)
16061606+ and returns true when the string should be split at the current position.
16071607+ For the first character, previous will be "" (empty string).
16081608+16091609+ `keepSplit`
16101610+ : Boolean that determines whether the splitting character should be kept as
16111611+ part of the result. If true, the character will be included at the beginning
16121612+ of the next substring; if false, it will be discarded.
16131613+16141614+ `str`
16151615+ : The input string to split.
16161616+16171617+ # Return
16181618+16191619+ A list of substrings from the original string, split according to the predicate.
16201620+16211621+ # Type
16221622+16231623+ ```
16241624+ splitStringBy :: (string -> string -> bool) -> bool -> string -> [string]
16251625+ ```
16261626+16271627+ # Examples
16281628+ :::{.example}
16291629+ ## `lib.strings.splitStringBy` usage example
16301630+16311631+ Split on periods and hyphens, discarding the separators:
16321632+ ```nix
16331633+ splitStringBy (prev: curr: builtins.elem curr [ "." "-" ]) false "foo.bar-baz"
16341634+ => [ "foo" "bar" "baz" ]
16351635+ ```
16361636+16371637+ Split on transitions from lowercase to uppercase, keeping the uppercase characters:
16381638+ ```nix
16391639+ splitStringBy (prev: curr: builtins.match "[a-z]" prev != null && builtins.match "[A-Z]" curr != null) true "fooBarBaz"
16401640+ => [ "foo" "Bar" "Baz" ]
16411641+ ```
16421642+16431643+ Handle leading separators correctly:
16441644+ ```nix
16451645+ splitStringBy (prev: curr: builtins.elem curr [ "." ]) false ".foo.bar.baz"
16461646+ => [ "" "foo" "bar" "baz" ]
16471647+ ```
16481648+16491649+ Handle trailing separators correctly:
16501650+ ```nix
16511651+ splitStringBy (prev: curr: builtins.elem curr [ "." ]) false "foo.bar.baz."
16521652+ => [ "foo" "bar" "baz" "" ]
16531653+ ```
16541654+ :::
16551655+ */
16561656+ splitStringBy =
16571657+ predicate: keepSplit: str:
16581658+ let
16591659+ len = stringLength str;
16601660+16611661+ # Helper function that processes the string character by character
16621662+ go =
16631663+ pos: currentPart: result:
16641664+ # Base case: reached end of string
16651665+ if pos == len then
16661666+ result ++ [ currentPart ]
16671667+ else
16681668+ let
16691669+ currChar = substring pos 1 str;
16701670+ prevChar = if pos > 0 then substring (pos - 1) 1 str else "";
16711671+ isSplit = predicate prevChar currChar;
16721672+ in
16731673+ if isSplit then
16741674+ # Split here - add current part to results and start a new one
16751675+ let
16761676+ newResult = result ++ [ currentPart ];
16771677+ newCurrentPart = if keepSplit then currChar else "";
16781678+ in
16791679+ go (pos + 1) newCurrentPart newResult
16801680+ else
16811681+ # Keep building current part
16821682+ go (pos + 1) (currentPart + currChar) result;
16831683+ in
16841684+ if len == 0 then [ (addContextFrom str "") ] else map (addContextFrom str) (go 0 "" [ ]);
16851685+16861686+ /**
15961687 Return a string without the specified prefix, if the prefix matches.
1597168815981689 # Inputs
···3333 zip,
3434 git,
3535 makeWrapper,
3636- electron_33,
3636+ electron_34,
3737 server ? false, # build server version
3838 pam,
3939 nixosTests,
···4242let
4343 # Note: we shouldn't use the latest electron here, since the node-abi dependency might
4444 # need to be updated every time the latest electron gets a new abi version number
4545- electron = electron_33;
4545+ electron = electron_34;
46464747 mathJaxSrc = fetchzip {
4848 url = "https://s3.amazonaws.com/rstudio-buildtools/mathjax-27.zip";
···3737 "buildGoModule: vendorHash is missing"
3838 ),
39394040+ # The go.sum file to track which can cause rebuilds.
4141+ goSum ? null,
4242+4043 # Whether to delete the vendor folder supplied with the source.
4144 deleteVendor ? false,
4245···6972 vendorHash
7073 deleteVendor
7174 proxyVendor
7575+ goSum
7276 ;
7377 goModules =
7478 if (finalAttrs.vendorHash == null) then
7579 ""
7680 else
7781 (stdenv.mkDerivation {
7878- name = "${finalAttrs.name or "${finalAttrs.pname}-${finalAttrs.version}"}-go-modules";
8282+ name =
8383+ let
8484+ prefix = "${finalAttrs.name or "${finalAttrs.pname}-${finalAttrs.version}"}-";
8585+8686+ # If "goSum" is supplied then it can cause "goModules" to rebuild.
8787+ # Attach the hash name of the "go.sum" file so we can rebuild when it changes.
8888+ suffix = lib.optionalString (
8989+ finalAttrs.goSum != null
9090+ ) "-${(lib.removeSuffix "-go.sum" (lib.removePrefix "${builtins.storeDir}/" finalAttrs.goSum))}";
9191+ in
9292+ "${prefix}go-modules${suffix}";
79938094 nativeBuildInputs = (finalAttrs.nativeBuildInputs or [ ]) ++ [
8195 go
···8397 cacert
8498 ];
85998686- inherit (finalAttrs) src modRoot;
100100+ inherit (finalAttrs) src modRoot goSum;
8710188102 # The following inheritance behavior is not trivial to expect, and some may
89103 # argue it's not ideal. Changing it may break vendor hashes in Nixpkgs and
···6677rustPlatform.buildRustPackage rec {
88 pname = "clock-rs";
99- version = "0.1.214";
99+ version = "0.1.215";
10101111 src = fetchFromGitHub {
1212 owner = "Oughie";
1313 repo = "clock-rs";
1414 tag = "v${version}";
1515- sha256 = "sha256-D0Wywl20TFIy8aQ9UkcI6T+5huyRuCCPc+jTeXsZd8g=";
1515+ sha256 = "sha256-uDEvJqaaBNRxohYqHE6qfqUF07ynRvGwJKWbYfgPEvg=";
1616 };
17171818 useFetchCargoVendor = true;
1919- cargoHash = "sha256-W4m4JffqNwebGWYNsMF6U0bDroqXJAixmcmqcqYjyzw=";
1919+ cargoHash = "sha256-Zry6mkOUdEgC95Y3U3RCXPJUsmaSoRPlHvUThI92GQU=";
20202121 meta = {
2222 description = "Modern, digital clock that effortlessly runs in your terminal";
+2-2
pkgs/by-name/co/coder/update.sh
···2323 # Update version number, using '#' as delimiter
2424 sed -i "/${channel} = {/,/};/{
2525 s#^\(\s*\)version = .*#\1version = \"$version\";#
2626- }" ./default.nix
2626+ }" ./package.nix
27272828 # Update hashes for each architecture
2929 for ARCH in "${!ARCHS[@]}"; do
···3737 # Update the Nix file with the new hash, using '#' as delimiter and preserving indentation
3838 sed -i "/${channel} = {/,/};/{
3939 s#^\(\s*\)${ARCH} = .*#\1${ARCH} = \"${SRI_HASH}\";#
4040- }" ./default.nix
4040+ }" ./package.nix
4141 done
4242}
4343
···33 stdenv,
44 mcpelauncher-client,
55 fetchFromGitHub,
66+ fetchpatch,
67 cmake,
78 pkg-config,
89 zlib,
···27282829 patches = [
2930 ./dont_download_glfw_ui.patch
3131+ # Qt 6.9 no longer implicitly converts non-char types (such as booleans) to
3232+ # construct a QChar. This leads to a build failure with Qt 6.9. Upstream
3333+ # has merged a patch, but has not yet formalized it through a release, so
3434+ # we must fetch it manually. Remove this fetch on the next point release.
3535+ (fetchpatch {
3636+ url = "https://github.com/minecraft-linux/mcpelauncher-ui-qt/commit/0526b1fd6234d84f63b216bf0797463f41d2bea0.diff";
3737+ hash = "sha256-vL5iqbs50qVh4BKDxTOpCwFQWO2gLeqrVLfnpeB6Yp8=";
3838+ stripLen = 1;
3939+ extraPrefix = "mcpelauncher-ui-qt/";
4040+ })
3041 ];
31423243 nativeBuildInputs = [
···360360 };
361361in
362362self: {
363363+ mariadb_105 = throw "'mariadb_105' has been removed because it reached its End of Life. Consider upgrading to 'mariadb_106'.";
363364 # see https://mariadb.org/about/#maintenance-policy for EOLs
364364- mariadb_105 = self.callPackage generic {
365365- # Supported until 2025-06-24
366366- version = "10.5.28";
367367- hash = "sha256-C1BwII2gEWZA8gvQhfETZSf5mMwjJocVvL81Lnt/PME=";
368368- };
369365 mariadb_106 = self.callPackage generic {
370366 # Supported until 2026-07-06
371367 version = "10.6.21";