見出し画像

僕のNixOS+COSMICデスクトップ環境の全設定を公開します。(解説付き)

残り6

noteを読んでくださっている皆さん、こんにちは!

最近はNixOSそのもののシステム周りよりも、スマートデバイスや周辺機器などガジェット全般の方に興味が移りつつあるのですが、毎日触れているこの自作PC環境も、僕のこだわりを詰め込んだ最高の「ガジェット」の一つだと思っています。現在LPIC(Linux技術者認定試験)の資格取得に向けて勉強中ということもあり、普段遣いのデスクトップ環境からLinuxにどっぷり浸かっています。

今回は、僕が構築した「NixOS + COSMIC」という少しマニアックなデスクトップ環境の全設定ファイルを公開し、一つひとつの項目について初心者の方にもわかるように、徹底的に詳しく解説していこうと思います!

「NixOSって難しそう…」と思っている方も、この記事を読めば設定ファイル(宣言的設定)がどんな役割を果たしているのかイメージが湧くはずです。長丁場になりますが、ぜひ最後までお付き合いください!



今回公開する設定ファイルについて

NixOSの最大の特徴は、「現在のシステムの状態を一つの設定ファイル(群)で完全に定義できる」という点にあります。今回はモダンなパッケージ管理手法である「Flakes」を導入しているため、以下の2つのファイルがシステムの心臓部になります。

  1. flake.nix: どこからパッケージ(ソフトウェア)を取得するかを定義するファイル。

  2. configuration.nix: 実際のシステム設定(インストールするソフト、ユーザー設定、ネットワークなど)を記述するファイル。

それでは、順番にコードと解説を見ていきましょう。


1. flake.nix の解説

まずはシステムの入り口となる flake.nix です。このファイルは、NixOSのバージョンやパッケージの取得元(チャンネル)を管理します。

Nix

{
  description = "NixOS configuration with stable and unstable packages";
  inputs = {
    # Main channel (latest packages, unstable)
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    # Stable channel (selectively used for stability)
    nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
  };
  outputs = { self, nixpkgs, nixpkgs-stable, ... }:
    let
      system = "x86_64-linux";
    in
    {
      nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
        inherit system;
        # 全ての module に追加引数として渡される特殊な引数
        specialArgs = {
          inherit nixpkgs-stable;
        };

        modules = [
          # メインの設定ファイル
          ./configuration.nix

          # Overlay モジュール: pkgsStable を globally 利用可能にするための定義
          ({ pkgs, ... }: {
            nixpkgs.overlays = [
              (final: prev: {
                pkgsStable = import nixpkgs-stable {
                  inherit system;
                  config.allowUnfree = true;
                };
              })
            ];
          })
        ];
      };
    };
}

詳細解説

  • inputs: システムの設計図(Nixpkgs)をどこから持ってくるかを指定します。ここでは、最新のソフトウェアを使いたいのでメインに nixos-unstable(不安定版・最新版)を指定しつつ、日本語入力など動作の安定性が絶対に欲しい部分のために nixos-25.11(安定版)も同時に読み込んでいます 。

  • outputs: 読み込んだ設計図を元に、実際のシステムを出力します。アーキテクチャは一般的な64ビットPCである x86_64-linux を指定しています 。

  • specialArgs: 読み込んだ安定版のパッケージ群(nixpkgs-stable)を、後述する configuration.nix でも使えるように引数として渡しています 。

  • overlays(オーバーレイ): ここが少しテクニカルですが、NixOSの強力な機能です。システム全体の基本パッケージは「最新版(unstable)」を使いますが、このオーバーレイ設定により、pkgsStable という名前で呼び出した時だけ「安定版(stable)」のパッケージをインストールできるようにカスタムしています 。オープンソースではないソフトウェア(プロプライエタリなソフト)もインストールできるように config.allowUnfree = true; を設定しています 。


2. configuration.nix の解説

ここからが本番です。PCの具体的な設定を全てここに記述しています。項目ごとに分けて解説します。

1. システム基本設定 (Kernel, Time, Bootloader)

Nix

ここから先は

28,359字

¥ 500 (数量限定:残り 6 / 10)

Amazon Payで支払うと最大2%還元のチャンス! 9/30まで

よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!