Note
"1000+ строк кода на Rust, которые можно было бы эффективно заменить одним баш-скриптом." — Майнтейнер awesome-nix
Управление пакетами home-manager и NixOS вручную требует постоянного открытия конфигурационных файлов, добавления строк в списки пакетов и запуска команд пересборки системы.
Niux автоматизирует этот рабочий процесс: он предоставляет легковесный CLI для установки, удаления и управления пакетами с помощью коротких интуитивных команд — аналогично традиционным менеджерам пакетов вроде apt или pacman, — строго сохраняя при этом декларативную природу Nix.
- Управление пакетами одной командой (например,
niux -Hi firefox) - Автоматическая пересборка конфигурации сразу после внесения изменений
- Обновление флейков, и просмотр диффов генераций через интеграцию с
nvd - Использование нативной производительности Rust для безопасного, быстрого и эффективного выполнения
Коротко: Niux привносит удобство традиционных пакетных менеджеров в NixOS и home-manager, оставаясь на 100% декларативным.
- Быстрый и лёгкий интерфейс командной строки
- Управление пакетами home и system декларативно
- Написан на Rust для производительности и надёжности
- Простой и понятный синтаксис команд
- Поддержка standalone и module
home-manager - Поддержка
NixOSс флейками и без - Хуки которые позволяют автоматизировать действия
- Автодополнение как в
Pacmanиapt - Опциональный встроенный вывод диффа генераций на базе утилиты
nvd
Niux управляет пакетами, напрямую редактируя твои конфигурационные файлы Nix.
Если маркеры расставлены неверно, утилита сразу сообщит об этом.
Вы можете использовать маркеры по умолчанию или задать собственные:
home.packages = [
#start
firefox
vim
#end
];Также, можно, и не добавлять start маркер (что еффективнее):
home.packages = [
firefox
vim
#end
];В таком случае home.packages = [ можно использовать как маркер для старта.
Когда ты запускаешь niux -Hi firefox — пакет вставляется после начального маркера.
Когда запускаешь niux -Hr firefox — пакет удаляется, но только между маркерами, так что остальной конфиг никогда не затрагивается.
Маркеры настраиваются через конфиг
Добавьте в flake.nix:
inputs.niux = {
url = "github:sayavc/niux";
inputs.nixpkgs.follows = "nixpkgs";
};Передать niux в home-manager через extraSpecialArgs:
outputs = inputs@{ nixpkgs, home-manager, niux, ... }: {
homeConfigurations.youruser = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = { inputs = { inherit niux; }; };
modules = [ ./home/home.nix ];
};
};Добавить в home.nix:
{ inputs, pkgs, ... }: {
home.packages = [
inputs.niux.packages.${pkgs.system}.default
];
}Запустите home-manager switch для применения.
Добавьте в flake.nix:
inputs.niux = {
url = "github:sayavc/niux";
inputs.nixpkgs.follows = "nixpkgs";
};Передать в home-manager:
outputs = inputs@{ self, nixpkgs, home-manager, niux, ... }: {
nixosConfigurations.yourhostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inputs = { inherit niux; }; };
home-manager.users.yourusername = import ./home.nix;
}
];
};
};Добавить в home.nix:
# home.nix
{ inputs, pkgs, ... }: {
home.packages = [
inputs.niux.packages.${pkgs.system}.default
];
}Примечание Установка без
flakesпоявится позже. Контрибуции приветствуются!
Сгенерируйте конфиг по умолчанию:
niux --gen-configИли по своему пути:
niux --config /my/path/niux.kdl
niux --gen-configИли для хуков:
niux --hook-config /my/path/niux.kdl
niux --gen-configПоказать текущий путь:
niux --show-pathПримечание: После
--configи--hook-configнеобходим--gen-config
niux -Hi firefox # Установить firefox в home
niux -Si vim # Установить vim в system
niux -Hia firefox # Установить firefox и пересобрать конфиг
niux -Hr firefox # Удалить firefox из home
niux -He # Режим редактирования пакетов
niux -Hl # Список пакетов home
niux -l firefox # Поиск везде
niux -U # Обновить все флейки
niux -USHa # Обновить + пересобрать всё
niux -HSa # Пересобрать оба конфигаСмотрите English README для всех комбинаций
| Флаг | Описание |
|---|---|
-H - Home |
Цель — пакеты home |
-S - System |
Цель — пакеты system |
-i - install(add) |
Установить пакеты |
-r - remove |
Удалить пакеты |
-e - edit |
Режим редактирования |
-a - apply(rebuild) |
Пересобрать конфиг |
-l - list |
Список или поиск пакетов |
-U - Update |
Обновить флейки |
--gen-config |
Сгенерировать конфигурацию |
--config |
Указать свой путь к конфигу |
--hook-config |
Указать путь к конфигу хуков |
--show-path |
Получить пути конфигов |
--clear |
Очистка мусора |
--search |
Поиск |
Вклад приветствуется! Открывайте issue или присылайте pull request.
Проект лицензирован под GNU General Public License v3.0 — см. файл LICENSE.
Создано sayavc