From 2c3e5483e973d8873e854d179b81298dd6c42ea0 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 9 Aug 2025 20:54:54 -0400 Subject: [PATCH] Centralize the logic for escaping the shell values. --- nix/configuration/configuration.nix | 1 + .../util/install_files/default.nix | 32 ++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/nix/configuration/configuration.nix b/nix/configuration/configuration.nix index cfc094a..8c34538 100644 --- a/nix/configuration/configuration.nix +++ b/nix/configuration/configuration.nix @@ -81,6 +81,7 @@ # me.install.user.file.talexander.".local/nixcfg" = ./README.org; me.install.user.talexander.file.".local/nixcfg" = { source = ./flake.lock; + method = "overwrite"; }; nix.settings.experimental-features = [ diff --git a/nix/configuration/util/install_files/default.nix b/nix/configuration/util/install_files/default.nix index 2d730f4..d179bd2 100644 --- a/nix/configuration/util/install_files/default.nix +++ b/nix/configuration/util/install_files/default.nix @@ -13,6 +13,12 @@ let attrNames ; + get_shell_values = target: rec { + source = lib.strings.escapeShellArg "${target.source}"; + homedir = config.users.users."${target.username}".home; + destination = lib.strings.escapeShellArg "${homedir}/${target.target}"; + mode = lib.strings.escapeShellArg "${target.mode}"; + }; install_user_file = let constructors = { @@ -26,10 +32,11 @@ let "install" = ( target: let - source = lib.strings.escapeShellArg "${target.source}"; - homedir = config.users.users."${target.username}".home; - destination = lib.strings.escapeShellArg "${homedir}/${target.target}"; - mode = lib.strings.escapeShellArg "${target.mode}"; + inherit (get_shell_values target) + source + destination + mode + ; in '' $DRY_RUN_CMD install $VERBOSE_ARG -D --compare -m ${mode} ${source} ${destination} @@ -38,8 +45,9 @@ let "uninstall" = ( target: let - homedir = config.users.users."${target.username}".home; - destination = lib.strings.escapeShellArg "${homedir}/${target.target}"; + inherit (get_shell_values target) + destination + ; in '' $DRY_RUN_CMD echo rm -f ${destination} @@ -51,9 +59,10 @@ let "install" = ( target: let - source = lib.strings.escapeShellArg "${target.source}"; - homedir = config.users.users."${target.username}".home; - destination = lib.strings.escapeShellArg "${homedir}/${target.target}"; + inherit (get_shell_values target) + source + destination + ; in '' $DRY_RUN_CMD ln $VERBOSE_ARG -s ${source} ${destination} @@ -62,8 +71,9 @@ let "uninstall" = ( target: let - homedir = config.users.users."${target.username}".home; - destination = lib.strings.escapeShellArg "${homedir}/${target.target}"; + inherit (get_shell_values target) + destination + ; in '' $DRY_RUN_CMD echo rm -f ${destination}