mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 16:57:55 +00:00
63 lines
2.7 KiB
Plaintext
63 lines
2.7 KiB
Plaintext
---
|
|
title: Project structure
|
|
---
|
|
= Project structure
|
|
|
|
Last and foremost, we have the project directory — the environment you'll be living in for the next year, tinkering your Nix configs.
|
|
.
|
|
It is required to be familiar with the workspace, after all.
|
|
My configuration takes a lot of cues from link:{devos_link}[devos] (which is unfortunately is a lot to take if you're just beginning to grok Nix as a whole).
|
|
|
|
My NixOS config should look like the following:
|
|
|
|
[source, tree]
|
|
----
|
|
nixos-config
|
|
├── hosts/
|
|
├── lib/
|
|
├── modules/
|
|
├── pkgs/
|
|
├── scripts/
|
|
├── secrets/
|
|
├── shells/
|
|
├── templates/
|
|
├── users/
|
|
├── default.nix
|
|
├── flake.lock
|
|
├── flake.nix
|
|
├── images.toml
|
|
└── README.adoc
|
|
----
|
|
|
|
One of the more notable files here when first start looking is the link:./images.toml[`./images.toml`] file where it contains a description of the images.
|
|
For more details, see <<declarative-host-management>>.
|
|
|
|
Most of the said folders are related to a flake output attribute, see <<whats-in-my-flake>> for more details.
|
|
|
|
* link:./hosts/[`./hosts/`] contain machine-specific configuration.
|
|
This usually configures like the hardware setup, timezone, and users.
|
|
Host configurations are also exported in the flakes in `outputs.nixosConfigurations`.
|
|
|
|
* link:./modules/[`./modules/`] contain my custom modules including NixOS and home-manager modules.
|
|
For more information, see the link:./modules/README.adoc[related documentation].
|
|
|
|
* link:./pkgs/[`./pkgs/`] contains my custom packages.
|
|
It is exported in the flakes at `outputs.packages` compiled through various systems.
|
|
|
|
* link:./scripts/[`./scripts/`] contains various scripts for various purposes.
|
|
Should be self-explanatory.
|
|
|
|
* link:./secrets/[`./secrets/`] contains my cluster-wide secrets managed with link:https://github.com/mozilla/sops[sops] and link:https://github.com/Mic92/sops-nix[sops-nix].
|
|
Take note, each component (e.g., hosts, modules, users) could have their own specific secrets.
|
|
|
|
* link:./shells/[`./shells/`] contains my development shells for interacting with the usual type of projects.
|
|
Setting this up can bring benefits outside of NixOS (unless you're interacting with projects with any OpenGL-related stuff).
|
|
footnote:[Since packages brought from Nix shells can only work with the store, a container might be better at some situations.]
|
|
|
|
* link:./templates/[`./templates/`] contains my custom templates handy for quickly initializing for various types of projects.
|
|
|
|
* link:./users/[`./users/`] contains my link:https://github.com/nix-community/home-manager[home-manager] configurations.
|
|
It is exported in the flakes at `outputs.homeConfigurations`.
|
|
For more information, see the link:./users/README.adoc[related documentation].
|
|
|