Skip to content

This repository contains the the configuration files for my NixOS instance. NixOS is a linux distribution that allows reproducibility. The point of the repository is such that I can store my configuration safely in the cloud, have version control, and sync any updates to all machines using this configuration as it supports mulitple machines.

License

Notifications You must be signed in to change notification settings

Tygo-van-den-Hurk/NixOS

Repository files navigation

This repository contains the the configuration files for the NixOS.

Contributors Good first issues The Eclipse Public License v2.0 badge

NixOS

The NixOS logo

What is NixOS?

NixOS is a Declarative linux distribution that allows reproducibility, and focuses of reliability.

1. Reproducible

Nix builds packages in isolation from each other. This ensures that they are reproducible and don’t have undeclared dependencies, so if a package works on one machine, it will also work on another. Declarative

2. Declarative

Nix makes it trivial to share development and build environments for your projects, regardless of what programming languages and tools you’re using. Reliable

3. Reliable

Nix ensures that installing or upgrading one package cannot break other packages. It allows you to roll back to previous versions, and ensures that no package is in an inconsistent state during an upgrade.

Structure of this Repository

This repository has 3 main directories:

  • Systems: the systems that I've configured. Load modules from modules/ . You can learn more about that module here.
  • Modules: is used to store a set of modules a system can load. You can learn more about that module here.
  • Users: this is were the home-manager data will be stored. You can read more about that module here.

Here is an overview of the structure:

NixOS/
├── library/
├── systems/
├── modules/
├── user/
├── flake.nix
└── flake.lock

There is also the flake.nix, and flake.lock of course here at the root. The flow is as follows:

  • The flake takes the argument from the CLI and loads the system from ./systems/ somewhere.
  • That system loads the module loader at /modules/default.nix, which you can read more about here.
  • The module loader loads the modules specified in the machines settings.

You can learn more about the structure of the systems directory, modules directory, or user directory by clicking these links.

Todo List

This is a todo-list of things we still need to do to get this system as I'd like. After all these are done, it will become a feature list! Go to To Do list

Learn NixOS

These resources helped me with building my own configuration file:

Name Link Explanation
NixOS Setup Guide - Configuration / Home-Manager / Flakes YouTube A good start/run down of how to make your NixOS config.
How to Start Adding Modularity to Your NixOS Config YouTube A guid to modularity. I recommend all his video's.
Nix Packages Manual ryantm's GitHub Pages Contains SO MANY useful library functions and their descriptions.

About

This repository contains the the configuration files for my NixOS instance. NixOS is a linux distribution that allows reproducibility. The point of the repository is such that I can store my configuration safely in the cloud, have version control, and sync any updates to all machines using this configuration as it supports mulitple machines.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published