読者です 読者をやめる 読者になる 読者になる

ふふーん

一緒にやりたくなったのよ!あなたと、調合を!

NixOSをインストールした

QEMUの仮想マシンにNixOSをインストールしたときのメモ。

とりあえずsshでログインできるようにする。

# nix-env -iA openssh
# systemctl start sshd

これでsshdが起動するので適当にネットワークつなげるとsshでログインできるようになる。

最初にパーティションを切ってフォーマットとか。よくわからんので適当。 ESPを200Mとスワップを2Gにして、残りはbtrfsで。btrfsのサブボリュームは適当(よくわからん)。

# gdisk -l /dev/sda
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          411647   200.0 MiB   EF00  EFI System
   2          411648         4605951   2.0 GiB     8200  Linux swap
   3         4605952       104857566   47.8 GiB    8300  Linux filesystem

# mkfs.vfat /dev/sda1
# mkfs.btrfs /dev/sda3
# mkswap /dev/sda2
# swapon /dev/sda2
# mount /dev/sda3 /mnt
# btrfs subvolume create /mnt/system
# btrfs subvolume create /mnt/home
# umount /mnt
# mount -o subvol=system /dev/sda3 /mnt
# mkdir /mnt/home
# mount -o subvol=home /dev/sda3 /mnt/home
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot

NixOSのコンフィグを作る。

# nixos-generate-config --root /mnt
writing /mnt/etc/nixos/hardware-configuration.nix...
writing /mnt/etc/nixos/configuration.nix...

/mnt/etc/nixos/hardware-configuration.nixと/mnt/etc/nixos/configuration.nixの2つファイルが作られる。 hardware-configuration.nixのほうは触らないで、システムに変更を加えるときはconfiguration.nixを編集する。

とりあえずほぼデフォルトのままにする。変更したのはホスト名とタイムゾーンくらい。

# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  # Use the systemd-boot EFI boot loader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  networking.hostName = "nixos"; # Define your hostname.
  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
  networking.interfaces.enp0s4.ip4 = [ { address = "192.168.111.5"; prefixLength = 24; } ];

  # Select internationalisation properties.
  # i18n = {
  #   consoleFont = "Lat2-Terminus16";
  #   consoleKeyMap = "us";
  #   defaultLocale = "en_US.UTF-8";
  # };

  # Set your time zone.
  time.timeZone = "Asia/Tokyo";

  # List packages installed in system profile. To search by name, run:
  # $ nix-env -qaP | grep wget
  # environment.systemPackages = with pkgs; [
  #   wget
  # ];

  # List services that you want to enable:

  # Enable the OpenSSH daemon.
  # services.openssh.enable = true;

  # Open ports in the firewall.
  # networking.firewall.allowedTCPPorts = [ ... ];
  # networking.firewall.allowedUDPPorts = [ ... ];
  # Or disable the firewall altogether.
  # networking.firewall.enable = false;

  # Enable CUPS to print documents.
  # services.printing.enable = true;

  # Enable the X11 windowing system.
  # services.xserver.enable = true;
  # services.xserver.layout = "us";
  # services.xserver.xkbOptions = "eurosign:e";

  # Enable the KDE Desktop Environment.
  # services.xserver.displayManager.sddm.enable = true;
  # services.xserver.desktopManager.plasma5.enable = true;

  # Define a user account. Don't forget to set a password with ‘passwd’.
  # users.extraUsers.guest = {
  #   isNormalUser = true;
  #   uid = 1000;
  # };

  # The NixOS release to be compatible with for stateful data such as databases.
  system.stateVersion = "17.03";

}

あとはインストールする。途中でrootユーザーのパスワード聞かれる。終わったら再起動。

# nixos-install

ついでなのでGNOME3にする。configuration.nixを編集してnixos-rebuildするだけ。 configuration.nixの差分はこんな感じ。i18nのとこと、Xのとこと、あとは一般ユーザー作ったくらい。

--- configuration.nix.00 2017-04-20 14:06:41.168682910 +0900
+++ configuration.nix.01  2017-04-20 14:45:44.399948923 +0900
@@ -19,11 +19,14 @@
   networking.interfaces.enp0s4.ip4 = [ { address = "192.168.111.5"; prefixLength = 24; } ];
 
   # Select internationalisation properties.
-  # i18n = {
-  #   consoleFont = "Lat2-Terminus16";
-  #   consoleKeyMap = "us";
-  #   defaultLocale = "en_US.UTF-8";
-  # };
+  i18n = {
+    consoleKeyMap = "us";
+    defaultLocale = "ja_JP.UTF-8";
+    inputMethod = {
+      enabled = "fcitx";
+      fcitx.engines = with pkgs; [ fcitx-engines.mozc ];
+    };
+  };
 
   # Set your time zone.
   time.timeZone = "Asia/Tokyo";
@@ -54,14 +57,15 @@
   # services.xserver.xkbOptions = "eurosign:e";
 
   # Enable the KDE Desktop Environment.
-  # services.xserver.displayManager.sddm.enable = true;
-  # services.xserver.desktopManager.plasma5.enable = true;
+  services.xserver.enable = true;
+  services.xserver.displayManager.gdm.enable = true;
+  services.xserver.desktopManager.gnome3.enable = true;
 
   # Define a user account. Don't forget to set a password with ‘passwd’.
-  # users.extraUsers.guest = {
-  #   isNormalUser = true;
-  #   uid = 1000;
-  # };
+  users.extraUsers.firis = {
+    isNormalUser = true;
+    extraGroups = [ "wheel" ];
+  };
 
   # The NixOS release to be compatible with for stateful data such as databases.
   system.stateVersion = "17.03";

アップデートしたら、作ったユーザーのパスワード設定するの忘れないように。

# nixos-rebuild switch
# passwd firis

これで再起動するとGNOME3の環境になる。fcitxでmozcも使える。