nixos/etc: simplify source path handling

This change is strictly functionally equivalent because we're just
lifting the transformation of `source` out of `mapAttrs` to the single point of
use (in escapeShellArgs).

This is also much faster because we can skip a map over all `etc` items.
This commit is contained in:
Erik Arvstedt 2021-09-25 14:32:58 +02:00
parent f05a99e116
commit 654f41435b
No known key found for this signature in database
GPG Key ID: 33312B944DD97846

View File

@ -6,9 +6,7 @@ with lib;
let
# if the source is a local file, it should be imported to the store
localToStore = mapAttrs (name: value: if name == "source" then "${value}" else value);
etc' = map localToStore (filter (f: f.enable) (attrValues config.environment.etc));
etc' = filter (f: f.enable) (attrValues config.environment.etc);
etc = pkgs.runCommandLocal "etc" {
# This is needed for the systemd module
@ -55,7 +53,8 @@ let
mkdir -p "$out/etc"
${concatMapStringsSep "\n" (etcEntry: escapeShellArgs [
"makeEtcEntry"
etcEntry.source
# Force local source paths to be added to the store
"${etcEntry.source}"
etcEntry.target
etcEntry.mode
etcEntry.user