Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
妥協しない! 宣言的マシン環境構築
Search
MiSumiSumi
March 22, 2025
Technology
310
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
ガチで放置できるClaude Code実行環境の作り方.pdf
lamaglama39
5
9.8k
プロダクトが成長すると、 プロダクトマネージャーの仕事はどう変わるのか - 「まず作る」から「小さく学び、確かめながら進む」へ
sansantech
PRO
1
370
AI時代のGraphQL
joere
3
410
小規模OSSモデルは サイバーセキュリティ業務に どこまで使えるか
bbrbbq
0
300
Filter What the LLM Reads: RAG Governance with AgentCore Gateway
yakumo
0
110
自宅サーバと脆弱性
masakiokuda
1
110
構造で守らせる データ・法務・セキュリティ・開発チームとつくる AI時代のデータガバナンスとデータ基盤のリアル
legalontechnologies
PRO
1
520
LLM Content Moderationを支える評価・改善ループの実践
suikabar
2
360
How we choose session proposals
kawaguti
PRO
0
170
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
2
1.7k
なぜAI時代に技術記事を書くのか?どう書くのか? 〜bunの場合〜
kworkdev
PRO
0
130
BacklogのRAG 今ならこう作る - S3 Vectorsと自前パイプラインの勘所
revsystem
0
140
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
RailsConf 2023
tenderlove
30
1.6k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
850
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
580
Documentation Writing (for coders)
carmenintech
77
5.6k
HDC tutorial
michielstock
2
980
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Color Theory Basics | Prateek | Gurzu
gurzu
1
500
Skip the Path - Find Your Career Trail
mkilby
1
260
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