From 1cb4fa4234d8df81a344d9c967c13de64dc7fdde Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 9 Aug 2025 19:57:09 -0400 Subject: [PATCH] Add support for symlinking. --- .../util/install_files/default.nix | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/nix/configuration/util/install_files/default.nix b/nix/configuration/util/install_files/default.nix index 8f06105..486a74a 100644 --- a/nix/configuration/util/install_files/default.nix +++ b/nix/configuration/util/install_files/default.nix @@ -14,6 +14,14 @@ let ; install_user_file = + let + constructors = { + "overwrite" = install_user_file_overwrite; + "symlink" = install_user_file_symlink; + }; + in + (target: (constructors."${target.method}" target)); + install_user_file_overwrite = target: let source = lib.strings.escapeShellArg "${target.source}"; @@ -24,6 +32,16 @@ let '' $DRY_RUN_CMD install $VERBOSE_ARG -D --compare -m ${mode} ${source} ${destination} ''; + install_user_file_symlink = + target: + let + source = lib.strings.escapeShellArg "${target.source}"; + destination = lib.strings.escapeShellArg "${target.target}"; + mode = lib.strings.escapeShellArg "${target.mode}"; + in + '' + $DRY_RUN_CMD ln $VERBOSE_ARG -s ${source} ${destination} + ''; in { imports = [ ]; @@ -146,7 +164,6 @@ in # ''; }; - # environment.etc."install_out".text = builtins.toJSON enabled_file_targets; - environment.etc."install_out".text = (lib.strings.concatStringsSep "\n" install_commands); + environment.etc."install_out".text = config.systemd.services.me-install-file.script; }; }