NullBite's NixOS Config
This is my personal NixOS config. Right now, it's just a basic flake which
imports a (mostly) normal stock NixOS configuration. The plan is to have three
separate levels of organization:
- Fragments: Configure one specific service/app/setting/etc., which has the
potential to be used on more than one machine.
- Settings that will only ever work on one machine (e.g., settings which include disk UUIDs, PCIe bus IDs, etc) should be placed in a host fragment instead.
- Roles: Define a "purpose" and import relevant fragments.
- Roles aren't mutually exclusive; one system could pull in roles for, e.g., desktop environment, gaming, and server
- This is inspired by the concept of roles in Ansible
- Hosts: Configuration for individual hosts (obviously).
- Each host shall have a folder containing a
configuration.nix
and ahardware-configuration.nix
, and possibly a few host-specific fragments. - Custom configuration MUST NOT be placed in
hardware-configuration.nix
for the same reason one should not directly edithardware-configuration.nix
on a stock NixOS system. Most systems, however, generally will have some options exclusive to them, and these should be placed in the host'sconfiguration.nix
or a host fragment.
- Each host shall have a folder containing a
At first I am going to migrate configuration into roles, and then as the configuration evolves, I will start to create fragments.
The above is outdated and I will rewrite it once I settle on a better way to organize this repo.
flake.nix
schema
flake.nix
shall contain a "default" configuration for each host (using the
built-in selection of nixos-rebuild
), as well as alternative config presets
for the host, if applicable.
TODO
- Reorganize repo to use a more "standard" module layout.
- github:Misterio77/nix-config might be a good reference for a better module layout.
- Select entire desktop configuration via a single option and make bootable with specialisation.
- Give each desktop a modularized configuration that can be enabled with an option.
- figure out nixpkgs.lib.options.mkOption and add a string option that picks a desktop to use.
- add Plasma, Hyprland, and maybe GNOME if I'm feeling silly (I'd probably never actually use it).
- make more things configurable as options once I figure out the above, it's probably cleaner than importing modules.
- Rewrite README.
Languages
Nix
97.4%
Shell
2.6%