/nixos-config

And I say hey, what's going on?

Primary LanguageNixMIT LicenseMIT

NixOS 20.09

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.

Note that this repository is a fork of Henrik Lissner's dotfiles.

Screenshots follow as soon as bspwm config is done.


Shell: zsh + zgen
DM: lightdm + lightdm-mini-greeter
WM: bspwm + polybar
Editor: micro (and occasionally vim)
Terminal: kitty
Launcher: rofi
Browser: firefox
GTK Theme: Ant Dracula

Quick start

nix-shell -p nixFlakes git

  1. Yoink NixOS 20.09.

  2. Boot into the installer.

  3. Do your partitions and mount your root to /mnt. I recommend first doing sudo su for ease of use. Be careful with those labels though.

  4. Clone the repo with git clone https://github.com/totoroot/dotfiles-nixos /mnt/etc/nixos.

  5. In case git is not installed, run nix-env -iA nixos.git.

  6. Make sure the config you are about to install has the right hardware-configuration.

  7. For a new host enter the cloned repo and duplicate an existing configuration (cd nixos && cp -r hosts/purple hosts/<new-host>) and make adjustments with nano hosts/<new-host>/default.nix.

    For a different partitioning scheme make sure to change the hardware-configuration with nano hosts/<new-host>/hardware-configuration.nix.

    In case you dont know how to set up this config run nixos-generate-config --dir hosts/<new-host>/ && rm hosts/<new-host>/configuration.nix

  8. Add nixPkgs channel and install flakes nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs && nix-channel --update && nix-env -iA nixpkgs.nixFlakes.

  9. Install NixOS with configuration for host "purple" nixos-install --root /mnt --flake /mnt/etc/nixos#purple.

  10. Edit either ~/.config/nix/nix.conf or /etc/nix/nix.conf and add experimental-features = nix-command flakes.

This is needed to expose the Nix 2.0 CLI and flakes support that are hidden behind feature-flags.

  1. Reboot!

Management

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

Usage: hey [global-options] [command] [sub-options]

Available Commands:
  check                  Run 'nix flake check' on your dotfiles
  gc                     Garbage collect & optimize nix store
  generations            Explore, manage, diff across generations
  help [SUBCOMMAND]      Show usage information for this script or a subcommand
  rebuild                Rebuild the current system's flake
  repl                   Open a nix-repl with nixpkgs and dotfiles preloaded
  rollback               Roll back to last generation
  search                 Search nixpkgs for a package
  show                   [ARGS...]
  ssh HOST [COMMAND]     Run a bin/hey command on a remote NixOS system
  swap PATH [PATH...]    Recursively swap nix-store symlinks with copies (or back).
  test                   Quickly rebuild, for quick iteration
  theme THEME_NAME       Quickly swap to another theme module
  update [INPUT...]      Update specific flakes or all of them
  upgrade                Update all flakes and rebuild system

Options:
    -d, --dryrun                     Don't change anything; preform dry run
    -D, --debug                      Show trace on nix errors
    -f, --flake URI                  Change target flake to URI
    -h, --help                       Display this help, or help for a specific command
    -i, -A, -q, -e, -p               Forward to nix-env

Frequently asked questions