mirror of
https://github.com/LnL7/nix-darwin.git
synced 2025-03-09 10:17:02 +00:00
Since the etc actiation now includes a content whitelist files might get replaced automatically after system updates. So including it in the activation here should resolve most issues.
47 lines
1.3 KiB
Nix
47 lines
1.3 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
inherit (pkgs) stdenv;
|
|
|
|
cfg = config.services.activate-system;
|
|
in
|
|
|
|
{
|
|
options = {
|
|
services.activate-system.enable = mkOption {
|
|
type = types.bool;
|
|
default = true;
|
|
description = "Whether to activate system at boot time.";
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
launchd.daemons.activate-system = {
|
|
script = ''
|
|
set -e
|
|
set -o pipefail
|
|
export PATH="${pkgs.gnugrep}/bin:${pkgs.coreutils}/bin:@out@/sw/bin:/usr/bin:/bin:/usr/sbin:/sbin"
|
|
|
|
systemConfig=$(cat ${config.system.profile}/systemConfig)
|
|
|
|
# Make this configuration the current configuration.
|
|
# The readlink is there to ensure that when $systemConfig = /system
|
|
# (which is a symlink to the store), /run/current-system is still
|
|
# used as a garbage collection root.
|
|
ln -sfn $(cat ${config.system.profile}/systemConfig) /run/current-system
|
|
|
|
# Prevent the current configuration from being garbage-collected.
|
|
ln -sfn /run/current-system /nix/var/nix/gcroots/current-system
|
|
|
|
${config.system.activationScripts.etc.text}
|
|
${config.system.activationScripts.keyboard.text}
|
|
'';
|
|
serviceConfig.RunAtLoad = true;
|
|
serviceConfig.KeepAlive.SuccessfulExit = false;
|
|
};
|
|
|
|
};
|
|
}
|