aboutsummaryrefslogtreecommitdiff
path: root/src/nix/doctor.cc
diff options
context:
space:
mode:
authormatthewcroughan <matt@croughan.sh>2022-12-26 20:21:08 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-04-06 19:59:57 -0400
commit9207f945822764a041a485009759f0a895468e94 (patch)
tree8eb60530be71b451d588d493dde52efe86ea30ff /src/nix/doctor.cc
parent91856396317995aa38dc7244357596b8de27f937 (diff)
Add `Store::isTrustedClient()`
This function returns true or false depending on whether the Nix client is trusted or not. Mostly relevant when speaking to a remote store with a daemon. We include this information in `nix ping store` and `nix doctor` Co-Authored-By: John Ericson <John.Ericson@Obsidian.Systems>
Diffstat (limited to 'src/nix/doctor.cc')
-rw-r--r--src/nix/doctor.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/nix/doctor.cc b/src/nix/doctor.cc
index 354b03cf6..1aa6831d3 100644
--- a/src/nix/doctor.cc
+++ b/src/nix/doctor.cc
@@ -33,6 +33,10 @@ bool checkFail(const std::string & msg) {
return false;
}
+void checkInfo(const std::string & msg) {
+ notice(ANSI_BLUE "[INFO] " ANSI_NORMAL + msg);
+}
+
}
struct CmdDoctor : StoreCommand
@@ -63,6 +67,7 @@ struct CmdDoctor : StoreCommand
success &= checkProfileRoots(store);
}
success &= checkStoreProtocol(store->getProtocol());
+ checkTrustedUser(store);
if (!success)
throw Exit(2);
@@ -138,6 +143,14 @@ struct CmdDoctor : StoreCommand
return checkPass("Client protocol matches store protocol.");
}
+
+ void checkTrustedUser(ref<Store> store)
+ {
+ std::string_view trusted = store->isTrustedClient()
+ ? "trusted"
+ : "not trusted";
+ checkInfo(fmt("You are %s by store uri: %s", trusted, store->getUri()));
+ }
};
static auto rCmdDoctor = registerCommand<CmdDoctor>("doctor");