1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-11-27 05:29:46 +01:00
This commit is contained in:
rycee 2024-01-24 19:51:22 +00:00
parent 13632c0620
commit f317e83a27
2 changed files with 42 additions and 12 deletions

View file

@ -7041,16 +7041,18 @@ does not modify, the state of the system and exits if an
unexpected state is found. For example, the
<code class="literal">checkLinkTargets</code> script block checks for
collisions between non-managed files and files defined in
<a class="xref" href="options.xhtml#opt-home.file" ><code class="option">home.file</code></a>.</p><p>A script block should respect the <code class="varname">DRY_RUN</code>
variable, if it is set then the actions taken by the script
should be logged to standard out and not actually performed.
The variable <code class="varname">DRY_RUN_CMD</code> is set to
<span class="command"><strong>echo</strong></span> if dry run is enabled.</p><p>A script block should also respect the
<code class="varname">VERBOSE</code> variable, and if set print
information on standard out that may be useful for debugging
any issue that may arise. The variable
<code class="varname">VERBOSE_ARG</code> is set to
<code class="option">--verbose</code> if verbose output is enabled.</p>
<a class="xref" href="options.xhtml#opt-home.file" ><code class="option">home.file</code></a>.</p><p>A script block should respect the <code class="varname">DRY_RUN</code> variable. If it is set
then the actions taken by the script should be logged to standard out
and not actually performed. A convenient shell function <span class="command"><strong>run</strong></span>
is provided for activation script blocks. It is used as follows:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><span class="command"><strong>run {command}</strong></span></span></dt><dd><p>Runs the given command on live run, otherwise prints the command to
standard output.</p></dd><dt><span class="term"><span class="command"><strong>run --silence {command}</strong></span></span></dt><dd><p>Runs the given command on live run and sends its standard and error
output to <code class="filename">/dev/null</code>, otherwise prints the command to standard
output.</p></dd></dl></div><p>A script block should also respect the <code class="varname">VERBOSE</code> variable, and if
set print information on standard out that may be useful for debugging
any issue that may arise. The variable <code class="varname">VERBOSE_ARG</code> is set to
<code class="option">--verbose</code> if verbose output is enabled. You can also use the
provided shell function <span class="command"><strong>verboseEcho</strong></span>, which acts as
<span class="command"><strong>echo</strong></span> when verbose output is enabled.</p>
<p><span class="emphasis"><em>Type:</em></span>
DAG of string</p>
@ -7060,7 +7062,7 @@ DAG of string</p>
<p><span class="emphasis"><em>Example:</em></span></p><pre><code class="programlisting">{
myActivationAction = lib.hm.dag.entryAfter [&quot;writeBoundary&quot;] &#x27;&#x27;
$DRY_RUN_CMD ln -s $VERBOSE_ARG \
run ln -s $VERBOSE_ARG \
${builtins.toPath ./link-me-directly} $HOME
&#x27;&#x27;;
}

View file

@ -37,7 +37,35 @@ will override any other configuration and cause, for example, the
removal of all managed files.</p><p>Please be very careful when enabling this option since activating
the built configuration will not only remove the managed files but
<span class="emphasis"><em>all</em></span> Home Manager state from your user environment. This includes
removing all your historic Home Manager generations!</p></li></ul></div>
removing all your historic Home Manager generations!</p></li><li class="listitem"><p>The use of <code class="literal">$DRY_RUN_CMD</code> and <code class="literal">$DRY_RUN_NULL</code> in activation script
blocks is now deprecated. Instead use the new shell function
<span class="command"><strong>run</strong></span>. In most cases it is sufficient to replace
<code class="literal">$DRY_RUN_CMD</code> by <span class="command"><strong>run</strong></span>. For example, if your configuration
currently contains</p><pre><code class="programlisting nix">home.activation.reportChanges = config.lib.dag.entryAnywhere &#x27;&#x27;
if [[ -v oldGenPath ]]; then
$DRY_RUN_CMD nix store diff-closures $oldGenPath $newGenPath
fi
&#x27;&#x27;;
</code></pre><p>then you are now encouraged to change to</p><pre><code class="programlisting nix">home.activation.reportChanges = config.lib.dag.entryAnywhere &#x27;&#x27;
if [[ -v oldGenPath ]]; then
run nix store diff-closures $oldGenPath $newGenPath
fi
&#x27;&#x27;;
</code></pre><p>See the description of <a class="link" href="options.xhtml#opt-home.activation" >home.activation</a> for
more. The deprecated variables will continue to work for now but
their use may in the future trigger a warning message and eventually
they may be removed entirely.</p></li><li class="listitem"><p>Similarly, the use of <code class="literal">$VERBOSE_ECHO</code> in activation script blocks is
deprecated. Instead use the new shell function
<span class="command"><strong>verboseEcho</strong></span>. That is,</p><pre><code class="programlisting nix">home.activation.doThing = config.lib.dag.entryAnywhere &#x27;&#x27;
$VERBOSE_ECHO &quot;Doing the thing&quot;
&#x27;&#x27;
</code></pre><p>should now be expressed</p><pre><code class="programlisting nix">home.activation.doThing = config.lib.dag.entryAnywhere &#x27;&#x27;
verboseEcho &quot;Doing the thing&quot;
&#x27;&#x27;
</code></pre><p>See the description of <a class="link" href="options.xhtml#opt-home.activation" >home.activation</a> for
more. The deprecated variable will continue to work for now but its
use may in the future trigger a warning message and eventually it
may be removed entirely.</p></li></ul></div>
</div><div class="section"> <div class="titlepage"> <div> <div> <h2 class="title" style="clear: both"> <a id="sec-release-24.05-state-version-changes"></a>State Version Changes </h2> </div> </div></div><p>The state version in this release includes the changes below. These
changes are only active if the <code class="literal">home.stateVersion</code> option is set to
&quot;24.05&quot; or later.</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Nothing, yet.</p></li></ul></div>