#pragma once #include "config.h" #include "types.hh" #include #include namespace nix { enum CompressionType { COMPRESSION_NONE = 0, COMPRESSION_GZIP = 1 #if HAVE_BZLIB_H , COMPRESSION_BZIP2 = 2 #endif }; struct Settings { typedef std::map SettingsMap; Settings(); void processEnvironment(); void set(const string & name, const string & value); string get(const string & name, const string & def); Strings get(const string & name, const Strings & def); bool get(const string & name, bool def); int get(const string & name, int def); void update(); string pack(); SettingsMap getOverrides(); /* The directory where we store sources and derived files. */ Path nixStore; /* The directory where we log various operations. */ Path nixLogDir; /* The directory where state is stored. */ Path nixStateDir; /* The directory where we keep the SQLite database. */ Path nixDB
aboutsummaryrefslogtreecommitdiff
uess. */ string thisSystem; /* The maximum time in seconds that a builer can go without producing any output on stdout/stderr before it is killed. 0 means infinity. */ time_t maxSilentTime; /* The maximum duration in seconds that a builder can run. 0 means infinity. */ time_t buildTimeout; /* Whether to use build hooks (for distributed builds). Sometimes users want to disable this from the command-line. */ bool useBuildHook; /* Whether buildDerivations() should print out lines on stderr in a fixed format to allow its progress to be monitored. Each line starts with a "@". The following are defined: @ build-started @ build-failed @ build-succeeded @ substituter-started @ substituter-failed @ substituter-succeeded Best combined with --no-build-output, otherwise stderr might conceivably contain lines in this format printed by the builders. */ bool printBuildTrace; /* When true, 'buildDerivations' prefixes lines coming from builders so that clients know exactly which line comes from which builder, and which line comes from the daemon itself. The prefix for data coming from builders is "log:PID:LEN:DATA" where PID uniquely identifies the builder (PID is given in "build-started" traces.) */ bool multiplexedBuildOutput; /* Amount of reserved space for the garbage collector (/nix/var/nix/db/reserved). */ off_t reservedSize; /* Whether SQLite should use fsync. */ bool fsyncMetadata; /* Whether SQLite should use WAL mode. */ bool useSQLiteWAL; /* Whether to call sync() before registering a path as valid. */ bool syncBeforeRegistering; /* Whether to use substitutes. */ bool useSubstitutes; /* The Unix group that contains the build users. */ string buildUsersGroup; /* Whether to build in chroot. */ bool useChroot; /* Whether to impersonate a Linux 2.6 machine on newer kernels. */ bool impersonateLinux26; /* Whether to store build logs. */ bool keepLog; /* Whether to compress logs. */ enum CompressionType logCompression; /* Maximum number of bytes a builder can write to stdout/stderr before being killed (0 means no limit). */ unsigned long maxLogSize; /* Whether to cache build failures. */ bool cacheFailure; /* How often (in seconds) to poll for locks. */ unsigned int pollInterval; /* Whether to check if new GC roots can in fact be found by the garbage collector. */ bool checkRootReachability; /* Whether the garbage collector should keep outputs of live derivations. */ bool gcKeepOutputs; /* Whether the garbage collector should keep derivers of live paths. */ bool gcKeepDerivations; /* Whether to automatically replace files with identical contents with hard links. */ bool autoOptimiseStore; /* Whether to add derivations as a dependency of user environments (to prevent them from being GCed). */ bool envKeepDerivations; /* Whether to lock the Nix client and worker to the same CPU. */ bool lockCPU; /* Whether to show a stack trace if Nix evaluation fails. */ bool showTrace; private: SettingsMap settings, overrides; void _get(string & res, const string & name); void _get(bool & res, const string & name); void _get(StringSet & res, const string & name); void _get(Strings & res, const string & name); template void _get(N & res, const string & name); }; // FIXME: don't use a global variable. extern Settings settings; extern const string nixVersion; }
AgeCommit message (Expand)Author