diff --git a/src/kup/__main__.py b/src/kup/__main__.py index 4bc60d8..d0d64c1 100644 --- a/src/kup/__main__.py +++ b/src/kup/__main__.py @@ -34,6 +34,7 @@ K_FRAMEWORK_BINARY_CACHE_NAME, K_FRAMEWORK_CACHE, K_FRAMEWORK_PUBLIC_KEY, + PROFILE_ADD_COMMAND, USER_IS_TRUSTED, ask_install_substituters, get_extra_substituters_from_flake, @@ -520,7 +521,7 @@ def install_package( if package_name.base in installed_packages: nix(['profile', 'remove', str(package.index)], is_install=False) nix( - ['profile', 'install', pinned_package_cache[package.uri]], + ['profile', PROFILE_ADD_COMMAND, pinned_package_cache[package.uri]], verbose=VERBOSE, ) else: @@ -538,7 +539,7 @@ def install_package( if package_name.base in installed_packages: nix(['profile', 'remove', str(package.index)], is_install=False) nix( - ['profile', 'install', package.uri] + overrides + git_token_options, + ['profile', PROFILE_ADD_COMMAND, package.uri] + overrides + git_token_options, extra_substituters=package.substituters, extra_public_keys=package.public_keys, verbose=VERBOSE, diff --git a/src/kup/nix.py b/src/kup/nix.py index c0cba54..251c73a 100644 --- a/src/kup/nix.py +++ b/src/kup/nix.py @@ -102,6 +102,24 @@ def nix_raw( .replace('"', '') ) +# `nix profile install` was renamed to `nix profile add` in Nix 2.30. +# Use the appropriate command to avoid deprecation warnings on newer Nix versions. +# https://nix.dev/manual/nix/2.30/release-notes/rl-2.30.html#backward-incompatible-changes-and-deprecations +PROFILE_ADD_COMMAND = ( + nix_raw( + [ + 'eval', + '--impure', + '--expr', + 'if builtins.compareVersions builtins.nixVersion "2.30pre" == -1 then "install" else "add"', + ], + extra_flags=[], + ) + .decode('utf8') + .strip() + .replace('"', '') +) + USER = pwd.getpwuid(os.getuid())[0] USER_IS_ROOT = os.geteuid() == 0