Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
妥協しない! 宣言的マシン環境構築
Search
MiSumiSumi
March 22, 2025
Technology
300
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
妥協しない! 宣言的マシン環境構築
nixを用いた宣言的デスクトップマシン環境構築のTips
MiSumiSumi
March 22, 2025
Other Decks in Technology
See All in Technology
マイナンバーカード本人確認の実装比較(OAuth/OIDC Numa (Immersion) Workshop 2026) / 20260825 numa-12
oidfj
PRO
0
260
アクセスキー流出時の対応で再認識した攻撃側と防御側の非対称性について
kazzpapa3
0
300
Oracle MCP Servers Explained
thatjeffsmith
1
510
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.3k
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
270
internal/testlog で遊ぼう
rokuosan
0
230
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3.2k
パスキーでドライブする アカウント統合(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
280
Android skills に学ぶ
kokiko
0
180
AWSとGitHub Actionsの責任境界と 組織で安全に使用する取り組み
nealle
0
160
カーネルまで探検して理解するふたつの自動計装
sumiyae
0
320
:syncing_time:
sksat
2
760
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
Testing 201, or: Great Expectations
jmmastey
46
8.2k
The Language of Interfaces
destraynor
162
27k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
550
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
240
From π to Pie charts
rasagy
0
320
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
500
Being A Developer After 40
akosma
91
590k
Transcript
妥協しない! 宣言的マシン環境構築 Sumi-Sumi 1
お前は誰だ? とっても簡単なNixOS 妥協しない? CI/CDによる自動化 Branch・Versioning戦略 外部パッケージマネージャの統合 まとめ 2
お前は誰だ? 3
プロフィール 名前 Sumi-Sumi 身分 院生 (M2→D1, 音声合成系) nix 2022/09〜 用途
Desktop, HomeLab, ML 今日の資料 nixos-desktop-config nvimdots 4
ディストロの変遷 5
デスクトップ環境 NixOS unstable WM Qtile Shell Zsh Terminal Wezterm +Tmux
Editor Neovim 6
とっても簡単なNixOS 7
First Rise non flake 1. nixos-generate-config 2. *.enable = true;+頑張る
3. nixos-rebuild switch flake 1. nix flake init 2. inputsに依存を追加 home-managerとかnixos-hardware… 3. *.enable = true;+頑張る 4. nixos-rebuild switch → NixOSの良さ活かせてる? 8
妥協しない? 9
1. nixos-unstableの安定的な運用 2. プラットフォーム間で環境差異が無いこと 3. 宣言的デプロイ is All You Need
10
どうやって実現する? 1. CI/CDによる自動化 2. Branch・Versioning戦略 3. 外部パッケージマネージャの統合 11
CI/CDによる自動化 12
Arch Linux時代 適当なアプデ →AURビルド不備、破壊的変更による起動不可 nix=Infrastructure as Code (IaC) CI/CDで予防できる! 13
flake.lockの自動更新 flake.lockを更新→PR作成 実際は依存先から順に更新 → → DeterminateSystems/update-flake-lock nvimdots flakes nixos-desktop-config 14
Deprecated optionの通知 nixos-unstableは仕様変更が多々ある 式を評価 →Evaluation WarningがあればISSUEを開く 15
ビルドテスト システムビルドに必要な容量:60GB~ は容量が足りない→空き29GB 不要パッケージの削除, ディスク(LVM)割り当ての変更 /nix:96GB確保 ビルド時間:40分~ 標準Runner easimon/maximize-build-space 16
パブリックでのシークレット管理 パブリックリポジトリだと標準Runnerが無料! 個人マシンには秘匿情報がいっぱい! パスワード、ssh、APIキー… 17
age, pgpでファイル暗号化 アクティベーション時に符号化 /nix/storeには暗号化ファイルが配置 Mic92/sops-nix 18
Branch・Versioning戦略 19
そのNixOS 常にロールバックできる? No 既デプロイへのロールバック◦ コードレベルは? force push/pull … NixOSにおいてコード=マシン状態 (IaC)
適切な管理下でロールバックが初めて担保 20
ブランチ戦略:GitHub flow 細かい変更を受容 mainは常に起動可能な状態を維持 →エラー無く動作する? 21
バージョン戦略 起動可≠各Appがエラー無く動作 nixpkgs/modulesが アップストリームの仕様に追随している訳ではない リリース地点=動作確約 ビルドテスト→mainにマージ→リリース (テストは特定のファイルの変更があったときのみ) 22
お一人様向け:より厳密な運用 によるコードレビュー 自分のコードに対して承認できない github actions [bot] はworkflowが走らない GitHub Appsで別人格を作成 agent-of-me:
コードレビュー、変更の承認・取り消し workflow-executer: flake.lockの更新・リリースPRの作成 reviewdog 23
外部パッケージマネージャの統合 24
nixは完全無欠で究極のpkg manager… じゃない? 導入にroot権限が必須 多くの容量 複数マシンでの/nix/storeの共有 維持コスト 上流の変更への追随 教育・継承 =
共有鯖・支給PCで使いにくい →nixだけで完結させるのは限界 25
nixos-desktop-configの構成 App Confはnixpkgsを優先しているものもある 26
の統合 lazy-loadingによる高速起動 (~80ms) マルチプラットフォーム ayamir/nvimdots folke/lazy.nvim 27
NixOS特有の設定 NixOS上でのバイナリ動作 +依存関係をPATHへ追加 lock fileをnix上で扱うロジックの構築 xdg.configFileはread onlyなため (例): mason-lock.json nix-ld
28
windowsを含めたマルチプラットフォームに対応 GPGやageを用いたファイル暗号化 各種パスワードマネージャのサポート アーカイブファイルの自動展開 chezmoi 29
強力なテンプレートとスクリプト Goテンプレートによる動的な変更 アクティベート時のスクリプト実行に よる追加処理 非NixOS(windows含む)でも 宣言的パッケージインストール 30
chezmoiとnix chezmoi: による状態管理 json、tomlはnixのbuiltinsで読み込み可 nix: で 設定ファイルを$XDG_CONFIG_HOME以下に配置 →設定ファイルを重複させなくて良い (NixOS上でchezmoiは使っていない) chezmoi環境の再現性は担保されない
.chezmoidata.$FORMAT xdg.configFile.source 31
99%の再現性と1%の非再現性 再現性<利便性 ex) zinit 遅延ロード (3ms~5ms) zshプラグインはバージョニングに厳密でない nixpkgsは古いままのが多々ある ex) tpm
非nix環境で 32
まとめ 33
リポジトリの運用次第でより堅牢な環境構築 外部パッケージの許容により利便性を向上 chezmoiによりwindowsも宣言的に管理 34
今後 dotfilesはまだまだ続くよどこまでも btrfs, nix-darwin, arm… テストの充実 VMを用いた起動テスト HomeLabの構築 dotfilesは進捗じゃ ありません!
35
None