Skip to content

Get settings info out of headers, out of libutil #11033

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
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
@@ -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 ''
@@ -50,7 +63,7 @@ let
${description}
**Default:** ${showDefault documentDefault defaultValue}
${showDefaultOrSubSettings}
${showAliases aliases}
'';
@@ -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.
@@ -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
@@ -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
2 changes: 1 addition & 1 deletion src/libcmd/common-eval-args.cc
Original file line number Diff line number Diff line change
@@ -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"
2 changes: 1 addition & 1 deletion src/libcmd/include/nix/cmd/command.hh
Original file line number Diff line number Diff line change
@@ -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"
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"
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
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 {
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"
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"
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"
2 changes: 1 addition & 1 deletion src/libexpr/include/nix/expr/eval-settings.hh
Original file line number Diff line number Diff line change
@@ -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 {
2 changes: 1 addition & 1 deletion src/libexpr/include/nix/expr/eval.hh
Original file line number Diff line number Diff line change
@@ -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"
2 changes: 1 addition & 1 deletion src/libfetchers/include/nix/fetchers/fetch-settings.hh
Original file line number Diff line number Diff line change
@@ -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"

2 changes: 1 addition & 1 deletion src/libflake/config.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#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"

2 changes: 1 addition & 1 deletion src/libflake/include/nix/flake/settings.hh
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"

#include <sys/types.h>

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"
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"
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>

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>

@@ -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) const
{
if (!isEnabled(feature))
throw MissingExperimentalFeature(feature);
}

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
@@ -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 {
File renamed without changes.
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 {

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 {
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 {

Original file line number Diff line number Diff line change
@@ -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 {
Loading