Skip to content

Latest commit

 

History

History
226 lines (176 loc) · 8.51 KB

File metadata and controls

226 lines (176 loc) · 8.51 KB

Niux

English | Русский

Декларативный менеджер пакетов NixOS/home-manager, написанный на Rust.

Release License Language

Note

"1000+ строк кода на Rust, которые можно было бы эффективно заменить одним баш-скриптом."Майнтейнер awesome-nix

Зачем Niux?

Управление пакетами 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 — пакет удаляется, но только между маркерами, так что остальной конфиг никогда не затрагивается.

Маркеры настраиваются через конфиг

Установка

flakes (standalone home-manager)

Добавьте в 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 для применения.

flakes (module home-manager)

Добавьте в 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