diff --git a/doc/common.nix b/doc/common.nix deleted file mode 100644 index 56f723eb6bd7d..0000000000000 --- a/doc/common.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ - outputPath = "share/doc/nixpkgs"; - indexPath = "manual.html"; -} diff --git a/doc/default.nix b/doc/default.nix index 6492d78601c8d..2c9a0439feb59 100644 --- a/doc/default.nix +++ b/doc/default.nix @@ -1,196 +1,6 @@ -{ pkgs ? (import ./.. { }), nixpkgs ? { }}: -let - inherit (pkgs) lib; - inherit (lib) hasPrefix removePrefix; - fs = lib.fileset; +{ + pkgs ? (import ./.. { }), + nixpkgs ? { }, +}: - common = import ./common.nix; - - lib-docs = import ./doc-support/lib-function-docs.nix { - inherit pkgs nixpkgs; - libsets = [ - { name = "asserts"; description = "assertion functions"; } - { name = "attrsets"; description = "attribute set functions"; } - { name = "strings"; description = "string manipulation functions"; } - { name = "versions"; description = "version string functions"; } - { name = "trivial"; description = "miscellaneous functions"; } - { name = "fixedPoints"; baseName = "fixed-points"; description = "explicit recursion functions"; } - { name = "lists"; description = "list manipulation functions"; } - { name = "debug"; description = "debugging functions"; } - { name = "options"; description = "NixOS / nixpkgs option handling"; } - { name = "path"; description = "path functions"; } - { name = "filesystem"; description = "filesystem functions"; } - { name = "fileset"; description = "file set functions"; } - { name = "sources"; description = "source filtering functions"; } - { name = "cli"; description = "command-line serialization functions"; } - { name = "generators"; description = "functions that create file formats from nix data structures"; } - { name = "gvariant"; description = "GVariant formatted string serialization functions"; } - { name = "customisation"; description = "Functions to customise (derivation-related) functions, derivatons, or attribute sets"; } - { name = "meta"; description = "functions for derivation metadata"; } - { name = "derivations"; description = "miscellaneous derivation-specific functions"; } - ]; - }; - - epub = pkgs.runCommand "manual.epub" { - nativeBuildInputs = with pkgs; [ libxslt zip ]; - - epub = '' - - - Nixpkgs Manual - Version ${pkgs.lib.version} - - - Temporarily unavailable - - The Nixpkgs manual is currently not available in EPUB format, - please use the HTML manual - instead. - - - If you've used the EPUB manual in the past and it has been useful to you, please - let us know. - - - - ''; - - passAsFile = [ "epub" ]; - } '' - mkdir scratch - xsltproc \ - --param chapter.autolabel 0 \ - --nonet \ - --output scratch/ \ - ${pkgs.docbook_xsl_ns}/xml/xsl/docbook/epub/docbook.xsl \ - $epubPath - - echo "application/epub+zip" > mimetype - zip -0Xq -b "$TMPDIR" "$out" mimetype - cd scratch && zip -Xr9D -b "$TMPDIR" "$out" * - ''; - - # NB: This file describes the Nixpkgs manual, which happens to use module - # docs infra originally developed for NixOS. - optionsDoc = pkgs.nixosOptionsDoc { - inherit (pkgs.lib.evalModules { - modules = [ ../pkgs/top-level/config.nix ]; - class = "nixpkgsConfig"; - }) options; - documentType = "none"; - transformOptions = opt: - opt // { - declarations = - map - (decl: - if hasPrefix (toString ../..) (toString decl) - then - let subpath = removePrefix "/" (removePrefix (toString ../.) (toString decl)); - in { url = "https://github.com/NixOS/nixpkgs/blob/master/${subpath}"; name = subpath; } - else decl) - opt.declarations; - }; - }; -in pkgs.stdenv.mkDerivation { - name = "nixpkgs-manual"; - - nativeBuildInputs = with pkgs; [ - nixos-render-docs - ]; - - src = fs.toSource { - root = ./.; - fileset = fs.unions [ - (fs.fileFilter (file: - file.hasExt "md" - || file.hasExt "md.in" - ) ./.) - ./style.css - ./anchor-use.js - ./anchor.min.js - ./manpage-urls.json - ]; - }; - - postPatch = '' - ln -s ${optionsDoc.optionsJSON}/share/doc/nixos/options.json ./config-options.json - ''; - - pythonInterpreterTable = pkgs.callPackage ./doc-support/python-interpreter-table.nix {}; - - passAsFile = [ "pythonInterpreterTable" ]; - - buildPhase = '' - substituteInPlace ./languages-frameworks/python.section.md --subst-var-by python-interpreter-table "$(<"$pythonInterpreterTablePath")" - - cat \ - ./functions/library.md.in \ - ${lib-docs}/index.md \ - > ./functions/library.md - substitute ./manual.md.in ./manual.md \ - --replace-fail '@MANUAL_VERSION@' '${pkgs.lib.version}' - - mkdir -p out/media - - mkdir -p out/highlightjs - cp -t out/highlightjs \ - ${pkgs.documentation-highlighter}/highlight.pack.js \ - ${pkgs.documentation-highlighter}/LICENSE \ - ${pkgs.documentation-highlighter}/mono-blue.css \ - ${pkgs.documentation-highlighter}/loader.js - - cp -t out ./style.css ./anchor.min.js ./anchor-use.js - - nixos-render-docs manual html \ - --manpage-urls ./manpage-urls.json \ - --revision ${pkgs.lib.trivial.revisionWithDefault (pkgs.rev or "master")} \ - --stylesheet style.css \ - --stylesheet highlightjs/mono-blue.css \ - --script ./highlightjs/highlight.pack.js \ - --script ./highlightjs/loader.js \ - --script ./anchor.min.js \ - --script ./anchor-use.js \ - --toc-depth 1 \ - --section-toc-depth 1 \ - manual.md \ - out/index.html - ''; - - installPhase = '' - dest="$out/${common.outputPath}" - mkdir -p "$(dirname "$dest")" - mv out "$dest" - mv "$dest/index.html" "$dest/${common.indexPath}" - - cp ${epub} "$dest/nixpkgs-manual.epub" - - mkdir -p $out/nix-support/ - echo "doc manual $dest ${common.indexPath}" >> $out/nix-support/hydra-build-products - echo "doc manual $dest nixpkgs-manual.epub" >> $out/nix-support/hydra-build-products - ''; - - passthru.tests.manpage-urls = with pkgs; testers.invalidateFetcherByDrvHash - ({ name ? "manual_check-manpage-urls" - , script - , urlsFile - }: runCommand name { - nativeBuildInputs = [ - cacert - (python3.withPackages (p: with p; [ - aiohttp - rich - structlog - ])) - ]; - outputHash = "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="; # Empty output - } '' - python3 ${script} ${urlsFile} - touch $out - '') { - script = ./tests/manpage-urls.py; - urlsFile = ./manpage-urls.json; - }; -} +pkgs.nixpkgs-manual.override { inherit nixpkgs; } diff --git a/doc/doc-support/epub.nix b/doc/doc-support/epub.nix new file mode 100644 index 0000000000000..2b8d6b5f24704 --- /dev/null +++ b/doc/doc-support/epub.nix @@ -0,0 +1,54 @@ +# To build this derivation, run `nix-build -A nixpkgs-manual.epub` +{ + lib, + runCommand, + docbook_xsl_ns, + libxslt, + zip, +}: +runCommand "manual.epub" + { + nativeBuildInputs = [ + libxslt + zip + ]; + + epub = '' + + + Nixpkgs Manual + Version ${lib.version} + + + Temporarily unavailable + + The Nixpkgs manual is currently not available in EPUB format, + please use the HTML manual + instead. + + + If you've used the EPUB manual in the past and it has been useful to you, please + let us know. + + + + ''; + + passAsFile = [ "epub" ]; + } + '' + mkdir scratch + xsltproc \ + --param chapter.autolabel 0 \ + --nonet \ + --output scratch/ \ + ${docbook_xsl_ns}/xml/xsl/docbook/epub/docbook.xsl \ + $epubPath + + echo "application/epub+zip" > mimetype + zip -0Xq -b "$TMPDIR" "$out" mimetype + cd scratch && zip -Xr9D -b "$TMPDIR" "$out" * + '' diff --git a/doc/doc-support/lib-function-docs.nix b/doc/doc-support/lib-function-docs.nix index 9e1fdedd2cb9f..8c9673d887bf2 100644 --- a/doc/doc-support/lib-function-docs.nix +++ b/doc/doc-support/lib-function-docs.nix @@ -1,23 +1,111 @@ # Generates the documentation for library functions via nixdoc. +# To build this derivation, run `nix-build -A nixpkgs-manual.lib-docs` +{ + lib, + stdenvNoCC, + nixdoc, + nix, + nixpkgs ? { }, + libsets ? [ + { + name = "asserts"; + description = "assertion functions"; + } + { + name = "attrsets"; + description = "attribute set functions"; + } + { + name = "strings"; + description = "string manipulation functions"; + } + { + name = "versions"; + description = "version string functions"; + } + { + name = "trivial"; + description = "miscellaneous functions"; + } + { + name = "fixedPoints"; + baseName = "fixed-points"; + description = "explicit recursion functions"; + } + { + name = "lists"; + description = "list manipulation functions"; + } + { + name = "debug"; + description = "debugging functions"; + } + { + name = "options"; + description = "NixOS / nixpkgs option handling"; + } + { + name = "path"; + description = "path functions"; + } + { + name = "filesystem"; + description = "filesystem functions"; + } + { + name = "fileset"; + description = "file set functions"; + } + { + name = "sources"; + description = "source filtering functions"; + } + { + name = "cli"; + description = "command-line serialization functions"; + } + { + name = "generators"; + description = "functions that create file formats from nix data structures"; + } + { + name = "gvariant"; + description = "GVariant formatted string serialization functions"; + } + { + name = "customisation"; + description = "Functions to customise (derivation-related) functions, derivatons, or attribute sets"; + } + { + name = "meta"; + description = "functions for derivation metadata"; + } + { + name = "derivations"; + description = "miscellaneous derivation-specific functions"; + } + ], +}: -{ pkgs, nixpkgs, libsets }: - -with pkgs; - -stdenv.mkDerivation { +stdenvNoCC.mkDerivation { name = "nixpkgs-lib-docs"; - src = pkgs.lib.fileset.toSource { + + src = lib.fileset.toSource { root = ../..; fileset = ../../lib; }; - buildInputs = [ nixdoc nix ]; + buildInputs = [ + nixdoc + nix + ]; + installPhase = '' export NIX_STATE_DIR=$(mktemp -d) nix-instantiate --eval --strict --json ${./lib-function-locations.nix} \ --arg nixpkgsPath "./." \ --argstr revision ${nixpkgs.rev or "master"} \ - --argstr libsetsJSON ${pkgs.lib.escapeShellArg (builtins.toJSON libsets)} \ + --argstr libsetsJSON ${lib.escapeShellArg (builtins.toJSON libsets)} \ > locations.json function docgen { @@ -39,9 +127,16 @@ stdenv.mkDerivation { ```{=include=} sections auto-id-prefix=auto-generated EOF - ${lib.concatMapStrings ({ name, baseName ? name, description }: '' - docgen ${name} ${baseName} ${lib.escapeShellArg description} - '') libsets} + ${lib.concatMapStrings ( + { + name, + baseName ? name, + description, + }: + '' + docgen ${name} ${baseName} ${lib.escapeShellArg description} + '' + ) libsets} echo '```' >> "$out/index.md" ''; diff --git a/doc/doc-support/options-doc.nix b/doc/doc-support/options-doc.nix new file mode 100644 index 0000000000000..aa24f16901c57 --- /dev/null +++ b/doc/doc-support/options-doc.nix @@ -0,0 +1,28 @@ +# To build this derivation, run `nix-build -A nixpkgs-manual.optionsDoc` +{ lib, nixosOptionsDoc }: + +let + modules = lib.evalModules { + modules = [ ../../pkgs/top-level/config.nix ]; + class = "nixpkgsConfig"; + }; + + root = toString ../..; + + transformDeclaration = + decl: + let + declStr = toString decl; + subpath = lib.removePrefix "/" (lib.removePrefix root declStr); + in + assert lib.hasPrefix root declStr; + { + url = "https://github.com/NixOS/nixpkgs/blob/master/${subpath}"; + name = subpath; + }; +in +nixosOptionsDoc { + inherit (modules) options; + documentType = "none"; + transformOptions = opt: opt // { declarations = map transformDeclaration opt.declarations; }; +} diff --git a/doc/doc-support/package.nix b/doc/doc-support/package.nix new file mode 100644 index 0000000000000..602cef59677e3 --- /dev/null +++ b/doc/doc-support/package.nix @@ -0,0 +1,106 @@ +# This file describes the Nixpkgs manual, which happens to use module docs infra originally +# developed for NixOS. To build this derivation, run `nix-build -A nixpkgs-manual`. +# +{ + lib, + stdenvNoCC, + callPackage, + documentation-highlighter, + nixos-render-docs, + nixpkgs ? { }, +}: + +stdenvNoCC.mkDerivation ( + finalAttrs: + let + inherit (finalAttrs.finalPackage.optionsDoc) optionsJSON; + inherit (finalAttrs.finalPackage) epub lib-docs pythonInterpreterTable; + in + { + name = "nixpkgs-manual"; + + nativeBuildInputs = [ nixos-render-docs ]; + + src = lib.fileset.toSource { + root = ../.; + fileset = lib.fileset.unions [ + (lib.fileset.fileFilter (file: file.hasExt "md" || file.hasExt "md.in") ../.) + ../style.css + ../anchor-use.js + ../anchor.min.js + ../manpage-urls.json + ]; + }; + + postPatch = '' + ln -s ${optionsJSON}/share/doc/nixos/options.json ./config-options.json + ''; + + buildPhase = '' + substituteInPlace ./languages-frameworks/python.section.md \ + --subst-var-by python-interpreter-table "$(<"${pythonInterpreterTable}")" + + cat \ + ./functions/library.md.in \ + ${lib-docs}/index.md \ + > ./functions/library.md + substitute ./manual.md.in ./manual.md \ + --replace-fail '@MANUAL_VERSION@' '${lib.version}' + + mkdir -p out/media + + mkdir -p out/highlightjs + cp -t out/highlightjs \ + ${documentation-highlighter}/highlight.pack.js \ + ${documentation-highlighter}/LICENSE \ + ${documentation-highlighter}/mono-blue.css \ + ${documentation-highlighter}/loader.js + + cp -t out ./style.css ./anchor.min.js ./anchor-use.js + + nixos-render-docs manual html \ + --manpage-urls ./manpage-urls.json \ + --revision ${lib.trivial.revisionWithDefault (nixpkgs.rev or "master")} \ + --stylesheet style.css \ + --stylesheet highlightjs/mono-blue.css \ + --script ./highlightjs/highlight.pack.js \ + --script ./highlightjs/loader.js \ + --script ./anchor.min.js \ + --script ./anchor-use.js \ + --toc-depth 1 \ + --section-toc-depth 1 \ + manual.md \ + out/index.html + ''; + + installPhase = '' + dest="$out/share/doc/nixpkgs" + mkdir -p "$(dirname "$dest")" + mv out "$dest" + mv "$dest/index.html" "$dest/manual.html" + + cp ${epub} "$dest/nixpkgs-manual.epub" + + mkdir -p $out/nix-support/ + echo "doc manual $dest manual.html" >> $out/nix-support/hydra-build-products + echo "doc manual $dest nixpkgs-manual.epub" >> $out/nix-support/hydra-build-products + ''; + + passthru = { + lib-docs = callPackage ./lib-function-docs.nix { inherit nixpkgs; }; + + epub = callPackage ./epub.nix { }; + + optionsDoc = callPackage ./options-doc.nix { }; + + pythonInterpreterTable = callPackage ./python-interpreter-table.nix { }; + + shell = callPackage ../../pkgs/tools/nix/web-devmode.nix { + buildArgs = "./."; + open = "/share/doc/nixpkgs/manual.html"; + }; + + tests.manpage-urls = callPackage ../tests/manpage-urls.nix { }; + }; + } +) diff --git a/doc/doc-support/python-interpreter-table.nix b/doc/doc-support/python-interpreter-table.nix index 6f2b3422f6727..f06609e363f2f 100644 --- a/doc/doc-support/python-interpreter-table.nix +++ b/doc/doc-support/python-interpreter-table.nix @@ -1,14 +1,15 @@ -# For debugging, run in this directory: -# nix eval --impure --raw --expr 'import ./python-interpreter-table.nix {}' -{ pkgs ? (import ../.. { config = { }; overlays = []; }) }: +# To build this derivation, run `nix-build -A nixpkgs-manual.pythonInterpreterTable` +{ + lib, + writeText, + pkgs, + pythonInterpreters, +}: let - lib = pkgs.lib; - inherit (lib.attrsets) attrNames filterAttrs; - inherit (lib.lists) elem filter map naturalSort reverseList; - inherit (lib.strings) concatStringsSep; - - isPythonInterpreter = name: - /* NB: Package names that don't follow the regular expression: + isPythonInterpreter = + name: + /* + NB: Package names that don't follow the regular expression: - `python-cosmopolitan` is not part of `pkgs.pythonInterpreters`. - `_prebuilt` interpreters are used for bootstrapping internally. - `python3Minimal` contains python packages, left behind conservatively. @@ -16,7 +17,8 @@ let */ (lib.strings.match "(pypy|python)([[:digit:]]*)" name) != null; - interpreterName = pname: + interpreterName = + pname: let cuteName = { cpython = "CPython"; @@ -26,16 +28,16 @@ let in "${cuteName.${interpreter.implementation}} ${interpreter.pythonVersion}"; - interpreters = reverseList (naturalSort ( - filter isPythonInterpreter (attrNames pkgs.pythonInterpreters) - )); + interpreters = lib.reverseList ( + lib.naturalSort (lib.filter isPythonInterpreter (lib.attrNames pythonInterpreters)) + ); - aliases = pname: - attrNames ( - filterAttrs (name: value: - isPythonInterpreter name - && name != pname - && interpreterName name == interpreterName pname + aliases = + pname: + lib.attrNames ( + lib.filterAttrs ( + name: value: + isPythonInterpreter name && name != pname && interpreterName name == interpreterName pname ) pkgs ); @@ -45,18 +47,17 @@ let interpreter = interpreterName pname; }) interpreters; - toMarkdown = data: + toMarkdown = + data: let line = package: '' - | ${package.pname} | ${join ", " package.aliases or [ ]} | ${package.interpreter} | + | ${package.pname} | ${lib.concatStringsSep ", " package.aliases or [ ]} | ${package.interpreter} | ''; in - join "" (map line data); - - join = lib.strings.concatStringsSep; + lib.concatStringsSep "" (map line data); in -'' +writeText "python-interpreter-table.md" '' | Package | Aliases | Interpeter | |---------|---------|------------| ${toMarkdown result} diff --git a/doc/shell.nix b/doc/shell.nix index d71e3f3a709ac..3aad697742b2f 100644 --- a/doc/shell.nix +++ b/doc/shell.nix @@ -1,20 +1,7 @@ let pkgs = import ../. { - config = {}; - overlays = []; - }; - - common = import ./common.nix; - inherit (common) outputPath indexPath; - - web-devmode = import ../pkgs/tools/nix/web-devmode.nix { - inherit pkgs; - buildArgs = "./."; - open = "/${outputPath}/${indexPath}"; + config = { }; + overlays = [ ]; }; in - pkgs.mkShell { - packages = [ - web-devmode - ]; - } +pkgs.nixpkgs-manual.shell diff --git a/doc/tests/manpage-urls.nix b/doc/tests/manpage-urls.nix new file mode 100644 index 0000000000000..214c236160098 --- /dev/null +++ b/doc/tests/manpage-urls.nix @@ -0,0 +1,32 @@ +# To build this derivation, run `nix-build -A nixpkgs-manual.tests.manpage-urls` +{ + lib, + runCommand, + invalidateFetcherByDrvHash, + cacert, + python3, +}: + +invalidateFetcherByDrvHash ( + { + name ? "manual_check-manpage-urls", + script ? ./manpage-urls.py, + urlsFile ? ../manpage-urls.json, + }: + runCommand name + { + nativeBuildInputs = [ + cacert + (python3.withPackages (p: [ + p.aiohttp + p.rich + p.structlog + ])) + ]; + outputHash = "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="; # Empty output + } + '' + python3 ${script} ${urlsFile} + touch $out + '' +) { } diff --git a/nixos/doc/manual/shell.nix b/nixos/doc/manual/shell.nix index 70500a12b0374..7765358ddb328 100644 --- a/nixos/doc/manual/shell.nix +++ b/nixos/doc/manual/shell.nix @@ -1,20 +1,13 @@ let pkgs = import ../../.. { - config = {}; - overlays = []; + config = { }; + overlays = [ ]; }; common = import ./common.nix; inherit (common) outputPath indexPath; - - web-devmode = import ../../../pkgs/tools/nix/web-devmode.nix { - inherit pkgs; - buildArgs = "../../release.nix -A manualHTML.${builtins.currentSystem}"; - open = "/${outputPath}/${indexPath}"; - }; in - pkgs.mkShell { - packages = [ - web-devmode - ]; - } +pkgs.callPackage ../../../pkgs/tools/nix/web-devmode.nix { + buildArgs = "../../release.nix -A manualHTML.${builtins.currentSystem}"; + open = "/${outputPath}/${indexPath}"; +} diff --git a/pkgs/tools/nix/web-devmode.nix b/pkgs/tools/nix/web-devmode.nix index 6ebdc31118f0e..202fa23c2a278 100644 --- a/pkgs/tools/nix/web-devmode.nix +++ b/pkgs/tools/nix/web-devmode.nix @@ -1,13 +1,21 @@ { - pkgs, + lib, + findutils, + mkShell, + nodejs_latest, + parallel, + rsync, + watchexec, + writeShellScriptBin, # arguments to `nix-build`, e.g. `"foo.nix -A bar"` buildArgs, # what path to open a browser at open, -}: let - inherit (pkgs) lib; +}: +let + inherit (nodejs_latest.pkgs) live-server; - error_page = pkgs.writeShellScriptBin "error_page" '' + error_page = writeShellScriptBin "error_page" '' echo " @@ -30,7 +38,7 @@ # Using rsync here, instead of `cp`, to get as close to an atomic # directory copy operation as possible. `--delay-updates` should # also go towards that. - build_and_copy = pkgs.writeShellScriptBin "build_and_copy" '' + build_and_copy = writeShellScriptBin "build_and_copy" '' set -euxo pipefail set +e @@ -41,7 +49,7 @@ if [ $exit_status -eq 0 ]; then # setting permissions to be able to clean up - ${lib.getBin pkgs.rsync}/bin/rsync \ + ${lib.getBin rsync}/bin/rsync \ --recursive \ --chmod=u=rwX \ --delete-before \ @@ -53,7 +61,7 @@ ${lib.getBin error_page}/bin/error_page "$stderr" > $error_page_absolute set -x - ${lib.getBin pkgs.findutils}/bin/find $serve \ + ${lib.getBin findutils}/bin/find $serve \ -type f \ ! -name $error_page_relative \ -delete @@ -61,10 +69,10 @@ ''; # https://watchexec.github.io/ - watcher = pkgs.writeShellScriptBin "watcher" '' + watcher = writeShellScriptBin "watcher" '' set -euxo pipefail - ${lib.getBin pkgs.watchexec}/bin/watchexec \ + ${lib.getBin watchexec}/bin/watchexec \ --shell=none \ --restart \ --print-events \ @@ -74,10 +82,10 @@ # A Rust alternative to live-server exists, but it was not in nixpkgs. # `--no-css-inject`: without this it seems that only CSS is auto-reloaded. # https://www.npmjs.com/package/live-server - server = pkgs.writeShellScriptBin "server" '' + server = writeShellScriptBin "server" '' set -euxo pipefail - ${lib.getBin pkgs.nodePackages_latest.live-server}/bin/live-server \ + ${lib.getBin live-server}/bin/live-server \ --host=127.0.0.1 \ --verbose \ --no-css-inject \ @@ -86,32 +94,33 @@ $serve ''; - devmode = - pkgs.writeShellScriptBin "devmode" - '' - set -euxo pipefail + devmode = writeShellScriptBin "devmode" '' + set -euxo pipefail - function handle_exit { - rm -rf "$tmpdir" - } + function handle_exit { + rm -rf "$tmpdir" + } - tmpdir=$(mktemp -d) - trap handle_exit EXIT + tmpdir=$(mktemp -d) + trap handle_exit EXIT - export out_link="$tmpdir/result" - export serve="$tmpdir/serve" - mkdir $serve - export error_page_relative=error.html - export error_page_absolute=$serve/$error_page_relative - ${lib.getBin error_page}/bin/error_page "building …" > $error_page_absolute + export out_link="$tmpdir/result" + export serve="$tmpdir/serve" + mkdir $serve + export error_page_relative=error.html + export error_page_absolute=$serve/$error_page_relative + ${lib.getBin error_page}/bin/error_page "building …" > $error_page_absolute - ${lib.getBin pkgs.parallel}/bin/parallel \ - --will-cite \ - --line-buffer \ - --tagstr '{/}' \ - ::: \ - "${lib.getBin watcher}/bin/watcher" \ - "${lib.getBin server}/bin/server" - ''; + ${lib.getBin parallel}/bin/parallel \ + --will-cite \ + --line-buffer \ + --tagstr '{/}' \ + ::: \ + "${lib.getBin watcher}/bin/watcher" \ + "${lib.getBin server}/bin/server" + ''; in - devmode +mkShell { + name = "web-devmode"; + packages = [ devmode ]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2d419ef217aad..192d22ed4e9be 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -39140,6 +39140,8 @@ with pkgs; nixpkgs-lint-community = callPackage ../tools/nix/nixpkgs-lint { }; + nixpkgs-manual = callPackage ../../doc/doc-support/package.nix { }; + rnix-hashes = callPackage ../tools/nix/rnix-hashes { }; nixos-artwork = callPackage ../data/misc/nixos-artwork { }; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index f79352bf3ffef..5800376c91534 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -77,9 +77,8 @@ let release-checks = import ./nixpkgs-basic-release-checks.nix { inherit pkgs nixpkgs supportedSystems; }; + manual = pkgs.nixpkgs-manual.override { inherit nixpkgs; }; metrics = import ./metrics.nix { inherit pkgs nixpkgs; }; - - manual = import ../../doc { inherit pkgs nixpkgs; }; lib-tests = import ../../lib/tests/release.nix { inherit pkgs; }; pkgs-lib-tests = import ../pkgs-lib/tests { inherit pkgs; };