NixOS 项目教程
nixosOBSOLETE (go to NixOS/nixpkgs) – NixOS, a Linux distribution based on the Nix package manager – OBSOLETE (go to NixOS/nixpkgs)项目地址:https://gitcode.com/gh_mirrors/ni/nixos
1. 项目的目录结构及介绍
NixOS 项目的目录结构遵循标准的 Git 仓库布局,主要包含以下几个部分:
- .github: 包含 GitHub 相关的配置文件,如 issue 模板、PR 模板等。
- doc: 包含项目的文档,如用户手册、开发者指南等。
- nixos: 包含 NixOS 的核心配置和模块。
- nixpkgs: 包含 Nix 包管理器的包定义和配置。
- scripts: 包含一些辅助脚本,用于项目的构建和测试。
详细目录结构
.
├── .github
│ ├── ISSUE_TEMPLATE
│ └── PULL_REQUEST_TEMPLATE
├── doc
│ ├── manual
│ └── style
├── nixos
│ ├── modules
│ ├── tests
│ └── release.nix
├── nixpkgs
│ ├── doc
│ ├── lib
│ ├── pkgs
│ ├── scripts
│ └── default.nix
└── scripts
├── azure
├── benchmarks
├── ci
├── hydra
└── release.nix
2. 项目的启动文件介绍
NixOS 的启动文件主要位于 nixos/modules/system/boot
目录下,负责系统的启动和初始化过程。
主要启动文件
- loader.nix: 定义系统启动加载器,如 GRUB 或 systemd-boot。
- kernel.nix: 定义内核参数和选项。
- initrd.nix: 定义初始化内存文件系统(initrd)的配置。
示例
{ config, lib, pkgs, ... }:
{
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/sda";
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
}
3. 项目的配置文件介绍
NixOS 的配置文件使用 Nix 语言编写,主要位于 nixos/modules
目录下,定义了系统的各种配置选项。
主要配置文件
- configuration.nix: 主配置文件,包含系统的基础配置。
- hardware-configuration.nix: 硬件配置文件,包含硬件相关的配置。
- services: 包含各种服务的配置模块。
- networking: 包含网络相关的配置模块。
示例
{ config, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/sda";
networking.hostName = "nixos";
networking.wireless.enable = true;
environment.systemPackages = with pkgs; [
vim
git
];
services.openssh.enable = true;
users.users.alice = {
isNormalUser = true;
extraGroups = [ "wheel" ];
password = "secret";
};
system.stateVersion = "23.05";
}
以上是 NixOS 项目的基本教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。希望这些内容能帮助你更好地理解和使用 NixOS。
nixosOBSOLETE (go to NixOS/nixpkgs) – NixOS, a Linux distribution based on the Nix package manager – OBSOLETE (go to NixOS/nixpkgs)项目地址:https://gitcode.com/gh_mirrors/ni/nixos