Ну шапошно
У npm это какая-то ерунда, чтобы пакеты не сломались при апгрейде и т.д
Вроде как привэнтит изменение версий, чтобы дерево зависимостей не упало
Да, примерно так.
flake.nix - это файл в котором описывается функция, которая принимает набор input'ов, а возвращает набор output'ов.
Пример input'а - это nixpkgs, пример output'а - твоя операционная система, а функцией, если утрировать будет твой configuration.nix.
flack.lock - файл в котором сохранится точная версия nixpks, чтобы при следующем эвале функции получить точно такой же аутпут.