# linuxware

This repository contains the configuration of my main Linux based system(s), currently this repository consists of a
[NixOS] system configuration alongside [dotfiles] generated by [Home Manager] and [dotfiles] maintained by me.

## Navigation guide

In this section I will detail how you can navigate and make the most use out of my configuration.

### File structure

- [`flake.nix` & `flake.lock`](#flake)
  - _This is the "entry-point" of the [NixOS] configuration._
- [`hosts/`](/hosts/)
  - _Inside you can find the per-system customizations I've made._
- [`modules/`](/modules/)
  - _These contain the modules I export in the [flake](#flake)._
- [`packages/`](/packages/)
  - _Encompasses the packages I maintain outside or in tandem with [nixpkgs]._
- [`shared/`](/shared/)
  - _The [NixOS] and [Home Manager] configuration that's shared across hosts._
- [`assets/`](/assets/)
  - _All media used in this configuration or shown inside READMEs._

> _Be sure to click the hyperlinks for the relevant documentation._

#### Flake

A flake basically contains what you want to consume in your environment and what you want to export to be consumed, on
top of having a lockfile to pin the versions of what you are consuming.

Personally, the best way to learn how to use it as a beginner is the [Unofficial NixOS & Flakes
Book](https://nixos-and-flakes.thiscute.world/). I will not explain how to configure or use my flake as that would be
lenghty.

I export four modules that you can use in your configuration:
- [Hyprland NixOS configuration](/modules/hyprland/README.md)
  - _Accessed through `<linuxware>.nixosModules.hyprland`._
- [Hyprland home-manager configuration](/modules/hyprland/README.md#configuration)
  - _Accessed through `<linuxware>.homeManagerModules.hyprland`._
- [Emacs home-manager configuration & dotfiles](/modules/emacs/README.md)
  - _Accessed through `<linuxware>.homeManagerModules.emacs`_
- [Neovim home-manager configuration & dotfiles](/modules/neovim/README.md)
  - _Accessed through `<linuxware>.homeManagerModules.neovim`._

> _Be sure to click the hyperlinks for the relevant documentation._

To facilitate on-boarding, once you've set-up the experimental features needed for flakes I have provided a template
with this repository for you to use; it comes with a [NixOS] system configuration, [Home Manager] configuration
alongside the modules that I provide.

All you have to do is enter the directory you want your configuration to reside and execute
`nix flake init -t github:wizardlink/linuxware`. Be sure to read the `README.md` file!

## Desktop screenshot

![image](/assets/screenshots/full-system.png)

> _All screenshots of the system and it's components are available [here](/assets/README.md)._


<!-- REFERENCES -->

[dotfiles]: https://wiki.archlinux.org/title/Dotfiles
[home manager]: https://github.com/nix-community/home-manager
[nixos]: https://nixos.org/
[nixpkgs]: https://github.com/NixOS/nixpkgs/
