hlissner/dotfiles

And I say hey, what's going on?

Nix

1,953

3,101 commits

updated Oct 4, 2026

See the code

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: hyprland + 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 installer.

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

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

    zsh <(curl -s https://raw.githubusercontent.com/hlissner/dotfiles/refs/heads/master/install.zsh)
    

    Otherwise:

    1. Clone these dotfiles to /mnt/etc/dotfiles (required):

      $ git clone --recursive https://github.com/hlissner/dotfiles /mnt/etc/dotfiles
      
    2. Create a host config in /mnt/etc/dotfiles/hosts/ (see existing ones for examples).

    3. Run the installer as root (the installer's nixos user has passwordless sudo):

      $ sudo /mnt/etc/dotfiles/install.zsh
      
  6. 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

dotfiles
nix-flake
nixos
nixos-configuration

hlissner/dotfiles

And I say hey, what's going on?

Nix

1,953

3,101 commits

updated Oct 4, 2026

See the code

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: hyprland + 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 installer.

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

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

    zsh <(curl -s https://raw.githubusercontent.com/hlissner/dotfiles/refs/heads/master/install.zsh)
    

    Otherwise:

    1. Clone these dotfiles to /mnt/etc/dotfiles (required):

      $ git clone --recursive https://github.com/hlissner/dotfiles /mnt/etc/dotfiles
      
    2. Create a host config in /mnt/etc/dotfiles/hosts/ (see existing ones for examples).

    3. Run the installer as root (the installer's nixos user has passwordless sudo):

      $ sudo /mnt/etc/dotfiles/install.zsh
      
  6. 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

dotfiles
nix-flake
nixos
nixos-configuration

Significant stargazers

(top 24 of 75)

Hidde Beydals

336 followers · starred Mar 2022

André Silva

374 followers · starred Jun 2022

Teo Camarasu

31 followers · starred Mar 2021

Sebastian Nagel

130 followers · starred Apr 2020