Skip to main content

writing-nix-config

Patterns for this nix-config flake repository. Use when editing .nix files, adding packages, creating modules, or debugging flake issues.

跳到安装

来源信息

仓库
joshsymonds/nix-config
最近来源活动
2026年3月12日 21:47
检测到的 SKILL.md 语言
英语
星标
836
分支
118

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
writing-nix-config
description
Patterns for this nix-config flake repository. Use when editing .nix files, adding packages, creating modules, or debugging flake issues.
# Nix Configuration Patterns ## Critical Rules | Rule | Why | |------|-----| | Run `update` after changes | Nothing takes effect until rebuilt | | Run `git add` before `nix flake check` | Flakes only see git-tracked files | | Use `lib.fakeHash` for unknown hashes | Nix will tell you the real hash on build failure | ## Common Mistakes | Wrong | Right | |-------|-------| | Running `nix flake check` on new files without `git add` | `git add <file>` first | | Editing config and expecting immediate effect | Run `update` to rebuild | | Guessing SHA256 hashes | Use `lib.fakeHash`, build, copy real hash from error | | Adding package only to overlay | Also add to `pkgs/default.nix` | ## Commands ```bash update # Rebuild current system nix flake check # Validate flake nix build .#<package> # Build package nix eval .#nixosConfigurations.<host>.config.<option> # Check config value ``` ## Package Pattern ```nix # pkgs/<name>/default.nix { lib, stdenv, fetchFromGitHub, ... }: stdenv.mkDerivation rec { pname = "name"; version = "1.0.0"; src = fetchFromGitHub { owner = "..."; repo = "..."; rev = "v${version}"; hash = "sha256-AAAA..."; # Use lib.fakeHash first, nix will tell you real hash }; meta = with lib; { description = "..."; license = licenses.mit; platforms = platforms.all; }; } ``` Then add to `pkgs/default.nix` and `overlays/default.nix`. ## Home Manager Module Pattern ```nix # home-manager/<app>/default.nix { pkgs, lib, ... }: { home.packages = [ pkgs.app ]; # Or use programs.<app> if module exists programs.app = { enable = true; settings = { ... }; }; } ``` Then import in `home-manager/common.nix` or platform-specific file. ## Agenix Secret Pattern ```nix # 1. Add to secrets/secrets.nix "secrets/hosts/<host>/<name>.age".publicKeys = keys.<host>; # 2. Declare in host config age.secrets."<name>" = { file = ../../secrets/hosts/<host>/<name>.age; owner = "<service-user>"; mode = "0400"; }; # 3. Create the secret agenix -e secrets/hosts/<host>/<name>.age ``` ## This Repo's Systems | Host | Platform | Notes | |------|----------|-------| | ninuan | macOS | Primary dev, Aerospace WM | | ultraviolet | NixOS | Headless server | | bluedesert | NixOS | Headless server | | echelon | NixOS | Headless server |
在 GitHub 查看