mirror of
https://github.com/NixOS/nix
synced 2025-07-03 02:01:48 +02:00
Progress on #5638
There are still a global fetcher and eval settings, but they are pushed
down into `libnixcmd`, which is a lot less bad a place for this sort of
thing.
Continuing process pioneered in
52bfccf8d8
.
73 lines
1.5 KiB
C++
73 lines
1.5 KiB
C++
#pragma once
|
|
///@file
|
|
|
|
#include "args.hh"
|
|
#include "canon-path.hh"
|
|
#include "common-args.hh"
|
|
#include "search-path.hh"
|
|
|
|
#include <filesystem>
|
|
|
|
namespace nix {
|
|
|
|
class Store;
|
|
|
|
namespace fetchers { struct Settings; }
|
|
|
|
class EvalState;
|
|
struct EvalSettings;
|
|
struct CompatibilitySettings;
|
|
class Bindings;
|
|
struct SourcePath;
|
|
|
|
namespace flake { struct Settings; }
|
|
|
|
/**
|
|
* @todo Get rid of global setttings variables
|
|
*/
|
|
extern fetchers::Settings fetchSettings;
|
|
|
|
/**
|
|
* @todo Get rid of global setttings variables
|
|
*/
|
|
extern EvalSettings evalSettings;
|
|
|
|
/**
|
|
* @todo Get rid of global setttings variables
|
|
*/
|
|
extern flake::Settings flakeSettings;
|
|
|
|
/**
|
|
* Settings that control behaviors that have changed since Nix 2.3.
|
|
*/
|
|
extern CompatibilitySettings compatibilitySettings;
|
|
|
|
struct MixEvalArgs : virtual Args, virtual MixRepair
|
|
{
|
|
static constexpr auto category = "Common evaluation options";
|
|
|
|
MixEvalArgs();
|
|
|
|
Bindings * getAutoArgs(EvalState & state);
|
|
|
|
LookupPath lookupPath;
|
|
|
|
std::optional<std::string> evalStoreUrl;
|
|
|
|
private:
|
|
struct AutoArgExpr { std::string expr; };
|
|
struct AutoArgString { std::string s; };
|
|
struct AutoArgFile { std::filesystem::path path; };
|
|
struct AutoArgStdin { };
|
|
|
|
using AutoArg = std::variant<AutoArgExpr, AutoArgString, AutoArgFile, AutoArgStdin>;
|
|
|
|
std::map<std::string, AutoArg> autoArgs;
|
|
};
|
|
|
|
/**
|
|
* @param baseDir Optional [base directory](https://nixos.org/manual/nix/unstable/glossary#gloss-base-directory)
|
|
*/
|
|
SourcePath lookupFileArg(EvalState & state, std::string_view s, const Path * baseDir = nullptr);
|
|
|
|
}
|