Go to file
Krutonium fdc16b578f Don't FSCK every boot 2024-05-14 18:08:39 -04:00
.idea FF Tweaks 2024-03-27 19:59:01 -04:00
audio Newer Pipewire maybe fixes Pipewire? 2024-03-31 02:36:00 -04:00
boot Changes lmao 2024-01-06 01:51:18 -05:00
builders Things and Stuff 2024-05-14 15:35:30 -04:00
custom-packages Fix + Hash 2024-01-05 19:02:19 -05:00
desktop Slight Reorganization; New Cursors 2024-04-13 16:41:34 -04:00
devices Don't FSCK every boot 2024-05-14 18:08:39 -04:00
firmware Add Displays.bin 2023-08-21 04:59:44 -04:00
minecraft deploy 2023-01-06 01:55:34 -05:00
overlays Uh 2023-03-29 12:57:20 -04:00
services Stringy 2024-05-14 13:53:45 -04:00
steam GS 2024-04-16 15:27:50 -04:00
user Nextcloud, Revived 2024-05-14 12:40:02 -04:00
virtualization btrfs, windows stuff 2024-01-16 17:50:32 -05:00
.gitignore Deploy 2023-05-04 01:33:43 -04:00
FIXME Update Gitea for uWebServer. Possibly everything that is needed. 2023-05-29 21:54:00 -04:00
README.md Readme Update 2023-12-09 06:46:35 -05:00
common.nix More Tweaks 2024-04-24 07:57:36 -04:00
defaultPackages.nix DefPak 2024-05-01 03:50:02 -04:00
deploy.json Enable Deploy 2024-02-01 20:45:45 -05:00
flake.lock flake.lock: Update 2024-05-14 10:45:54 -04:00
flake.nix ALVR stuff 2024-04-19 01:33:45 -04:00
scripts.nix More Cleanup 2024-03-23 22:05:09 -04:00

README.md

My NixOS Config

A Note for GitHub:

If you're viewing this on GitHub, this is a mirror from my personal Forgejo/Gitea instance. It should be up to date to within 6 hours of my latest changes.

What is this?

An evolution of my previous config, this repo represents my current NixOS configuration across my machines. It is a work in progress, and I am still learning NixOS, so there are likely to be some mistakes.

Realistically though, it should be easy enough for anyone to learn from and use as reference.

Each directory, where appropriate, should contain a README.md file with more information about the contents of that directory.

How does it all work?

First, we start in the flake. This is the entry point for NixOS. It contains the following:

  • A general definition that fits all devices
  • A definition for each device that imports and customizes that general definition

From there, each device calls it's own devices/<device>.nix file, which contains the following:

  • Device Specific Configuration such as
    • Kernel,
    • Bootloader,
    • Services,
    • Hostname,
    • Hardware Quirks.
  • Imports the Users
    • And specifies if they should have Home Manager enabled.

Finally, once that's all done, You've basically already traversed most of the config! Feel free to explore and ask questions!

How do the modules work?

Basically, inside of common.nix, I import each directory where I've put a module. Each module contains a default.nix file, which then defines properties and so on for what I want available. For example in desktop you can pick between Gnome, KDE and Budgie, as well as decide if you want Wayland (if it's supported). This allows for a lot of flexability and a huge amount of code-reuse. I encourage others to copy this design and use it for their own configs.