Useful Nix

umport

Расскажу про небольшую, но очень удобную функцию из nypkgs - umport. Функция так то довольно простая, всего на 50 строк кода. Служит она для удобного импорта файлов, без ручного прописывания большого количества путей. Принимает несколько аргументов:

  • path: путь для сканирования на наличие *.nix файлов в нем и во всех его поддиректориях
  • paths: пути к директориям, то же что и path, но для нескольких
  • include: директории, которые надо включить в поиск
  • exclude: директории, которые необходимо исключить из поиска
  • recursive (по умолчанию true): сканировать ли директории рекурсивно, то есть искать ли файлы в поддиректориях

Установка

Просто добавьте это в inputs в вашем flake.nix:

nypkgs = {
    url = "github:yunfachi/nypkgs";
    inputs.nixpkgs.follows = "nixpkgs";
};

Пример

Вместо этого:

imports = [
  ./somef1.nix
  ./somef2.nix
  ./somed1
  ./somed2
  ./somed3
  ./somed4/somef3.nix
  ...
];

Напишите это:

imports = inputs.nypkgs.legacyPackages.${pkgs.system}.lib.umport {
  path = ./.;

  include = [
    ./somed4/somef3.nix
  ];
  exclude = [
    ./somed4
    ./somef4.nix
  ];
};

On this page