Skip to content
AmazinAxel edited this page May 7, 2026 · 5 revisions

Flake

This project is a monorepo flake consisting of all of my NixOS devices and their (shared) configurations. I have organized this wiki so it's easier to understand what this flake does!

Using my flake as a template?

If you plan on using this flake to ease your entry into Nix, I must advise you to read this entire wiki before you do so! To build a solid foundational understanding of what you're installing on your machine, you need to know how the files are organized and what they do. Please read everything here before cloning and installing this flake.

First and foremost

As of writing this, I have half a dozen NixOS devices. Each of these devices have their own config, but benefit from a shared configuration, mostly in modules/ (this is meant for pick-and-choose shared configuration) and home-manager/ (which is shared for all display-enabled devices and does not contain any host-specific config).

Each host is called in the flake.nix and organized in its hosts/ folder. In their folder, you can expect to find a hardware-configuration.nix file, which you MUST overwrite with your own if you are planning on building the flake. Hosts that use home-manager will usually have a hm.nix file, which is used to overwrite/add home-manager settings. Don't worry about this for now, if you are setting up a 1-device config you can just write to the file in the home-manager folder directly. These options are only used for host-specific functionality.

In each host contains a default.nix which is actually where most of the host-specific configuration resides. If you find yourself repeating things in every host-specific config, you should probably move it into common.nix (which is inherited by EVERY single configuration) or put it into modules/.

If you are looking to install or run this flake, please head over to the Install guides! There's several ways you can go about installation of this flake.

Nix-ify Everything

Home-manager

The reason why I've opted to use Home Manager even where my computers are strictly single-user is for the ease of configuration. Most of the program configurations rely on the config located in the user's home. While I wish this wasn't the case, it's really just too much hassle and boilerplate to go find a way to configure these programs that doesn't involve Home Manager. If you are here from Riceathon or Linuxfest, you will probably want to pay attention most to this section, and will probably want to check out the Desktop page.

Home-manager focuses more on the user-shown programs, like the DE, shell, and some programs (although programs may be configured outside home-manager, these are mostly small or globally configured things) (This is where basically all of the rice is!)

Since every desktop-enabled device uses the same configuration from home-manager/, all of the UX is the same betweeen all of my devices, which makes the experience very consistent. All of the screenshots here will look the same (unless I changed something) to what you install on any computer, which is the beauty of NixOS!

Right now home-manager manages:

  • Sway
  • fish/foot/starship
  • GTK apps
  • programs like MPD, satty, zen and vsc

It's a little confusing since there are some desktop-related things that are managed by just Nixpkgs in desktop.nix, however they mostly do affect functionality, not visuals. Generally you should configure nixpkgs settings in your host file, or if you want it to apply globally, you can just edit the desktop.nix (or common.nix if it does not impact desktop operations)

Some things to note

There are some fish scripts in the repository which you probably won't need or use. You can probably remove them or set up your own homelab to be able to take advantage of the sync notification in the shell. Most of the shell is hardcoded to reference files from the /home/alec/Projects/flake/ folder, like the wallpapers, so if you are cloning the repository locally you'll need to either update the file references throughout the flake or clone the repo there. Everything in this repo is hardcoded to my user alec which, if you decide to change, should be searched-and-replaced throughout the config. The default password is nixos and should be changed implicitly with passwd alec after you have everything set up.


Use the pages on the right to navigate this wiki!

This flake is a submission to Hack Club's Riceathon

Clone this wiki locally