configuration.nix - Tokyo-NixOS/Tokyo-NixOS-Meetup-Wiki GitHub Wiki

configuration.nix

configuration.nixでシステムの様々な設定ができます。
configuration.nixを変更した後はnixos-rebuild switchコマンドでシステムを再構築する必要があります。

$ nixos-rebuild switch

カーネルバージョンを変更

Linuxカーネルの4.1を利用する場合は。

  boot = {
    kernelPackages = pkgs.linuxPackages_4_1;
  };

利用できるカーネルは

$ nix-env -qaP 'linux'

トラックバックの設定

  services = {
    xserver = {
      synaptics.enable = true;
      synaptics.twoFingerScroll = true;
    };
  };

フォントの設定

システムにインストールするフォントとfontconfigの設定はconfiguration.nixでできます

  fonts = {
    fonts = with pkgs; [ 
      ipafont
      powerline-fonts
      baekmuk-ttf
      kochi-substitute
      carlito
    ];

    fontconfig = { 
      defaultFonts = {
        monospace = [ 
          "DejaVu Sans Mono for Powerline"
          "IPAGothic"
          "Baekmuk Dotum"
        ];
        serif = [ 
          "DejaVu Serif"
          "IPAPMincho"
          "Baekmuk Batang"
        ];
        sansSerif = [
          "DejaVu Sans"
          "IPAPGothic"
          "Baekmuk Dotum"
        ];
      };
    };
  };

configuration.nixを分散

configuration.nixは大きくなるとわかりにくいですが、 ファイルを分散する事で関連項目をまとめれます。

  imports = [ 
    ./hardware-configuration.nix
    ./fonts.nix
  ];

/etc/nixos/fonts.nix

{ config, lib, pkgs, ... }:

{
  fonts = {
    fonts = with pkgs; [ 
      ipafont
      powerline-fonts
      baekmuk-ttf
      kochi-substitute
      carlito
    ];

    fontconfig = { 
      defaultFonts = {
        monospace = [ 
          "DejaVu Sans Mono for Powerline"
          "IPAGothic"
          "Baekmuk Dotum"
        ];
        serif = [ 
          "DejaVu Serif"
          "IPAPMincho"
          "Baekmuk Batang"
        ];
        sansSerif = [
          "DejaVu Sans"
          "IPAPGothic"
          "Baekmuk Dotum"
        ];
      };
    };
  };
}

プリンターとスキャナー

プリンター(HPプリンターの例、別なプリンターには別なドライバーが必要)

  services = {
    printing = {
      enable  = true;
      drivers = [ pkgs.hplip ];
    };
  };

スキャナー(HPプリンターの例、別なプリンターには別なドライバーが必要)

  hardware = {
    sane.enable = true;
    sane.extraBackends = [ pkgs.hplipWithPlugin ];
  };

FirefoxやChromiumのFlashプラグインを有効にする

  nixpkgs.config = {
    allowUnfree = true;
    firefox = {
      enableAdobeFlash       = true;
      enableGoogleTalkPlugin = true;
    };
    chromium = {
      enablePepperFlash = true;
      enablePepperPDF   = true;
    };
  };

複数nixpkgsバージョンのパッケージを利用する

{ config, pkgs, ... }:


let

  # 16.09 チャンネル
  pkgs-1609     = import (fetchTarball https://github.com/nixos/nixpkgs-channels/archive/nixos-16.09.tar.gz) {};

  # unstable チャンネル
  pkgs-unstable = import (fetchTarball https://github.com/nixos/nixpkgs-channels/archive/nixos-unstable.tar.gz) {};

  # 特定なコミットのパッケージ
  pkgs-58d44a3  = import (fetchTarball https://github.com/nixos/nixpkgs/archive/58d44a3.tar.gz) {};

in
{

  #...

  environment.systemPackages = [
    pkgs.tree

    # 16.09 pkgs
    pkgs-1609.hello

    # unstable pkgs
    pkgs-unstable.htop

    # 58d44a3 pkgs
    pkgs-58d44a3.wireguard
  ];

}
⚠️ **GitHub.com Fallback** ⚠️