diff --git a/third_party/nix/doc/manual/command-ref/conf-file.xml b/third_party/nix/doc/manual/command-ref/conf-file.xml
index 48dce7c95..4a5400b19 100644
--- a/third_party/nix/doc/manual/command-ref/conf-file.xml
+++ b/third_party/nix/doc/manual/command-ref/conf-file.xml
@@ -598,37 +598,6 @@ password my-password
-
- plugin-files
-
-
- A list of plugin files to be loaded by Nix. Each of these
- files will be dlopened by Nix, allowing them to affect
- execution through static initialization. In particular, these
- plugins may construct static instances of RegisterPrimOp to
- add new primops or constants to the expression language,
- RegisterStoreImplementation to add new store implementations,
- RegisterCommand to add new subcommands to the
- nix command, and RegisterSetting to add new
- nix config settings. See the constructors for those types for
- more details.
-
-
- Since these files are loaded into the same address space as
- Nix itself, they must be DSOs compatible with the instance of
- Nix running at the time (i.e. compiled against the same
- headers, not linked to any incompatible libraries). They
- should not be linked to any Nix libs directly, as those will
- be available already at load time.
-
-
- If an entry in the list is a directory, all files in the
- directory are loaded as plugins (non-recursively).
-
-
-
-
-
pre-build-hook
diff --git a/third_party/nix/src/build-remote/build-remote.cc b/third_party/nix/src/build-remote/build-remote.cc
index 2c7e6dbab..82ac2014e 100644
--- a/third_party/nix/src/build-remote/build-remote.cc
+++ b/third_party/nix/src/build-remote/build-remote.cc
@@ -68,8 +68,6 @@ static int _main(int argc, char* argv[]) {
settings.maxBuildJobs.set("1"); // hack to make tests with local?root= work
- initPlugins();
-
auto store = openStore().cast();
/* It would be more appropriate to use $XDG_RUNTIME_DIR, since
diff --git a/third_party/nix/src/libexpr/primops.hh b/third_party/nix/src/libexpr/primops.hh
index 45f63a541..388066f39 100644
--- a/third_party/nix/src/libexpr/primops.hh
+++ b/third_party/nix/src/libexpr/primops.hh
@@ -14,9 +14,7 @@ struct RegisterPrimOp {
RegisterPrimOp(const std::string& name, size_t arity, PrimOpFun fun);
};
-/* These primops are disabled without enableNativeCode, but plugins
- may wish to use them in limited contexts without globally enabling
- them. */
+/* These primops are disabled without enableNativeCode */
/* Load a ValueInitializer from a DSO and return whatever it initializes */
void prim_importNative(EvalState& state, const Pos& pos, Value** args,
Value& v);
diff --git a/third_party/nix/src/libmain/shared.hh b/third_party/nix/src/libmain/shared.hh
index b749b572c..60a9e302f 100644
--- a/third_party/nix/src/libmain/shared.hh
+++ b/third_party/nix/src/libmain/shared.hh
@@ -22,7 +22,6 @@ class Exit : public std::exception {
int handleExceptions(const std::string& programName,
const std::function& fun);
-/* Don't forget to call initPlugins() after settings are initialized! */
void initNix();
void parseCmdLine(
diff --git a/third_party/nix/src/libstore/globals.cc b/third_party/nix/src/libstore/globals.cc
index dccf8d981..06ef3dd04 100644
--- a/third_party/nix/src/libstore/globals.cc
+++ b/third_party/nix/src/libstore/globals.cc
@@ -167,35 +167,4 @@ void MaxBuildJobsSetting::set(const std::string& str) {
}
}
-void initPlugins() {
- for (const auto& pluginFile : settings.pluginFiles.get()) {
- Paths pluginFiles;
- try {
- auto ents = readDirectory(pluginFile);
- for (const auto& ent : ents) {
- pluginFiles.emplace_back(pluginFile + "/" + ent.name);
- }
- } catch (SysError& e) {
- if (e.errNo != ENOTDIR) {
- throw;
- }
- pluginFiles.emplace_back(pluginFile);
- }
- for (const auto& file : pluginFiles) {
- /* handle is purposefully leaked as there may be state in the
- DSO needed by the action of the plugin. */
- void* handle = dlopen(file.c_str(), RTLD_LAZY | RTLD_LOCAL);
- if (handle == nullptr) {
- throw Error("could not dynamically open plugin file '%s': %s", file,
- dlerror());
- }
- }
- }
-
- /* Since plugins can add settings, try to re-apply previously
- unknown settings. */
- globalConfig.reapplyUnknownSettings();
- globalConfig.warnUnknownSettings();
-}
-
} // namespace nix
diff --git a/third_party/nix/src/libstore/globals.hh b/third_party/nix/src/libstore/globals.hh
index 567ec6c42..7799ff285 100644
--- a/third_party/nix/src/libstore/globals.hh
+++ b/third_party/nix/src/libstore/globals.hh
@@ -452,21 +452,11 @@ class Settings : public Config {
Setting minFreeCheckInterval{
this, 5, "min-free-check-interval",
"Number of seconds between checking free disk space."};
-
- Setting pluginFiles{
- this,
- {},
- "plugin-files",
- "Plugins to dynamically load at nix initialization time."};
};
// FIXME: don't use a global variable.
extern Settings settings;
-/* This should be called after settings are initialized, but before
- anything else */
-void initPlugins();
-
void loadConfFile();
extern const std::string nixVersion;
diff --git a/third_party/nix/src/nix-build/nix-build.cc b/third_party/nix/src/nix-build/nix-build.cc
index 7e3ee11d6..7ebb14e1f 100644
--- a/third_party/nix/src/nix-build/nix-build.cc
+++ b/third_party/nix/src/nix-build/nix-build.cc
@@ -255,8 +255,6 @@ static void _main(int argc, char** argv) {
myArgs.parseCmdline(args);
- initPlugins();
-
if (packages && fromArgs) {
throw UsageError("'-p' and '-E' are mutually exclusive");
}
diff --git a/third_party/nix/src/nix-channel/nix-channel.cc b/third_party/nix/src/nix-channel/nix-channel.cc
index 87cc0a1fe..837fb861d 100644
--- a/third_party/nix/src/nix-channel/nix-channel.cc
+++ b/third_party/nix/src/nix-channel/nix-channel.cc
@@ -214,8 +214,6 @@ static int _main(int argc, char** argv) {
return true;
});
- initPlugins();
-
switch (cmd) {
case cNone:
throw UsageError("no command specified");
diff --git a/third_party/nix/src/nix-collect-garbage/nix-collect-garbage.cc b/third_party/nix/src/nix-collect-garbage/nix-collect-garbage.cc
index f6897595c..ac8c7d939 100644
--- a/third_party/nix/src/nix-collect-garbage/nix-collect-garbage.cc
+++ b/third_party/nix/src/nix-collect-garbage/nix-collect-garbage.cc
@@ -82,8 +82,6 @@ static int _main(int argc, char** argv) {
return true;
});
- initPlugins();
-
auto profilesDir = settings.nixStateDir + "/profiles";
if (removeOld) {
removeOldGenerations(profilesDir);
diff --git a/third_party/nix/src/nix-copy-closure/nix-copy-closure.cc b/third_party/nix/src/nix-copy-closure/nix-copy-closure.cc
index d4ea6a85e..3dbe29f22 100644
--- a/third_party/nix/src/nix-copy-closure/nix-copy-closure.cc
+++ b/third_party/nix/src/nix-copy-closure/nix-copy-closure.cc
@@ -48,8 +48,6 @@ static int _main(int argc, char** argv) {
return true;
});
- initPlugins();
-
if (sshHost.empty()) {
throw UsageError("no host name specified");
}
diff --git a/third_party/nix/src/nix-daemon/nix-daemon.cc b/third_party/nix/src/nix-daemon/nix-daemon.cc
index 529619938..dc5295821 100644
--- a/third_party/nix/src/nix-daemon/nix-daemon.cc
+++ b/third_party/nix/src/nix-daemon/nix-daemon.cc
@@ -1107,8 +1107,6 @@ static int _main(int argc, char** argv) {
return true;
});
- initPlugins();
-
if (stdio) {
if (getStoreType() == tDaemon) {
/* Forward on this connection to the real daemon */
diff --git a/third_party/nix/src/nix-env/nix-env.cc b/third_party/nix/src/nix-env/nix-env.cc
index 820b8cbca..585cfbe3f 100644
--- a/third_party/nix/src/nix-env/nix-env.cc
+++ b/third_party/nix/src/nix-env/nix-env.cc
@@ -1496,8 +1496,6 @@ static int _main(int argc, char** argv) {
myArgs.parseCmdline(argvToStrings(argc, argv));
- initPlugins();
-
if (op == nullptr) {
throw UsageError("no operation specified");
}
diff --git a/third_party/nix/src/nix-instantiate/nix-instantiate.cc b/third_party/nix/src/nix-instantiate/nix-instantiate.cc
index 6c77a96eb..be96943b1 100644
--- a/third_party/nix/src/nix-instantiate/nix-instantiate.cc
+++ b/third_party/nix/src/nix-instantiate/nix-instantiate.cc
@@ -153,8 +153,6 @@ static int _main(int argc, char** argv) {
myArgs.parseCmdline(argvToStrings(argc, argv));
- initPlugins();
-
if (evalOnly && !wantsReadWrite) {
settings.readOnlyMode = true;
}
diff --git a/third_party/nix/src/nix-prefetch-url/nix-prefetch-url.cc b/third_party/nix/src/nix-prefetch-url/nix-prefetch-url.cc
index b9de2e826..dc0dce345 100644
--- a/third_party/nix/src/nix-prefetch-url/nix-prefetch-url.cc
+++ b/third_party/nix/src/nix-prefetch-url/nix-prefetch-url.cc
@@ -100,8 +100,6 @@ static int _main(int argc, char** argv) {
myArgs.parseCmdline(argvToStrings(argc, argv));
- initPlugins();
-
if (args.size() > 2) {
throw UsageError("too many arguments");
}
diff --git a/third_party/nix/src/nix-store/nix-store.cc b/third_party/nix/src/nix-store/nix-store.cc
index a642780b7..7729945b1 100644
--- a/third_party/nix/src/nix-store/nix-store.cc
+++ b/third_party/nix/src/nix-store/nix-store.cc
@@ -1276,8 +1276,6 @@ static int _main(int argc, char** argv) {
return true;
});
- initPlugins();
-
if (op == nullptr) {
throw UsageError("no operation specified");
}
diff --git a/third_party/nix/src/nix/main.cc b/third_party/nix/src/nix/main.cc
index a7b6e71bb..5536aac53 100644
--- a/third_party/nix/src/nix/main.cc
+++ b/third_party/nix/src/nix/main.cc
@@ -144,8 +144,6 @@ void mainWrapped(int argc, char** argv) {
args.parseCmdline(argvToStrings(argc, argv));
- initPlugins();
-
if (!args.command) {
args.showHelpAndExit();
}
diff --git a/third_party/nix/tests/plugins.sh b/third_party/nix/tests/plugins.sh
deleted file mode 100644
index 4b1baeddc..000000000
--- a/third_party/nix/tests/plugins.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-source common.sh
-
-set -o pipefail
-
-res=$(nix eval '(builtins.anotherNull)' --option setting-set true --option plugin-files $PWD/plugins/libplugintest*)
-
-[ "$res"x = "nullx" ]
diff --git a/third_party/nix/tests/plugins/plugintest.cc b/third_party/nix/tests/plugins/plugintest.cc
deleted file mode 100644
index 353166cff..000000000
--- a/third_party/nix/tests/plugins/plugintest.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "libutil/config.hh"
-#include "primops.hh"
-
-using namespace nix;
-
-struct MySettings : Config {
- Setting settingSet{this, false, "setting-set",
- "Whether the plugin-defined setting was set"};
-};
-
-MySettings mySettings;
-
-static GlobalConfig::Register rs(&mySettings);
-
-static void prim_anotherNull(EvalState& state, const Pos& pos, Value** args,
- Value& v) {
- if (mySettings.settingSet)
- mkNull(v);
- else
- mkBool(v, false);
-}
-
-static RegisterPrimOp rp("anotherNull", 0, prim_anotherNull);