mirror of
https://github.com/NixOS/nix
synced 2025-06-24 09:41:15 +02:00
This change follows the definition from aptitude, but using precise notions from Nix: > package managers deal with packages: collections of files that are > bundled together and can be installed and removed as a group. > [...] > If a package A depends upon another package B, then B is required > for A to operate properly. > [...] > The job of a package manager is to present an interface which assists > the user in managing the collection of packages installed on his or her system. > > -- <https://www.debian.org/doc/manuals/aptitude/pr01s02.en.html> An interesting addition: > Packages are abstractions defining the granularity at which users can act > (add, remove, upgrade, etc.) on available software. > A distribution is a collection of packages maintained (hopefully) coherently. > > -- Package Upgrades in FOSS Distributions: Details and Challenges > (Roberto Di Cosmo, Stefano Zacchiroli; 2009) <https://arxiv.org/pdf/0902.1610> Notably these quotes and this change don't say anything about installation, or what it means for software to be available. In practice, this is handled downstream, e.g. in NixOS or Home Manager. Nix historically provides rudimentary facilities for package management such as `nix-env`, but I claim they are widely agreed upon being discouraged, with plenty of arguments provided in <https://stop-using-nix-env.privatevoid.net>. Similarly, the specific structure of packages is determined downstream, since Nix is policy-free: > Nix is policy-free; it provides mechanisms to implement various deployment policies, but does not enforce a specific one. > > -- The Purely Functional Software Deployment Model (Eelco Dolstra; 2006) <https://edolstra.github.io/pubs/phd-thesis.pdf> Specifically, Nix mechanisms do not define what a package is supposed to be: > It's worth noting that the Nix language is intended as a DSL for package and configuration management, but it has no notions of "packages" or "configurations". > > -- <https://gist.github.com/edolstra/29ce9d8ea399b703a7023073b0dbc00d> This is why we say, Nix *allows* denoting packages in a certain way, but doesn't enforce any particular way.
460 lines
27 KiB
JavaScript
460 lines
27 KiB
JavaScript
// redirect rules for URL fragments (client-side) to prevent link rot.
|
|
// this must be done on the client side, as web servers do not see the fragment part of the URL.
|
|
// it will only work with JavaScript enabled in the browser, but this is the best we can do here.
|
|
// see source/_redirects for path redirects (server-side)
|
|
|
|
// redirects are declared as follows:
|
|
// each entry has as its key a path matching the requested URL path, relative to the mdBook document root.
|
|
//
|
|
// IMPORTANT: it must specify the full path with file name and suffix
|
|
//
|
|
// each entry is itself a set of key-value pairs, where
|
|
// - keys are anchors on the matched path.
|
|
// - values are redirection targets relative to the current path.
|
|
|
|
const redirects = {
|
|
"index.html": {
|
|
"part-advanced-topics": "advanced-topics/index.html",
|
|
"chap-tuning-cores-and-jobs": "advanced-topics/cores-vs-jobs.html",
|
|
"chap-diff-hook": "advanced-topics/diff-hook.html",
|
|
"check-dirs-are-unregistered": "advanced-topics/diff-hook.html#check-dirs-are-unregistered",
|
|
"chap-distributed-builds": "command-ref/conf-file.html#conf-builders",
|
|
"chap-post-build-hook": "advanced-topics/post-build-hook.html",
|
|
"chap-post-build-hook-caveats": "advanced-topics/post-build-hook.html#implementation-caveats",
|
|
"chap-writing-nix-expressions": "language/index.html",
|
|
"part-command-ref": "command-ref/index.html",
|
|
"conf-allow-import-from-derivation": "command-ref/conf-file.html#conf-allow-import-from-derivation",
|
|
"conf-allow-new-privileges": "command-ref/conf-file.html#conf-allow-new-privileges",
|
|
"conf-allowed-uris": "command-ref/conf-file.html#conf-allowed-uris",
|
|
"conf-allowed-users": "command-ref/conf-file.html#conf-allowed-users",
|
|
"conf-auto-optimise-store": "command-ref/conf-file.html#conf-auto-optimise-store",
|
|
"conf-binary-cache-public-keys": "command-ref/conf-file.html#conf-binary-cache-public-keys",
|
|
"conf-binary-caches": "command-ref/conf-file.html#conf-binary-caches",
|
|
"conf-build-compress-log": "command-ref/conf-file.html#conf-build-compress-log",
|
|
"conf-build-cores": "command-ref/conf-file.html#conf-build-cores",
|
|
"conf-build-extra-chroot-dirs": "command-ref/conf-file.html#conf-build-extra-chroot-dirs",
|
|
"conf-build-extra-sandbox-paths": "command-ref/conf-file.html#conf-build-extra-sandbox-paths",
|
|
"conf-build-fallback": "command-ref/conf-file.html#conf-build-fallback",
|
|
"conf-build-max-jobs": "command-ref/conf-file.html#conf-build-max-jobs",
|
|
"conf-build-max-log-size": "command-ref/conf-file.html#conf-build-max-log-size",
|
|
"conf-build-max-silent-time": "command-ref/conf-file.html#conf-build-max-silent-time",
|
|
"conf-build-timeout": "command-ref/conf-file.html#conf-build-timeout",
|
|
"conf-build-use-chroot": "command-ref/conf-file.html#conf-build-use-chroot",
|
|
"conf-build-use-sandbox": "command-ref/conf-file.html#conf-build-use-sandbox",
|
|
"conf-build-use-substitutes": "command-ref/conf-file.html#conf-build-use-substitutes",
|
|
"conf-build-users-group": "command-ref/conf-file.html#conf-build-users-group",
|
|
"conf-builders": "command-ref/conf-file.html#conf-builders",
|
|
"conf-builders-use-substitutes": "command-ref/conf-file.html#conf-builders-use-substitutes",
|
|
"conf-compress-build-log": "command-ref/conf-file.html#conf-compress-build-log",
|
|
"conf-connect-timeout": "command-ref/conf-file.html#conf-connect-timeout",
|
|
"conf-cores": "command-ref/conf-file.html#conf-cores",
|
|
"conf-diff-hook": "command-ref/conf-file.html#conf-diff-hook",
|
|
"conf-env-keep-derivations": "command-ref/conf-file.html#conf-env-keep-derivations",
|
|
"conf-extra-binary-caches": "command-ref/conf-file.html#conf-extra-binary-caches",
|
|
"conf-extra-platforms": "command-ref/conf-file.html#conf-extra-platforms",
|
|
"conf-extra-sandbox-paths": "command-ref/conf-file.html#conf-extra-sandbox-paths",
|
|
"conf-extra-substituters": "command-ref/conf-file.html#conf-extra-substituters",
|
|
"conf-fallback": "command-ref/conf-file.html#conf-fallback",
|
|
"conf-fsync-metadata": "command-ref/conf-file.html#conf-fsync-metadata",
|
|
"conf-gc-keep-derivations": "command-ref/conf-file.html#conf-gc-keep-derivations",
|
|
"conf-gc-keep-outputs": "command-ref/conf-file.html#conf-gc-keep-outputs",
|
|
"conf-hashed-mirrors": "command-ref/conf-file.html#conf-hashed-mirrors",
|
|
"conf-http-connections": "command-ref/conf-file.html#conf-http-connections",
|
|
"conf-keep-build-log": "command-ref/conf-file.html#conf-keep-build-log",
|
|
"conf-keep-derivations": "command-ref/conf-file.html#conf-keep-derivations",
|
|
"conf-keep-env-derivations": "command-ref/conf-file.html#conf-keep-env-derivations",
|
|
"conf-keep-outputs": "command-ref/conf-file.html#conf-keep-outputs",
|
|
"conf-max-build-log-size": "command-ref/conf-file.html#conf-max-build-log-size",
|
|
"conf-max-free": "command-ref/conf-file.html#conf-max-free",
|
|
"conf-max-jobs": "command-ref/conf-file.html#conf-max-jobs",
|
|
"conf-max-silent-time": "command-ref/conf-file.html#conf-max-silent-time",
|
|
"conf-min-free": "command-ref/conf-file.html#conf-min-free",
|
|
"conf-narinfo-cache-negative-ttl": "command-ref/conf-file.html#conf-narinfo-cache-negative-ttl",
|
|
"conf-narinfo-cache-positive-ttl": "command-ref/conf-file.html#conf-narinfo-cache-positive-ttl",
|
|
"conf-netrc-file": "command-ref/conf-file.html#conf-netrc-file",
|
|
"conf-plugin-files": "command-ref/conf-file.html#conf-plugin-files",
|
|
"conf-post-build-hook": "command-ref/conf-file.html#conf-post-build-hook",
|
|
"conf-pre-build-hook": "command-ref/conf-file.html#conf-pre-build-hook",
|
|
"conf-require-sigs": "command-ref/conf-file.html#conf-require-sigs",
|
|
"conf-restrict-eval": "command-ref/conf-file.html#conf-restrict-eval",
|
|
"conf-run-diff-hook": "command-ref/conf-file.html#conf-run-diff-hook",
|
|
"conf-sandbox": "command-ref/conf-file.html#conf-sandbox",
|
|
"conf-sandbox-dev-shm-size": "command-ref/conf-file.html#conf-sandbox-dev-shm-size",
|
|
"conf-sandbox-paths": "command-ref/conf-file.html#conf-sandbox-paths",
|
|
"conf-secret-key-files": "command-ref/conf-file.html#conf-secret-key-files",
|
|
"conf-show-trace": "command-ref/conf-file.html#conf-show-trace",
|
|
"conf-stalled-download-timeout": "command-ref/conf-file.html#conf-stalled-download-timeout",
|
|
"conf-substitute": "command-ref/conf-file.html#conf-substitute",
|
|
"conf-substituters": "command-ref/conf-file.html#conf-substituters",
|
|
"conf-system": "command-ref/conf-file.html#conf-system",
|
|
"conf-system-features": "command-ref/conf-file.html#conf-system-features",
|
|
"conf-tarball-ttl": "command-ref/conf-file.html#conf-tarball-ttl",
|
|
"conf-timeout": "command-ref/conf-file.html#conf-timeout",
|
|
"conf-trace-function-calls": "command-ref/conf-file.html#conf-trace-function-calls",
|
|
"conf-trusted-binary-caches": "command-ref/conf-file.html#conf-trusted-binary-caches",
|
|
"conf-trusted-public-keys": "command-ref/conf-file.html#conf-trusted-public-keys",
|
|
"conf-trusted-substituters": "command-ref/conf-file.html#conf-trusted-substituters",
|
|
"conf-trusted-users": "command-ref/conf-file.html#conf-trusted-users",
|
|
"extra-sandbox-paths": "command-ref/conf-file.html#extra-sandbox-paths",
|
|
"sec-conf-file": "command-ref/conf-file.html",
|
|
"env-NIX_PATH": "command-ref/env-common.html#env-NIX_PATH",
|
|
"env-common": "command-ref/env-common.html",
|
|
"envar-remote": "command-ref/env-common.html#env-NIX_REMOTE",
|
|
"sec-common-env": "command-ref/env-common.html",
|
|
"ch-files": "command-ref/files.html",
|
|
"ch-main-commands": "command-ref/main-commands.html",
|
|
"opt-out-link": "command-ref/nix-build.html#opt-out-link",
|
|
"sec-nix-build": "command-ref/nix-build.html",
|
|
"sec-nix-channel": "command-ref/nix-channel.html",
|
|
"sec-nix-collect-garbage": "command-ref/nix-collect-garbage.html",
|
|
"sec-nix-copy-closure": "command-ref/nix-copy-closure.html",
|
|
"sec-nix-daemon": "command-ref/nix-daemon.html",
|
|
"refsec-nix-env-install-examples": "command-ref/nix-env.html#examples",
|
|
"rsec-nix-env-install": "command-ref/nix-env.html#operation---install",
|
|
"rsec-nix-env-set": "command-ref/nix-env.html#operation---set",
|
|
"rsec-nix-env-set-flag": "command-ref/nix-env.html#operation---set-flag",
|
|
"rsec-nix-env-upgrade": "command-ref/nix-env.html#operation---upgrade",
|
|
"sec-nix-env": "command-ref/nix-env.html",
|
|
"ssec-version-comparisons": "command-ref/nix-env.html#versions",
|
|
"sec-nix-hash": "command-ref/nix-hash.html",
|
|
"sec-nix-instantiate": "command-ref/nix-instantiate.html",
|
|
"sec-nix-prefetch-url": "command-ref/nix-prefetch-url.html",
|
|
"sec-nix-shell": "command-ref/nix-shell.html",
|
|
"ssec-nix-shell-shebang": "command-ref/nix-shell.html#use-as-a--interpreter",
|
|
"nixref-queries": "command-ref/nix-store.html#queries",
|
|
"opt-add-root": "command-ref/nix-store.html#opt-add-root",
|
|
"refsec-nix-store-dump": "command-ref/nix-store.html#operation---dump",
|
|
"refsec-nix-store-export": "command-ref/nix-store.html#operation---export",
|
|
"refsec-nix-store-import": "command-ref/nix-store.html#operation---import",
|
|
"refsec-nix-store-query": "command-ref/nix-store.html#operation---query",
|
|
"refsec-nix-store-verify": "command-ref/nix-store.html#operation---verify",
|
|
"rsec-nix-store-gc": "command-ref/nix-store.html#operation---gc",
|
|
"rsec-nix-store-generate-binary-cache-key": "command-ref/nix-store.html#operation---generate-binary-cache-key",
|
|
"rsec-nix-store-realise": "command-ref/nix-store.html#operation---realise",
|
|
"rsec-nix-store-serve": "command-ref/nix-store.html#operation---serve",
|
|
"sec-nix-store": "command-ref/nix-store.html",
|
|
"opt-I": "command-ref/opt-common.html#opt-I",
|
|
"opt-attr": "command-ref/opt-common.html#opt-attr",
|
|
"opt-common": "command-ref/opt-common.html",
|
|
"opt-cores": "command-ref/opt-common.html#opt-cores",
|
|
"opt-log-format": "command-ref/opt-common.html#opt-log-format",
|
|
"opt-max-jobs": "command-ref/opt-common.html#opt-max-jobs",
|
|
"opt-max-silent-time": "command-ref/opt-common.html#opt-max-silent-time",
|
|
"opt-timeout": "command-ref/opt-common.html#opt-timeout",
|
|
"sec-common-options": "command-ref/opt-common.html",
|
|
"ch-utilities": "command-ref/utilities.html",
|
|
"chap-hacking": "development/building.html",
|
|
"adv-attr-allowSubstitutes": "language/advanced-attributes.html#adv-attr-allowSubstitutes",
|
|
"adv-attr-allowedReferences": "language/advanced-attributes.html#adv-attr-allowedReferences",
|
|
"adv-attr-allowedRequisites": "language/advanced-attributes.html#adv-attr-allowedRequisites",
|
|
"adv-attr-disallowedReferences": "language/advanced-attributes.html#adv-attr-disallowedReferences",
|
|
"adv-attr-disallowedRequisites": "language/advanced-attributes.html#adv-attr-disallowedRequisites",
|
|
"adv-attr-exportReferencesGraph": "language/advanced-attributes.html#adv-attr-exportReferencesGraph",
|
|
"adv-attr-impureEnvVars": "language/advanced-attributes.html#adv-attr-impureEnvVars",
|
|
"adv-attr-outputHash": "language/advanced-attributes.html#adv-attr-outputHash",
|
|
"adv-attr-outputHashAlgo": "language/advanced-attributes.html#adv-attr-outputHashAlgo",
|
|
"adv-attr-outputHashMode": "language/advanced-attributes.html#adv-attr-outputHashMode",
|
|
"adv-attr-passAsFile": "language/advanced-attributes.html#adv-attr-passAsFile",
|
|
"adv-attr-preferLocalBuild": "language/advanced-attributes.html#adv-attr-preferLocalBuild",
|
|
"fixed-output-drvs": "language/advanced-attributes.html#adv-attr-outputHash",
|
|
"sec-advanced-attributes": "language/advanced-attributes.html",
|
|
"builtin-abort": "language/builtins.html#builtins-abort",
|
|
"builtin-add": "language/builtins.html#builtins-add",
|
|
"builtin-all": "language/builtins.html#builtins-all",
|
|
"builtin-any": "language/builtins.html#builtins-any",
|
|
"builtin-attrNames": "language/builtins.html#builtins-attrNames",
|
|
"builtin-attrValues": "language/builtins.html#builtins-attrValues",
|
|
"builtin-baseNameOf": "language/builtins.html#builtins-baseNameOf",
|
|
"builtin-bitAnd": "language/builtins.html#builtins-bitAnd",
|
|
"builtin-bitOr": "language/builtins.html#builtins-bitOr",
|
|
"builtin-bitXor": "language/builtins.html#builtins-bitXor",
|
|
"builtin-builtins": "language/builtins.html#builtins-builtins",
|
|
"builtin-compareVersions": "language/builtins.html#builtins-compareVersions",
|
|
"builtin-concatLists": "language/builtins.html#builtins-concatLists",
|
|
"builtin-concatStringsSep": "language/builtins.html#builtins-concatStringsSep",
|
|
"builtin-currentSystem": "language/builtins.html#builtins-currentSystem",
|
|
"builtin-deepSeq": "language/builtins.html#builtins-deepSeq",
|
|
"builtin-derivation": "language/builtins.html#builtins-derivation",
|
|
"builtin-dirOf": "language/builtins.html#builtins-dirOf",
|
|
"builtin-div": "language/builtins.html#builtins-div",
|
|
"builtin-elem": "language/builtins.html#builtins-elem",
|
|
"builtin-elemAt": "language/builtins.html#builtins-elemAt",
|
|
"builtin-fetchGit": "language/builtins.html#builtins-fetchGit",
|
|
"builtin-fetchTarball": "language/builtins.html#builtins-fetchTarball",
|
|
"builtin-fetchurl": "language/builtins.html#builtins-fetchurl",
|
|
"builtin-filterSource": "language/builtins.html#builtins-filterSource",
|
|
"builtin-foldl-prime": "language/builtins.html#builtins-foldl-prime",
|
|
"builtin-fromJSON": "language/builtins.html#builtins-fromJSON",
|
|
"builtin-functionArgs": "language/builtins.html#builtins-functionArgs",
|
|
"builtin-genList": "language/builtins.html#builtins-genList",
|
|
"builtin-getAttr": "language/builtins.html#builtins-getAttr",
|
|
"builtin-getEnv": "language/builtins.html#builtins-getEnv",
|
|
"builtin-hasAttr": "language/builtins.html#builtins-hasAttr",
|
|
"builtin-hashFile": "language/builtins.html#builtins-hashFile",
|
|
"builtin-hashString": "language/builtins.html#builtins-hashString",
|
|
"builtin-head": "language/builtins.html#builtins-head",
|
|
"builtin-import": "language/builtins.html#builtins-import",
|
|
"builtin-intersectAttrs": "language/builtins.html#builtins-intersectAttrs",
|
|
"builtin-isAttrs": "language/builtins.html#builtins-isAttrs",
|
|
"builtin-isBool": "language/builtins.html#builtins-isBool",
|
|
"builtin-isFloat": "language/builtins.html#builtins-isFloat",
|
|
"builtin-isFunction": "language/builtins.html#builtins-isFunction",
|
|
"builtin-isInt": "language/builtins.html#builtins-isInt",
|
|
"builtin-isList": "language/builtins.html#builtins-isList",
|
|
"builtin-isNull": "language/builtins.html#builtins-isNull",
|
|
"builtin-isString": "language/builtins.html#builtins-isString",
|
|
"builtin-length": "language/builtins.html#builtins-length",
|
|
"builtin-lessThan": "language/builtins.html#builtins-lessThan",
|
|
"builtin-listToAttrs": "language/builtins.html#builtins-listToAttrs",
|
|
"builtin-map": "language/builtins.html#builtins-map",
|
|
"builtin-match": "language/builtins.html#builtins-match",
|
|
"builtin-mul": "language/builtins.html#builtins-mul",
|
|
"builtin-parseDrvName": "language/builtins.html#builtins-parseDrvName",
|
|
"builtin-path": "language/builtins.html#builtins-path",
|
|
"builtin-pathExists": "language/builtins.html#builtins-pathExists",
|
|
"builtin-placeholder": "language/builtins.html#builtins-placeholder",
|
|
"builtin-readDir": "language/builtins.html#builtins-readDir",
|
|
"builtin-readFile": "language/builtins.html#builtins-readFile",
|
|
"builtin-removeAttrs": "language/builtins.html#builtins-removeAttrs",
|
|
"builtin-replaceStrings": "language/builtins.html#builtins-replaceStrings",
|
|
"builtin-seq": "language/builtins.html#builtins-seq",
|
|
"builtin-sort": "language/builtins.html#builtins-sort",
|
|
"builtin-split": "language/builtins.html#builtins-split",
|
|
"builtin-splitVersion": "language/builtins.html#builtins-splitVersion",
|
|
"builtin-stringLength": "language/builtins.html#builtins-stringLength",
|
|
"builtin-sub": "language/builtins.html#builtins-sub",
|
|
"builtin-substring": "language/builtins.html#builtins-substring",
|
|
"builtin-tail": "language/builtins.html#builtins-tail",
|
|
"builtin-throw": "language/builtins.html#builtins-throw",
|
|
"builtin-toFile": "language/builtins.html#builtins-toFile",
|
|
"builtin-toJSON": "language/builtins.html#builtins-toJSON",
|
|
"builtin-toPath": "language/builtins.html#builtins-toPath",
|
|
"builtin-toString": "language/builtins.html#builtins-toString",
|
|
"builtin-toXML": "language/builtins.html#builtins-toXML",
|
|
"builtin-trace": "language/builtins.html#builtins-trace",
|
|
"builtin-tryEval": "language/builtins.html#builtins-tryEval",
|
|
"builtin-typeOf": "language/builtins.html#builtins-typeOf",
|
|
"ssec-builtins": "language/builtins.html",
|
|
"attr-system": "language/derivations.html#attr-system",
|
|
"ssec-derivation": "language/derivations.html",
|
|
"ch-expression-language": "language/index.html",
|
|
"sec-constructs": "language/syntax.html",
|
|
"sect-let-language": "language/syntax.html#let-expressions",
|
|
"ss-functions": "language/syntax.html#functions",
|
|
"sec-language-operators": "language/operators.html",
|
|
"table-operators": "language/operators.html",
|
|
"ssec-values": "language/types.html",
|
|
"gloss-closure": "glossary.html#gloss-closure",
|
|
"gloss-derivation": "glossary.html#gloss-derivation",
|
|
"gloss-deriver": "glossary.html#gloss-deriver",
|
|
"gloss-nar": "glossary.html#gloss-nar",
|
|
"gloss-output-path": "glossary.html#gloss-output-path",
|
|
"gloss-profile": "glossary.html#gloss-profile",
|
|
"gloss-reachable": "glossary.html#gloss-reachable",
|
|
"gloss-reference": "glossary.html#gloss-reference",
|
|
"gloss-substitute": "glossary.html#gloss-substitute",
|
|
"gloss-user-env": "glossary.html#gloss-user-env",
|
|
"gloss-validity": "glossary.html#gloss-validity",
|
|
"part-glossary": "glossary.html",
|
|
"sec-building-source": "installation/building-source.html",
|
|
"ch-env-variables": "installation/env-variables.html",
|
|
"sec-installer-proxy-settings": "installation/env-variables.html#proxy-environment-variables",
|
|
"sec-nix-ssl-cert-file": "installation/env-variables.html#nix_ssl_cert_file",
|
|
"sec-nix-ssl-cert-file-with-nix-daemon-and-macos": "installation/env-variables.html#nix_ssl_cert_file-with-macos-and-the-nix-daemon",
|
|
"chap-installation": "installation/index.html",
|
|
"ch-installing-binary": "installation/installing-binary.html",
|
|
"sect-macos-installation": "installation/installing-binary.html#macos-installation",
|
|
"sect-macos-installation-change-store-prefix": "installation/installing-binary.html#macos-installation",
|
|
"sect-macos-installation-encrypted-volume": "installation/installing-binary.html#macos-installation",
|
|
"sect-macos-installation-recommended-notes": "installation/installing-binary.html#macos-installation",
|
|
"sect-macos-installation-symlink": "installation/installing-binary.html#macos-installation",
|
|
"sect-multi-user-installation": "installation/installing-binary.html#multi-user-installation",
|
|
"sect-nix-install-binary-tarball": "installation/installing-binary.html#installing-from-a-binary-tarball",
|
|
"sect-nix-install-pinned-version-url": "installation/installing-binary.html#installing-a-pinned-nix-version-from-a-url",
|
|
"sect-single-user-installation": "installation/installing-binary.html#single-user-installation",
|
|
"ch-installing-source": "installation/installing-source.html",
|
|
"ssec-multi-user": "installation/multi-user.html",
|
|
"ch-nix-security": "installation/nix-security.html",
|
|
"sec-obtaining-source": "installation/obtaining-source.html",
|
|
"sec-prerequisites-source": "installation/prerequisites-source.html",
|
|
"sec-single-user": "installation/single-user.html",
|
|
"ch-supported-platforms": "installation/supported-platforms.html",
|
|
"ch-upgrading-nix": "installation/upgrading.html",
|
|
"ch-about-nix": "introduction.html",
|
|
"chap-introduction": "introduction.html",
|
|
"ch-basic-package-mgmt": "package-management/basic-package-mgmt.html",
|
|
"ssec-binary-cache-substituter": "package-management/binary-cache-substituter.html",
|
|
"sec-channels": "command-ref/nix-channel.html",
|
|
"ssec-copy-closure": "command-ref/nix-copy-closure.html",
|
|
"sec-garbage-collection": "package-management/garbage-collection.html",
|
|
"ssec-gc-roots": "package-management/garbage-collector-roots.html",
|
|
"chap-package-management": "package-management/index.html",
|
|
"sec-profiles": "package-management/profiles.html",
|
|
"ssec-s3-substituter": "store/types/s3-substituter.html",
|
|
"ssec-s3-substituter-anonymous-reads": "store/types/s3-substituter.html#anonymous-reads-to-your-s3-compatible-binary-cache",
|
|
"ssec-s3-substituter-authenticated-reads": "store/types/s3-substituter.html#authenticated-reads-to-your-s3-binary-cache",
|
|
"ssec-s3-substituter-authenticated-writes": "store/types/s3-substituter.html#authenticated-writes-to-your-s3-compatible-binary-cache",
|
|
"sec-sharing-packages": "package-management/sharing-packages.html",
|
|
"ssec-ssh-substituter": "package-management/ssh-substituter.html",
|
|
"chap-quick-start": "quick-start.html",
|
|
"sec-relnotes": "release-notes/index.html",
|
|
"ch-relnotes-0.10.1": "release-notes/rl-0.10.1.html",
|
|
"ch-relnotes-0.10": "release-notes/rl-0.10.html",
|
|
"ssec-relnotes-0.11": "release-notes/rl-0.11.html",
|
|
"ssec-relnotes-0.12": "release-notes/rl-0.12.html",
|
|
"ssec-relnotes-0.13": "release-notes/rl-0.13.html",
|
|
"ssec-relnotes-0.14": "release-notes/rl-0.14.html",
|
|
"ssec-relnotes-0.15": "release-notes/rl-0.15.html",
|
|
"ssec-relnotes-0.16": "release-notes/rl-0.16.html",
|
|
"ch-relnotes-0.5": "release-notes/rl-0.5.html",
|
|
"ch-relnotes-0.6": "release-notes/rl-0.6.html",
|
|
"ch-relnotes-0.7": "release-notes/rl-0.7.html",
|
|
"ch-relnotes-0.8.1": "release-notes/rl-0.8.1.html",
|
|
"ch-relnotes-0.8": "release-notes/rl-0.8.html",
|
|
"ch-relnotes-0.9.1": "release-notes/rl-0.9.1.html",
|
|
"ch-relnotes-0.9.2": "release-notes/rl-0.9.2.html",
|
|
"ch-relnotes-0.9": "release-notes/rl-0.9.html",
|
|
"ssec-relnotes-1.0": "release-notes/rl-1.0.html",
|
|
"ssec-relnotes-1.1": "release-notes/rl-1.1.html",
|
|
"ssec-relnotes-1.10": "release-notes/rl-1.10.html",
|
|
"ssec-relnotes-1.11.10": "release-notes/rl-1.11.10.html",
|
|
"ssec-relnotes-1.11": "release-notes/rl-1.11.html",
|
|
"ssec-relnotes-1.2": "release-notes/rl-1.2.html",
|
|
"ssec-relnotes-1.3": "release-notes/rl-1.3.html",
|
|
"ssec-relnotes-1.4": "release-notes/rl-1.4.html",
|
|
"ssec-relnotes-1.5.1": "release-notes/rl-1.5.1.html",
|
|
"ssec-relnotes-1.5.2": "release-notes/rl-1.5.2.html",
|
|
"ssec-relnotes-1.5": "release-notes/rl-1.5.html",
|
|
"ssec-relnotes-1.6.1": "release-notes/rl-1.6.1.html",
|
|
"ssec-relnotes-1.6.0": "release-notes/rl-1.6.html",
|
|
"ssec-relnotes-1.7": "release-notes/rl-1.7.html",
|
|
"ssec-relnotes-1.8": "release-notes/rl-1.8.html",
|
|
"ssec-relnotes-1.9": "release-notes/rl-1.9.html",
|
|
"ssec-relnotes-2.0": "release-notes/rl-2.0.html",
|
|
"ssec-relnotes-2.1": "release-notes/rl-2.1.html",
|
|
"ssec-relnotes-2.2": "release-notes/rl-2.2.html",
|
|
"ssec-relnotes-2.3": "release-notes/rl-2.3.html",
|
|
},
|
|
"language/types.html": {
|
|
"simple-values": "#primitives",
|
|
"lists": "#list",
|
|
"strings": "#string",
|
|
"attribute-sets": "#attribute-set",
|
|
"type-number": "#type-int",
|
|
},
|
|
"language/syntax.html": {
|
|
"scoping-rules": "scoping.html",
|
|
"string-literal": "string-literals.html",
|
|
},
|
|
"language/derivations.md": {
|
|
"builder-execution": "store/drv/building.md#builder-execution",
|
|
},
|
|
"installation/installing-binary.html": {
|
|
"linux": "uninstall.html#linux",
|
|
"macos": "uninstall.html#macos",
|
|
"uninstalling": "uninstall.html",
|
|
},
|
|
"development/building.html": {
|
|
"nix-with-flakes": "#building-nix-with-flakes",
|
|
"classic-nix": "#building-nix",
|
|
"running-tests": "testing.html#running-tests",
|
|
"unit-tests": "testing.html#unit-tests",
|
|
"functional-tests": "testing.html#functional-tests",
|
|
"debugging-failing-functional-tests": "testing.html#debugging-failing-functional-tests",
|
|
"integration-tests": "testing.html#integration-tests",
|
|
"installer-tests": "testing.html#installer-tests",
|
|
"one-time-setup": "testing.html#one-time-setup",
|
|
"using-the-ci-generated-installer-for-manual-testing": "testing.html#using-the-ci-generated-installer-for-manual-testing",
|
|
"characterization-testing": "testing.html#characterisation-testing-unit",
|
|
"add-a-release-note": "contributing.html#add-a-release-note",
|
|
"add-an-entry": "contributing.html#add-an-entry",
|
|
"build-process": "contributing.html#build-process",
|
|
"reverting": "contributing.html#reverting",
|
|
"branches": "contributing.html#branches",
|
|
},
|
|
"glossary.html": {
|
|
"gloss-local-store": "store/types/local-store.html",
|
|
"package-attribute-set": "#package",
|
|
"gloss-chroot-store": "store/types/local-store.html",
|
|
"gloss-content-addressed-derivation": "#gloss-content-addressing-derivation",
|
|
},
|
|
};
|
|
|
|
// the following code matches the current page's URL against the set of redirects.
|
|
//
|
|
// it is written to minimize the latency between page load and redirect.
|
|
// therefore we avoid function calls, copying data, and unnecessary loops.
|
|
// IMPORTANT: we use stateful array operations and their order matters!
|
|
//
|
|
// matching URLs is more involved than it should be:
|
|
//
|
|
// 1. `document.location.pathname` can have an arbitrary prefix.
|
|
//
|
|
// 2. `path_to_root` is set by mdBook. it consists only of `../`s and
|
|
// determines the depth of `<path>` relative to the prefix:
|
|
//
|
|
// `document.location.pathname`
|
|
// |------------------------------|
|
|
// /<prefix>/<path>/[<file>[.html]][#<anchor>]
|
|
// |----|
|
|
// `path_to_root` has same number of path segments
|
|
//
|
|
// source: https://phaiax.github.io/mdBook/format/theme/index-hbs.html#data
|
|
//
|
|
// 3. the following paths are equivalent:
|
|
//
|
|
// /foo/bar/
|
|
// /foo/bar/index.html
|
|
// /foo/bar/index
|
|
//
|
|
// 4. the following paths are also equivalent:
|
|
//
|
|
// /foo/bar/baz
|
|
// /foo/bar/baz.html
|
|
//
|
|
|
|
let segments = document.location.pathname.split('/');
|
|
|
|
let file = segments.pop();
|
|
|
|
// normalize file name
|
|
if (file === '') { file = "index.html"; }
|
|
else if (!file.endsWith('.html')) { file = file + '.html'; }
|
|
|
|
segments.push(file);
|
|
|
|
// use `path_to_root` to discern prefix from path.
|
|
const depth = path_to_root.split('/').length;
|
|
|
|
// remove segments containing prefix. the following works because
|
|
// 1. the original `document.location.pathname` is absolute,
|
|
// hence first element of `segments` is always empty.
|
|
// 2. last element of splitting `path_to_root` is also always empty.
|
|
// 3. last element of `segments` is the file name.
|
|
//
|
|
// visual example:
|
|
//
|
|
// '/foo/bar/baz.html'.split('/') -> [ '', 'foo', 'bar', 'baz.html' ]
|
|
// '../'.split('/') -> [ '..', '' ]
|
|
//
|
|
// the following operations will then result in
|
|
//
|
|
// path = 'bar/baz.html'
|
|
//
|
|
segments.splice(0, segments.length - depth);
|
|
const path = segments.join('/');
|
|
|
|
// anchor starts with the hash character (`#`),
|
|
// but our redirect declarations don't, so we strip it.
|
|
// example:
|
|
// document.location.hash -> '#foo'
|
|
// document.location.hash.substring(1) -> 'foo'
|
|
const anchor = document.location.hash.substring(1);
|
|
|
|
const redirect = redirects[path];
|
|
if (redirect) {
|
|
const target = redirect[anchor];
|
|
if (target) {
|
|
document.location.href = target;
|
|
}
|
|
}
|