{ config, pkgs, username,inputs, lib, ... }: { imports = [ inputs.impermanence.nixosModules.impermanence ]; # 系统启动时确保持久化目录存在 system.activationScripts.persistent-dirs.text = '' mkdir -p /nix/persistent ''; # 启用 tmpfs 作为根文件系统 fileSystems."/" = lib.mkForce{ device = "none"; fsType = "tmpfs"; options = [ "defaults" "size=2G" "mode=755" ]; }; # 将 /nix 存储在持久化分区 fileSystems."/nix" = lib.mkForce{ device = "/nix/persistent/nix"; fsType = "btrfs"; options = [ "compress-force=zstd" ]; }; # 建议的 fstab 配置 fileSystems."/nix/persistent" = { device = "/dev/disk/by-label/nixos-persistent"; # 需要根据实际情况修改 fsType = "btrfs"; neededForBoot = true; }; # 配置持久化存储 environment.persistence."/nix/persistent" = { # 不在文件管理器中显示这些挂载点 hideMounts = true; directories = [ "/etc/nixos" # NixOS 配置文件 "/etc/NetworkManager/system-connections" # 网络配置 "/var/log" # 系统日志 "/var/lib" # 系统数据 "/root" # root 用户目录 "/.nix" ]; files = [ "/etc/machine-id" "/etc/ssh/ssh_host_ed25519_key" "/etc/ssh/ssh_host_ed25519_key.pub" "/etc/ssh/ssh_host_rsa_key" "/etc/ssh/ssh_host_rsa_key.pub" ]; # 用户目录持久化配置 users.${username} = { directories = [ # 应用配置 ".config" ".cache" ".local" ".ssh" ".gnupg" # 开发相关 ".vscode" ".npm" ".cargo" "data" "doc" ]; files = [ ".bash_history" ".zsh_history" ".gitconfig" ]; }; }; }