Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
local-store.hh File Reference
#include "lix/libstore/sqlite.hh"
#include "lix/libstore/store-api.hh"
#include "lix/libstore/indirect-root-store.hh"
#include "lix/libutil/async-io.hh"
#include "lix/libutil/sync.hh"
#include "lix/libutil/types.hh"
#include <chrono>
#include <future>
#include <kj/async.h>
#include <string>
#include <mutex>
#include <memory>
#include <unordered_set>

Go to the source code of this file.

Classes

struct  nix::OptimiseStats
struct  nix::LocalStoreConfig
class  nix::LocalStore

Typedefs

typedef std::pair< dev_t, ino_t > nix::Inode
typedef std::set< Inode > nix::InodesSeen

Functions

void nix::canonicalisePathMetaData (const Path &path, std::optional< std::pair< uid_t, uid_t > > uidRange, InodesSeen &inodesSeen)
void nix::canonicalisePathMetaData (const Path &path, std::optional< std::pair< uid_t, uid_t > > uidRange)
void nix::canonicaliseTimestampAndPermissions (const Path &path)
 nix::MakeError (PathInUse, Error)
void nix::registerLocalStore ()

Variables

const int nix::nixSchemaVersion = 10

Function Documentation

◆ canonicalisePathMetaData()

void nix::canonicalisePathMetaData ( const Path & path,
std::optional< std::pair< uid_t, uid_t > > uidRange,
InodesSeen & inodesSeen )

"Fix", or canonicalise, the meta-data of the files in a store path after it has been built. In particular:

  • the last modification date on each file is set to 1 (i.e., 00:00:01 1/1/1970 UTC)
  • the permissions are set of 444 or 555 (i.e., read-only with or without execute permission; setuid bits etc. are cleared)
  • the owner and group are set to the Nix user and group, if we're running as root.

If uidRange is not empty, this function will throw an error if it encounters files owned by a user outside of the closed interval [uidRange->first, uidRange->second].

Variable Documentation

◆ nixSchemaVersion

const int nix::nixSchemaVersion = 10

Nix store and database schema version.

Version 1 (or 0) was Nix <= 0.7. Version 2 was Nix 0.8 and 0.9. Version 3 is Nix 0.10. Version 4 is Nix 0.11. Version 5 is Nix 0.12-0.16. Version 6 is Nix 1.0. Version 7 is Nix 1.3. Version 10 is 2.0.

Lix started at 2.90, it cannot ever go past version 10 (Nix 2.18), since doing so will break compatibility with future CppNix versions.