Skip to content

Latest commit

 

History

History
64 lines (50 loc) · 5.04 KB

INTRO.md

File metadata and controls

64 lines (50 loc) · 5.04 KB

Nix, NixOS & Home-manager

Nix и NixOS представляют собой систему управления пакетами и конфигурацией операционной системы, а home-manager — инструмент для управления конфигурациями пользовательских приложений и среды рабочего стола. Давайте рассмотрим их подробнее:

Nix:

  • Система управления пакетами: Nix предлагает функциональный подход к управлению пакетами. В отличие от традиционных систем, где пакеты устанавливаются глобально, в Nix каждый пакет устанавливается в изолированное окружение. Это позволяет избежать конфликтов зависимостей и обеспечивает воспроизводимость среды.

NixOS:

  • Декларативная конфигурация: NixOS предлагает декларативный подход к конфигурации операционной системы. Вся конфигурация - это выражение на языке nix, описывающее желаемое состояние системы. Это позволяет легко воспроизводить состояния системы, а также интеграцию с git и другими VCS.

  • Точные зависимости: NixOS обеспечивает точное управление зависимостями и версиями пакетов, система строится исходя из сохраненных в version-controlled файле версий зависимостей.

  • Rollbacks: Возможность отката системы к предыдущему состоянию делает NixOS отличным выбором для тестирования изменений в конфигурации без риска поломки системы.

Home-manager:

  • Управление конфигурациями пользователя: Home-manager позволяет пользователям управлять своими конфигурациями приложений и среды рабочего стола, используя тот же декларативный подход, что и в NixOS.

  • Разделение конфигураций: Home-manager позволяет легко разделять конфигурации между несколькими пользователями или даже между различными машинами.

  • Роли и модули: Модульная структура home-manager позволяет организовать конфигурации в виде ролей или модулей, что упрощает их использование и переиспользование.


Вышеперечисленное дает возможность описывать всю конфигурацию системы и приложений в виде кода, что придает Nix, NixOS и home-manager уникальные преимущества. Это делает управление системой более надежным, воспроизводимым и гибким. Nix можно воспринимать, как docker-compose или Terraform для целых операционных систем.

{ inputs, outputs, config, lib, pkgs, ... }: let
  inherit (config.theme) colors;
in {
  imports = [
    ./hardware.nix
    ./ssh.nix
    ./user.nix
    ./hyprland.nix # Enable system-wide Hyprland
    inputs.home-manager.nixosModules.home-manager
  ] ++ (builtins.attrValues outputs.nixosModules);

  # System-wide packages
  environment.systemPackages = with pkgs; [
    git
    helix
    vim
    neovim
    nushellFull
    rustup
    gcc
    gnumake
    gtklock
    catppuccin-sddm-corners
    librewolf
    alsaUtils
  ] ++ (with pkgs.libsForQt5.qt5; [
    # For SDDM's `catppuccin` theme
    qtbase
    qtgraphicaleffects
    qtsvg
    qtquickcontrols2
  ]);
}

Nix и NixOS активно используются в production, особенно в областях, где важна воспроизводимость и управление зависимостями. Компании, такие как Mozilla, GitHub, и другие, внедряют их в свои процессы разработки и эксплуатации. Проект постоянно развивается, с появлением новых функций, обновлением пакетов и улучшением производительности. Это делает Nix, NixOS и home-manager перспективными и мощными инструментами для конфигурации и управления системой.