luaPackages: introduce an alias mechanism

so that we can deprecate modules
This commit is contained in:
Matthieu Coudron 2023-10-14 22:03:12 +02:00
parent 54ca335a15
commit 64b50c6f93
2 changed files with 49 additions and 1 deletions

View file

@ -1,5 +1,5 @@
# similar to interpreters/python/default.nix
{ stdenv, lib, callPackage, fetchFromGitHub, fetchurl, fetchpatch, makeBinaryWrapper }:
{ stdenv, config, lib, callPackage, fetchFromGitHub, fetchurl, fetchpatch, makeBinaryWrapper }:
let
@ -39,7 +39,13 @@ let
selfHostHost = luaOnHostForHost.pkgs;
selfTargetTarget = luaOnTargetForTarget.pkgs or {};
};
aliases = final: prev:
lib.optionalAttrs config.allowAliases
(import ../../lua-modules/aliases.nix lib final prev);
extensions = lib.composeManyExtensions [
aliases
generatedPackages
overriddenPackages
overrides

View file

@ -0,0 +1,42 @@
lib: self: super:
### Deprecated aliases - for backward compatibility
###
### !!! NOTE !!!
### Use `./remove-attr.py [attrname]` in this directory to remove your alias
### from the `luaPackages` set without regenerating the entire file.
with self;
let
# Removing recurseForDerivation prevents derivations of aliased attribute
# set to appear while listing all the packages available.
removeRecurseForDerivations = alias: with lib;
if alias.recurseForDerivations or false
then removeAttrs alias ["recurseForDerivations"]
else alias;
# Disabling distribution prevents top-level aliases for non-recursed package
# sets from building on Hydra.
removeDistribute = alias: with lib;
if isDerivation alias then
dontDistribute alias
else alias;
# Make sure that we are not shadowing something from node-packages.nix.
checkInPkgs = n: alias:
if builtins.hasAttr n super
then throw "Alias ${n} is still in generated.nix"
else alias;
mapAliases = aliases:
lib.mapAttrs (n: alias:
removeDistribute
(removeRecurseForDerivations
(checkInPkgs n alias)))
aliases;
in
mapAliases {
}