ITADN
khaneliman/khanelinix
khaneliman/khanelinix · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Logo
Khaneliman 的 NixOS 配置

Nix Flakes Ready

欢迎使用 khanelinix,这是一个个人 Nix 配置仓库。本仓库 包含我的 NixOS 和 Nixpkgs 配置,以及各种用于增强 Nix 体验的工具和 自定义设置。

目录

  1. Getting Started
  2. Features
  3. Customization
  4. Exported Packages
  5. Screenshots
  6. Resources

Overview

入门指南

在开始之前,请确保您的系统上已安装 Nix。如果没有,您可以从官方 Nix 网站Determinate Systems 安装程序 下载并安装。 如果在 macOS 上运行,您还需要安装 Nix-Darwin。您可以 按照 GitHub 上的安装说明](https://github.com/LnL7/nix-darwin?tab=readme-ov-file#flakes) 进行操作。

将此仓库克隆到您的本地机器

# New machine without git
nix-shell -p git

# Clone
git clone https://github.com/khaneliman/khanelinix.git
cd khanelinix

# Linux
sudo nixos-rebuild switch --flake .

# MacOS
# First run without nix-darwin:
nix run github:lnl7/nix-darwin#darwin-rebuild -- switch --flake github:khaneliman/khanelinix

darwin-rebuild switch --flake .

 # With nh (Nix Helper)
nh os switch .

# With direnv
flake switch

功能特性

以下是我的 Nix 配置所提供的功能概览:

  • 外部依赖集成

    • Khanelivim 使用 nixvim 构建的 自定义 neovim 配置。
    • 访问 NUR 表达式以获取 Firefox 插件和其他增强功能。
    • 与 Hyprland 及其他 Wayland 合成器集成。
  • macOS 支持:利用 Nix-darwin 的强大功能,在 macOS 上无缝配置和管理 Nix, 同时利用 homebrew 处理 GUI 应用程序。

  • Home Manager:使用 Home Manager 管理你的 dotfiles、主环境以及用户特定的 配置。

  • DevShell 支持:该 flake 提供了一个开发 shell(devShell),用于 支持维护此 flake。你可以使用 devShell 方便地开发和 维护你的 Nix 环境。

  • 使用 Cachix 进行 CI:该配置包含持续集成(CI), 将构建产物推送到 Cachix。 这确保了高效的构建,并减少了在本地机器上构建依赖项的 需求。

  • 利用 sops-nix:使用 sops-nix 进行密钥管理,以安全且加密的方式 处理敏感信息。

自定义

我的 Nix 配置是使用 flake-parts 构建的,提供了一种灵活 且模块化的方法来管理你的 Nix 环境。以下是其工作原理:

  • Flake Parts 结构: 该配置使用 flake-parts 将输出组织为模块化部分,主 flake 定义从 flake/ 目录导入以实现更好的组织。

  • 自定义库: lib/ 目录包含扩展标准 nixpkgs lib 的自定义库函数和工具,为系统配置提供额外的辅助功能。

  • 包管理: packages/ 目录包含由 flake 导出的自定义包。每个包都使用 callPackage 构建,并可在不同的系统配置中使用。

  • 模块化配置: modules/ 目录定义了可重用的 NixOS、Darwin 和 Home Manager 模块。这种模块化方法允许在不同平台和系统之间保持一致的配置。

  • Overlay 系统: overlays/ 目录中的自定义 overlays 修改并扩展 nixpkgs 包集合,允许进行包定制和添加。

  • 系统配置: 特定主机的配置组织在 systems/ 中,针对不同架构(x86_64-linuxaarch64-darwin)设有单独的目录。

  • Home 配置: 特定用户的 Home Manager 配置位于 homes/ 目录中,按用户和系统架构组织。

  • 开发环境: flake/dev/ 中的分区开发环境提供开发 shell、格式化工具和检查,与主 flake 输出分离。

这种基于 flake-parts 的方法提供了出色的模块化,使得在保持相关功能组织有序的同时,轻松维护和扩展配置成为可能。

导出的包

使用以下命令直接运行包:

nix run --extra-experimental-features 'nix-command flakes' github:khaneliman/khanelinix#packageName

或从 packages 的输出中安装。例如:

# flake.nix
{
  inputs.khanelinix = {
    url = "github:khaneliman/khanelinix";
    inputs.nixpkgs.follows = "nixpkgs";
  };
}

# configuration.nix
{pkgs, inputs, system, ...}: {
  environment.systemPackages = [
    inputs.khanelinix.packages."${system}".packageName
  ];
}

截图

MacOS

image

NixOS

image

资源

我从以下配置中学习和借鉴的内容: