docs: readme
This commit is contained in:
parent
38c00f771b
commit
b631904365
5 changed files with 156 additions and 0 deletions
BIN
.github/assets/2025-01-26T21:52:48,481278761+11:00.png
vendored
Normal file
BIN
.github/assets/2025-01-26T21:52:48,481278761+11:00.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 366 KiB |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
repodump.xml
|
||||||
5
.repomixignore
Normal file
5
.repomixignore
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
*.lock
|
||||||
|
**/equicord/options.nix
|
||||||
|
**/gruv.nix
|
||||||
|
.repomixignore
|
||||||
|
repomix*
|
||||||
125
README.md
Normal file
125
README.md
Normal file
|
|
@ -0,0 +1,125 @@
|
||||||
|
<h1 align=center> ooknet </h1>
|
||||||
|
<p align= center>A monorepo for all my nix expressions powered by flake-parts.</p>
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This repository serves two main purposes:
|
||||||
|
|
||||||
|
1. Centralized location for all my personal computing infrastructure.
|
||||||
|
2. A place to experiment and learn about networking, administration, security,
|
||||||
|
unix, design and programming.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> This repository is not intended to be used by anyone but myself. It is highly
|
||||||
|
> personalized and likely doesn't fit anyone else's needs. I leave this
|
||||||
|
> repository public to serve as a reference for anyone else building a something
|
||||||
|
> similar.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- NixOS configurations for all my hosts
|
||||||
|
- Home-manager configuration for my workstations
|
||||||
|
- Custom packages
|
||||||
|
- Development environments
|
||||||
|
- Declarative secrets with agenix
|
||||||
|
- Personal website
|
||||||
|
- Templates for bootstrapping projects
|
||||||
|
|
||||||
|
## Fleet
|
||||||
|
|
||||||
|
Below are all the hosts I currently maintain within this flake:
|
||||||
|
|
||||||
|
| host | spec | role | description | architecture | status |
|
||||||
|
| --------- | ------------------------------------- | ----------- | --------------------------------- | ------------ | ------ |
|
||||||
|
| ooksdesk | 7500F / RX5700XT / 32 GB DDR5 | Workstation | Primary desktop workstation | x86_64-linux | UP |
|
||||||
|
| ookst480s | T480s / i5-8350U / 24 GB DDR4 | Workstation | Primary mobile workstation | x86_64-linux | UP |
|
||||||
|
| ooksmicro | GPD Micro PC / N8100 / 8 GB LPDR3 | Workstation | Pocket workstation | x86_64-linux | UP |
|
||||||
|
| ooksmedia | i3-10100 / 1650 Super / 8 GB DDR4 | Server | Homelab/Media server | x86_64-linux | UP |
|
||||||
|
| ooksx1 | X1 Carbon G4 / i5 6200U / 8 GB LPDDR3 | Workstation | Alternative mobile workstation | x86_64-linux | DOWN |
|
||||||
|
| ooknode | Linode Nanode | Server | VPS for website | x86_64-linux | UP |
|
||||||
|
| ooksphone | Termux | Workstation | Nix environment for android phone | x86_64-linux | DOWN |
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
I like to experiment with different ideas a lot. Due to that, much of this is
|
||||||
|
subject to change. I will try to keep this readme as up to date as possible.
|
||||||
|
|
||||||
|
I won't go too indepth here, as everything is subject to change. But here is the
|
||||||
|
high-level.
|
||||||
|
|
||||||
|
One of the main goals of this project was to allow for easy bootstrapping of new
|
||||||
|
hosts while maintaining fine-grained configuration on a per-host basis. This is
|
||||||
|
accomplished using a roles and profiles pattern (similar to
|
||||||
|
[Puppet's roles and profiles method](https://www.puppet.com/docs/puppet/7/the_roles_and_profiles_method.html)).
|
||||||
|
|
||||||
|
#### Roles
|
||||||
|
|
||||||
|
- **Workstation**: Desktop/laptop systems with GUI environment
|
||||||
|
- **Server**: Headless systems running specific services
|
||||||
|
|
||||||
|
Roles are declared via their own respective helper functions `mkWorkstation` and
|
||||||
|
`mkServer`. Both being simple wrappers of
|
||||||
|
[`lib.nixosSystem`](https://github.com/NixOS/nixpkgs/blob/e5db80ae487b59b4e9f950d68983ffb0575e26c6/flake.nix#L21)
|
||||||
|
(also see [`lib.evalModules`](https://noogle.dev/f/lib/evalModules)). These
|
||||||
|
functions serve to abstract the boilerplate, leaving a simple interface for
|
||||||
|
declaring hosts.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
flake.nixosConfigurations = {
|
||||||
|
ookst480s = mkWorkstation {
|
||||||
|
inherit withSystem;
|
||||||
|
system = "x86_64-linux";
|
||||||
|
hostname = "ookst480s";
|
||||||
|
type = "laptop";
|
||||||
|
};
|
||||||
|
ooknode = mkServer {
|
||||||
|
inherit withSystem;
|
||||||
|
system = "x86_64-linux";
|
||||||
|
hostname = "ooknode";
|
||||||
|
domain = "ooknet.org";
|
||||||
|
type = "vm";
|
||||||
|
profile = "linode";
|
||||||
|
services = ["website" "forgejo"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Profiles
|
||||||
|
|
||||||
|
Profiles are collections of related software and configurations that can be
|
||||||
|
enabled on a per-host basis. Here are some example profiles for workstations:
|
||||||
|
|
||||||
|
- `gaming`: Steam & emulators
|
||||||
|
- `communication`: Discord, Teams, Matrix
|
||||||
|
- `productivity`: Document editing, note-taking
|
||||||
|
- `creative`: Art and design tools
|
||||||
|
- `media`: Audio/video playback and management
|
||||||
|
- `virtualization`: Virtual machine support
|
||||||
|
|
||||||
|
Example configuration:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
ooknet.workstation.profiles = ["gaming" "creative" "media"];
|
||||||
|
```
|
||||||
|
|
||||||
|
For servers, profiles are defined as services. For example:
|
||||||
|
|
||||||
|
- `ookflix`: Media server services
|
||||||
|
- `forgjo`: Git server
|
||||||
|
- `website`: My static website
|
||||||
|
|
||||||
|
```nix
|
||||||
|
ooknet.server.services = ["ookflix"];
|
||||||
|
```
|
||||||
|
|
||||||
|
## Desktop environment
|
||||||
|
|
||||||
|
All workstations run a minimal hyprland configuration made from a few
|
||||||
|
components:
|
||||||
|
|
||||||
|
- Hyprland
|
||||||
|
- Hypr* ware (hypridle, hyprlock, hyprpaper)
|
||||||
|
- Waybar (status bar)
|
||||||
|
- Mako (notifications)
|
||||||
25
repomix.config.json
Normal file
25
repomix.config.json
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"output": {
|
||||||
|
"filePath": "repodump.xml",
|
||||||
|
"style": "xml",
|
||||||
|
"fileSummary": true,
|
||||||
|
"directoryStructure": true,
|
||||||
|
"removeComments": false,
|
||||||
|
"removeEmptyLines": false,
|
||||||
|
"topFilesLength": 5,
|
||||||
|
"showLineNumbers": false,
|
||||||
|
"copyToClipboard": false
|
||||||
|
},
|
||||||
|
"include": [],
|
||||||
|
"ignore": {
|
||||||
|
"useGitignore": true,
|
||||||
|
"useDefaultPatterns": true,
|
||||||
|
"customPatterns": []
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"enableSecurityCheck": true
|
||||||
|
},
|
||||||
|
"tokenCount": {
|
||||||
|
"encoding": "o200k_base"
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue