/soxyn

NixOS Config. 60% of the time, it works everytime

Primary LanguageNixMIT LicenseMIT

Soxyn - My NixOS configurations - Stability Guarenteed or your Money Back

This repository contains my personal NixOS configurations, built using flakes. It provides a declarative and reproducible way to define and manage my system configuration.

Table of Contents

Introduction

NixOS is a Linux distribution that provides a purely functional approach to system configuration management. With NixOS, the entire operating system, including packages, libraries, and configuration files, is built using the Nix package manager.

This repository contains my personal NixOS configurations, tailored to my specific needs and preferences. It aims to provide a solid foundation for my development environment, system settings, and installed packages.

My goal is to evolve that configuration to have less manual setup on install (more imperative) and have more things synced between systems (or through the cloud). Basically the dream is to eliminate configuration drift.

Features

  • Built with flakes for reproducibility and declarative configuration.
  • Modular configuration structure for easy organization and customization.
  • Includes common system settings, user configuration, and package installations.
  • Supports multiple hardware configurations and profiles.
  • Provides a convenient way to manage dotfiles and additional customizations.

Limitations

  • Everything built around single user
    • currently no nice way to build multi-user version of systems
  • Limited machine specific config
  • cli greeter, using vulkan backend for sway breaks gui greeters with my graphics cards
  • hyper-optimized to my specific use cases
  • the following build instructions were generated by chatGPT. Use at own risk while this small disclaimer still exists! (probably after that too, lets be honest)

Future

  • reduce the above limitations
  • add more hosts
    • Naydra (NAS currently with containers)
    • Gleeok (VPS currently with mailserver/more containers)
    • rpi - any use for this with nix?
    • router - currently OPNSense. Consider trying nixos-router project
  • impermanence <- wipe the system every reboot and only persist necessary data
  • build container images with nixos
  • rewrite build/configuration instructions in README
  • PROPER documentation
    • if anyone somehow stumbles across this greasy little horror show then lets make their life a little easier, nix can be so confusing!
    • also for me as I'll forget why I did half the things I did 😅
      • add comments throughout
      • add READMEs in each major section to explain choices/motivations
  • add some extra contact links for anyone crazy enough to base their own config on mine 🤓

For more detailed plans see TODO

Getting Started

Please be careful with the following, generated by AI and needs rewriting to be specific to this repo

### Prerequisites

Before using these configurations, make sure you have the following prerequisites installed on your system:

- [Nix](https://nixos.org/download.html) - The Nix package manager.

### Installation

1. Clone this repository to your local machine:

   `git clone https://github.com/yourusername/your-repo-name.git`

2. Change to the repository directory:

   `cd your-repo-name`

3. Build and activate the NixOS system configuration:

   `nixos-rebuild switch --flake .`

   This command will build and activate the NixOS system configuration defined in `flake.nix` and `nixos/configuration.nix`.

### Usage

- To rebuild and activate the configuration:

  `nixos-rebuild switch --flake .`

- To update the system and installed packages:

  `nixos-rebuild switch --upgrade`


- To rollback to the previous configuration:

  `nixos-rebuild boot --rollback`

## Configuration

The main configuration files can be found in the `hosts` and `modules` directories. The `modules/core` directory defines the system-wide configuration, while the `modules/home` directory contains user-specific configurations.

Feel free to modify and extend these files to suit your needs. Add or remove packages, tweak system settings, or create new modules as necessary.

## Customization

To customize your NixOS configuration, you can:

- Edit the existing configuration files to modify system settings or package installations.
- Create new NixOS modules in the `modules` directory and import them into the main configuration file.

The modular structure of this configuration repository allows you to easily organize and extend your setup according to your preferences.

Contributing

Contributions are welcome! If you have any suggestions, improvements, or bug fixes, please open an issue or submit a pull request.

When contributing, please ensure that your changes align with the existing code style and conventions.

Contact

If you have any questions about the how or why of anything in here then please don't hesitate to reach out! Or even just if you found value and want to say thanks, I'd love to hear from you! I can be reached through any of the links below:

These work too, but not as actively monitored

If none of the above work you can always open an issue here too! 😄

License

This project is licensed under the MIT License. Feel free to use and modify the configurations as you see fit.

Special Thanks

A list of people whose amazing configs served as a reference while I fumbled my way through building my own. I love you all!