Khi nhắc đến Windows Subsystem for Linux (WSL), phần lớn người dùng thường lựa chọn Ubuntu hoặc Fedora – và điều đó hoàn toàn có lý do. Đường cong học tập gần như bằng không, dù bạn đã quen thuộc với Linux hay chưa. Hơn nữa, có đủ tài liệu và cộng đồng hỗ trợ để giúp bạn giải quyết mọi vấn đề. Tuy nhiên, với vai trò là một chuyên gia công nghệ của khothuthuat.net, tôi luôn khuyến khích việc thử nghiệm các bản phân phối Linux khác nhau. Cá nhân tôi cũng đã trải nghiệm NixOS trong WSL và nhận thấy đây là một lựa chọn đáng giá. Nếu bạn ưu tiên một không gian làm việc có khả năng tái tạo, khai báo và đồng bộ hóa cao hơn là việc gắn bó với quy trình apt
hoặc dnf
quen thuộc, tôi tin rằng bạn cũng nên thử NixOS.
NixOS biến WSL thành một môi trường mà bạn có thể xây dựng lại, nhân bản và quay lại các phiên bản trước chỉ bằng một lệnh duy nhất. Đồng thời, nó vẫn cung cấp đầy đủ các tính năng GUI, GPU và USB tương tự như Ubuntu hay Fedora có được trên các phiên bản WSL hiện đại. Điều này giúp tối ưu hóa đáng kể quy trình làm việc của các nhà phát triển và người dùng chuyên nghiệp trên nền tảng Windows.
1. Cách Tiếp Cận Khai Báo (Declarative Approach)
Tái Tạo Và Đồng Bộ Hóa Môi Trường Phát Triển Đa Nền Tảng
Mọi khía cạnh của một cài đặt NixOS đều được khai báo rõ ràng bên trong một tệp văn bản duy nhất, thường là configuration.nix
(hoặc một flake.nix
nhập nó). Khi bạn chạy lệnh nixos-rebuild switch
, hệ điều hành sẽ được xây dựng trực tiếp từ nội dung của tệp đó. Không có phần nào của hệ thống bị ẩn trong lịch sử tương tác hay các lệnh cài đặt gói đã bị lãng quên.
Cách tiếp cận này mang lại rất nhiều lợi thế. Một trong số đó là khả năng tái tạo. Bạn có thể cài đặt lại NixOS trên một PC khác hoặc trong môi trường Tích hợp Liên tục (CI) và nhận được một thiết lập giống hệt về mặt byte. Lịch sử Git hiển thị rõ ràng thời điểm một gói được thêm vào, ai đã thêm nó và tại sao. Nếu bạn mất ảnh VM, bạn vẫn có thể giữ lại kho lưu trữ mã nguồn và tạo lại hệ thống chỉ với một lệnh cùng vài phút tải xuống. Cùng một flake
có thể nhắm mục tiêu tới WSL, một máy chủ bare-metal, một VM đám mây hoặc macOS thông qua nix-darwin
.
Có lẽ lý do thuyết phục nhất đối với tôi là cách NixOS trong WSL giúp thống nhất môi trường phát triển trên tất cả các nền tảng. Bạn có thể chạy NixOS trên một máy chủ Linux headless cho các triển khai, và cũng có thể sử dụng Nix thông qua Home Manager và nix-darwin
trên máy Mac. Bằng cách sử dụng NixOS trong WSL trên máy Windows của mình, thiết lập phát triển trên Windows, các máy chủ Linux và máy tính xách tay macOS của bạn đều có thể duy trì đồng bộ với cùng một phiên bản phần mềm chính xác.
2. Cập Nhật Nguyên Tử (Atomic Updates)
Khả Năng Quay Lại Phiên Bản Trước Nếu Xảy Ra Sự Cố
Màn hình console NixOS hiển thị quá trình cập nhật hệ thống nguyên tử trên WSL
Quá trình nâng cấp trong NixOS làm cho cuộc sống trở nên dễ dàng hơn rất nhiều. Khi bạn điều chỉnh cấu hình và chạy nixos-rebuild switch
, Nix sẽ xây dựng trạng thái hệ thống mới ở chế độ nền. Nó chỉ chuyển đổi sang trạng thái mới khi mọi thứ đã sẵn sàng, do đó không có các bản cập nhật một phần nào có thể khiến thiết lập của bạn rơi vào trạng thái lỗi. Nếu một bản nâng cấp gây ra lỗi, chẳng hạn như lỗi trình điều khiển, bạn có thể đơn giản khởi động lại vào một thế hệ trước đó để khắc phục.
Ngay cả trong WSL, NixOS vẫn giữ một lịch sử đầy đủ các trạng thái hệ thống của bạn. Mỗi lần xây dựng lại đều được đánh phiên bản, cho phép bạn dễ dàng quay lại mà không cần gỡ lỗi hay cài đặt lại bất cứ thứ gì. Đây là điều bạn không có được một cách tự nhiên với apt
hoặc dnf
bên trong các bản phân phối WSL thông thường.
3. Môi Trường Phát Triển Theo Dự Án Với nix develop
Không Cần Sử Dụng Docker Hay Container Phức Tạp
Một tính năng nổi bật khác là cách NixOS và bộ công cụ Nix xử lý các môi trường phát triển. Nếu bạn thường xuyên làm việc trên nhiều dự án với các phụ thuộc (dependencies) xung đột, chẳng hạn như các phiên bản Node.js hoặc thư viện Python khác nhau, bạn không cần phải vật lộn với các Docker container hay làm lộn xộn hệ thống cơ bản của mình. Thay vào đó, bạn có thể sử dụng các môi trường phát triển theo dự án của Nix.
Công cụ shell của Nix cho phép bạn tạo một môi trường với chính xác các công cụ cần thiết cho dự án đó. Không có gì tồn tại vĩnh viễn sau khi bạn thoát khỏi shell. Đây là một sự thay đổi lớn so với cách mọi thứ thường hoạt động trên Ubuntu hoặc Fedora, nơi bạn thường phải cài đặt và gỡ cài đặt các gói, hoặc dựa vào các công cụ như virtualenv
và nvm
để mô phỏng sự cô lập. NixOS cung cấp một giải pháp sạch sẽ và hiệu quả hơn cho việc quản lý các môi trường phát triển phức tạp.
4. Tích Hợp Mượt Mà Với Windows Thông Qua WSL
Tận Dụng Tối Đa Các Tính Năng Quan Trọng Của WSL2
Giao diện dòng lệnh của NixOS trong WSL khi sử dụng kho nixpkgs để quản lý gói phần mềm
Không có ích gì khi sử dụng Linux trên WSL nếu nó không tích hợp tốt với Windows. NixOS trong WSL hoạt động hoàn hảo với tất cả các tính năng chính của WSL2. Bản phát hành NixOS-WSL mới nhất thậm chí còn bao gồm hỗ trợ gốc cho systemd
tích hợp sẵn của WSL, điều này có nghĩa là tôi có thể chạy các dịch vụ Linux chạy nền trong WSL mà không cần bất kỳ thủ thuật nào.
Trước đây, việc thiếu PID 1 và systemd
trong WSL là một hạn chế lớn. Nhưng giờ đây, phiên bản NixOS WSL của tôi khởi động với systemd
giống như một hệ thống Linux thông thường. Điều này cho phép các tính năng như bộ hẹn giờ (timers), dịch vụ kích hoạt bằng socket (socket-activated services), và nhiều hơn nữa, tất cả đều hiện được hỗ trợ bởi Ubuntu và Fedora trên WSL.
Tích hợp phần cứng và giao diện người dùng cũng liền mạch không kém. Nếu bạn cần tăng tốc GPU cho các ứng dụng Linux, NixOS WSL bao gồm một tùy chọn để sử dụng trình điều khiển đồ họa OpenGL của máy chủ Windows, cho phép các ứng dụng Linux GUI tận dụng GPU.
Ngoài ra, nếu bạn muốn truy cập các tệp NixOS của mình thông qua một ứng dụng Windows, chỉ cần trỏ đến đường dẫn tệp:
\wsl.localhostNixOS
Ví dụ, tôi có thể muốn sử dụng VS Code trên phía Windows của hệ thống. Để trỏ đến mã nguồn đang nằm trên phía NixOS, tôi sẽ trỏ VS Code đến:
\wsl.localhostNixOShomeanuragGitmy-repo-name
Kết Luận
NixOS là một bản phân phối Linux đầy thú vị và là một lựa chọn tuyệt vời cho những ai đang tìm kiếm sự linh hoạt, khả năng tái tạo và quản lý hệ thống hiệu quả. Với những ưu điểm vượt trội như cách tiếp cận khai báo, khả năng cập nhật nguyên tử, môi trường phát triển theo dự án riêng biệt và sự tích hợp mượt mà với WSL, NixOS không chỉ giải quyết các vấn đề phổ biến của nhà phát triển mà còn nâng tầm trải nghiệm sử dụng Linux trên Windows. Nếu bạn là một người dùng công nghệ muốn tối ưu hóa môi trường làm việc hoặc đơn giản là muốn thử một bản distro Linux độc đáo và mạnh mẽ, NixOS trong WSL chắc chắn là một cái tên đáng để khám phá và trải nghiệm. Hãy thử ngay để cảm nhận sự khác biệt!