Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 38 additions & 8 deletions doc/manual/generate-settings.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,32 @@ in
prefix,
inlineHTML ? true,
}:
settingsInfo:

let

showSetting =
prefix: setting:
{
description,
documentDefault,
defaultValue,
aliases,
value,

experimentalFeature,

# Whether we document the default, because it is machine agostic,
# or don't because because it is machine-specific.
documentDefault ? true,

# The default value is JSON for new-style config, rather than then
# a string or boolean, for old-style config.
isJson ? false,

defaultValue ? null,

subSettings ? null,

aliases ? [ ],

# The current value for this setting. Purposefully unused.
value ? null,
}:
let
result = squash ''
Expand All @@ -50,7 +63,7 @@ let

${description}

**Default:** ${showDefault documentDefault defaultValue}
${showDefaultOrSubSettings}

${showAliases aliases}
'';
Expand All @@ -72,9 +85,24 @@ let
> ```
'';

showDefaultOrSubSettings =
if !isAttrs subSettings then
# No subsettings, instead single setting. Show the default value.
''
**Default:** ${showDefault}
''
else
# Indent the nested sub-settings, and append the outer setting name onto the prefix
indent " " ''
**Nullable sub-settings**: ${if subSettings.nullable then "true" else "false"}
${builtins.trace prefix (showSettings "${prefix}-${setting}" subSettings.map)}
'';

showDefault =
documentDefault: defaultValue:
if documentDefault then
if isJson then
"`${builtins.toJSON defaultValue}`"
else
# a StringMap value type is specified as a string, but
# this shows the value type. The empty stringmap is `null` in
# JSON, but that converts to `{ }` here.
Expand All @@ -95,5 +123,7 @@ let
in
result;

showSettings =
prefix: settingsInfo: concatStrings (attrValues (mapAttrs (showSetting prefix) settingsInfo));
in
concatStrings (attrValues (mapAttrs (showSetting prefix) settingsInfo))
showSettings prefix
2 changes: 1 addition & 1 deletion doc/manual/source/release-notes/rl-2.28.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ This completes the infrastructure overhaul for the [RFC 132](https://github.com/
@@ @@
-#include "config.hh"
+// Additionally renamed to distinguish from components' config headers.
+#include "nix/util/configuration.hh"
+#include "nix/main/configuration.hh"
@@ @@
-#if HAVE_ACL_SUPPORT
+#if NIX_SUPPORT_ACL
Expand Down
4 changes: 2 additions & 2 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ subproject('nix')

# Docs
if get_option('doc-gen')
subproject('internal-api-docs')
subproject('external-api-docs')
#subproject('internal-api-docs')
#subproject('external-api-docs')
if meson.can_run_host_binaries()
subproject('nix-manual')
endif
Expand Down
2 changes: 1 addition & 1 deletion src/libcmd/common-eval-args.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#include "nix/expr/eval-settings.hh"
#include "nix/cmd/common-eval-args.hh"
#include "nix/main/shared.hh"
#include "nix/util/config-global.hh"
#include "nix/main/config-global.hh"
#include "nix/store/filetransfer.hh"
#include "nix/expr/eval.hh"
#include "nix/fetchers/fetchers.hh"
Expand Down
2 changes: 1 addition & 1 deletion src/libcmd/include/nix/cmd/command.hh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
///@file

#include "nix/cmd/installable-value.hh"
#include "nix/util/args.hh"
#include "nix/main/args.hh"
#include "nix/cmd/common-eval-args.hh"
#include "nix/store/path.hh"
#include "nix/flake/lockfile.hh"
Expand Down
2 changes: 1 addition & 1 deletion src/libcmd/include/nix/cmd/common-eval-args.hh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#pragma once
///@file

#include "nix/util/args.hh"
#include "nix/main/args.hh"
#include "nix/util/canon-path.hh"
#include "nix/main/common-args.hh"
#include "nix/expr/search-path.hh"
Expand Down
2 changes: 1 addition & 1 deletion src/libcmd/include/nix/cmd/compatibility-settings.hh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#pragma once
#include "nix/util/configuration.hh"
#include "nix/main/configuration.hh"

namespace nix {
struct CompatibilitySettings : public Config
Expand Down
2 changes: 1 addition & 1 deletion src/libcmd/include/nix/cmd/misc-store-flags.hh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "nix/util/args.hh"
#include "nix/main/args.hh"
#include "nix/store/content-address.hh"

namespace nix::flag {
Expand Down
2 changes: 1 addition & 1 deletion src/libexpr-c/nix_api_external.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "nix/expr/attr-set.hh"
#include "nix/util/configuration.hh"
#include "nix/main/configuration.hh"
#include "nix/expr/eval.hh"
#include "nix/store/globals.hh"
#include "nix/expr/value.hh"
Expand Down
2 changes: 1 addition & 1 deletion src/libexpr-c/nix_api_value.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "nix/expr/attr-set.hh"
#include "nix/util/configuration.hh"
#include "nix/main/configuration.hh"
#include "nix/expr/eval.hh"
#include "nix/store/globals.hh"
#include "nix/store/path.hh"
Expand Down
2 changes: 1 addition & 1 deletion src/libexpr/eval-gc.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "nix/util/error.hh"
#include "nix/util/environment-variables.hh"
#include "nix/expr/eval-settings.hh"
#include "nix/util/config-global.hh"
#include "nix/main/config-global.hh"
#include "nix/util/serialise.hh"
#include "nix/expr/eval-gc.hh"
#include "nix/expr/value.hh"
Expand Down
2 changes: 1 addition & 1 deletion src/libexpr/include/nix/expr/eval-settings.hh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
///@file

#include "nix/expr/eval-profiler-settings.hh"
#include "nix/util/configuration.hh"
#include "nix/main/configuration.hh"
#include "nix/util/source-path.hh"

namespace nix {
Expand Down
2 changes: 1 addition & 1 deletion src/libexpr/include/nix/expr/eval.hh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include "nix/expr/value.hh"
#include "nix/expr/nixexpr.hh"
#include "nix/expr/symbol-table.hh"
#include "nix/util/configuration.hh"
#include "nix/main/configuration.hh"
#include "nix/util/experimental-features.hh"
#include "nix/util/position.hh"
#include "nix/util/pos-table.hh"
Expand Down
2 changes: 1 addition & 1 deletion src/libfetchers/include/nix/fetchers/fetch-settings.hh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
///@file

#include "nix/util/types.hh"
#include "nix/util/configuration.hh"
#include "nix/main/configuration.hh"
#include "nix/util/ref.hh"
#include "nix/util/sync.hh"

Expand Down
2 changes: 1 addition & 1 deletion src/libflake/config.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#include <format>

#include "nix/util/users.hh"
#include "nix/util/config-global.hh"
#include "nix/main/config-global.hh"
#include "nix/flake/settings.hh"
#include "nix/flake/flake.hh"
#include "nix/util/ansicolor.hh"
Expand Down
2 changes: 1 addition & 1 deletion src/libflake/include/nix/flake/settings.hh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <sys/types.h>
#include <string>

#include "nix/util/configuration.hh"
#include "nix/main/configuration.hh"

namespace nix {
// Forward declarations
Expand Down
4 changes: 2 additions & 2 deletions src/libutil/args.cc → src/libmain/args.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "nix/util/args.hh"
#include "nix/util/args/root.hh"
#include "nix/main/args.hh"
#include "nix/main/args/root.hh"
#include "nix/util/hash.hh"
#include "nix/util/environment-variables.hh"
#include "nix/util/signals.hh"
Expand Down
4 changes: 2 additions & 2 deletions src/libmain/common-args.cc
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#include <nlohmann/json.hpp>

#include "nix/main/common-args.hh"
#include "nix/util/args/root.hh"
#include "nix/util/config-global.hh"
#include "nix/main/args/root.hh"
#include "nix/main/config-global.hh"
#include "nix/store/globals.hh"
#include "nix/util/logging.hh"
#include "nix/main/loggers.hh"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "nix/util/config-global.hh"
#include "nix/main/config-global.hh"

#include <nlohmann/json.hpp>

Expand Down
54 changes: 54 additions & 0 deletions src/libmain/config-upstream.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
namespace nix {

#include "nix/util/fs-sink.hh"
#include "nix/util/logging.hh"

struct LoggerSettings : Config
{
Setting<bool> showTrace{
this,
false,
"show-trace",
R"(
Whether Nix should print out a stack trace in case of Nix
expression evaluation errors.
)"};
Setting<Path> jsonLogPath{
this,
"",
"json-log-path",
R"(
A file or unix socket to which JSON records of Nix's log output are
written, in the same format as `--log-format internal-json`
(without the `@nix ` prefixes on each line).
Concurrent writes to the same file by multiple Nix processes are not supported and
may result in interleaved or corrupted log records.
)"};
};

static GlobalConfig::Register r1(&restoreSinkSettings);

struct RestoreSinkSettings : Config
{
Setting<bool> preallocateContents{
this, false, "preallocate-contents", "Whether to preallocate files when writing objects with known size."};
};

static GlobalConfig::Register rLoggerSettings(&loggerSettings);

struct ArchiveSettings : Config
{
Setting<bool> useCaseHack{
this,
#if __APPLE__
true,
#else
false,
#endif
"use-case-hack",
"Whether to enable a macOS-specific hack for dealing with file name case collisions."};
};

static GlobalConfig::Register rArchiveSettings(&archiveSettings);

} // namespace nix
31 changes: 4 additions & 27 deletions src/libutil/configuration.cc → src/libmain/configuration.cc
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
#include "nix/util/configuration.hh"
#include "nix/util/args.hh"
#include "nix/util/abstract-setting-to-json.hh"
#include "nix/main/configuration.hh"
#include "nix/main/args.hh"
#include "nix/main/abstract-setting-to-json.hh"
#include "nix/util/environment-variables.hh"
#include "nix/util/experimental-features.hh"
#include "nix/util/util.hh"
#include "nix/util/file-system.hh"

#include "nix/util/config-impl.hh"
#include "nix/main/config-impl.hh"

#include <nlohmann/json.hpp>

Expand Down Expand Up @@ -494,27 +494,4 @@ void OptionalPathSetting::operator=(const std::optional<Path> & v)
this->assign(v);
}

bool ExperimentalFeatureSettings::isEnabled(const ExperimentalFeature & feature) const
{
auto & f = experimentalFeatures.get();
return std::find(f.begin(), f.end(), feature) != f.end();
}

void ExperimentalFeatureSettings::require(const ExperimentalFeature & feature, std::string reason) const
{
if (!isEnabled(feature))
throw MissingExperimentalFeature(feature, std::move(reason));
}

bool ExperimentalFeatureSettings::isEnabled(const std::optional<ExperimentalFeature> & feature) const
{
return !feature || isEnabled(*feature);
}

void ExperimentalFeatureSettings::require(const std::optional<ExperimentalFeature> & feature) const
{
if (feature)
require(*feature);
}

} // namespace nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
///@file

#include <nlohmann/json.hpp>
#include "nix/util/configuration.hh"
#include "nix/main/configuration.hh"
#include "nix/util/json-utils.hh"

namespace nix {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once

#include "nix/util/args.hh"
#include "nix/main/args.hh"

namespace nix {

Expand Down
2 changes: 1 addition & 1 deletion src/libmain/include/nix/main/common-args.hh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#pragma once
///@file

#include "nix/util/args.hh"
#include "nix/main/args.hh"
#include "nix/util/repair-flag.hh"

namespace nix {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#pragma once
///@file

#include "nix/util/configuration.hh"
#include "nix/main/configuration.hh"

namespace nix {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
*/

#include "nix/util/util.hh"
#include "nix/util/configuration.hh"
#include "nix/util/args.hh"
#include "nix/main/configuration.hh"
#include "nix/main/args.hh"
#include "nix/util/logging.hh"

namespace nix {
Expand Down
Loading
Loading