Flake не работает при обновлении, nimPackages отсутствует, куда он делся?

Некоторое время назад у меня был flake.nix, который работал:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils, }:
    flake-utils.lib.eachDefaultSystem (system:
      let pkgs = import nixpkgs { inherit system; };
      in {
        packages = rec {
          hello = pkgs.nim2Packages.buildNimPackage {
            pname = "hello";
            version = "0.1.0";
            src = ./hello;
          };

          default = hello;
        };
      });

}

После запуска nix flake update он перестал работать с этим сообщением об ошибке:

error: attribute 'nimPackages' missing

       at /nix/store/rkp543s3nhhichwg03kffd515411mikm-source/test/samples/greeter/flake.nix:12:19:

           11|         packages = rec {
           12|           hello = pkgs.nimPackages.buildNimPackage {
             |                   ^
           13|             pname = "hello";
       Did you mean elmPackages?

Как я могу это исправить?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
163
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я сделал git bisect и отследил его до этого пиара nixpkgs

Два изменения, первое — это просто переименование/реорганизация: pkgs.nim2Packages.buildNimPackage -> pkgs.buildNimPackage

Другой требовал, чтобы я создал файл блокировки:

❯ nix-shell -p nim_lk
$ nim_lk ./hello > ./hello/lock.json
$ exit
❯ git add ./hello/lock.json

Затем мне нужно было сослаться на файл блокировки при вызове buildNimPackage. Вот flake.nix после внесения изменений:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils, }:
    flake-utils.lib.eachDefaultSystem (system:
      let pkgs = import nixpkgs { inherit system; };
      in {
        packages = rec {
          hello = pkgs.buildNimPackage {
            pname = "hello";
            version = "0.1.0";
            src = ./hello;
            lockFile = ./hello/lock.json;
          };
          default = hello;
        };
      });
}

Как вы справились с флейк-зависимостью? Есть ли для этого команда, похожая на git bisect, или вы клонировали nixpkgs локально и каким-то образом указали свою флейк на локальную копию, которую вы nix flake update потом?

tla 28.03.2024 08:28

Это было немного трудно. Я клонировал nixpkgs и запустил bisect с помощью git bisect bad, затем проверил ссылку из flake.lock, которая сработала и сделала git bisect good. Затем я позволил git обрабатывать разделение пополам и каждый раз копировал ссылку с каждого шага во входной файл: nixpkgs.url = "github:NixOS/nixpkgs?ref=bisect-hash-goes-here";. Затем я запустил nix build, чтобы посмотреть, хорошо это или плохо, а затем пробежал git bisect good или git bisect bad в репозитории nixpkgs. Чтобы найти виновника, понадобилось около 15 шагов. Автоматическое разделение входов пополам было бы очень крутой функцией.

MatrixManAtYrService 28.03.2024 21:00

Оглядываясь назад, ваша идея лучше. Мне следовало просто указать ввод на мой локальный nixpkgs.

MatrixManAtYrService 28.03.2024 21:01

Другие вопросы по теме

Похожие вопросы

Как исправить ошибку сборки Nix из-за файла, использующего способ разрыва строки Windows
Невозможно создать приложение Spring Boot с тестовыми контейнерами с использованием Nix из-за зависимости времени сборки Docker
Почему я получаю сообщение « PermissionError: [Errno 13] Разрешение отклонено: '/homeless-shelter'Q при установке 'jina-hubble-sdk' с помощью Nix Flake
Почему при попытке собрать этот пакет Python возвращается сообщение «Бэкэнд «poetry.core.masonry.api» недоступен»
Почему я могу использовать ollama в виртуальной среде, созданной nix-shell, но не в виртуальной среде, созданной флейком
Как я могу настроить конфигурацию Nix Flake для моей виртуальной среды, чтобы обеспечить успешное выполнение сценария Python, основанного на Ollama?
Создание приложения для Android с помощью bazel, настройка в среде nix-shell
Composer читает неправильную версию PHP при установке через Nix flake
Пытался удалить пакет из /nix/store теперь в системе есть ошибки, как исправить?
Можно ли использовать язык Nix для простых сценариев оболочки?