SkillAgentSearch skills...

Nyx

My overengineered NixOS flake. Desktops, laptops, servers and everything else that can run an OS.

Install / Use

/learn @NotAShelf/Nyx
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<h1 id="header" align="center"> <img src=".github/assets/nix-snowflake-colours.svg" width="128px" height="128px" /> <br> Nýx </h1> <!-- deno-fmt-ignore-start -->

[!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.

<!-- 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>

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 -->

[!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.

<!-- deno-fmt-ignore-end -->

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.nix Ground zero of my system configuration. Declaring entry points
  • docsThe documentation for my flake repository
    • cheatsheet Useful tips that are hard to memorize, but easy to write down
    • installing Non-exhaustive Nix/NixOS tips
  • parts/ Individual parts of my flake, powered by flake-parts
    • apps Basic executables for maintenance jobs
    • checks Additional checks to build on nix flake check
    • lib Personal library of functions and utilities
    • modules NixOS/Home-manager modules provided by my flake for both internal and public use
    • npins Additional pinned dependencies, managed via npins
    • pkgs Packages exported by my flake
    • pre-commit pre-commit hooks via git-hooks.nix
    • templates Templates for initializing new flakes. Provides some language-specific flakes
    • args.nix Common arguments that will be shared across, or exposed by the flake
    • deployments.nix Host setups for deploy-rs, currently a work in progress
    • fmt.nix Various formatting options for nix fmt and friends
    • iso-images.nix Configurations for my home-built iso images, to be exposed in the flake schema
    • keys.nix My public keys to be shared across the flake
    • shell.nix Local devShell configurations
  • homes My personalized Home-Manager configurations.
  • hosts Per-host configurations that contain machine specific instructions and setups
  • modules Modularized NixOS configurations
    • core The core module that all systems depend on
      • common Module configurations shared between all hosts (except installers)
      • profiles Pluggable internal module system, for providing overrides based on host declarations (e.g. purpose)
      • roles A profile-like system that work through imports and ship predefined configurations
    • extra Extra modules that are rarely imported
      • shared Modules that are both shared for outside consumption, and imported by the flake itself
      • exported Modules that are strictly for outside consumption and are not imported by the flake itself
    • options Definitions of module options used by common modules
      • meta Internal, read-only module that defines host capabilities based on other options
      • device Hardware capabilities of the host
      • documentation Local module system documentation
      • system OS-wide configurations for generic software and firmware on system level
      • style Active style configurations ranging from QT theme to shell colors or icons
      • usrEnv userspace exclusive configurations. E.g. lockscreen or package sets
  • secrets Agenix 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.nix cleaner than ever.
    • Declarative Themes - Usi

Related Skills

View on GitHub
GitHub Stars423
CategoryDevelopment
Updated1d ago
Forks12

Languages

Nix

Security Score

100/100

Audited on Mar 27, 2026

No findings