Skip to content

Latest commit

 

History

History
364 lines (327 loc) · 18.7 KB

20210912124846-dotfiles.org

File metadata and controls

364 lines (327 loc) · 18.7 KB

dotfiles

概要

Linux系のプログラムでは、dotfileと呼ばれる . から始まるプレーンテキストで設定を書くことが多い。

  • Git管理できる
  • 別のマシンでも全く同じ環境を作り出すことができる

などのメリットがある。

kijimaD/dotfiles: System settings

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 Emacs

環境。

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

インストールスクリプトを個別実行できるようにする

1つ1つ実行できると便利そうなので。

フォント追加タスクを作成する

nerd-fontsをインストールする。cloneしてきて、スクリプトを実行する。

./install.sh

インストールタスクが壊れてるのを直す

イメージからインストールする前提でMakeタスクのいくつかを消しているので、手動でインストールするときは大変面倒なことになっている。直す。

sudo apt install libsqlite3-dev

DBeaverインストール

閲覧に便利なdbクライアントをインストールする。

strategyを設定する

ubuntu22.04, ubuntu20.04, xubuntuを同時にテストできるようにしたい。できないにしても、動作確認には役立つ…か。少なくともデグレは防げる。

イメージを22.04に上げる

今は20.04。

dist-upgradeする

22.04をイメージのベースにするのが厳しそうなので、妥協してdist-upgradeを走らせる。

どうしてもアップデートの途中で止まってしまう。

イメージ展開用のmakeタスクを作成

動作検証で頻繁にやるので。

Reference

すごいdotfile。

dotfilesの例。

Emacsで有名な人のdotfiles。設定が莫大。

My dotfiles(SqrtMinusOne)

Emacs界隈でよく見かける人。グラフ化していて良い。

スクラッチでブータブルイメージを作る。

Archives

dotfilesをCIテストする

<2021-10-03 Sun>

テスト、Lintはセットしたが、実行時エラーが解消できない。guixに依存した .bash_profile なんだよな。

Dockerでテストする

クリーンな環境で一連のインストール作業ができるかチェックすると安心だろう。 GNU Guix関連をどうするかで詰まっている。使いこなせればDockerでやる必要はなくなるはずだが。 docker ubuntuではsystemctlが起動できないようになっているなので、GNU Guixが起動せず、依存関係が満たせない。 GitHub Actionでは実行できるのでそれでやった。実行テストさえできればいいだろう。

dotfilesにSSH設定の例を追加する

少なくとも例だけのせておくと便利だろう。 環境を楽に選択できるようconfigを設定する。 https://qiita.com/hkak03key/items/3b0c4752bfbcc52e676d

インストールディスクを作成する(いちいち最初からするのが面倒なので)

すべて整備された状態でクリーンインストールできるようにしたい。イメージを作るとかそういうのができるはず。system.scmではパーティションやユーザ名を入力するのだから。

可能なことは確かだが、全然わからない。

CLOSE mozcのdotfilesを用意する

configファイルはないようだ。なのでファイル管理できない。

色を変えて再起動するpolybar設定

polybarとpomodoroを連携させる

改良してゲージ型にした。 全体カウント機能を追加した。一日ごとにリセットする。

Dockerで動作チェックできるようにする

クリーンな環境でうまくいっているかチェックしたい。 Guix関連が難しく、詰まっている。

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を起動したイメージでブートすると、ユーザ作成モーダルを抜けられない。何らかの権限的な理由でユーザ作成に失敗しているように見える。

caskはタグが打たれたときだけ実行する

実行時間が長いので、開発に支障が出る。

URLとファイル名を定数化する

cloner追加

cargo install clonerを追加する。
  • build-essential が入ってないので、ビルドに失敗する
  • build-essential を入れるとubiquityが失敗する

CLOSE バージョン情報、gitハッシュ情報をイメージに含める

あとから、イメージがどのバージョンなのかわからないので。それ用のファイルはありそうだが。

まあ、USBのパーティションの名前に含めればいいか。

qemuを入れる

使うので。

dockerイメージを作る

動作検証できるように、isoからイメージにしておく。

単にtarに固めただけでできた。デバッグやテストもやりやすそうだ。

必須のgoライブラリを入れる

LSP, DAPを入れる。

ダウンロードすると、起動しなくなる。emacsを起動と同じく、何か特定のことをすると動かなくなる。走らせるとシステムディレクトリに何らかの変更をもたらす場合、動かなくなる可能性。たとえば go install やemacs起動したとき、ホームディレクトリ以外に何かを保存するとか。

とりあえずisoビルド段階では入れず、makeタスクに追加した。

makeタスクを整理

ブートイメージ化で不要になったものがあったり、逆に必要なものがあったりする。