A complete system configuration for my systems for use with the Nix package manager
Report Bug
·
Request Feature
demo_video.mp4
Table of Contents
This is my NixOS config to fully define any system I want to build. It include configuration for installing anything on a fully-featured system of mine, and the Home Manager configs for editing the configuration of installed software.
The usage of Home Manager in this project is to the point that some would call it dogmatic, but it makes all config reproducible between systems.
The configuration is organized with the Dendritic Pattern on top of flake-parts: every .nix file under modules/ is a feature, auto-imported by import-tree, and hosts (modules/hosts/) and users (modules/users/) are themselves features composed of smaller ones. flake.nix is auto-generated by flake-file — declare inputs in a feature's flake-file.inputs and run nix run .#write-flake. See .claude/skills/nix-config/ for the full guide.
- You should avoid all package managers except the Nix Package Manager
- Any program configuration that is possible through home manager should be done through home manager
- Prefer configuration implementations that fully utilize flakes
This is intended to run on a NixOS system currently. Check back in the future for other environments like MacOS.
Install a NixOS from an image file. You will need a usb to flash the image onto, and a program to etch the image onto the USB. On *nix systems, dd can be used:
dd if=/path/to/your/isofile of=/your/usb/disk bs=8M status=progress- Clone the repo into
/etc/nixos/cd /etc/nixos/ rm -f configuration.nix git clone https://github.com/jakeneau/Jake-Neau-NixOS-Config.git mv ./Jake-Neau-NixOS-Config/* . rm -rf ./Jake-Neau-NixOS-Config
- Copy keys.txt into secrets/ to decrypt password hash
- Build the system
sudo nixos-rebuild switch --flake /etc/nixos/
The Niri Window Manager is used as the graphical interface for the system. Here are a few of the common shortcuts I have configured
- Mod + Space: Open application launcher
- Mod + q: Open new terminal emulator
- Mod + c: Close focused window
Additionally Fish is used for interactive shells. Here are some shortcuts I have configures with fish.
- nrr: Rebuild the system and push to GitHub with a default update status message
- nr "message": Rebuild the system and push to GitHub with the message "message", a generation number is appended
- nr: Amend the last commit and push to GitHub with the same message byt a new generation number
- Get the Niri Window Manager looking nicer
- Find a way to make screens take up an exactly 16:9 form factor on ultrawides
- Re-enable Noctalia Shell for beautiful bars and widgets
- Fix wallpapers that broke after moving from Hyprland
- Move repository to the Dendritic Pattern
- The hardware-configuration.nix file needs to be tracked despite being different on different machines, find a way around this for multi-environment
- Configure a cut-down environment for laptops
- Configure Nix Darwin environment for MacOS development
- Configure NixOS-WSL environment for Windows development (still debating this one)
- Update the README with SOPS specific instructions
If you seriously want to spend your time contributing to someone else's system configuration, I'm not going to stop you. All contributions are welcome if they adhere to the principles of the project.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement"
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt for more information.
Jake Neau - jakeneau@proton.me
Project Link: https://github.com/JakeNeau/Jake-Neau-NixOS-Config