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; }; }