···3344This hook can be used to setup a check phase that
55requires running a MPI application. It detects the
66-used present MPI implementaion type and exports
66+used present MPI implementation type and exports
77the neceesary environment variables to use
88`mpirun` and `mpiexec` in a Nix sandbox.
99
+1-1
doc/languages-frameworks/dotnet.section.md
···161161They can be installed either as a global tool for the entire system, or as a local tool specific to project.
162162163163The local installation is the easiest and works on NixOS in the same way as on other Linux distributions.
164164-[See dotnet documention](https://learn.microsoft.com/en-us/dotnet/core/tools/global-tools#install-a-local-tool) to learn more.
164164+[See dotnet documentation](https://learn.microsoft.com/en-us/dotnet/core/tools/global-tools#install-a-local-tool) to learn more.
165165166166[The global installation method](https://learn.microsoft.com/en-us/dotnet/core/tools/global-tools#install-a-global-tool)
167167should also work most of the time. You have to remember to update the `PATH`
+2-2
doc/languages-frameworks/haskell.section.md
···221221interested in the alternative [haskell.nix] framework, which, be warned, is
222222completely incompatible with packages from `haskellPackages`.
223223224224-<!-- TODO(@maralorn) Link to package set generation docs in the contributers guide below. -->
224224+<!-- TODO(@maralorn) Link to package set generation docs in the contributors guide below. -->
225225226226## `haskellPackages.mkDerivation` {#haskell-mkderivation}
227227···11921192Since the interrelated parts, i.e. the package set and GHC, are connected
11931193via the Nixpkgs fixpoint, we need to modify them both in a way that preserves
11941194their connection (or else we'd have to wire it up again manually). This is
11951195-achieved by changing GHC and the package set in seperate overlays to prevent
11951195+achieved by changing GHC and the package set in separate overlays to prevent
11961196the package set from pulling in GHC from `prev`.
1197119711981198The result is two overlays like the ones shown below. Adjustable parts are
+1-1
doc/languages-frameworks/php.section.md
···200200 composer repository on the filesystem containing dependencies specified in
201201 `composer.json`. This process uses the function
202202 `php.mkComposerRepository` which in turn uses the
203203- `php.composerHooks.composerRepositoryHook` hook. Internaly this function uses
203203+ `php.composerHooks.composerRepositoryHook` hook. Internally this function uses
204204 a custom
205205 [Composer plugin](https://github.com/nix-community/composer-local-repo-plugin) to
206206 generate the repository.
···353353354354 Another benefit of the refactoring is that we can now issue reloads via either `pkill -HUP unbound` and `systemctl reload unbound` to reload the running configuration without taking the daemon offline. A prerequisite of this was that unbound configuration is available on a well known path on the file system. We are using the path `/etc/unbound/unbound.conf` as that is the default in the CLI tooling which in turn enables us to use `unbound-control` without passing a custom configuration location.
355355356356- The module has also been reworked to be [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) compliant. As such, `sevices.unbound.extraConfig` has been removed and replaced by [services.unbound.settings](options.html#opt-services.unbound.settings). `services.unbound.interfaces` has been renamed to `services.unbound.settings.server.interface`.
356356+ The module has also been reworked to be [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) compliant. As such, `services.unbound.extraConfig` has been removed and replaced by [services.unbound.settings](options.html#opt-services.unbound.settings). `services.unbound.interfaces` has been renamed to `services.unbound.settings.server.interface`.
357357358358 `services.unbound.forwardAddresses` and `services.unbound.allowedAccess` have also been changed to use the new settings interface. You can follow the instructions when executing `nixos-rebuild` to upgrade your configuration to use the new interface.
359359
+3-3
nixos/doc/manual/release-notes/rl-2305.section.md
···87878888- [gmediarender](https://github.com/hzeller/gmrender-resurrect), a simple, headless UPnP/DLNA renderer. Available as [services.gmediarender](options.html#opt-services.gmediarender.enable).
89899090-- [go2rtc](https://github.com/AlexxIT/go2rtc), a camera streaming appliation with support for RTSP, WebRTC, HomeKit, FFMPEG, RTMP and other protocols. Available as [services.go2rtc](options.html#opt-services.go2rtc.enable).
9090+- [go2rtc](https://github.com/AlexxIT/go2rtc), a camera streaming application with support for RTSP, WebRTC, HomeKit, FFMPEG, RTMP and other protocols. Available as [services.go2rtc](options.html#opt-services.go2rtc.enable).
91919292- [goeland](https://github.com/slurdge/goeland), an alternative to rss2email written in Golang with many filters. Available as [services.goeland](#opt-services.goeland.enable).
9393···203203204204- `graylog` has been updated to version 5, which can not be updated directly from the previously packaged version 3.3. If you had installed the previously packaged version 3.3, please follow the [upgrade path](https://go2docs.graylog.org/5-0/upgrading_graylog/upgrade_path.htm) from 3.3 to 4.0 to 4.3 to 5.0.
205205206206-- `buildFHSUserEnv` is now called `buildFHSEnv` and uses FlatPak's Bubblewrap sandboxing tool rather than Nixpkgs' own chrootenv. The old chrootenv-based implemenation is still available via `buildFHSEnvChroot` but is considered deprecated and will be removed when the remaining uses inside Nixpkgs have been migrated. If your FHSEnv-wrapped application misbehaves when using the new bubblewrap implementation, please create an issue in Nixpkgs.
206206+- `buildFHSUserEnv` is now called `buildFHSEnv` and uses FlatPak's Bubblewrap sandboxing tool rather than Nixpkgs' own chrootenv. The old chrootenv-based implementation is still available via `buildFHSEnvChroot` but is considered deprecated and will be removed when the remaining uses inside Nixpkgs have been migrated. If your FHSEnv-wrapped application misbehaves when using the new bubblewrap implementation, please create an issue in Nixpkgs.
207207208208- `nushell` has been updated to at least version 0.77.0, which includes potential breaking changes in aliases. The old aliases are now available as `old-alias` but it is recommended you migrate to the new format. See [Reworked aliases](https://www.nushell.sh/blog/2023-03-14-nushell_0_77.html#reworked-aliases-breaking-changes-kubouch).
209209···555555556556- `buildDunePackage` now defaults to `strictDeps = true` which means that any library should go into `buildInputs` or `checkInputs`. Any executable that is run on the building machine should go into `nativeBuildInputs` or `nativeCheckInputs` respectively. Example of executables are `ocaml`, `findlib` and `menhir`. PPXs are libraries which are built by dune and should therefore not go into `nativeBuildInputs`.
557557558558-- `buildFHSUserEnv` is now called `buildFHSEnv` and uses FlatPak's Bubblewrap sandboxing tool rather than Nixpkgs' own chrootenv. The old chrootenv-based implemenation is still available via `buildFHSEnvChroot` but is considered deprecated and will be removed when the remaining uses inside Nixpkgs have been migrated. If your FHSEnv-wrapped application misbehaves when using the new bubblewrap implementation, please create an issue in Nixpkgs.
558558+- `buildFHSUserEnv` is now called `buildFHSEnv` and uses FlatPak's Bubblewrap sandboxing tool rather than Nixpkgs' own chrootenv. The old chrootenv-based implementation is still available via `buildFHSEnvChroot` but is considered deprecated and will be removed when the remaining uses inside Nixpkgs have been migrated. If your FHSEnv-wrapped application misbehaves when using the new bubblewrap implementation, please create an issue in Nixpkgs.
559559560560- Top-level `buildPlatform`, `hostPlatform`, `targetPlatform` have been deprecated, use `stdenv.X` instead.
561561
+3-3
nixos/doc/manual/release-notes/rl-2311.section.md
···293293294294- `services.nginx` gained a `defaultListen` option at server-level with support for PROXY protocol listeners, also `proxyProtocol` is now exposed in `services.nginx.virtualHosts.<name>.listen` option. It is now possible to run PROXY listeners and non-PROXY listeners at a server-level, see [#213510](https://github.com/NixOS/nixpkgs/pull/213510/) for more details.
295295296296-- `services.restic.backups` now adds wrapper scripts to your system path, which set the same environment variables as the service, so restic operations can easly be run from the command line. This behavior can be disabled by setting `createWrapper` to `false`, per backup configuration.
296296+- `services.restic.backups` now adds wrapper scripts to your system path, which set the same environment variables as the service, so restic operations can easily be run from the command line. This behavior can be disabled by setting `createWrapper` to `false`, per backup configuration.
297297298298- `services.prometheus.exporters` has a new exporter to monitor electrical power consumption based on PowercapRAPL sensor called [Scaphandre](https://github.com/hubblo-org/scaphandre), see [#239803](https://github.com/NixOS/nixpkgs/pull/239803) for more details.
299299300300-- The MariaDB C client library was upgraded from 3.2.x to 3.3.x. It is recomended to review the [upstream release notes](https://mariadb.com/kb/en/mariadb-connector-c-33-release-notes/).
300300+- The MariaDB C client library was upgraded from 3.2.x to 3.3.x. It is recommended to review the [upstream release notes](https://mariadb.com/kb/en/mariadb-connector-c-33-release-notes/).
301301302302- The module `services.calibre-server` has new options to configure the `host`, `port`, `auth.enable`, `auth.mode` and `auth.userDb` path, see [#216497](https://github.com/NixOS/nixpkgs/pull/216497/) for more details.
303303···381381382382- The `qemu-vm.nix` module by default now identifies block devices via
383383 persistent names available in `/dev/disk/by-*`. Because the rootDevice is
384384- identfied by its filesystem label, it needs to be formatted before the VM is
384384+ identified by its filesystem label, it needs to be formatted before the VM is
385385 started. The functionality of automatically formatting the rootDevice in the
386386 initrd is removed from the QEMU module. However, for tests that depend on
387387 this functionality, a test utility for the scripted initrd is added
+5-9
nixos/modules/misc/nixpkgs.nix
···176176 '';
177177 type = types.listOf overlayType;
178178 description = lib.mdDoc ''
179179- List of overlays to use with the Nix Packages collection.
180180- (For details, see the Nixpkgs documentation.) It allows
181181- you to override packages globally. Each function in the list
182182- takes as an argument the *original* Nixpkgs.
183183- The first argument should be used for finding dependencies, and
184184- the second should be used for overriding recipes.
179179+ List of overlays to apply to Nixpkgs.
180180+ This option allows modifying the Nixpkgs package set accessed through the `pkgs` module argument.
185181186186- If `nixpkgs.pkgs` is set, overlays specified here
187187- will be applied after the overlays that were already present
188188- in `nixpkgs.pkgs`.
182182+ For details, see the [Overlays chapter in the Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#chap-overlays).
183183+184184+ If the {option}`nixpkgs.pkgs` option is set, overlays specified using `nixpkgs.overlays` will be applied after the overlays that were already included in `nixpkgs.pkgs`.
189185 '';
190186 };
191187
···182182 example = "770";
183183 description = lib.mdDoc ''
184184 If not `null`, is used as the permissions
185185- set by `systemd.activationScripts.transmission-daemon`
185185+ set by `system.activationScripts.transmission-daemon`
186186 on the directories [](#opt-services.transmission.settings.download-dir),
187187 [](#opt-services.transmission.settings.incomplete-dir).
188188 and [](#opt-services.transmission.settings.watch-dir).
···56565757 # Otherwise the instance may not have a working network-online.target,
5858 # making the fetch-ssh-keys.service fail
5959- networking.useNetworkd = true;
5959+ networking.useNetworkd = lib.mkDefault true;
6060}
+1-1
pkgs/README.md
···2929Before adding a new package, please consider the following questions:
30303131* Is the package ready for general use? We don't want to include projects that are too immature or are going to be abandoned immediately. In case of doubt, check with upstream.
3232-* Does the project have a clear license statement? Remember that softwares are unfree by default (all rights reserved), and merely providing access to the source code does not imply its redistribution. In case of doubt, ask upstream.
3232+* Does the project have a clear license statement? Remember that software is unfree by default (all rights reserved), and merely providing access to the source code does not imply its redistribution. In case of doubt, ask upstream.
3333* How realistic is it that it will be used by other people? It's good that nixpkgs caters to various niches, but if it's a niche of 5 people it's probably too small.
3434* Are you willing to maintain the package? You should care enough about the package to be willing to keep it up and running for at least one complete Nixpkgs' release life-cycle.
3535
···11+--- a/src/cpp/session/CMakeLists.txt
22++++ b/src/cpp/session/CMakeLists.txt
33+@@ -36,18 +36,14 @@
44+ else()
55+ set(RSTUDIO_DEPENDENCIES_DICTIONARIES_DIR "${RSTUDIO_DEPENDENCIES_DIR}/dictionaries")
66+ endif()
77+-
88++
99+ if(EXISTS "${RSTUDIO_TOOLS_ROOT}/mathjax-27")
1010+ set(RSTUDIO_DEPENDENCIES_MATHJAX_DIR "${RSTUDIO_TOOLS_ROOT}/mathjax-27")
1111+ else()
1212+ set(RSTUDIO_DEPENDENCIES_MATHJAX_DIR "${RSTUDIO_DEPENDENCIES_DIR}/mathjax-27")
1313+ endif()
1414+1515+- if(EXISTS "${RSTUDIO_TOOLS_ROOT}/quarto")
1616+- set(RSTUDIO_DEPENDENCIES_QUARTO_DIR "${RSTUDIO_TOOLS_ROOT}/quarto")
1717+- else()
1818+- set(RSTUDIO_DEPENDENCIES_QUARTO_DIR "${RSTUDIO_DEPENDENCIES_DIR}/quarto")
1919+- endif()
2020++ set(RSTUDIO_DEPENDENCIES_QUARTO_DIR "@quarto@")
2121+2222+ endif()
2323+2424+@@ -56,7 +52,7 @@
2525+ # - by default, we use quarto + quarto's bundled pandoc
2626+ # - if quarto is not enabled, use pandoc fallback
2727+ if(QUARTO_ENABLED)
2828+- set(RSTUDIO_DEPENDENCIES_PANDOC_DIR "${RSTUDIO_DEPENDENCIES_QUARTO_DIR}/bin/tools")
2929++ set(RSTUDIO_DEPENDENCIES_PANDOC_DIR "@pandoc@/bin")
3030+ elseif(EXISTS "${RSTUDIO_TOOLS_ROOT}/pandoc/${PANDOC_VERSION}")
3131+ set(RSTUDIO_DEPENDENCIES_PANDOC_DIR "${RSTUDIO_TOOLS_ROOT}/pandoc/${PANDOC_VERSION}")
3232+ else()
3333+@@ -66,11 +62,9 @@
3434+3535+ # validate our dependencies exist
3636+ foreach(VAR RSTUDIO_DEPENDENCIES_DICTIONARIES_DIR
3737+- RSTUDIO_DEPENDENCIES_MATHJAX_DIR
3838+- RSTUDIO_DEPENDENCIES_PANDOC_DIR
3939+- RSTUDIO_DEPENDENCIES_QUARTO_DIR)
4040++ RSTUDIO_DEPENDENCIES_MATHJAX_DIR)
4141++
4242+4343+-
4444+ # skip quarto if not enabled
4545+ if("${VAR}" STREQUAL "RSTUDIO_DEPENDENCIES_QUARTO_DIR" AND NOT QUARTO_ENABLED)
4646+ continue()
+2-2
pkgs/applications/graphics/pixinsight/default.nix
···1010 version = "1.8.9-2";
11111212 src = requireFile rec {
1313- name = "PI-linux-x64-${version}-20230828-c.tar.xz";
1313+ name = "PI-linux-x64-${version}-20230920-c.tar.xz";
1414 url = "https://pixinsight.com/";
1515- sha256 = "sha256-f4E6F3LeEolDGcN9Uo/n8GlIuwMIVI26fW9NYtEesd4=";
1515+ hash = "sha256-g7paYTYv52XBg0w3d3YhVNrmt+iS20uobaUsvY6F3jM=";
1616 message = ''
1717 PixInsight is available from ${url} and requires a commercial (or trial) license.
1818 After a license has been obtained, PixInsight can be downloaded from the software distribution
···25252626As such, we would like to have only the newest K3s version in each NixOS
2727release at the time the release branch is branched off, which will ensure the
2828-K3s version in that release will receieve updates for the longest duration
2828+K3s version in that release will receive updates for the longest duration
2929possible.
30303131However, this conflicts with another desire: we would like people to be able to upgrade between NixOS stable releases without needing to make a large enough k3s version jump that they violate the Kubernetes version skew policy.
···1111 owner = "ipfs";
1212 repo = "fs-repo-migrations";
1313 # Use the latest git tag here, since v2.0.2 does not
1414- # contain the latest migration fs-repo-13-to-14/v1.0.0
1414+ # contain the latest migration fs-repo-14-to-15/v1.0.1
1515 # The fs-repo-migrations code itself is the same between
1616 # the two versions but the migration code, which is built
1717 # into separate binaries, is not.
1818- rev = "fs-repo-13-to-14/v1.0.0";
1919- hash = "sha256-y0IYSKKZlFbPrTUC6XqYKhS3a79rieNGBL58teWMlC4=";
1818+ rev = "fs-repo-14-to-15/v1.0.1";
1919+ hash = "sha256-oIGDZr0cv+TIl5glHr3U+eIqAlPAOWyFzgfQGGM+xNM=";
2020 };
21212222 sourceRoot = "${src.name}/fs-repo-migrations";
···2233Sage is a pretty complex package that depends on many other complex packages and patches some of those. As a result, the sage nix package is also quite complex.
4455-Don't feel discouraged to fix, simplify or improve things though. The individual files have comments explaining their purpose. The most importent ones are `default.nix` linking everything together, `sage-src.nix` adding patches and `sagelib.nix` building the actual sage package.
55+Don't feel discouraged to fix, simplify or improve things though. The individual files have comments explaining their purpose. The most important ones are `default.nix` linking everything together, `sage-src.nix` adding patches and `sagelib.nix` building the actual sage package.
6677## The sage build is broken
88
···1414 sha256 = "sha256-Xbvg/FcuX/AL2reWsaM2oaFyLby3+HDCfYtRyswE7DA=";
1515 };
16161717- # Extension point for when thg's mercurial is lagging behind mainline.
1818- tortoiseMercurial = mercurial;
1919-1717+ nativeBuildInputs = [
1818+ qt5.wrapQtAppsHook
1919+ ];
2020 propagatedBuildInputs = with python3Packages; [
2121- tortoiseMercurial
2121+ mercurial
2222+ # The one from python3Packages
2223 qscintilla-qt5
2324 iniparse
2425 ];
2525- nativeBuildInputs = [ qt5.wrapQtAppsHook ];
2626+ buildInputs = [
2727+ # Makes wrapQtAppsHook add these qt libraries to the wrapper search paths
2828+ qt5.qtwayland
2929+ ];
26302727- doCheck = true;
3131+ # In order to spare double wrapping, we use:
3232+ preFixup = ''
3333+ makeWrapperArgs+=("''${qtWrapperArgs[@]}")
3434+ '';
3535+ # Convenient alias
2836 postInstall = ''
2929- mkdir -p $out/share/doc/tortoisehg
3030- cp COPYING.txt $out/share/doc/tortoisehg/Copying.txt
3131- # convenient alias
3237 ln -s $out/bin/thg $out/bin/tortoisehg
3333- wrapQtApp $out/bin/thg
3438 '';
35394040+ # In python3Packages.buildPythonApplication doCheck is always true, and we
4141+ # override it to not run the default unittests
3642 checkPhase = ''
3737- export QT_QPA_PLATFORM=offscreen
3838- echo "test: thg smoke test"
4343+ runHook preCheck
4444+4545+ $out/bin/thg version | grep -q "${version}"
4646+ # Detect breakage of thg in case of out-of-sync mercurial update. In that
4747+ # case any thg subcommand just opens up an gui dialog with a description of
4848+ # version mismatch.
4949+ echo "thg smoke test"
3950 $out/bin/thg -h > help.txt &
4051 sleep 1s
4141- if grep "list of commands" help.txt; then
4242- echo "thg help output was captured. Seems like package in a working state."
4343- exit 0
4444- else
4545- echo "thg help output was not captured. Seems like package is broken."
4646- exit 1
4747- fi
5252+ grep -q "list of commands" help.txt
5353+5454+ runHook postCheck
4855 '';
49565050- passthru.mercurial = tortoiseMercurial;
5757+ passthru = {
5858+ # If at some point we'll override this argument, it might be useful to have
5959+ # access to it here.
6060+ inherit mercurial;
6161+ };
51625263 meta = {
5364 description = "Qt based graphical tool for working with Mercurial";
···5566rustPlatform.buildRustPackage rec {
77 pname = "svdtools";
88- version = "0.3.0";
88+ version = "0.3.1";
991010 src = fetchCrate {
1111 inherit version pname;
1212- hash = "sha256-B+G2HIGbuKeiys3bLR2U+P40TD8YpqzAb4oENNb8gYg=";
1212+ hash = "sha256-oj09Huy38Nf7L6SSM5CIq2rzATrFB5FcTntXqB2dZHE=";
1313 };
14141515- cargoHash = "sha256-W6/LZE98V1teiv9Wp9tsIqlY18MoMiNZ+fqTJ567xrg=";
1515+ cargoHash = "sha256-lZk8QChDLfhv3iB0INGKgS5tM/ETdpdUpbq6egPS1uI=";
16161717 meta = with lib; {
1818 description = "Tools to handle vendor-supplied, often buggy SVD files";
+1-1
pkgs/development/haskell-modules/HACKING.md
···137137 This is a list of Haskell packages that are known to be broken.
138138139139- [`hackage-packages.nix`](hackage-packages.nix) will be regenerated. This
140140- will mark all Haskell pacakges in `configuration-hackage2nix/broken.yaml`
140140+ will mark all Haskell packages in `configuration-hackage2nix/broken.yaml`
141141 as `broken`.
142142143143- The
+6-5
pkgs/development/libraries/boringssl/default.nix
···1010# reference: https://boringssl.googlesource.com/boringssl/+/2661/BUILDING.md
1111buildGoModule {
1212 pname = "boringssl";
1313- version = "2021-07-09";
1313+ version = "unstable-2023-09-27";
14141515 src = fetchgit {
1616- url = "https://boringssl.googlesource.com/boringssl";
1717- rev = "268a4a6ff3bd656ae65fe41ef1185daa85cfae21";
1818- sha256 = "04fja4fdwhc69clmvg8i12zm6ks3sfl3r8i5bxn4x63b9dj5znlx";
1616+ url = "https://boringssl.googlesource.com/boringssl";
1717+ rev = "d24a38200fef19150eef00cad35b138936c08767";
1818+ hash = "sha256-FBQ7y4N2rCM/Cyd6LBnDUXpSa2O3osUXukECTBjZL6s=";
1919 };
20202121 nativeBuildInputs = [ cmake ninja perl ];
22222323- vendorHash = null;
2323+ vendorHash = "sha256-EJPcx07WuvHPAgiS1ASU6WHlHkxjUOO72if4TkmrqwY=";
2424+ proxyVendor = true;
24252526 # hack to get both go and cmake configure phase
2627 # (if we use postConfigure then cmake will loop runHook postConfigure)
···7676to the Nix store. This prevents ASDF from referring to uncompiled
7777systems on run time.
78787979-Also useful when the `pname` is differrent than the system name, such
7979+Also useful when the `pname` is different than the system name, such
8080as when using [reverse domain naming]. (see `jzon` ->
8181`com.inuoe.jzon`)
8282
···31313232## Using libraries not available in repositories
33333434-There are useful and working libraries out there, that are nontheless
3434+There are useful and working libraries out there, that are nonetheless
3535unavailable to users of package managers such as Quicklisp or
3636Ultralisp. Two real-world examples are [jzon] and [cl-tar].
3737
+1-1
pkgs/development/misc/resholve/README.md
···203203add more at this early date will only ensure that I spend more time updating
204204docs and less time filling in feature gaps.
205205206206-Full documentation may be greatly accellerated if someone can help me sort out
206206+Full documentation may be greatly accelerated if someone can help me sort out
207207single-sourcing. See: https://github.com/abathur/resholve/issues/19
208208-->
209209
+1
pkgs/development/node-packages/aliases.nix
···106106 inherit (pkgs) quicktype; # added 2023-09-09
107107 react-native-cli = throw "react-native-cli was removed because it was deprecated"; # added 2023-09-25
108108 inherit (pkgs) react-static; # added 2023-08-21
109109+ react-tools = throw "react-tools was removed because it was deprecated"; # added 2023-09-25
109110 readability-cli = pkgs.readability-cli; # Added 2023-06-12
110111 inherit (pkgs) redoc-cli; # added 2023-09-12
111112 reveal-md = pkgs.reveal-md; # added 2023-07-31
···11+{ lib, stdenv, fetchurl, ocaml, findlib, topkg, ocamlbuild, cmdliner }:
22+33+let
44+55+in lib.throwIfNot (lib.versionAtLeast ocaml.version "4.08")
66+"b0 is not available for OCaml ${ocaml.version}"
77+88+stdenv.mkDerivation rec {
99+1010+ pname = "ocaml${ocaml.version}-b0";
1111+ version = "0.0.5";
1212+1313+ src = fetchurl {
1414+ url = "${meta.homepage}/releases/b0-${version}.tbz";
1515+ sha256 = "sha256-ty04JQcP4RCme/VQw0ko2IBebWWX5cBU6nRTTeV1I/I=";
1616+ };
1717+1818+ strictDeps = true;
1919+2020+ nativeBuildInputs = [ ocaml findlib ocamlbuild topkg ];
2121+ buildInputs = [ topkg cmdliner ];
2222+2323+ inherit (topkg) buildPhase installPhase;
2424+2525+ meta = with lib; {
2626+ description = "Software construction and deployment kit";
2727+ longDescription = ''
2828+ WARNING this package is unstable and work in progress, do not depend on
2929+ it.
3030+ B0 describes software construction and deployments using modular and
3131+ customizable definitions written in OCaml. B0 describes:
3232+ * Build environments.
3333+ * Software configuration, build and testing.
3434+ * Source and binary deployments.
3535+ * Software life-cycle procedures.
3636+ B0 also provides the B00 build library which provides abitrary build
3737+ abstraction with reliable and efficient incremental rebuilds. The B00
3838+ library can be – and has been – used on its own to devise domain specific
3939+ build systems.
4040+ '';
4141+ homepage = "https://erratique.ch/software/b0";
4242+ inherit (ocaml.meta) platforms;
4343+ license = licenses.isc;
4444+ maintainers = [ maintainers.Julow ];
4545+ };
4646+}
+25
pkgs/development/ocaml-modules/odig/default.nix
···11+{ lib, stdenv, fetchurl, buildTopkgPackage, cmdliner, odoc, b0 }:
22+33+buildTopkgPackage rec {
44+ pname = "odig";
55+ version = "0.0.9";
66+77+ src = fetchurl {
88+ url = "${meta.homepage}/releases/odig-${version}.tbz";
99+ sha256 = "sha256-sYKvGYkxeF5FmrNQdOyMAtlsJqhlmUESi9SkPn/cjM4=";
1010+ };
1111+1212+ buildInputs = [ cmdliner odoc b0 ];
1313+1414+ meta = with lib; {
1515+ description = "Lookup documentation of installed OCaml packages";
1616+ longDescription = ''
1717+ odig is a command line tool to lookup documentation of installed OCaml
1818+ packages. It shows package metadata, readmes, change logs, licenses,
1919+ cross-referenced `odoc` API documentation and manuals.
2020+ '';
2121+ homepage = "https://erratique.ch/software/odig";
2222+ license = licenses.isc;
2323+ maintainers = [ maintainers.Julow ];
2424+ };
2525+}
···11+diff --git a/electron/BUILD.gn b/electron/BUILD.gn
22+index c905891eb8..f2cf11fe88 100644
33+--- a/electron/BUILD.gn
44++++ b/electron/BUILD.gn
55+@@ -111,8 +111,6 @@ electron_version = exec_script("script/print-version.py",
66+ [],
77+ "trim string",
88+ [
99+- ".git/packed-refs",
1010+- ".git/HEAD",
1111+ "script/lib/get-version.js",
1212+ ])
1313+1414+diff --git a/electron/script/lib/get-version.js b/electron/script/lib/get-version.js
1515+index 45a120482b..ddaf8ab60e 100644
1616+--- a/electron/script/lib/get-version.js
1717++++ b/electron/script/lib/get-version.js
1818+@@ -1,22 +1 @@
1919+-const { spawnSync } = require('child_process');
2020+-const path = require('path');
2121+-
2222+-module.exports.getElectronVersion = () => {
2323+- // Find the nearest tag to the current HEAD
2424+- // This is equivilant to our old logic of "use a value in package.json" for the following reasons
2525+- //
2626+- // 1. Whenever we updated the package.json we ALSO pushed a tag with the same version
2727+- // 2. Whenever we _reverted_ a bump all we actually did was push a commit that deleted the tag and changed the version number back
2828+- //
2929+- // The only difference in the "git describe" technique is that technically a commit can "change" it's version
3030+- // number if a tag is created / removed retroactively. i.e. the first time a commit is pushed it will be 1.2.3
3131+- // and after the tag is made rebuilding the same commit will result in it being 1.2.4
3232+- const output = spawnSync('git', ['describe', '--tags', '--abbrev=0'], {
3333+- cwd: path.resolve(__dirname, '..', '..')
3434+- });
3535+- if (output.status !== 0) {
3636+- console.error(output.stderr);
3737+- throw new Error('Failed to get current electron version');
3838+- }
3939+- return output.stdout.toString().trim().replace(/^v/g, '');
4040+-};
4141++module.exports.getElectronVersion = () => "@version@";
4242+
+42
pkgs/development/tools/electron/version.patch
···11+diff --git a/electron/BUILD.gn b/electron/BUILD.gn
22+index c905891eb8..f2cf11fe88 100644
33+--- a/electron/BUILD.gn
44++++ b/electron/BUILD.gn
55+@@ -111,8 +111,6 @@ electron_version = exec_script("script/print-version.py",
66+ [],
77+ "trim string",
88+ [
99+- ".git/packed-refs",
1010+- ".git/HEAD",
1111+ "script/lib/get-version.js",
1212+ ])
1313+1414+diff --git a/electron/script/lib/get-version.js b/electron/script/lib/get-version.js
1515+index 45a120482b..ddaf8ab60e 100644
1616+--- a/electron/script/lib/get-version.js
1717++++ b/electron/script/lib/get-version.js
1818+@@ -1,22 +1 @@
1919+-const { spawnSync } = require('node:child_process');
2020+-const path = require('node:path');
2121+-
2222+-module.exports.getElectronVersion = () => {
2323+- // Find the nearest tag to the current HEAD
2424+- // This is equivilant to our old logic of "use a value in package.json" for the following reasons
2525+- //
2626+- // 1. Whenever we updated the package.json we ALSO pushed a tag with the same version
2727+- // 2. Whenever we _reverted_ a bump all we actually did was push a commit that deleted the tag and changed the version number back
2828+- //
2929+- // The only difference in the "git describe" technique is that technically a commit can "change" it's version
3030+- // number if a tag is created / removed retroactively. i.e. the first time a commit is pushed it will be 1.2.3
3131+- // and after the tag is made rebuilding the same commit will result in it being 1.2.4
3232+- const output = spawnSync('git', ['describe', '--tags', '--abbrev=0'], {
3333+- cwd: path.resolve(__dirname, '..', '..')
3434+- });
3535+- if (output.status !== 0) {
3636+- console.error(output.stderr);
3737+- throw new Error('Failed to get current electron version');
3838+- }
3939+- return output.stdout.toString().trim().replace(/^v/g, '');
4040+-};
4141++module.exports.getElectronVersion = () => "@version@";
4242+