自由のなる木

RSS
公開日
2022-04-10

GNU Guix で Docker を使う

プライベートで Deno を使う必要が出てきたので、Deno のパッケージを探してみたところ Guix の公式リポジトリには登録されていなかった。

自分でパッケージを書くかとも思ったが、下記の issue を見つけたため、Rust がほぼわからない私には手に負えないものであろうとすぐに理解した。

したがって、Deno は Docker で動かすことにした。

ただ、記事で書くくらいなので、簡単にはいかなかった。

Guix のパッケージに docker も docker-cli もあるため、簡単に導入できると高を括っていたのだが、実際にインストールしても、Docker デーモンが立ち上がらなかった。

調べてみたところ、Guix のサービス1の一覧に Docker サービスがあることに気がついた。

結論を言うと Guix で Docker を使用する場合は、docker や docker-cli などのパッケージを個別にインストールするのではなく、Docker サービスを有効にすれば良い。

現在の私の Guix システムの設定は下記だ。

(use-modules (gnu)
             (nongnu packages linux)
             (nongnu system linux-initrd))

(use-service-modules desktop networking ssh xorg docker)

(operating-system
  (kernel linux)
  (initrd microcode-initrd)
  (firmware (list linux-firmware))
  (locale "ja_JP.utf8")
  (timezone "Asia/Tokyo")
  (keyboard-layout
   (keyboard-layout
    "jp"
    #:options
    '("ctrl:nocaps")))
  (host-name "Taix")
  (users (cons* (user-account
                 (name "taiju")
                 (comment "Taiju HIGASHI")
                 (group "users")
                 (home-directory "/home/taiju")
                 (supplementary-groups
                  '("wheel" "netdev" "audio" "video" "docker")))
                %base-user-accounts))
  (packages
   (append
       (list (specification->package "nss-certs")
             (specification->package "font-google-noto"))
       %base-packages))
  (services
   (append
       (list (service gnome-desktop-service-type)
             (set-xorg-configuration
              (xorg-configuration
               (keyboard-layout keyboard-layout)
               (extra-config (list
                              "Section \"InputClass\"
                                      Identifier \"TouchPad\"
                                      MatchIsTouchpad \"on\"
                                      Driver \"libinput\"
                                      Option \"Tapping\" \"on\"
                              EndSection"))))
             (service docker-service-type))
       %desktop-services))
  (bootloader
   (bootloader-configuration
    (bootloader grub-efi-bootloader)
    (target "/boot/efi")
    (keyboard-layout keyboard-layout)))
  (mapped-devices
   (list (mapped-device
          (source
           (uuid "6563ab41-2324-469f-9664-683cf4ba0065"))
          (target "cryptroot")
          (type luks-device-mapping))
         (mapped-device
          (source
           (uuid "738e914a-a68a-4c4b-b7e1-62dda98cd2f8"))
          (target "crypthome")
          (type luks-device-mapping))))
  (file-systems
   (cons* (file-system
            (mount-point "/boot/efi")
            (device (uuid "A0B0-3FC0" 'fat32))
            (type "vfat"))
          (file-system
            (mount-point "/")
            (device "/dev/mapper/cryptroot")
            (type "ext4")
            (dependencies mapped-devices))
          (file-system
            (mount-point "/home")
            (device "/dev/mapper/crypthome")
            (type "ext4")
            (dependencies mapped-devices))
          %base-file-systems)))

この設定ファイルの最新版は Sourcehut でいつでも閲覧できる

以上。


  1. Guix のサービスは一般的な GNU/Linux で採用される systemd や SysVinit ではなく、 GNU Guile で書かれた GNU Shepherd というソフトウェアが使われている。