dotfiles

hlissnerMIT活跃维护

一套基于 Nix Flake 的 NixOS 个人配置与 dotfiles,用声明式方式统一管理系统设置和开发环境,适合想借鉴 NixOS 配置组织方式的用户。

And I say hey, what's going on?

暂无版本1,957star101fork同步于 2026-11-10 11:45 UTC

怎么上手

由 README 提炼,执行前请确认
sudo -i
bash <(curl -sL https://henrik.io/install.sh)
硬件要求按 README 说明

README 未说明具体硬件要求,仅要求 NixOS 26.11+(nixos-unstable)x86_64 系统

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

作者个人的 NixOS 声明式 dotfiles 实验仓库,用 bin/hey 统一管理 NixOS 系统配置与重建

一套基于 Nix Flake 的 NixOS 个人配置与 dotfiles,用声明式方式统一管理系统设置和开发环境,适合想借鉴 NixOS 配置组织方式的用户。

核心能力

  • 用 bin/hey 统一封装 nixos-rebuild、gc、profile 等分散命令
  • 按 hosts/<HOST> 组织主机配置,支持从 flake 模板新建主机
  • 用 agenix 管理密钥与 secrets
  • 提供 install.sh 从 NixOS 安装盘一键部署到 /mnt
  • 内置 test 命令运行 Hey 与 Nix 测试套件

容易踩的坑

作者明确声明这不是社区框架或发行版,不建议他人直接使用;安装脚本要求 dotfiles 部署在 /mnt/etc/dotfiles 这一固定路径;安装后 root 和用户密码默认都是 nixos,必须立即修改

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Tests Made with Doom Emacs NixOS Unstable

    Hey, you. You're finally awake. You were trying to configure your OS declaratively, right? Walked right into that NixOS ambush, same as us, and those dotfiles over there.

    [!IMPORTANT] Disclaimer: This is not a "community framework" or "NixOS distribution". Please do not use it like one. It is an ongoing and haphazard experiment to feel out NixOS and the Nix language for my own purposes, and is home to all manner of unspeakable, over-engineered hackery that make the other 9 circles of hell look like tropical beach resorts.

    Until I can bend spoons with my Nix-fu, please divert your Nix(OS) questions to the NixOS discourse instead of my issue tracker. That said, I'm more than happy to hear input and discuss ideas, but be warned: I'm awful at staying on top of my Github notifications.

    (screenshots coming soon)


    • Shell: zsh + zpm
    • WM: niri + noctalia
    • Editor: Doom Emacs + Neovim
    • Terminal: foot
    • Launcher: rofi
    • Browser: librewolf

    Quick start

    1. Acquire or build a NixOS 26.11+ image:

      # Yoink nixos-unstable from upstream
      $ wget -O nixos.iso https://channels.nixos.org/nixos-unstable/latest-nixos-minimal-x86_64-linux.iso
      
    2. Write it to a USB drive:

      # Replace /dev/sdX with the correct partition!
      $ cp nixos.iso /dev/sdX
      
    3. Restart and boot into the NixOS installer.

    4. Do your partitions and mount your root to /mnt (for example).

    5. Connect to the internet, if you haven't already. Wifi-capable devices can use nmtui.

    6. Copy any keys/secrets over. If you're on a system with bin/hey set up, run hey ops push-keys [KEYS] (start sshd on the nixos installer first). Otherwise, scp them into /mnt/etc/sshd/:

    7. If you've already created a host config, then simply run the installer:

      sudo -i   # switch to root
      bash <(curl -sL https://henrik.io/install.sh)
      

      If you don't have a host config, use this flake's templates to create one from scratch:

      1. Deploy the flake (sans my hosts) to /mnt/etc/dotfiles (that location is required), and cd into it:

        sudo -i   # switch to root
        export NIX_CONFIG='experimental-features = nix-command flakes'
        nix flake new -t github:hlissner/dotfiles /mnt/etc/dotfiles
        cd /mnt/etc/dotfiles
        
      2. Deploy a host config to hosts/<HOST> and fill it in (see my hosts for examples):

        HOST="hostname-of-your-system"
        nix flake new -t github:hlissner/dotfiles#host hosts/$HOST
        
      3. git add everything so Nix will see your config:

        git init
        git add -A
        
      4. Finally, run the installer:

        $ bash /mnt/etc/dotfiles/install.sh
        
    8. Reboot!

    [!WARNING] Don't forget to change your root and $USER passwords! They are set to nixos by default.

    Management

    And I say, bin/hey, what's going on?.

    SYNOPSIS:
      hey [-?|-??|-???|-!] [-h|--help] COMMAND [ARGS...]
    
    OPTIONS:
      -!
        Do a dry run. WARNING: It's up to called scripts to obey!
      -? | -?? | -???
        Enable debug (verbose) mode, at increasing verbosity.
      -h, --help
        Display the documentation embedded in a target script's header.
    
    COMMANDS:
      - build|b    -- Build nix images, or recompile bin/hey.
      - exec       -- Execute a program on $PATH through hey.
      - gc         -- Garbage collect and optimize the nix store.
      - get|set    -- Alias for hey vars {get,set} ...
      - help|h     -- Display documentation for a command.
      - hook       -- Trigger an event.
      - host       -- Dispatch to hosts/$HOST/bin.
      - info       -- Display information about the current system (JSON).
      - ops        -- Operate on remote HeyOS-powered hosts.
      - path       -- Prints a path to a subarea of my dotfiles.
      - profile|pr -- Operate on the nixos profile.
      - pull       -- Update one of (or all) HeyOS's inputs.
      - reload|re  -- Reload running services.
      - repl       -- Open a nix or janet repl with this flake preloaded.
      - swap|sw    -- Swap nix-store symlinks with mutable copies (and back)
      - sync|s     -- Rebuild this flake (using nixos-rebuild).
      - test       -- Run the Hey and/or Nix test suites.
      - vars       -- Get or set session or persistent state in userspace.
      - which      -- Print a command's path (with arguments) without running it.
      - wm         -- Dispatch to config/$WM/bin.
      - .*         -- Execute the first script found under host, wm, or bin/.
      - ./         -- Execute a script by path.
      - @*         -- Dispatch to config/DIR/bin.
    

    Frequently asked questions