dotfiles
概要
Linux系のプログラムでは、dotfileと呼ばれる .
から始まるプレーンテキストで設定を書くことが多い。
- Git管理できる
- 別のマシンでも全く同じ環境を作り出すことができる
などのメリットがある。
Memo
QEMU(仮想デスクトップ環境)
新しいLinuxディストリビューションを試すときや、設定を変更するときは仮想マシン上で行ったほうがいい。 気軽に試せるし、再現性が高い。緊密なフィードバックループがあるとき開発は効率的になる。
逆にマシン本体へのインストールだと、設定変更や壊れたときの対応が面倒。 マシン本体へのインストールは本番環境みたいなもので、すばやく試すのには向いてないし、壊れたときがさらに面倒。
GNU Guixを仮想マシンで起動する
GNU Guix 5 Reasons to Try Guix in 2022 - YouTube
sudo apt install qemu-kvm qemu-system-x86_64 \ -nic user,model=virtio-net-pci \ -enable-kvm -m 2048 \ -device virtio-blk,drive=guix-demo \ -drive if=none,file=$HOME/Downloads/guix-vm.qcow2,id=guix-demo \
Windowsを仮想マシンで起動する
無料のWindows仮想マシンをQEMUで動かす - Qiita
qemu-system-x86_64 -m 4096 -smp 2 -hda MSEdge\ -\ Win10.vhdx -enable-kvm
配布サイトに記載のように、パスワードは Passw0rd!
。
仮想マシンのフォーカスを抜けるにはCtrl + Alt + g。
好みのOSを作る
カスタマイズ性の高いソフトを組み合わせて、再現性の高い最高のシステムを作る。 Guixは土台になる。 だいたいSystem Craftersの情報がベースになってる。
- プレーンテキストでの設定
- 柔軟な設定
- コードがオープン
- キーボード指向
GNU Guix
パッケージ管理システム。
GNU Stow
設定ファイル管理ツール。 シンボリックリンクを管理してくれる。
GNU Shepherd
サービス管理ツール。
GNU Make
古代からのビルド用ツール。タスク定義をドキュメント化するのに使う。
nyxt
完全キーボードでのインターネットブラウジングを可能にする。
i3-wm
どうしてもEmacsで日本語入力ができない。 ibusが特定アプリで動作しない不具合にあたっている。 gnomeでは完全にできるので、自動でやってくれてるところがあるよう。 Emacs上ではskkを使うようにして解決。Emacs以外では普通に入力すればいい。
ドキュメント https://i3wm.org/docs/userguide.html#_hiding_vertical_borders
- close window:
Mod + Shift + q
polybar
柔軟に設定できるメニューバー。
compton
Emacs側で透過設定しても字が薄くなって微妙だが、ウィンドウ側でやると綺麗にできる。 また、ほかのアプリケーションを透過できて統一感がある。かっこいい。
feh
背景を設定する。
feh --bg-fill -Zr ~/dotfiles/backgrounds/4k-Ultra-HD_00330.jpg
dunst
dunst-project/dunst: Lightweight and customizable notification daemon 通知機能が入ってないウィンドウシステムでは(EXWMとか)、これを組み合わせて通知する。
Tasks
TODO インストールスクリプトを個別実行できるようにする
1つ1つ実行できると便利そうなので。
TODO フォント追加タスクを作成する
nerd-fontsをインストールする。cloneしてきて、スクリプトを実行する。
./install.sh
TODO インストールタスクが壊れてるのを直す
イメージからインストールする前提でMakeタスクのいくつかを消しているので、手動でインストールするときは大変面倒なことになっている。直す。
sudo apt install libsqlite3-dev
TODO DBeaverインストール
閲覧に便利なdbクライアントをインストールする。
TODO strategyを設定する
ubuntu22.04, ubuntu20.04, xubuntuを同時にテストできるようにしたい。できないにしても、動作確認には役立つ…か。少なくともデグレは防げる。
TODO イメージを22.04に上げる
今は20.04。
TODO dist-upgradeする
22.04をイメージのベースにするのが厳しそうなので、妥協してdist-upgradeを走らせる。
どうしてもアップデートの途中で止まってしまう。
TODO イメージ展開用のmakeタスクを作成
動作検証で頻繁にやるので。
Reference
Desktop Environment - config.daviwil.com
すごいdotfile。
Michael Friedrich / dotfiles · GitLab
dotfilesの例。
Sacha Chua’s Emacs configuration(Sacha Chua)
Emacsで有名な人のdotfiles。設定が莫大。
My dotfiles(SqrtMinusOne)
Emacs界隈でよく見かける人。グラフ化していて良い。
Archives
DONE dotfilesをCIテストする
テスト、Lintはセットしたが、実行時エラーが解消できない。guixに依存した .bash_profile
なんだよな。
DONE dotfilesにSSH設定の例を追加する
少なくとも例だけのせておくと便利だろう。 環境を楽に選択できるようconfigを設定する。 https://qiita.com/hkak03key/items/3b0c4752bfbcc52e676d
DONE インストールディスクを作成する(いちいち最初からするのが面倒なので)
すべて整備された状態でクリーンインストールできるようにしたい。イメージを作るとかそういうのができるはず。system.scmではパーティションやユーザ名を入力するのだから。
- system-installation
- GitHub ActionsでカスタマイズしたUbuntuのISOイメージを作る - Qiita
- Ubuntu20.04 Live CDを作ってみる 基本編 | ろっひー
可能なことは確かだが、全然わからない。
CLOSE mozcのdotfilesを用意する
configファイルはないようだ。なのでファイル管理できない。
DONE polybarとpomodoroを連携させる
改良してゲージ型にした。 全体カウント機能を追加した。一日ごとにリセットする。
DONE xfce4にする
EXWMの関係で、xfceのほうがいい。
CLOSE emacsをCIで初回起動する
いろいろ走るので初回が遅い。.emacs.dを指定して起動、とかしたらいいかな。emacs-sqliteのバイナリが見つからないエラーになる。ライブラリが入ってないため、コンパイルが自動でされないよう。
- emacsql-sqlite
cコンパイラ(gcc, clang, build-essentialどれでも )をインストールするとemacs-sqliteのコンパイルはできるようになる。だがubuntu自体の起動が失敗する。謎。Ubuntuインストール後、Guixでgccインストール、手動でコンパイルするしかない。めんどくさい。
- vterm
いくつかライブラリが必要。ない場合は自動コンパイルが走りわかりやすいエラー文も出るので対処はしやすい。
emacsを起動したイメージでブートすると、ユーザ作成モーダルを抜けられない。何らかの権限的な理由でユーザ作成に失敗しているように見える。
DONE caskはタグが打たれたときだけ実行する
実行時間が長いので、開発に支障が出る。
DONE cloner追加
cargo install clonerを追加する。
- build-essential が入ってないので、ビルドに失敗する
- build-essential を入れるとubiquityが失敗する
CLOSE バージョン情報、gitハッシュ情報をイメージに含める
あとから、イメージがどのバージョンなのかわからないので。それ用のファイルはありそうだが。
まあ、USBのパーティションの名前に含めればいいか。
DONE qemuを入れる
使うので。
DONE dockerイメージを作る
動作検証できるように、isoからイメージにしておく。
単にtarに固めただけでできた。デバッグやテストもやりやすそうだ。
DONE 必須のgoライブラリを入れる
LSP, DAPを入れる。
ダウンロードすると、起動しなくなる。emacsを起動と同じく、何か特定のことをすると動かなくなる。走らせるとシステムディレクトリに何らかの変更をもたらす場合、動かなくなる可能性。たとえば go install
やemacs起動したとき、ホームディレクトリ以外に何かを保存するとか。
とりあえずisoビルド段階では入れず、makeタスクに追加した。
DONE makeタスクを整理
ブートイメージ化で不要になったものがあったり、逆に必要なものがあったりする。