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
 1