/nixos

Primary LanguageSCSSMIT LicenseMIT

NixOS/Nix system and user configuration for my private machines

Get it on Codeberg

NixOS 23.05

Commit activity Latest commit

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 which I have modified and updated over the years to better suit my needs.

In case you need help getting started with NixOS and want to use these dotfiles as a starting point, feel free to raise issues asking for help or send me an Email to my Git commit address which you can find on my profile.

Screenshots 4K Display

Full Desktop Floating Desktop


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

If you've never before installed NixOS, make sure to read through the official installation guide. This quick start guide is based on the installation instructions in the official NixOS manual so you might want to skim over them as well before getting started.

Quick start

  1. Yoink the minimal ISO image of NixOS from the official download page.

  2. Verify integrity of the ISO image and flash to boot medium.

  3. Boot into the installer.

  4. 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.

  5. Run nixos-generate-config --root /mnt to produce the default configuration.nix and hardware-configuration.nix.

  6. Make sure you've got a working network connection and clone the repo with git clone https://codeberg.org/totoroot/dotfiles /mnt/etc/nixos.

  7. In case this fails, git might not be installed. Run nix-env -iA nixos.git to install and repeat step 4.

  8. 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.

  9. Get rid of the default configuration with rm /mnt/configuration.nix and override the hardware configuration in the cloned repo for your host with cp /mnt/hardware-configuration.nix /mnt/etc/nixos/hosts/<new-host>/.

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

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

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

  12. 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

Some information to get you started configuring the install to your needs

Mimeapps can be set in modules/xdg.nix.

Frequently asked questions