2.5 KiB
2.5 KiB
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 serverThis 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 inhardware-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.