ちょろっと前からNixOSを使ってて、なかなかいい感じだから感想を述べます!たいして理解してないから間違ってたりするかもだけど、許して〜。
Nixは多分言語の名前で、NixOSがLinux distroの名前っぽい。
npmとかのpackage-lock.jsonみたいな感じだね。まだexperimentalな機能なんだけど、めっちゃ便利だから基本的にはみんな使ってるっぽい。
僕のnixosのflake.nixはこんな感じ。
{ description = "my flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, utils, home-manager }: { nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./configuration.nix ({ config, pkgs, ... }: { environment.systemPackages = with pkgs; [ tree zip unzip vim git vscode // 省略 // ]; // 省略 // # 日本語設定関係 i18n.inputMethod = { type = "fcitx5"; enable = true; fcitx5.addons = [ pkgs.fcitx5-mozc ]; }; fonts = { packages = with pkgs; [ noto-fonts-cjk-serif noto-fonts-cjk-sans noto-fonts-emoji nerdfonts ]; fontDir.enable = true; fontconfig = { defaultFonts = { serif = [ "Noto Serif CJK JP" "Noto Color Emoji" ]; sansSerif = [ "Noto Sans CJK JP" "Noto Color Emoji" ]; monospace = [ "JetBrainsMono Nerd Font" "Noto Color Emoji" ]; emoji = [ "Noto Color Emoji" ]; }; }; }; swapDevices = [{ device = "/swapfile"; size = 16 * 1024; }]; }) ]; }; }; }
こんなふうにinputとoutputを定義してつらつら書くだけで環境構築が完了するよ! `environment.systemPackages = with pkgs; [`みたいにかいてあるところの下にずら〜っと使いたいパッケージを列挙したり、その下のi18nうんぬんのあたり以下みたいな文章を書くだけで、パッケージの設定とかOSの設定ができるよ。 めっちゃ簡単!
NixOSいいぞ〜。みんなも使おう!