Nyx
My overengineered NixOS flake. Desktops, laptops, servers and everything else that can run an OS.
Install / Use
/learn @NotAShelf/NyxREADME
<!-- deno-fmt-ignore-end --> <div align="center"> My over-engineered NixOS flake: Desktops, laptops, servers and everything else that can run an OS.<br/> </div> <div align="center"> <br/> <a href="#preface">Preface</a><br/> <a href="#high-level-overview">Overview</a> | <a href="#host-specifications">Hosts</a> | <a href="docs/installing.md">Installation</a> <br/> <a href="#credits--special-thanks-to">Credits</a> | <a href="#license">License</a> <br/> <a href="#cool-resources">Helpful Resources</a> <br/> </div> <p id="preview" align="center"> <br/> <img src=".github/assets/desktop_preview_wide.png" alt="Desktop Preview" /> <br/> Screenshot last updated <b>2024-03-19</b> </p>[!NOTE] This repository, as of 5th of August 2024, has been abandoned. I will no longer be maintaining my system configuration in a public location. I am leaving this repository at its latest state at the time of removal for your convenience, as I owe it to many people in the Nix community, however, I will not provide support of any kind. If you are curious about why I have decided to archive this repository, please read the commit message.
Special thanks to everyone who was nice enough to adhere to my license. Countless hours (it's far past the hundreds of hours range) has been poured in this repository in the hopes of making a good public resource, however, it is apparently very hard for some people to understand the value of credit in open source. While I'm not going to name any names, some of you will know who it is. Because it's quite obvious despite what they may think.
You can go through the thousands of lines of Nix I've written, borrow what you need. I would appreciate the credit (it's really not too hard to give) but at this point I do not care. Keep in mind that things may be broken because 1. this is a personal configuration and 2. it is abandoned but I expect fully copy-pasted sections in typical NixOS fashion.
So long, and thanks for all the fish.
Preface
Before you proceed, I would like to direct your attention to the credits section below, where I pay tribute to the individuals who have contributed to this project. Whether through code references, suggestions, bug reports, or simply moral support, they have my most sincere gratitude.
Disclaimer
<!-- deno-fmt-ignore-start --><!-- deno-fmt-ignore-end -->[!CAUTION] As I constantly tinker and adjust my configuration, nothing in this repository (including the README and overview sections) should be considered final. Expect frequent changes, possibly on a daily basis, and quite likely in a half-broken state. This is my personal configuration, not a framework, so I make no promises of stability or support. If something breaks, it will be your responsibility.
It is also worth noting that almost all configurations in this repository contain age-encrypted secrets. This means they cannot be built or replicated successfully unless you know how to revert age encryption. If you do, please let me know!
There is a resources section that I strongly encourage you to check out, which you can use to start building your own configuration. I also document some of my experiences in my nix blog for your convenience. Feel free to dissect this configuration and borrow bits that interest you, but please respect my license while doing so!
Do not be fooled by the extensive documentation effort that has gone into this project. I invite you to explore the modules and countless lines of Nix I have written, but I strongly advise against attempting to boot any of these configurations unless you are me.
To reiterate: this is not a public framework, and you should not try to run this configuration, or rip off specific bits. It will cause you much pain and suffering, in addition to robbing you of the joys of learning something by yourself. By copying me, you would have to learn my specific design choices on top of Nix/NixOS, whereas you could create something that suits your own needs in a shorter time span.
High Level Overview
This is a high level overview of this monorepo, containing configurations for all of my machines that are currently running NixOS, or have ran NixOS at some point in time. You will find below a list of my hosts and their specifications, accompanied by a somewhat maintained list of features of this configuration and my design considerations.
Repo Structure
flake.nixGround zero of my system configuration. Declaring entry pointsdocsThe documentation for my flake repositorycheatsheetUseful tips that are hard to memorize, but easy to write downinstallingNon-exhaustive Nix/NixOS tips
parts/Individual parts of my flake, powered by flake-partsappsBasic executables for maintenance jobschecksAdditional checks to build onnix flake checklibPersonal library of functions and utilitiesmodulesNixOS/Home-manager modules provided by my flake for both internal and public usenpinsAdditional pinned dependencies, managed vianpinspkgsPackages exported by my flakepre-commitpre-commit hooks viagit-hooks.nixtemplatesTemplates for initializing new flakes. Provides some language-specific flakesargs.nixCommon arguments that will be shared across, or exposed by the flakedeployments.nixHost setups for deploy-rs, currently a work in progressfmt.nixVarious formatting options fornix fmtand friendsiso-images.nixConfigurations for my home-built iso images, to be exposed in the flake schemakeys.nixMy public keys to be shared across the flakeshell.nixLocal devShell configurations
homesMy personalized Home-Manager configurations.hostsPer-host configurations that contain machine specific instructions and setupsmodulesModularized NixOS configurationscoreThe core module that all systems depend onextraExtra modules that are rarely importedoptionsDefinitions of module options used by common modulesmetaInternal, read-only module that defines host capabilities based on other optionsdeviceHardware capabilities of the hostdocumentationLocal module system documentationsystemOS-wide configurations for generic software and firmware on system levelstyleActive style configurations ranging from QT theme to shell colors or iconsusrEnvuserspace exclusive configurations. E.g. lockscreen or package sets
secretsAgenix secrets
Notable Features
- Flakes enabled - leans heavily into flake-exclusive features of Nix
- All-in-one - Servers, desktops, laptops, virtual machines and anything you
can think of. Managed in one place.
- Sane Defaults - The modules attempt to bring the most sane defaults, while providing per-host toggles for conflicting choices.
- Flexible Modules - Both Home-manager and NixOS modules allow users to retrieve NixOS or home-manager configurations from anywhere.
- Extensive Configuration - Most desktop programs are configured out of the box and shared across hosts, with override options for per-host controls.
- Custom extended library - An extended library for functions that help organize my system.
- Shared Configurations - Reduces re-used boilerplate code by sharing modules and profiles across hosts.
- Fully Modular - Utilizes NixOS' module system to avoid hard-coding any of
the options.
- Profiles & Roles - Provide serialized configuration sets and pluggables for easily changing large portions of configurations with less options and minimal imports.
- Detached Homes - Home-manager configurations are able to be detached for non-NixOS usage.
- Modularized Flake Design - With the help of flake-parts, the flake is
fully modular: keeping my
flake.nixcleaner than ever. - Declarative Themes - Usi
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
