1
0
Fork 0
mirror of https://github.com/LnL7/nix-darwin.git synced 2025-03-13 20:30:02 +00:00

checks: generalize and make them more configurable

All the checks are now aggregated in system.checks.text making it easy
to allow certain checks to be disabled as well as disabling them
alltogether if desired. eg.

    # Disable all checks.
    system.checks.text = mkForce "";

Fixes #117
This commit is contained in:
Daiderd Jordan 2019-01-02 21:13:45 +01:00
parent 72b3648fa0
commit 8a6c783616
No known key found for this signature in database
GPG key ID: D02435D05B810C96

View file

@ -3,6 +3,8 @@
with lib;
let
cfg = config.system.checks;
darwinChanges = ''
darwinChanges=/dev/null
if test -e /run/current-system/darwin-changes; then
@ -30,7 +32,7 @@ let
fi
'';
buildUsers = optionalString config.services.nix-daemon.enable ''
buildUsers = ''
buildUser=$(dscl . -read /Groups/nixbld GroupMembership 2>&1 | awk '/^GroupMembership: / {print $2}') || true
if [ -z $buildUser ]; then
echo "error: Using the nix-daemon requires build users, aborting activation" >&2
@ -135,7 +137,7 @@ let
fi
'';
nixGarbageCollector = optionalString config.nix.gc.automatic ''
nixGarbageCollector = ''
if test -O /nix/store; then
echo "error: A single-user install can't run gc as root, aborting activation" >&2
echo "Configure the garbage collector to run as the current user:" >&2
@ -149,19 +151,34 @@ in
{
options = {
system.checks.verifyNixPath = mkOption {
type = types.bool;
default = true;
description = "Whether to run the NIX_PATH validation checks.";
};
system.checks.text = mkOption {
internal = true;
type = types.lines;
default = "";
};
};
config = {
system.checks.text = mkMerge [
darwinChanges
runLink
(mkIf config.services.nix-daemon.enable buildUsers)
nixStore
(mkIf config.nix.gc.automatic nixGarbageCollector)
nixChannels
nixInstaller
(mkIf cfg.verifyNixPath nixPath)
];
system.activationScripts.checks.text = ''
${darwinChanges}
${runLink}
${buildUsers}
${nixStore}
${nixGarbageCollector}
${nixChannels}
${nixInstaller}
${nixPath}
${cfg.text}
if test ''${checkActivation:-0} -eq 1; then
echo "ok" >&2