5.2 KiB
Index
About This Project
Just my personal NixOS Configs, nothing too special. It uses import-tree, flake-file, and flake-parts to generate my nixos systems. It also has multiple hosts, including an installer for them
General Layout
Here is the general structure of the base folders. the deepest level of each file/folder shown will be given its own section with more details, in the order shown.
modules
├── desktops
├── hosts
├── nix
├── programs
├── servers
├── services
├── system
├── theme
└── users
nix-assets
desktops
Simple module folder, just contains all my desktop modules, such as hyprland or kde, and any relevent stuff for those modules (Such as hyprland also contains its login screen, hyprland configs, DMS as its shell, and a few other things hyprland relies on for my configs)
hosts
This contains all my per-host configurations.
here is a list of existing hosts in this sytem, and a description of their use:
aquaticRouter
Currently un-used, intended to be my router once I have it finished
controlstation
Based on system-gaming template.
My main desktop for a majority of my usage (gaming, AI experiments, and general web browsing), this host also dual-boots windows
installer-iso
This host is special, as it is not "installed". This is, instead, the configuration used to generate my installation ISOs, and it has the most quirks, see Installer ISO Script later in this readme for more detail. Generate the ISO on any machine containing the installer-iso-keys module by entering the root of the project, and running the command sudo nix build path:.#nixosConfigurations.installer-iso.config.system.build.isoImage --impure
mainsrv
Based on system-cli template.
Contains all of my long-running servers and remote filesystems currently, not much else.
nix
Contains 2 major folders, and holds the very very base of my setup, that everything else expects and relies on.
First, flake-parts, is set up to initialize and load the core of flake-parts, flake-file, and import-tree, the 3 main tools that my use of dendritic would not work without.
Next, is tools. This holds agenix, disko, home-manager, impermanence, and NUR configs. All these are parts that I decided would be assumed to be had by every one of my systems, and were made into a core assumption
programs
This modules folder is basically, for the most part, my "package management" setup, and where a majority of my apps are at.
The appimages folder is simple, it just contains any appimages I want to pull and "install" into my setup.
Next, the aquatic folder. This has chunks mostly mirroring my system tempaltes (see system for details on templates). These modules are named like aquatic-cli or aquatic-gaming or similar, to allow me to group most of my generally preffered apps into just a few modules
Then, the shell folder is just for my shell config, including zsh and bash
I chose to give zenbrowser its own folder. No strong reason, just felt I wanted it that way.
For the files, nixdev contains my development environment, and all config for it, for my nix config that you are viewing right now, andvirtualbox is just, well, virtualbox, only used on one system so I have it in its own module
servers
[TODO]
services
[TODO]
system
[TODO]
theme
[TODO]
users
[TODO]
nix-assets
Not included in the repo is a submodule for nix-assets (private to avoid any legal issues), with the current structure below:
nix-assets
├── greetd
│ ├── wpeng_assets
│ └── wpeng_papers
└── bin
└── appimages
wpeng_assets is the assets folder from wallpaper engine, and wpeng_papers contains the wallpapers, both are used to run wallpaper engine based wallpapers on the greetd login screen.
Wallpapers to use are currently defined through aquaticConfig.hyprland.monitors for each given monitor via wpeng
Line 109 of modules/programs/hyprland/login.nix does the actual copying of the assets
These options and lines can be changed or removed as needed, or can be ignored if not using hyprland module
Meanwhile, the appimages folder is just to contain appimages that are not currently public for any given reason. Currently, this is only the metrolist as that is in closed beta
Misc
This section will just contain anything that was not part of my modules, or that needs extra special explinations
Installer ISO Script
This is the file at /modules/hosts/installer-iso/installer/installer.sh, it is a bash script that is actively a work in progress. Currently, it can only be used for new hosts that do not exist in the config, and has no error checking. But, for now, it works to add a new host and roll it into my secrets at the machines and all levels.
Secrets
[TODO]