NixOS là một hệ điều hành Linux tiên tiến với những đặc điểm nổi bật, mang đến trải nghiệm độc đáo so với các bản phân phối Linux truyền thống. Ban đầu, tôi chỉ khởi động NixOS thỉnh thoảng để khám phá các tính năng, nhưng vẫn dùng Windows làm hệ điều hành chính. Vài tháng trước, tôi có cơ hội tìm hiểu sâu hơn về NixOS và sử dụng nó thường xuyên hơn. Mặc dù đã thử nhiều bản phân phối Linux khác trong quá khứ, nhưng những tính năng của NixOS thực sự vượt trội. Cách tiếp cận khai báo, khả năng cập nhật nguyên tử và mức độ tùy chỉnh mở rộng đã biến nó thành một trong những hệ điều hành Linux tốt nhất mà tôi từng trải nghiệm.
1. Cấu Hình Khai Báo (Declarative Configuration)
Hệ điều hành dưới dạng mã nguồn (OS as Code)
NixOS sử dụng một phương pháp cấu hình hệ thống khác biệt so với các bản phân phối Linux truyền thống. Thay vì thực hiện các thay đổi thủ công (như chỉnh sửa tệp cấu hình hoặc cài đặt phần mềm từng chút một), bạn mô tả toàn bộ thiết lập hệ thống của mình trong một tệp cấu hình duy nhất. Đây được gọi là cấu hình khai báo. Bạn ghi rõ mọi thứ mình mong muốn, bao gồm phần mềm đã cài đặt, tài khoản người dùng, dịch vụ và cài đặt hệ thống, sau đó NixOS sẽ xây dựng hệ thống để khớp với mô tả đó.
Vì các tệp cấu hình này chỉ là văn bản thuần túy, bạn có thể quản lý chúng bằng Git. Điều này có nghĩa là bạn có thể theo dõi mọi thay đổi, quay lại bất kỳ phiên bản thiết lập nào trước đó hoặc sao chép nó sang một máy khác. NixOS cũng bao gồm một tính năng mới hơn gọi là Nix Flakes, đưa khả năng này lên một tầm cao mới. Flakes cung cấp một cách để khóa các phiên bản và nguồn chính xác của mọi phụ thuộc mà hệ thống của bạn sử dụng. Thông tin này được lưu trữ trong một tệp có tên flake.lock
, ghi lại nơi để lấy từng gói và một giá trị băm để xác minh rằng nó không thay đổi. Hệ thống này giúp các bản dựng Nix trở nên dễ đoán và đáng tin cậy hơn. Hệ thống của bạn sẽ luôn được xây dựng theo cùng một cách, cho dù bạn xây dựng lại nó một năm sau hay trên một máy khác. Nó hoạt động tương tự như cách các công cụ như Cargo cho Rust hoặc npm cho JavaScript khóa các phụ thuộc cho các dự án phần mềm.
2. Khả Năng Tùy Biến Hệ Thống Linh Hoạt
Dễ dàng hoán đổi các thành phần hệ thống
Chỉ với một vài thay đổi cấu hình, bạn có thể dễ dàng hoán đổi các thành phần khác nhau của hệ thống. Nix trừu tượng hóa sự phức tạp cơ bản bằng cách đóng gói mọi thứ thành các tham số khai báo, ngắn gọn. Việc chuyển đổi giữa các môi trường desktop như GNOME, KDE, i3 hay Sway trở nên đơn giản và ít rủi ro.
Hệ điều hành này mang đến khả năng kiểm soát vượt trội. Bạn có thể chạy kernel 5.15 để đảm bảo độ ổn định trong khi vẫn thử nghiệm kernel 6.1 trên cùng một máy. Chỉ cần khai báo cả hai trong cấu hình của bạn và chọn phiên bản muốn sử dụng khi khởi động. Việc kết hợp các phiên bản phần mềm, điều chỉnh dịch vụ hay thậm chí thay thế bộ nạp khởi động đều trở nên liền mạch.
Đối với các nhà phát triển, NixOS nổi bật với các môi trường sạch sẽ, cô lập được tùy chỉnh cho từng dự án. Đối với các quản trị viên hệ thống, đây là một công cụ mạnh mẽ để mở rộng quy mô. Sử dụng một tệp cấu hình duy nhất, bạn có thể triển khai các hệ thống giống hệt nhau trên nhiều máy.
3. Khả Năng Quay Lại Phiên Bản Trước Dễ Dàng (Rollback Capability)
Cập nhật nguyên tử và khôi phục tức thì
NixOS hỗ trợ nâng cấp hệ thống nguyên tử (atomic system upgrades), nghĩa là các bản cập nhật được áp dụng tất cả cùng một lúc hoặc không được áp dụng chút nào. Điều này ngăn chặn các bản nâng cấp một phần có thể khiến hệ thống của bạn không ổn định hoặc bị hỏng. Bạn có thể dễ dàng quay lại cấu hình trước đó nếu có sự cố xảy ra.
Bạn có thể khôi phục về bất kỳ trạng thái hệ thống cũ hơn nào và NixOS thậm chí còn liệt kê tất cả các phiên bản cũ trong menu khởi động theo mặc định. Điều này giúp việc chuyển đổi trở lại nhanh chóng và đơn giản. NixOS cũng sử dụng các liên kết tượng trưng (symbolic links) một cách rộng rãi và thông minh.
Trong hầu hết các bản phân phối Linux khác, việc nâng cấp một gói thường thay thế phiên bản cũ bằng phiên bản mới. NixOS hoạt động khác. Mỗi phiên bản gói được lưu trữ riêng biệt trong thư mục độc đáo của riêng nó. Khi bạn nâng cấp một gói, NixOS cập nhật các liên kết tượng trưng để trỏ đến phiên bản mới nhưng vẫn giữ nguyên phiên bản cũ. Nếu bạn gặp sự cố với gói mới, bạn có thể chuyển về một thế hệ hệ thống cũ hơn và các liên kết tượng trưng sẽ tự động chuyển hướng bạn đến phiên bản gói cũ hơn. Cách tiếp cận này giúp việc quản lý phiên bản gói trở nên linh hoạt và an toàn.
4. Loại Bỏ Hoàn Toàn Xung Đột Phụ Thuộc
Mọi gói phần mềm đều được xây dựng kèm phụ thuộc
Trong các hệ thống truyền thống như Ubuntu hay Arch, phần mềm đã cài đặt thường dựa vào các thư viện dùng chung như libssl hoặc glibc, được đặt trong các thư mục toàn cục. Nếu hai chương trình yêu cầu các phiên bản khác nhau của cùng một thư viện, xung đột phụ thuộc có thể xảy ra. Một ứng dụng có thể ngừng hoạt động vì không thể truy cập phiên bản cụ thể mà nó cần.
Nix xử lý vấn đề này theo một cách khác. Mọi gói trong Nix đều được xây dựng với các phụ thuộc và cấu hình của nó được mã hóa thành một giá trị băm độc đáo. Giá trị băm này trở thành một phần của đường dẫn cài đặt gói. Kết quả là, bạn có thể cài đặt nhiều phiên bản của cùng một phần mềm, chẳng hạn như Firefox 120 và Firefox 115, mà không có bất kỳ xung đột nào. Mỗi phiên bản được cô lập trong môi trường riêng của nó, đảm bảo chúng không can thiệp lẫn nhau.
Giao diện cài đặt NixOS mặc định, minh họa sự ổn định hệ thống
5. Trình Quản Lý Gói Nix (Nix Package Manager)
Tính năng mạnh mẽ và đa dạng gói
Trình quản lý gói Nix trên NixOS cho phép bạn truy cập hơn 80.000 gói phần mềm. Nó không chỉ giới hạn ở các bản phân phối Linux mà còn có thể sử dụng trên nhiều nền tảng khác nhau, nhưng trên NixOS, nó đặc biệt mạnh mẽ. Phạm vi gói có sẵn có thể so sánh, thậm chí còn tốt hơn, so với Arch User Repository (AUR). Bạn sẽ tìm thấy gần như mọi thứ mình cần trong bộ sưu tập gói Nix.
Ví dụ, tôi muốn cài đặt công cụ htop với một số bản vá tùy chỉnh không có trong hầu hết các kho lưu trữ Linux mặc định. Nhờ NixOS, tôi có thể dễ dàng tạo một biểu thức gói tùy chỉnh để xây dựng chính xác những gì tôi cần, mà không phải chờ đợi các bản cập nhật kho lưu trữ chính thức. Điều này cho thấy bạn có thể tin cậy vào NixOS để có sự linh hoạt và khả năng truy cập gần như mọi phần mềm.
Trang chủ NixOS, thể hiện sức mạnh của trình quản lý gói Nix
Sử dụng NixOS có thể khá thú vị, nhưng nó không dành cho tất cả mọi người. Đường cong học hỏi khá dốc và bạn thường phải tìm hiểu sâu để nắm bắt mọi thứ. Tuy nhiên, nếu bạn coi trọng các tính năng như thiết lập khai báo, khả năng quay lại và trình quản lý gói Nix, nó thực sự đáng để thử. Tôi đã trải nghiệm dual-boot NixOS cùng Windows, và kinh nghiệm đó rất tuyệt vời. Nếu dual-boot không phải là lựa chọn, bạn luôn có thể chạy nó trong máy ảo.