···7676 inherit pkgs fmt;7777 requestReviews = pkgs.callPackage ./request-reviews { };7878 codeownersValidator = pkgs.callPackage ./codeowners-validator { };7979- eval = pkgs.callPackage ./eval { };7979+8080+ # FIXME(lf-): it might be useful to test other Nix implementations8181+ # (nixVersions.stable and Lix) here somehow at some point to ensure we don't8282+ # have eval divergence.8383+ eval = pkgs.callPackage ./eval {8484+ nix = pkgs.nixVersions.latest;8585+ };80868187 # CI jobs8288 lib-tests = import ../lib/tests/release.nix { inherit pkgs; };
+11-5
ci/eval/default.nix
···11+# Evaluates all the accessible paths in nixpkgs.22+# *This only builds on Linux* since it requires the Linux sandbox isolation to33+# be able to write in various places while evaluating inside the sandbox.44+#55+# This file is used by nixpkgs CI (see .github/workflows/eval.yml) as well as66+# being used directly as an entry point in Lix's CI (in `flake.nix` in the Lix77+# repo).88+#99+# If you know you are doing a breaking API change, please ping the nixpkgs CI1010+# maintainers and the Lix maintainers (`nix eval -f . lib.teams.lix`).111{212 callPackage,313 lib,414 runCommand,515 writeShellScript,66- writeText,716 symlinkJoin,817 time,918 procps,1010- nixVersions,1919+ nix,1120 jq,1212- python3,1321}:14221523let···3830 ]3931 );4032 };4141-4242- nix = nixVersions.latest;43334434 supportedSystems = builtins.fromJSON (builtins.readFile ../supportedSystems.json);4535
···3344# Tested in lib/tests/sources.sh55let66- inherit (builtins)66+ inherit (lib.strings)77 match88 split99 storeDir···403403 };404404 };405405406406+ # urlToName : (URL | Path | String) -> String407407+ #408408+ # Transform a URL (or path, or string) into a clean package name.409409+ urlToName =410410+ url:411411+ let412412+ inherit (lib.strings) stringLength;413413+ base = baseNameOf (lib.removeSuffix "/" (lib.last (lib.splitString ":" (toString url))));414414+ # chop away one git or archive-related extension415415+ removeExt =416416+ name:417417+ let418418+ matchExt = match "(.*)\\.(git|tar|zip|gz|tgz|bz|tbz|bz2|tbz2|lzma|txz|xz|zstd)$" name;419419+ in420420+ if matchExt != null then lib.head matchExt else name;421421+ # apply function f to string x while the result shrinks422422+ shrink =423423+ f: x:424424+ let425425+ v = f x;426426+ in427427+ if stringLength v < stringLength x then shrink f v else x;428428+ in429429+ shrink removeExt base;430430+431431+ # shortRev : (String | Integer) -> String432432+ #433433+ # Given a package revision (like "refs/tags/v12.0"), produce a short revision ("12.0").434434+ shortRev =435435+ rev:436436+ let437437+ baseRev = baseNameOf (toString rev);438438+ matchHash = match "[a-f0-9]+" baseRev;439439+ matchVer = match "([A-Za-z]+[-_. ]?)*(v)?([0-9.]+.*)" baseRev;440440+ in441441+ if matchHash != null then442442+ builtins.substring 0 7 baseRev443443+ else if matchVer != null then444444+ lib.last matchVer445445+ else446446+ baseRev;447447+448448+ # revOrTag : String -> String -> String449449+ #450450+ # Turn git `rev` and `tag` pair into a revision usable in `repoRevToName*`.451451+ revOrTag =452452+ rev: tag:453453+ if tag != null then454454+ tag455455+ else if rev != null then456456+ rev457457+ else458458+ "HEAD";459459+460460+ # repoRevToNameFull : (URL | Path | String) -> (String | Integer | null) -> (String | null) -> String461461+ #462462+ # See `repoRevToName` below.463463+ repoRevToNameFull =464464+ repo_: rev_: suffix_:465465+ let466466+ repo = urlToName repo_;467467+ rev = if rev_ != null then "-${shortRev rev_}" else "";468468+ suffix = if suffix_ != null then "-${suffix_}" else "";469469+ in470470+ "${repo}${rev}${suffix}-source";471471+472472+ # repoRevToName : String -> (URL | Path | String) -> (String | Integer | null) -> String -> String473473+ #474474+ # Produce derivation.name attribute for a given repository URL/path/name and (optionally) its revision/version tag.475475+ #476476+ # This is used by fetch(zip|git|FromGitHub|hg|svn|etc) to generate discoverable477477+ # /nix/store paths.478478+ #479479+ # This uses a different implementation depending on the `pretty` argument:480480+ # "source" -> name everything as "source"481481+ # "versioned" -> name everything as "${repo}-${rev}-source"482482+ # "full" -> name everything as "${repo}-${rev}-${fetcher}-source"483483+ repoRevToName =484484+ kind:485485+ # match on `kind` first to minimize the thunk486486+ if kind == "source" then487487+ (488488+ repo: rev: suffix:489489+ "source"490490+ )491491+ else if kind == "versioned" then492492+ (493493+ repo: rev: suffix:494494+ repoRevToNameFull repo rev null495495+ )496496+ else if kind == "full" then497497+ repoRevToNameFull498498+ else499499+ throw "repoRevToName: invalid kind";500500+406501in407502{408503···525430 cleanSourceFilter526431 pathHasContext527432 canCleanSource433433+434434+ urlToName435435+ shortRev436436+ revOrTag437437+ repoRevToName528438529439 sourceByRegex530440 sourceFilesBySuffices
+2-1
lib/tests/test-with-nix.nix
···3344 IMPORTANT:55 This is used by the github.com/NixOS/nix CI.66+ This is used by Lix's CI (see flake.nix in the Lix repo).6778 Try not to change the interface of this file, or if you need to, ping the88- Nix maintainers for help. Thank you!99+ Nix AND Lix maintainers (`nix eval -f . lib.teams.lix`) for help. Thank you!910*/1011{1112 pkgs,
···17171818- [FileBrowser](https://filebrowser.org/), a web application for managing and sharing files. Available as [services.filebrowser](#opt-services.filebrowser.enable).19192020+- Options under [networking.getaddrinfo](#opt-networking.getaddrinfo.enable) are now allowed to declaratively configure address selection and sorting behavior of `getaddrinfo` in dual-stack networks.2121+2022- [LACT](https://github.com/ilya-zlobintsev/LACT), a GPU monitoring and configuration tool, can now be enabled through [services.lact.enable](#opt-services.lact.enable).2123 Note that for LACT to work properly on AMD GPU systems, you need to enable [hardware.amdgpu.overdrive.enable](#opt-hardware.amdgpu.overdrive.enable).2224
+120
nixos/modules/config/getaddrinfo.nix
···11+{22+ pkgs,33+ lib,44+ config,55+ ...66+}:77+let88+ cfg = config.networking.getaddrinfo;99+1010+ formatTableEntries =1111+ tableName: table:1212+ if table == null then1313+ [ ]1414+ else1515+ lib.mapAttrsToList (cidr: val: "${tableName} ${cidr} ${toString val}") table;1616+1717+ gaiConfText = lib.concatStringsSep "\n" (1818+ [1919+ "# Generated by NixOS module networking.getaddrinfo"2020+ "# Do not edit manually!"2121+ "reload ${if cfg.reload then "yes" else "no"}"2222+ ]2323+ ++ formatTableEntries "label" cfg.label2424+ ++ formatTableEntries "precedence" cfg.precedence2525+ ++ formatTableEntries "scopev4" cfg.scopev42626+ );2727+in2828+{2929+ options.networking.getaddrinfo = {3030+ enable = lib.mkOption {3131+ type = lib.types.bool;3232+ default = pkgs.stdenv.hostPlatform.libc == "glibc";3333+ defaultText = lib.literalExpression ''3434+ pkgs.stdenv.hostPlatform.libc == "glibc"3535+ '';3636+ description = ''3737+ Enables custom address sorting configuration for {manpage}`getaddrinfo(3)` according to RFC 3484.3838+3939+ This option generates a {file}`/etc/gai.conf` file to override the default address sorting tables,4040+ as described in {manpage}`gai.conf(5)`.4141+4242+ This setting is only applicable when using the GNU C Library (glibc).4343+ It has no effect with other libc implementations.4444+ '';4545+ };4646+4747+ reload = lib.mkOption {4848+ type = lib.types.bool;4949+ default = false;5050+ description = ''5151+ Determines whether a process should detect changes to the configuration file since it was last read.5252+5353+ If enabled, the file is re-read automatically. This may cause issues in multithreaded applications5454+ and is generally discouraged.5555+ '';5656+ };5757+5858+ label = lib.mkOption {5959+ type = lib.types.nullOr (lib.types.attrsOf lib.types.int);6060+ default = null;6161+ description = ''6262+ Adds entries to the label table, as described in section 2.1 of RFC 3484.6363+6464+ If any label entries are provided, the glibc’s default label table is ignored.6565+ '';6666+ example = {6767+ "::/0" = 1;6868+ "2002::/16" = 2;6969+ "::/96" = 3;7070+ "::ffff:0:0/96" = 4;7171+ "fec0::/10" = 5;7272+ "fc00::/7" = 6;7373+ "2001:0::/32" = 7;7474+ };7575+ };7676+7777+ precedence = lib.mkOption {7878+ type = lib.types.nullOr (lib.types.attrsOf lib.types.int);7979+ default = null;8080+ description = ''8181+ Similar to {option}`networking.getaddrinfo.label`, but this option8282+ defines entries for the precedence table instead.8383+8484+ See sections 2.1 and 10.3 of RFC 3484 for details.8585+8686+ Providing any value will disable the glibc's default precedence table.8787+ '';8888+ example = {8989+ "::1/128" = 50;9090+ "::/0" = 40;9191+ "2002::/16" = 30;9292+ "::/96" = 20;9393+ "::ffff:0:0/96" = 10;9494+ };9595+ };9696+9797+ scopev4 = lib.mkOption {9898+ type = lib.types.nullOr (lib.types.attrsOf lib.types.int);9999+ default = null;100100+ description = ''101101+ Adds custom rules to the IPv4 scope table.102102+103103+ By default, the scope IDs described in section 3.2 of RFC 6724 are used.104104+105105+ Modifying these values is rarely necessary.106106+ '';107107+ example = {108108+ "::ffff:169.254.0.0/112" = 2;109109+ "::ffff:127.0.0.0/104" = 2;110110+ "::ffff:0.0.0.0/96" = 14;111111+ };112112+ };113113+ };114114+115115+ config = lib.mkIf cfg.enable {116116+ environment.etc."gai.conf".text = gaiConfText;117117+ };118118+119119+ meta.maintainers = with lib.maintainers; [ moraxyc ];120120+}
···11-{ fetchzip, lib }:11+{22+ fetchzip,33+ repoRevToNameMaybe,44+ lib,55+}:2637lib.makeOverridable (48 {59 url,610 rev ? null,711 tag ? null,88- name ? "source",1212+ name ? repoRevToNameMaybe url (lib.revOrTag rev tag) "gitiles",913 ...1014 }@args:1115
+2-1
pkgs/build-support/fetchgitlab/default.nix
···11{22 lib,33+ repoRevToNameMaybe,34 fetchgit,45 fetchzip,56}:···1211 repo,1312 rev ? null,1413 tag ? null,1414+ name ? repoRevToNameMaybe repo (lib.revOrTag rev tag) "gitlab",1515 protocol ? "https",1616 domain ? "gitlab.com",1717- name ? "source",1817 group ? null,1918 fetchSubmodules ? false,2019 leaveDotGit ? false,
+6-2
pkgs/build-support/fetchrepoorcz/default.nix
···11-{ fetchzip }:11+{22+ lib,33+ repoRevToNameMaybe,44+ fetchzip,55+}:2637# gitweb example, snapshot support is optional in gitweb48{59 repo,610 rev,77- name ? "source",1111+ name ? repoRevToNameMaybe repo rev "repoorcz",812 ... # For hash agility913}@args:1014fetchzip (
+6-2
pkgs/build-support/fetchsavannah/default.nix
···11-{ fetchzip, lib }:11+{22+ lib,33+ repoRevToNameMaybe,44+ fetchzip,55+}:2637lib.makeOverridable (48 # cgit example, snapshot support is optional in cgit59 {610 repo,711 rev,88- name ? "source",1212+ name ? repoRevToNameMaybe repo rev "savannah",913 ... # For hash agility1014 }@args:1115 fetchzip (
···1818rustPlatform.buildRustPackage (finalAttrs: {1919 pname = "cinny-desktop";2020 # We have to be using the same version as cinny-web or this isn't going to work.2121- version = "4.8.0";2121+ version = "4.8.1";22222323 src = fetchFromGitHub {2424 owner = "cinnyapp";2525 repo = "cinny-desktop";2626 tag = "v${finalAttrs.version}";2727- hash = "sha256-cixpsn0jMufd6VrBCsCH9t3bpkKdgi1i0qnkBlLgLG0=";2727+ hash = "sha256-Q9iCEJu/HgWnMqiT0EjtJUk7dp7o0hbLoamlkFEaR4M=";2828 };29293030 sourceRoot = "${finalAttrs.src.name}/src-tauri";31313232 useFetchCargoVendor = true;3333- cargoHash = "sha256-twfRuoA4z+Xgyyn7aIRy6MV1ozN2+qhSLh8i+qOTa2Q=";3333+ cargoHash = "sha256-lWU1NrUwcAXQR6mEiCr6Ze3TzpDYvCx5/fBIef9ao5I=";34343535 postPatch =3636 let
···11{22 lib,33 buildGraalvmNativeImage,44- graalvmPackages,54 fetchurl,65 writeScript,76 installShellFiles,87}:981010-let1111- babashka-unwrapped = buildGraalvmNativeImage rec {1212- pname = "babashka-unwrapped";1313- version = "1.12.200";99+buildGraalvmNativeImage (finalAttrs: {1010+ pname = "babashka-unwrapped";1111+ version = "1.12.200";14121515- src = fetchurl {1616- url = "https://github.com/babashka/babashka/releases/download/v${version}/babashka-${version}-standalone.jar";1717- sha256 = "sha256-hxcoVUaL19RM56fG8oxSKQwPHXDzaoSdCdHXSTXQ9fI=";1818- };1919-2020- graalvmDrv = graalvmPackages.graalvm-ce;2121-2222- executable = "bb";2323-2424- nativeBuildInputs = [ installShellFiles ];2525-2626- extraNativeImageBuildArgs = [2727- "-H:+ReportExceptionStackTraces"2828- "--no-fallback"2929- "--native-image-info"3030- "--enable-preview"3131- ];3232-3333- doInstallCheck = true;3434-3535- installCheckPhase = ''3636- $out/bin/bb --version | fgrep '${version}'3737- $out/bin/bb '(+ 1 2)' | fgrep '3'3838- $out/bin/bb '(vec (dedupe *input*))' <<< '[1 1 1 1 2]' | fgrep '[1 2]'3939- $out/bin/bb '(prn "bépo àê")' | fgrep 'bépo àê'4040- $out/bin/bb '(:out (babashka.process/sh "echo" "ä"))' | fgrep 'ä'4141- $out/bin/bb '(into-array [:f])'4242- '';4343-4444- postInstall = ''4545- installShellCompletion --cmd bb --bash ${./completions/bb.bash}4646- installShellCompletion --cmd bb --zsh ${./completions/bb.zsh}4747- installShellCompletion --cmd bb --fish ${./completions/bb.fish}4848- '';4949-5050- passthru.updateScript = writeScript "update-babashka" ''5151- #!/usr/bin/env nix-shell5252- #!nix-shell -i bash -p curl common-updater-scripts jq libarchive5353-5454- set -euo pipefail5555- shopt -s inherit_errexit5656-5757- latest_version="$(curl \5858- ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \5959- -fsL "https://api.github.com/repos/babashka/babashka/releases/latest" \6060- | jq -r '.tag_name')"6161-6262- if [ "$(update-source-version babashka-unwrapped "''${latest_version/v/}" --print-changes)" = "[]" ]; then6363- # no need to update babashka.clojure-tools when babashka-unwrapped wasn't updated6464- exit 06565- fi6666-6767- clojure_tools_version=$(curl \6868- -fsL \6969- "https://github.com/babashka/babashka/releases/download/''${latest_version}/babashka-''${latest_version/v/}-standalone.jar" \7070- | bsdtar -qxOf - borkdude/deps.clj \7171- | ${babashka-unwrapped}/bin/bb -I -o -e "(or (some->> *input* (filter #(= '(def version) (take 2 %))) first last last last) (throw (ex-info \"Couldn't find expected '(def version ...)' form in 'borkdude/deps.clj'.\" {})))")7272-7373- update-source-version babashka.clojure-tools "$clojure_tools_version" \7474- --file="pkgs/development/interpreters/babashka/clojure-tools.nix"7575- '';7676-7777- meta = with lib; {7878- description = "Clojure babushka for the grey areas of Bash";7979- longDescription = ''8080- The main idea behind babashka is to leverage Clojure in places where you8181- would be using bash otherwise.8282-8383- As one user described it:8484-8585- I’m quite at home in Bash most of the time, but there’s a substantial8686- grey area of things that are too complicated to be simple in bash, but8787- too simple to be worth writing a clj/s script for. Babashka really8888- seems to hit the sweet spot for those cases.8989-9090- Goals:9191-9292- - Low latency Clojure scripting alternative to JVM Clojure.9393- - Easy installation: grab the self-contained binary and run. No JVM needed.9494- - Familiarity and portability:9595- - Scripts should be compatible with JVM Clojure as much as possible9696- - Scripts should be platform-independent as much as possible. Babashka9797- offers support for linux, macOS and Windows.9898- - Allow interop with commonly used classes like java.io.File and System9999- - Multi-threading support (pmap, future, core.async)100100- - Batteries included (tools.cli, cheshire, ...)101101- - Library support via popular tools like the clojure CLI102102- '';103103- homepage = "https://github.com/babashka/babashka";104104- changelog = "https://github.com/babashka/babashka/blob/v${version}/CHANGELOG.md";105105- sourceProvenance = with sourceTypes; [ binaryBytecode ];106106- license = licenses.epl10;107107- maintainers = with maintainers; [108108- bandresen109109- bhougland110110- DerGuteMoritz111111- jlesquembre112112- ];113113- };1313+ src = fetchurl {1414+ url = "https://github.com/babashka/babashka/releases/download/v${finalAttrs.version}/babashka-${finalAttrs.version}-standalone.jar";1515+ sha256 = "sha256-hxcoVUaL19RM56fG8oxSKQwPHXDzaoSdCdHXSTXQ9fI=";11416 };115115-in116116-babashka-unwrapped1717+1818+ nativeBuildInputs = [ installShellFiles ];1919+2020+ extraNativeImageBuildArgs = [2121+ "-H:+ReportExceptionStackTraces"2222+ "--no-fallback"2323+ "--native-image-info"2424+ "--enable-preview"2525+ ];2626+2727+ doInstallCheck = true;2828+2929+ installCheckPhase = ''3030+ runHook preInstallCheck3131+3232+ $out/bin/bb --version | fgrep '${finalAttrs.version}'3333+ $out/bin/bb '(+ 1 2)' | fgrep '3'3434+ $out/bin/bb '(vec (dedupe *input*))' <<< '[1 1 1 1 2]' | fgrep '[1 2]'3535+ $out/bin/bb '(prn "bépo àê")' | fgrep 'bépo àê'3636+ $out/bin/bb '(:out (babashka.process/sh "echo" "ä"))' | fgrep 'ä'3737+ $out/bin/bb '(into-array [:f])'3838+3939+ runHook postInstallCheck4040+ '';4141+4242+ postInstall = ''4343+ installShellCompletion --cmd bb --bash ${./completions/bb.bash}4444+ installShellCompletion --cmd bb --zsh ${./completions/bb.zsh}4545+ installShellCompletion --cmd bb --fish ${./completions/bb.fish}4646+ '';4747+4848+ passthru.updateScript = writeScript "update-babashka" ''4949+ #!/usr/bin/env nix-shell5050+ #!nix-shell -i bash -p curl common-updater-scripts jq libarchive5151+5252+ set -euo pipefail5353+ shopt -s inherit_errexit5454+5555+ latest_version="$(curl \5656+ ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \5757+ -fsL "https://api.github.com/repos/babashka/babashka/releases/latest" \5858+ | jq -r '.tag_name')"5959+6060+ if [ "$(update-source-version babashka-unwrapped "''${latest_version/v/}" --print-changes)" = "[]" ]; then6161+ # no need to update babashka.clojure-tools when babashka-unwrapped wasn't updated6262+ exit 06363+ fi6464+6565+ clojure_tools_version=$(curl \6666+ -fsL \6767+ "https://github.com/babashka/babashka/releases/download/''${latest_version}/babashka-''${latest_version/v/}-standalone.jar" \6868+ | bsdtar -qxOf - borkdude/deps.clj \6969+ | ${lib.getExe finalAttrs.finalPackage} -I -o -e "(or (some->> *input* (filter #(= '(def version) (take 2 %))) first last last last) (throw (ex-info \"Couldn't find expected '(def version ...)' form in 'borkdude/deps.clj'.\" {})))")7070+7171+ update-source-version babashka.clojure-tools "$clojure_tools_version" \7272+ --file="pkgs/development/interpreters/babashka/clojure-tools.nix"7373+ '';7474+7575+ meta = {7676+ description = "Clojure babushka for the grey areas of Bash";7777+ longDescription = ''7878+ The main idea behind babashka is to leverage Clojure in places where you7979+ would be using bash otherwise.8080+8181+ As one user described it:8282+8383+ I’m quite at home in Bash most of the time, but there’s a substantial8484+ grey area of things that are too complicated to be simple in bash, but8585+ too simple to be worth writing a clj/s script for. Babashka really8686+ seems to hit the sweet spot for those cases.8787+8888+ Goals:8989+9090+ - Low latency Clojure scripting alternative to JVM Clojure.9191+ - Easy installation: grab the self-contained binary and run. No JVM needed.9292+ - Familiarity and portability:9393+ - Scripts should be compatible with JVM Clojure as much as possible9494+ - Scripts should be platform-independent as much as possible. Babashka9595+ offers support for linux, macOS and Windows.9696+ - Allow interop with commonly used classes like java.io.File and System9797+ - Multi-threading support (pmap, future, core.async)9898+ - Batteries included (tools.cli, cheshire, ...)9999+ - Library support via popular tools like the clojure CLI100100+ '';101101+ homepage = "https://github.com/babashka/babashka";102102+ changelog = "https://github.com/babashka/babashka/blob/v${finalAttrs.version}/CHANGELOG.md";103103+ sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];104104+ license = lib.licenses.epl10;105105+ mainProgram = "bb";106106+ maintainers = with lib.maintainers; [107107+ bandresen108108+ bhougland109109+ DerGuteMoritz110110+ jlesquembre111111+ ];112112+ };113113+})
···14481448 openssl_3_0 = openssl_3; # Added 2022-06-2714491449 opensycl = lib.warnOnInstantiate "'opensycl' has been renamed to 'adaptivecpp'" adaptivecpp; # Added 2024-12-0414501450 opensyclWithRocm = lib.warnOnInstantiate "'opensyclWithRocm' has been renamed to 'adaptivecppWithRocm'" adaptivecppWithRocm; # Added 2024-12-0414511451+ opentofu-ls = lib.warnOnInstantiate "'opentofu-ls' has been renamed to 'tofu-ls'" tofu-ls; # Added 2025-06-1014511452 openvdb_11 = throw "'openvdb_11' has been removed in favor of the latest version'"; # Added 2025-05-0314521453 opera = throw "'opera' has been removed due to lack of maintenance in nixpkgs"; # Added 2025-05-1914531454 orchis = throw "'orchis' has been renamed to/replaced by 'orchis-theme'"; # Converted to throw 2024-10-17
···5959 default = false;6060 };61616262+ fetchedSourceNameDefault = mkOption {6363+ type = types.uniq (6464+ types.enum [6565+ "source"6666+ "versioned"6767+ "full"6868+ ]6969+ );7070+ default = "source";7171+ description = ''7272+ This controls the default derivation `name` attribute set by the7373+ `fetch*` (`fetchzip`, `fetchFromGitHub`, etc) functions.7474+7575+ Possible values and the resulting `.name`:7676+7777+ - `"source"` -> `"source"`7878+ - `"versioned"` -> `"''${repo}-''${rev}-source"`7979+ - `"full"` -> `"''${repo}-''${rev}-''${fetcherName}-source"`8080+8181+ The default `"source"` is the best choice for minimal rebuilds, it8282+ will ignore any non-hash changes (like branches being renamed, source8383+ URLs changing, etc) at the cost of `/nix/store` being easily8484+ cache-poisoned (see [NixOS/nix#969](https://github.com/NixOS/nix/issues/969)).8585+8686+ Setting this to `"versioned"` greatly helps with discoverability of8787+ sources in `/nix/store` and makes cache-poisoning of `/nix/store` much8888+ harder, at the cost of a single mass-rebuild for all `src`8989+ derivations, and an occasional rebuild when a source changes some of9090+ its non-hash attributes.9191+9292+ Setting this to `"full"` is similar to setting it to `"versioned"`,9393+ but the use of `fetcherName` in the derivation name will force a9494+ rebuild when `src` switches between `fetch*` functions, thus forcing9595+ `nix` to check new derivation's `outputHash`, which is useful for9696+ debugging.9797+9898+ Also, `"full"` is useful for easy collection and tracking of9999+ statistics of where the packages you use are hosted.100100+101101+ If you are a developer, you should probably set this to at102102+ least`"versioned"`.103103+104104+ Changing the default will cause a mass rebuild.105105+ '';106106+ };107107+62108 doCheckByDefault = mkMassRebuild {63109 feature = "run `checkPhase` by default";64110 };···196150 };197151198152 cudaSupport = mkMassRebuild {199199- type = types.bool;200200- default = false;201153 feature = "build packages with CUDA support by default";202154 };203155···228184 };229185230186 rocmSupport = mkMassRebuild {231231- type = types.bool;232232- default = false;233187 feature = "build packages with ROCm support by default";234188 };235189