Compare commits

...
Sign in to create a new pull request.

91 commits

Author SHA1 Message Date
ad529af6f7
Configured Languagetool Spellchecking Server
All checks were successful
/ Check Nix Flake (push) Successful in 1m58s
2025-04-17 12:35:47 +02:00
e5b411d9fd
Added Olympus Celeste Mod-Manager 2025-04-17 12:35:11 +02:00
d887ac5a5b
Added Olympus to LoyAdjo
All checks were successful
/ Check Nix Flake (push) Successful in 1m53s
2025-04-11 23:01:39 +02:00
ea9cb70b19
Added Olympus Mod-loader Installer for Celeste
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2025-04-11 23:01:05 +02:00
2232055e7b
Updated System
All checks were successful
/ Check Nix Flake (push) Successful in 1m58s
2025-04-11 21:37:53 +02:00
f6a73364f8
Added ungoogled-chromium, Removed Telegram-Desktop, Added Deltachat-Desktop, Added Helix as default Editor
All checks were successful
/ Check Nix Flake (push) Successful in 1m39s
2025-04-11 17:31:43 +02:00
948141a4a6 Merge branch 'main' of ssh://git.kb-one.de:9522/kb01/aux-config
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2025-04-11 17:29:51 +02:00
373b391e83
Merged Remote with local changes 2025-04-11 17:29:04 +02:00
b42344f931
Updated Systems, removed Nixpkgs Pin, Updated Lix
All checks were successful
/ Check Nix Flake (push) Successful in 2m30s
2025-04-11 17:26:48 +02:00
7603072602
Removed inactive substituder, removed insecure packages, added steam 2025-04-11 17:26:21 +02:00
633fa2b73a
Added ZFS Support 2025-03-26 22:18:11 +01:00
612a1414e1
Added Automatic Firmware Extraction
All checks were successful
/ Check Nix Flake (push) Successful in 1m55s
2025-03-26 19:33:07 +01:00
b542218ba7
Updated Filelight Package
All checks were successful
/ Check Nix Flake (push) Successful in 2m12s
2025-03-26 12:31:00 +01:00
6d654824a5
Removed old Systems 2025-03-26 12:30:39 +01:00
d143da39c7
Updated Ohybke, Added itinerary, Removed Colliding Touchpad Config 2025-03-26 12:21:54 +01:00
f817f1425f
Updated Systems, Pinned Nixpkgs because of Logseq reinit
Some checks failed
/ Check Nix Flake (push) Failing after 53s
2025-03-21 22:48:52 +01:00
a0dcf3e46a
Added ZFS support 2025-03-21 22:48:05 +01:00
05cd784da0
Fixed Remote-Build Parts
All checks were successful
/ Check Nix Flake (push) Successful in 2m14s
2025-03-10 23:58:08 +01:00
60a3b4eb33
Added Ohybke Remote-Builds
Some checks failed
/ Check Nix Flake (push) Failing after 2m0s
2025-03-10 23:45:50 +01:00
cbccbed0cc
Added Host kb-senfnvp
All checks were successful
/ Check Nix Flake (push) Successful in 2m44s
2025-03-07 01:54:44 +01:00
dbc4df9284
Added SSH Client Config
All checks were successful
/ Check Nix Flake (push) Successful in 2m7s
2025-02-24 11:56:53 +01:00
cebe89819e
Added Regular needed Packages 2025-02-24 11:56:14 +01:00
222d102e4b
Added Bosto Touchpad Support 2025-02-24 11:55:43 +01:00
18a5bde462
Added Ohybke SSH-Public Key
All checks were successful
/ Check Nix Flake (push) Successful in 2m33s
2025-02-23 22:36:02 +01:00
8a73af6a7c
Added NAS Suite
All checks were successful
/ Check Nix Flake (push) Successful in 2m4s
2025-02-22 02:45:49 +01:00
27b57e4949
Enabled SafeEyes
All checks were successful
/ Check Nix Flake (push) Successful in 1m55s
2025-02-18 21:48:51 +01:00
df0baff240
Enabled KDE Connect
All checks were successful
/ Check Nix Flake (push) Successful in 1m55s
2025-02-18 21:13:06 +01:00
0e3a372b98
Sketchy Workarround to Linking the Homes
All checks were successful
/ Check Nix Flake (push) Successful in 1m52s
2025-02-14 01:39:51 +01:00
6d5c8493a8
Try Fixing Home-Links
All checks were successful
/ Check Nix Flake (push) Successful in 1m50s
2025-02-14 01:37:31 +01:00
700a7b5b55
Try Fixing Home-Links
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2025-02-14 01:35:55 +01:00
d61cd420a4
Added Host Ohybke
All checks were successful
/ Check Nix Flake (push) Successful in 2m5s
2025-02-14 01:30:40 +01:00
7aa89c35ab
Updated System 2025-02-14 01:28:26 +01:00
373a9bcd70
Fixed License File-Name
All checks were successful
/ Check Nix Flake (push) Successful in 1m43s
2025-02-10 01:50:18 +01:00
b5d0d0fe05
Added Numen-Service, Restructured File
All checks were successful
/ Check Nix Flake (push) Successful in 1m45s
2025-02-10 01:47:52 +01:00
534377c8d2
Restructured Numen Service 2025-02-10 01:46:54 +01:00
15404622dc
Updated Readme, Added detailed Systems Information 2025-02-10 01:43:36 +01:00
1f9f5a1914 Merge branch 'main' of ssh://git.kb-one.de:9522/kb01/aux-config
All checks were successful
/ Check Nix Flake (push) Successful in 1m44s
Signed-off-by: kB01 <kb01@kb-one.de>
2025-02-09 20:16:27 +01:00
4a4f681ab6
Removed Template Comments 2025-02-09 20:13:49 +01:00
99d455bbfd
Configured Snowfall Namespace 2025-02-09 20:13:30 +01:00
ca3b1adf5e
Added partial Unl0kr Support
All checks were successful
/ Check Nix Flake (push) Successful in 1m40s
2025-02-09 19:22:12 +01:00
42ca8978c4
Added HyperC Remotebuild Public-Key
All checks were successful
/ Check Nix Flake (push) Successful in 1m46s
2025-02-09 16:40:25 +01:00
834a1f7cd5
Added SafeEye, Renamed Options Fix
All checks were successful
/ Check Nix Flake (push) Successful in 1m47s
2025-02-09 14:15:07 +01:00
7303d173ec
luckperms Config is now nixified AND uses SOPS secrets
All checks were successful
/ Check Nix Flake (push) Successful in 1m46s
2025-02-09 00:14:13 +01:00
eb76d220f4
Fixed various Things for Pipeline to pass
All checks were successful
/ Check Nix Flake (push) Successful in 2m27s
2025-02-08 22:16:37 +01:00
14253d71b6
Added Sops to all Hosts, Added LoyAdjos Sops Key 2025-02-08 22:15:25 +01:00
959fd540dc
Added tmux 2025-02-08 22:13:08 +01:00
4da782cf6a
Renamed services.pulseaudio to fix warning
Some checks failed
/ Check Nix Flake (push) Failing after 30s
2025-02-07 01:50:05 +01:00
dbc046ca9b
Enabled SafeEyes Service 2025-02-07 01:48:19 +01:00
36e5ef2ef4
Replaced Workrave with SafeEyes
Some checks failed
/ Check Nix Flake (push) Failing after 29s
2025-02-07 01:32:34 +01:00
ba92c7ca8a
Added workrave and Nerdfont
Some checks failed
/ Check Nix Flake (push) Failing after 29s
2025-02-07 01:03:31 +01:00
979896fe3e
Updated Flake.lock 2025-02-07 01:03:13 +01:00
e3cd2ad60c
Added Sops, Set Default Editor
Some checks failed
/ Check Nix Flake (push) Failing after 32s
2025-02-06 23:47:37 +01:00
b122b41265
Updated Minecraf-Server Config
Some checks failed
/ Check Nix Flake (push) Failing after 31s
2025-01-31 12:48:08 +01:00
17fce87568 Merge branch 'main' of ssh://git-kb-one-de/kb01/aux-config
Some checks failed
/ Check Nix Flake (push) Failing after 33s
2025-01-26 02:44:23 +01:00
97637d0650
Setup SOPS for Minecraft-Server Plugin Config. --impure is now needed 2025-01-26 02:43:21 +01:00
168d1d6933
Added Sops, Disabled Binary-Cache, VIM as default Editor 2025-01-26 02:42:29 +01:00
8a12217299
Fixed Typo 2025-01-26 02:31:01 +01:00
cad834ade0
Added Helix
Some checks failed
/ Check Nix Flake (push) Failing after 35s
2025-01-25 23:09:42 +01:00
6b45ffcfa7
Added LanguageTool Server
Some checks failed
/ Check Nix Flake (push) Failing after 35s
2025-01-21 22:10:55 +01:00
5c2130355f
Added Brave browser
Some checks failed
/ Check Nix Flake (push) Failing after 32s
2025-01-17 21:59:08 +01:00
b3ed9896f8
Added Deltachat
Some checks failed
/ Check Nix Flake (push) Failing after 36s
2025-01-17 18:39:34 +01:00
c7586129e4
Enabled KDE Connect Service
Some checks failed
/ Check Nix Flake (push) Failing after 34s
2025-01-17 12:56:08 +01:00
5e3533c344
Added Transmission
Some checks failed
/ Check Nix Flake (push) Failing after 36s
2025-01-17 12:27:54 +01:00
dce7ba9c99
Configured TLP Service for Power-Management (Power-Profiles didn't work) 2025-01-17 12:27:40 +01:00
a6b23717ae
Added QUEMU Guest Agent, and enabled Forgejo Runner
Some checks failed
/ Check Nix Flake (push) Failing after 58s
2025-01-09 23:00:25 +01:00
850e904d22
Explicitely Added Old Intel Driver
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2025-01-07 23:16:35 +01:00
bc61238e78
Beautified hardware.nix
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2025-01-07 22:25:57 +01:00
77bcd7c1fc
Added kmymoney 2025-01-07 22:25:27 +01:00
357546359e Merge branch 'main' of ssh://git.kb-one.de:9522/kb01/aux-config
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2025-01-05 14:01:07 +01:00
0dc0a1aafb
Added Bosto Touchpad Support 2025-01-05 14:00:36 +01:00
839188a231
Renamed Host kb-games-01 to kb-game-01
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2025-01-01 22:51:10 +01:00
a5665ba46a
Moved SSH-Agent Config to System
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2025-01-01 19:46:12 +01:00
a87f36a088
Added Bluetooth support to LoyAdjo and LANA9Z
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2025-01-01 05:02:44 +01:00
4a86e9b073
Modifyed LANA9Z to match real Installation
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2024-12-28 21:14:52 +01:00
1e78a09448
Added Host LANA9Z, Updated Flake
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2024-12-26 02:13:44 +01:00
93e441c7dc
Added Numen Voice to LoyAdjo
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2024-12-25 23:59:03 +01:00
d1217785e4
Updated System
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2024-12-23 23:15:43 +01:00
c67d54de46
Added Numenvoice to Rubtrm
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2024-12-20 01:52:06 +01:00
ad0920dcf1
Added Numenvoice 2024-12-20 01:51:36 +01:00
d6db44884c
Added DB to Minecraft-Server, Added Plugins, Added Config-Files
Some checks failed
/ Check Nix Flake (push) Has been cancelled
2024-12-14 02:29:16 +01:00
6ef2d877db
Added tree as System Package 2024-12-14 02:28:33 +01:00
41a334a6e9
Enabled SSH-Server
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2024-12-13 01:32:14 +01:00
61520fefb4
Removed Public-Key File (trash)
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2024-12-13 01:20:13 +01:00
9fbd67d55a
Added Remotebuild Public-Key to LoyAdjo
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2024-12-13 01:19:22 +01:00
735fae2309
Added Remotebuild-Config to LoyAdjo
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2024-12-13 01:14:54 +01:00
6ceae80d02
Merged host Rubtrm with main
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2024-12-12 19:27:13 +01:00
697ec130ab
Added Rubtrm SSH-Public-Key to remotebuild user
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2024-12-11 23:59:12 +01:00
014e00f9cb
Fixed and Enabled Binary Cache
Some checks are pending
/ Check Nix Flake (push) Waiting to run
2024-12-11 23:56:54 +01:00
5af29d9004
Added Binary-Cache Experimental Implementation (Networking is borked)
Some checks failed
/ Check Nix Flake (push) Failing after 1m35s
2024-12-11 02:31:30 +01:00
58b9f200dd
Added Packages 2024-12-11 01:01:54 +01:00
e9decd46c6
Added Iso-Build Config for Plasma 6 2024-12-11 01:00:48 +01:00
63 changed files with 2627 additions and 619 deletions

View file

@ -1,10 +1,9 @@
keys: keys:
- &kbwork_yerukall CEFAA4772EBDE0F5CFD1D1B3ED7E4FF32820BDE8 - &server_kb-game-01 age165jt2q3uxp79k4jfsegnq7ul9j54l2rqsn87rq0qjkcv3y5krcmqsznyw7
- &kbwork_yerukall2 age1lyv48cuxvnwp4ykugw57zjl728pn2tvss6486n9avgvw6uqj3ydqddkrmu - &client_LANA9Z age12v97unnfjmhm3ataxpl3mp89kxsr9hdqs4kmgsx8ys75m4ljey5qkf4t55
- &client_LoyAdjo age19tr9srawrft90s2a0cydqhuqt3f08aezmj82s43yhgzdte4fv4wstkchsz
creation_rules: creation_rules:
- path_regex: systems/x86_64-linux/yerukall/secrets/secrets.yaml$ - path_regex: modules/nixos/services/minecraft/secrets.yaml$
key_groups: key_groups:
- pgp: - age:
- *kbwork_yerukall - *server_kb-game-01
age:
- *kbwork_yerukall2

View file

View file

@ -1,7 +1,7 @@
# My NixOS Configurations # My NixOS Configurations
![Forgejo Issues](https://img.shields.io/gitea/issues/open/kb01/nix-config?gitea_url=https%3A%2F%2Fgit.kb-one.de) ![Forgejo Issues](https://img.shields.io/gitea/issues/open/kb01/nix-config?gitea_url=https%3A%2F%2Fgit.kb-one.de)
![Forgejo Release](https://img.shields.io/gitea/v/release/kb01/nix-config?gitea_url=https%3A%2F%2Fgit.kb-one.de) ![Forgejo Last Commit](https://img.shields.io/gitea/last-commit/kb01/aux-config?gitea_url=https%3A%2F%2Fgit.kb-one.de)
[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme) [![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
This repository contains my Flake based NixOS Configuration Files. This repository contains my Flake based NixOS Configuration Files.
@ -14,91 +14,50 @@ Clone this Repository somewhere you can edit it easily:
git clone https://git.kb-one.de/kb01/aux-config ~/Project/aux-config git clone https://git.kb-one.de/kb01/aux-config ~/Project/aux-config
``` ```
Check if your Hostname matches one of the [Hosts](#hosts) in the config. Check if the Hostname of your System matches one of the [Systems](./systems/).
```bash ```bash
hostname hostname
``` ```
<details> <details>
<summary>Hostname does not Match (click to expand)</summary> <summary>Hostname does not Match (click to expand)</summary>
Install NixOS on the current system with forced hostname. Install NixOS on the current System with forced Hostname.
```bash ```bash
cd ~/Project/aux-config cd ~/Project/aux-config
sudo nixos-rebuild switch --flake .#voloxo sudo nixos-rebuild switch --flake .#LoyAdjo
``` ```
> **Warning** > **Warning**
> >
> This will change the Hostname of your System to voloxo! > This will change the Hostname of your System to LoyAdjo!
</details> </details>
Install NixOS for your current Hostname. Install NixOS System with current Hostname.
```bash ```bash
cd ~/Project/aux-config cd ~/Project/aux-config
sudo nixos-rebuild switch --flake . sudo nixos-rebuild switch --flake .
``` ```
### Updating the Flake Based NixOS Installation ### Updating the Flake based NixOS installation
```bash ```bash
cd ~/Project/aux-config cd ~/Project/aux-config
sudo nix flake --update # This Updates the flake.lock sudo nix flake --update # This Updates the flake.lock
sudo nixos-rebuild switch --flake . sudo nixos-rebuild switch --flake .
``` ```
### Modify NixOS Installation ### Modify NixOS installation
1. Edit the config in ~/Project/aux-config `vim system/x86_64-linux/$HOST/default.nix` 1. Edit the config in ~/Project/aux-config `vim system/x86_64-linux/$HOST/default.nix`
2. Stage the Changes if you created or deleted Files `git add .` (They will be ignored if you miss this step!) 2. Stage the Changes if you created or deleted Files `git add .` (They will be ignored if you miss this step!)
3. Build your System to apply the changes `sudo nixos-rebuild switch --flake .` 3. Build your System to apply the changes `sudo nixos-rebuild switch --flake .`
4. Commit your Changes if satisfied `git commit -m "Added Software hello-world"` 4. Commit your Changes if satisfied `git commit -m "Added Software hello-world"`
5. Then Push your Changes to the Remote, so that other systems can update `git push` 5. Then Push your Changes to the Remote, so that other systems can update `git push`
## Hosts ## Used Work
### [HyperC](./systems/x86_64-linux/HyperC) [Server Icon](./assets/server-solid.svg) © [FontAwesome](https://fontawesome.com) under the [CC BY 4.0 License](https://creativecommons.org/licenses/by/4.0/)
Surface Pro 2017 Tablet
User: [kb@HyperC](./homes/x86_64-linux/kb@HyperC)
Cpu: Intel i5-7300U
Ram: 8GB
### [LoyAdjo](./systems/x86_64-linux/LoyAdjo)
My Gaming Desktop
User: [kb@LoyAdjo](./homes/x86_64-linux/kb@LoyAdjo)
Cpu: AMD Ryzen 5 5600X
Ram: 32GB
Gpu: NVIDIA GeForce GTX 1070
### [kb-games-01](./systems/x86_64-linux/kb-games-01)
My KVM Server for Gameservers (wip)
Cpu: AMD EPYC 7702P 64-Core (4 Cores)
Ram: 16GB
### [U3ncSovm](./systems/x86_64-linux/U3ncSovm)
My NAS Server, currently under construction only as VM.
Cpu: 3 Cores of Host
Ram: 3GB of Host
Build: `nixos-rebuild build-vm --flake .#U3ncSovm`
### [Rubtrm](./systems/i686-linux/Rubtrm)
My Lenovo ideapad S10 4333-A13
Cpu: Intel Atom N270 (2 Cores, 1.6GHz)
Ram: 2GB
## License ## License
[MIT © kB01](../LICENSE) [MIT © kB01](./LICENSE)

BIN
assets/HyperC.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
assets/LANA9Z.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
assets/LoyAdjo.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
assets/Ohybke.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
assets/Rubtrm.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

1
assets/server-solid.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"/></svg>

After

Width:  |  Height:  |  Size: 627 B

133
flake.lock generated
View file

@ -3,11 +3,11 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1673956053, "lastModified": 1733328505,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -37,11 +37,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1726560853, "lastModified": 1731533236,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -74,11 +74,11 @@
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1681202837, "lastModified": 1731533236,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -127,11 +127,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1733769654, "lastModified": 1744380363,
"narHash": "sha256-aVvYDt8eitZVF6fdOrSoIzYRkQ5Gh6kfRvqkiaDRLL0=", "narHash": "sha256-cXjAUuAfQDPSLSsckZuTioQ986iqSPTzx8D7dLAcC+Q=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e952e94955dcc6fa2120c1430789fc41363f5237", "rev": "e43c6bcb101ba3301522439c459288c4a248f624",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -143,15 +143,15 @@
"lix": { "lix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1729298361, "lastModified": 1737234286,
"narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=", "narHash": "sha256-pgDJZjj4jpzkFxsqBTI/9Yb0n3gW+DvDtuv9SwQZZcs=",
"rev": "ad9d06f7838a25beec425ff406fe68721fef73be", "rev": "079528098f5998ba13c88821a2eca1005c1695de",
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be" "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/079528098f5998ba13c88821a2eca1005c1695de.tar.gz?rev=079528098f5998ba13c88821a2eca1005c1695de"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz" "url": "https://git.lix.systems/lix-project/lix/archive/release-2.92.tar.gz"
} }
}, },
"lix-module": { "lix-module": {
@ -159,20 +159,18 @@
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"flakey-profile": "flakey-profile", "flakey-profile": "flakey-profile",
"lix": "lix", "lix": "lix",
"nixpkgs": [ "nixpkgs": "nixpkgs"
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1729360442, "lastModified": 1742943028,
"narHash": "sha256-6U0CyPycIBc04hbYy2hBINnVso58n/ZyywY2BD3hu+s=", "narHash": "sha256-fprwZKE1uMzO9tiWWOrmLWBW3GPkMayQfb0xOvVFIno=",
"rev": "9098ac95768f7006d7e070b88bae76939f6034e6", "rev": "868d97695bab9d21f6070b03957bcace249fbe3c",
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/9098ac95768f7006d7e070b88bae76939f6034e6.tar.gz" "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/868d97695bab9d21f6070b03957bcace249fbe3c.tar.gz?rev=868d97695bab9d21f6070b03957bcace249fbe3c"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz" "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0-3.tar.gz"
} }
}, },
"nix-minecraft": { "nix-minecraft": {
@ -184,11 +182,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1733709556, "lastModified": 1744336560,
"narHash": "sha256-u0ll0DDrKlO7tiLGGtmphv3wFy5ReDuf0USo/OlfROU=", "narHash": "sha256-AT9txrVhjfNN49IQPlfWIOQh4UYbn9A9uE48fWaxAqc=",
"owner": "Infinidoge", "owner": "Infinidoge",
"repo": "nix-minecraft", "repo": "nix-minecraft",
"rev": "8d11f147df83fe137d3d94f6f3646e3a52bec855", "rev": "9ebc4b48a684cc3cb7e227540aac00090eb60169",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -197,13 +195,49 @@
"type": "github" "type": "github"
} }
}, },
"nixlib": {
"locked": {
"lastModified": 1736643958,
"narHash": "sha256-tmpqTSWVRJVhpvfSN9KXBvKEXplrwKnSZNAoNPf/S/s=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "1418bc28a52126761c02dd3d89b2d8ca0f521181",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixos-generators": {
"inputs": {
"nixlib": "nixlib",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1742568034,
"narHash": "sha256-QaMEhcnscfF2MqB7flZr+sLJMMYZPnvqO4NYf9B4G38=",
"owner": "nix-community",
"repo": "nixos-generators",
"rev": "42ee229088490e3777ed7d1162cb9e9d8c3dbb11",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixos-generators",
"type": "github"
}
},
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1733481457, "lastModified": 1744366945,
"narHash": "sha256-IS3bxa4N1VMSh3/P6vhEAHQZecQ3oAlKCDvzCQSO5Is=", "narHash": "sha256-OuLhysErPHl53BBifhesrRumJNhrlSgQDfYOTXfgIMg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "e563803af3526852b6b1d77107a81908c66a9fcf", "rev": "1fe3cc2bc5d2dc9c81cb4e63d2f67c1543340df1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -215,11 +249,27 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1733759999, "lastModified": 1742669843,
"narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=", "narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56", "rev": "1e5b653dff12029333a6546c11e108ede13052eb",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1744232761,
"narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "f675531bc7e6657c10a18b565cfebd8aa9e24c14",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -234,8 +284,9 @@
"home-manager": "home-manager", "home-manager": "home-manager",
"lix-module": "lix-module", "lix-module": "lix-module",
"nix-minecraft": "nix-minecraft", "nix-minecraft": "nix-minecraft",
"nixos-generators": "nixos-generators",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs_2",
"snowfall-lib": "snowfall-lib", "snowfall-lib": "snowfall-lib",
"sops-nix": "sops-nix" "sops-nix": "sops-nix"
} }
@ -249,11 +300,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1732544274, "lastModified": 1736130495,
"narHash": "sha256-qvzLIxuqukl0nxpXHEh5+iw1BLeLxYOwRC0+7cFUbPo=", "narHash": "sha256-4i9nAJEZFv7vZMmrE0YG55I3Ggrtfo5/T07JEpEZ/RM=",
"owner": "snowfallorg", "owner": "snowfallorg",
"repo": "lib", "repo": "lib",
"rev": "cfeacd055545ab5de0ecfd41e09324dcd8fb2bbb", "rev": "02d941739f98a09e81f3d2d9b3ab08918958beac",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -269,11 +320,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1733785344, "lastModified": 1744103455,
"narHash": "sha256-pm4cfEcPXripE36PYCl0A2Tu5ruwHEvTee+HzNk+SQE=", "narHash": "sha256-SR6+qjkPjGQG+8eM4dCcVtss8r9bre/LAxFMPJpaZeU=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "a80af8929781b5fe92ddb8ae52e9027fae780d2a", "rev": "69d5a5a4635c27dae5a742f36108beccc506c1ba",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -6,39 +6,44 @@
snowfall-lib.inputs.nixpkgs.follows = "nixpkgs"; snowfall-lib.inputs.nixpkgs.follows = "nixpkgs";
sops-nix.url = "github:Mic92/sops-nix"; sops-nix.url = "github:Mic92/sops-nix";
sops-nix.inputs.nixpkgs.follows = "nixpkgs"; sops-nix.inputs.nixpkgs.follows = "nixpkgs";
lix-module.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz"; lix-module.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0-3.tar.gz";
lix-module.inputs.nixpkgs.follows = "nixpkgs";
home-manager.url = "github:nix-community/home-manager"; home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
nix-minecraft.url = "github:Infinidoge/nix-minecraft"; nix-minecraft.url = "github:Infinidoge/nix-minecraft";
nix-minecraft.inputs.nixpkgs.follows = "nixpkgs"; nix-minecraft.inputs.nixpkgs.follows = "nixpkgs";
nixos-generators.url = "github:nix-community/nixos-generators";
nixos-generators.inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = inputs: inputs.snowfall-lib.mkFlake { outputs = inputs: inputs.snowfall-lib.mkFlake {
inherit inputs; inherit inputs;
src = ./.; src = ./.;
channels-config.allowUnfree = false; # Configure Nix
supportedSystems = inputs.snowfall-lib.inputs.flake-utils-plus.lib.defaultSystems ++ ["i686-linux"];
nix.gc = { nix.gc = {
automatic = true; automatic = true;
options = "--delete-older-than 30d"; options = "--delete-older-than 30d";
}; };
nix.optimise.automatic = true; nix.optimise.automatic = true;
channels-config.allowUnfree = false;
# Configure Flake Utils Plus
supportedSystems = inputs.snowfall-lib.inputs.flake-utils-plus.lib.defaultSystems ++ ["i686-linux"];
# Configure Snowfall Lib
snowfall = {
meta.name = "kB01s System Configuration Flake";
meta.title = "kB01s System Configuration Flake";
namespace = "kb-one";
};
# Modules for Host HyperC # Modules for Host HyperC
systems.hosts.HyperC.modules = with inputs; [ systems.hosts.HyperC.modules = with inputs; [
lix-module.nixosModules.default lix-module.nixosModules.default
]; ];
# Modules for Host voloxo # Modules for Host kb-game-01
systems.hosts.voloxo.modules = with inputs; [ systems.hosts.kb-game-01.modules = with inputs; [
lix-module.nixosModules.default
];
# Modules for Host kb-games-01
systems.hosts.kb-games-01.modules = with inputs; [
lix-module.nixosModules.default lix-module.nixosModules.default
]; ];
@ -54,6 +59,7 @@
# Modules that get imported to every NixOS system # Modules that get imported to every NixOS system
systems.modules.nixos = with inputs; [ systems.modules.nixos = with inputs; [
sops-nix.nixosModules.sops
]; ];
outputs-builder = channels: { formatter = channels.nixpkgs.nixfmt-rfc-style; }; outputs-builder = channels: { formatter = channels.nixpkgs.nixfmt-rfc-style; };

View file

@ -0,0 +1,22 @@
{ config, pkgs, lib, inputs, ... }:
{
home.username = "master";
home.homeDirectory = "/home/master";
home.packages = with pkgs; [
fastfetch
btop
sops
];
# SSH Configuration
programs.ssh.enable = true;
programs.ssh.matchBlocks."kb01@kb-one-git" = {
host = "git.kb-one.de";
user = "git";
identityFile = "/home/master/.ssh/kb01@kb-one-git";
port = 9522;
};
home.stateVersion = "24.05"; # NEVER CHANGE!!!
}

View file

@ -22,13 +22,12 @@ in {
kdePackages.kcalc kdePackages.kcalc
fastfetch fastfetch
btop btop
filelight kdePackages.filelight
# Office # Office
thunderbird thunderbird
libreoffice-qt libreoffice-qt
logseq logseq
xournalpp xournalpp
xournal
rnote rnote
# Security # Security
gnupg gnupg

View file

@ -18,7 +18,7 @@ in {
home.homeDirectory = "/home/kb"; home.homeDirectory = "/home/kb";
home.packages = with pkgs; [ home.packages = with pkgs; [
# System # System
kate kdePackages.kate
kdePackages.kcalc kdePackages.kcalc
# Office # Office
thunderbird thunderbird
@ -48,7 +48,6 @@ in {
signal-desktop signal-desktop
webcord webcord
# Customization # Customization
nerdfonts
razergenie razergenie
firefoxpwa firefoxpwa
# Development # Development
@ -61,8 +60,11 @@ in {
mangohud mangohud
prismlauncher prismlauncher
# Terminal Tools # Terminal Tools
tmux
mosh
btop btop
fastfetch fastfetch
kb-one.olympus
]; ];
services.syncthing.enable = true; services.syncthing.enable = true;
@ -70,6 +72,7 @@ in {
"--config=/home/kb/.config/syncthing" "--config=/home/kb/.config/syncthing"
"--data=/home/kb/sync" "--data=/home/kb/sync"
]; ];
services.safeeyes.enable = true;
services.gpg-agent.enable = true; services.gpg-agent.enable = true;

View file

@ -0,0 +1,196 @@
{ config, pkgs, lib, inputs, ... }:
let
# Firefox Profile Setting States
lock-false = {
Value = false;
Status = "locked";
};
lock-true = {
Value = true;
Status = "locked";
};
lock-empty-string = {
Value = "";
Status = "locked";
};
in {
home.username = "kb";
home.homeDirectory = "/home/kb";
home.packages = with pkgs; [
# System
kdePackages.kate
kdePackages.kcalc
# Office
thunderbird
libreoffice-qt6-fresh
logseq
kdePackages.itinerary
ungoogled-chromium
# Security
gnupg
keepassxc
pass-wayland
veracrypt
protonvpn-gui
# Media
freetube
inkscape
blender
obs-studio
cheese
gimp
vlc
kid3
#calibre
spotify-player
tidal-hifi
# Messengers
element-desktop # Matrix Client
signal-desktop
deltachat-desktop
webcord
# Customization
razergenie
firefoxpwa
# Development
vscodium
scrcpy
# Experiments
yazi # Terminal File-Manager
# Gaming
ryujinx # Experimental Nitendo Switch Emulator
mangohud
prismlauncher
kb-one.olympus
# Terminal Tools
mosh
btop
fastfetch
];
services.syncthing.enable = true;
services.syncthing.extraOptions = [
"--config=/home/kb/.config/syncthing"
"--data=/home/kb/sync"
];
services.kdeconnect.enable = true;
services.safeeyes.enable = true;
services.gpg-agent.enable = true;
# SSH Configuration
services.ssh-agent.enable = true;
programs.ssh.enable = true;
programs.ssh.matchBlocks."kb01@kb-one-git" = {
host = "git.kb-one.de";
user = "git";
identityFile = "/home/kb/.ssh/kb01@kb-one-git";
port = 9522;
};
programs.ssh.matchBlocks."kb01@0x90-git" = {
host = "git.0x90.space";
user = "git";
identityFile = "/home/kb/.ssh/kb01@0x90-git";
};
programs.ssh.matchBlocks."master@kb-game-01" = {
host = "kb-game-01";
hostname = "game01.kb-one.de";
user = "master";
identityFile = "/home/kb/.ssh/master@kb-game-01";
port = 3422;
};
programs.ssh.matchBlocks."master@kb-web-01" = {
host = "kb-web-01";
hostname = "kb-one.de";
user = "master";
identityFile = "/home/kb/.ssh/master@kb-web-01";
port = 2222;
};
programs.ssh.matchBlocks."root@kb-senfnvp-remoteunlock" = {
host = "kb-senfnvp-remoteunlock";
hostname = "senfnvp.kb-one.de";
user = "root";
identityFile = "/home/kb/.ssh/root@kb-senfnvp-remoteunlock";
port = 7299;
};
programs.ssh.matchBlocks."master@kb-senfnvp" = {
host = "kb-senfnvp";
hostname = "senfnvp.kb-one.de";
user = "master";
identityFile = "/home/kb/.ssh/master@kb-senfnvp";
port = 9553;
};
programs.helix.enable = true;
programs.helix.defaultEditor = true;
programs.firefox = {
enable = true;
nativeMessagingHosts = [ pkgs.firefoxpwa ];
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableFirefoxAccounts = true;
AutofillAddressEnabled = false;
AutofillCreditCardEnabled = false;
OfferToSaveLogins = false;
FirefoxHome.TopSites = false;
FirefoxHome.SponsoredTopSites = false;
Preferences = {
"browser.newtabpage.pinned" = lock-empty-string;
"browser.topsites.contile.enabled" = lock-false;
};
DontCheckDefaultBrowser = true;
DisableProfileImport = true;
SearchBar = "unified";
SearchEngines.Add = [ # Only Available in ESR Releases https://mozilla.github.io/policy-templates/#searchengines--add
{
Name = "Brave";
URLTemplate = "https://search.brave.com/search?q={SearchTerms}";
Alias = "br";
}
];
ExtensionSettings = { # See https://mozilla.github.io/policy-templates/#extensionsettings
"extension@tabliss.io" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/3940751/tabliss-2.6.0.xpi";
installation_mode = "normal_installed";
};
"gdpr@cavi.au.dk" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4362793/consent_o_matic-1.1.3.xpi";
installation_mode = "normal_installed";
};
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4382536/ublock_origin-1.61.0.xpi";
installation_mode = "normal_installed";
};
"keepassxc-browser@keepassxc.org" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4376326/keepassxc_browser-1.9.4.xpi";
installation_mode = "normal_installed";
};
"offline-qr-code@rugk.github.io" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4349427/offline_qr_code_generator-1.9.xpi";
installation_mode = "normal_installed";
};
"addon@darkreader.org" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4378073/darkreader-4.9.96.xpi";
installation_mode = "normal_installed";
};
"firefoxpwa@filips.si" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4383345/pwas_for_firefox-2.13.1.xpi";
installation_mode = "normal_installed";
};
};
Bookmarks = [
{
Title = "Syncthing";
URL = "localhost:8384";
Placement = "toolbar";
}
];
};
};
home.stateVersion = "24.05";
}

View file

@ -0,0 +1,43 @@
{
inputs,
config,
lib,
pkgs,
system,
...
}:
let
cfg = config.hardware.bosto-touchpad;
in
{
options.hardware.bosto-touchpad.enable = lib.mkOption {
type = with lib.types; uniq bool;
default = false;
description = "Enable Bosto Touchpad Support";
};
config = lib.mkIf (cfg.enable) {
# boot.kernelModules = [ "hid-magicmouse" ];
# Add Driver Options to extra ModprobeConfig, to support reloading hid-magicmouse
boot.extraModprobeConfig = ''
options hid-magicmouse emulate_scroll_wheel=Y emulate_3button=Y middle_click_3finger=Y scroll_acceleration=Y scroll_speed=10
'';
# Service to load Driver with options
systemd.services."bostoService" = {
description = "Bosto Touchpad Service";
path = [ pkgs.kmod ];
serviceConfig = {
Type = "oneshot";
ExecStart = ''
${pkgs.kmod.out}/bin/modprobe -r hid-magicmouse
${pkgs.kmod.out}/bin/modprobe hid-magicmouse emulate_scroll_wheel=Y emulate_3button=Y middle_click_3finger=Y scroll_acceleration=Y scroll_speed=10
'';
};
wantedBy = [ "multi-user.target" ];
};
};
}

View file

@ -0,0 +1,38 @@
{
inputs,
config,
lib,
pkgs,
system,
...
}:
let
cfg = config.hardware.t2-mac-WirelessReload;
in
{
options.hardware.t2-mac-WirelessReload.enable = lib.mkOption {
type = with lib.types; uniq bool;
default = false;
description = "Reloads the Wireless Drivers";
};
config = lib.mkIf (cfg.enable) {
# Service to load Driver with options
systemd.services."t2-mac-WirelessReload" = {
description = "Reloads Wireless Drivers for Mac";
path = [ pkgs.kmod ];
serviceConfig = {
Type = "oneshot";
ExecStart = ''
${pkgs.kmod.out}/bin/modprobe -r brcmfmac_wcc || true
${pkgs.kmod.out}/bin/modprobe -r brcmfmac || true
${pkgs.kmod.out}/bin/modprobe brcmfmac || true
${pkgs.kmod.out}/bin/modprobe -r hci_bcm4377 || true
${pkgs.kmod.out}/bin/modprobe hci_bcm4377 || true
'';
};
wantedBy = [ "multi-user.target" ];
};
};
}

View file

@ -0,0 +1,35 @@
{ inputs, config, lib, pkgs, ... }:
let
cfg = config.services.binary-cache;
in
{
imports = [
];
options.services.binary-cache = {
enable = lib.mkOption {
type = with lib.types; uniq bool;
default = false;
description = "Enable Preconfigured Binary-Cache";
};
};
config = lib.mkIf cfg.enable {
services.nix-serve = {
enable = true;
secretKeyFile = "/var/secrets/cache-game01-private-key.pem";
};
# Configure Reverse-Proxy
services.traefik.dynamicConfigOptions = {
http.services.nix-cache.loadBalancer.servers = [ { url = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}/"; } ];
http.routers.nix-cache.entrypoints = "websecure";
# http.routers.nix-cache.tls = true;
http.routers.nix-cache.tls.certresolver = "letsencrypt";
http.routers.nix-cache.rule = "Host(`cache.game01.kb-one.de`)";
http.routers.nix-cache.service = "nix-cache";
};
};
}

View file

@ -0,0 +1,10 @@
# Minecraft Server Configuration
Details about the Minecraft Module.
## Installation
1. Rebuild switch configuration
2. Create Database Structure
1. New Database `sudo mysql -u root < /run/secrets/rendered/minecraft/database/database-init.sql`
2. Restore Backup `sudo mysql -u root < path/to/backup.sql`

View file

@ -0,0 +1,27 @@
{
inputs,
config,
lib,
pkgs,
system,
...
}:
let
cfg = config.services.minecraft;
in
{
config = lib.mkIf (cfg.enable && (cfg.servers.velocity.enable || cfg.servers.survival.enable)) {
services.mysql = {
package = pkgs.mariadb;
enable = true;
settings.mysqld.port = 3459;
};
sops.secrets."minecraft/database/luckperms_password" = { sopsFile = ./secrets.yaml; };
sops.templates."minecraft/database/database-init.sql".content = ''
CREATE DATABASE 'luckperms';
CREATE USER 'luckperms'@'localhost';
GRANT ALL PRIVILEGES ON luckperms.* TO 'luckperms'@'localhost' IDENTIFIED BY '${config.sops.placeholder."minecraft/database/luckperms_password"}';
'';
# services.mysqlBackup.databases = [ "luckperms" ]; # Add Luckperms Database to Backups
};
}

View file

@ -8,13 +8,14 @@ in
./vanilla-test.nix ./vanilla-test.nix
./survival.nix ./survival.nix
./velocity.nix ./velocity.nix
./database.nix
]; ];
options.services.minecraft = { options.services.minecraft = {
enable = lib.mkOption { enable = lib.mkOption {
type = with lib.types; uniq bool; type = with lib.types; uniq bool;
default = false; default = false;
description = "Enable minecraft server"; description = "Enable kBs Minecraft Servers";
}; };
servers.vanilla.enable = lib.mkOption { servers.vanilla.enable = lib.mkOption {
type = with lib.types; uniq bool; type = with lib.types; uniq bool;
@ -34,10 +35,15 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"minecraft-server"
];
services.minecraft-servers = { services.minecraft-servers = {
enable = true; enable = true;
eula = true; eula = true;
}; };
}; };
} }

View file

@ -0,0 +1,23 @@
minecraft:
database:
luckperms_password: ENC[AES256_GCM,data:Gnt/SilH7q4t1NzCeaqCc6nxso9cWt7b/KXCxzrDdR1LAnmex3QL5Q==,iv:PrTkXcMPPyfJkAKxSKUkaPbYcH+9n6W7MPcTR5e4L8g=,tag:sxDdUHyN+fCIi4g0K+oQIw==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age165jt2q3uxp79k4jfsegnq7ul9j54l2rqsn87rq0qjkcv3y5krcmqsznyw7
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBScTUyNFBNdHFwd1pudWNK
Y2F2aXFLYmh4RURJLy9mMisxMU96VGRiU2hjCjdSZmxLRFF6OVpFNy9iQ0NLdytl
UHdSaUVtMnlWQ3d1ZnluNXVHOWdoalkKLS0tIDBxVGdaZWhTclJWZ3FwZHRHSTN1
RDhlN1JjWW1XZERLWExRSTlDN3ZjZkEKMiQaUezdBcWOH82Sk451PdB54SzYwcXY
YkjGp+bB7rIz07no68Xl4qmO+/iHKSFlPvG4jR/j4ZaNYiU9aeldLA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-01-17T14:22:01Z"
mac: ENC[AES256_GCM,data:BlLD3wEezCCA9t1X4xmy9lfT3ztsR3dknio78Si9v3UJmpJSOpwJ/VhU5RRbMzL1EyOrU1abEr6em83s6LRq87fwso1j6asOavELT5WOfl6f5CU2iK8nQGWZCFeR+09d9hVI+AAH9farpgTDd5sHfUFPCKEaGwuTenpeF4Tonak=,iv:JYoHMIPkT+Dv3GZlp1wt7wlU7IYL6erd/u0cuclB0Ow=,tag:XD8pd/GCrdLRvdEFBgowJA==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.9.2

View file

@ -11,27 +11,37 @@ let
in in
{ {
config = lib.mkIf (cfg.enable && cfg.servers.survival.enable) { config = lib.mkIf (cfg.enable && cfg.servers.survival.enable) {
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"minecraft-server"
];
services.minecraft-servers.servers."survival" = { services.minecraft-servers.servers."survival" = {
enable = true; enable = true;
autoStart = true; autoStart = true;
enableReload = true; enableReload = true;
package = pkgs.paperServers.paper-1_21_3-build_25; package = pkgs.paperServers.paper-1_21_4;
whitelist = {
kB01guy = "1ff88b66-beda-4386-85b9-a00a5c27437a";
};
serverProperties = { serverProperties = {
online-mode = false;
server-ip = "127.0.0.1";
server-port = 49333;
difficulty = 3; difficulty = 3;
gamemode = 1; gamemode = 1;
max-players = 5; max-players = 5;
}; };
openFirewall = false; # Should use Velocity Player Proxy openFirewall = false; # Should use Velocity Player Proxy
serverProperties.server-port = 41000;
# Add Plugins
symlinks = { symlinks = {
"plugins/LuckPerms.jar" = pkgs.fetchurl { url = "https://download.luckperms.net/1561/bukkit/loader/LuckPerms-Bukkit-5.4.146.jar"; sha512 = "3yx163xas6g30crj41ad8j9gh55ygfh7vbaq12hlm4rxf1npnxh95rhn2nx0qcjd4nl1rz8f8pbvmlh6ka32ahvn6x9rxsc8g6v24jz"; }; "plugins/LuckPerms.jar" = pkgs.fetchurl {
url = "https://download.luckperms.net/1567/bukkit/loader/LuckPerms-Bukkit-5.4.150.jar";
sha512 = "39cr9nd68afrrvn80kvdgaml37xkj3mzhv50y3app5j1199hg12kls29r49x06p9rxm6dk7i0j8aww2hw4ahm18andb69a5kp97vf94";
};
};
# Configure Velocity Modern forwarding https://docs.papermc.io/velocity/player-information-forwarding#configuring-modern-forwarding-for-paper
files."spigot.yml".value = {
settings.bungeecord = false;
};
files."config/paper-global.yml".value = {
proxies.velocity.enabled = true;
proxies.velocity.online-mode = "online-mode";
forwarding.secret = ""; # TODO: Add Forewarding Secret using Sops
}; };
}; };
}; };

View file

@ -11,19 +11,62 @@ let
in in
{ {
config = lib.mkIf (cfg.enable && cfg.servers.velocity.enable) { config = lib.mkIf (cfg.enable && cfg.servers.velocity.enable) {
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"minecraft-server"
];
# Configure Server
services.minecraft-servers.servers."velocity" = { services.minecraft-servers.servers."velocity" = {
enable = true; enable = true;
autoStart = true; autoStart = true;
enableReload = true; enableReload = true;
stopCommand = "end";
package = pkgs.velocityServers.velocity; package = pkgs.velocityServers.velocity;
openFirewall = true;
symlinks = { symlinks = {
"plugins/LuckPerms.jar" = pkgs.fetchurl { url = "https://download.luckperms.net/1561/velocity/LuckPerms-Velocity-5.4.146.jar"; sha512 = "1xk7fwb5z3bz0x3hpmnyg7cldzrf9anpp4aavq5s69lz2idzxvkjn9b5iv2yy22p17k26lqwfn8n9ivi59srz2hvgdb1jibqg5d5hj5"; }; "plugins/LuckPerms.jar" = pkgs.fetchurl {
url = "https://download.luckperms.net/1567/velocity/LuckPerms-Velocity-5.4.150.jar";
sha512 = "3dr69g2fbav3if44nmifgz7hn86gdf62hcks92kkvwxf4xa3z7x615j426kgljyhgy84hf75wzpai258mg7dj9x17vpkn634kkzwmw6";
}; };
"plugins/Geyser-Velocity.jar" = pkgs.fetchurl {
url = "https://download.geysermc.org/v2/projects/geyser/versions/2.6.0/builds/730/downloads/velocity";
sha512 = "3shnm8q8vq8j44xxg4qwqwalw6ml9nkzfrzvv8pkblkjp25nfk3h14b4y9vdim1sa2a18mkf8hmhb16g1mka2rh7l0z0yg4kh3lj2i0";
};
"plugins/floodgate-velocity.jar" = pkgs.fetchurl {
url = "https://download.geysermc.org/v2/projects/floodgate/versions/2.2.3/builds/114/downloads/velocity";
sha512 = "1k7qban3gar0fxxi5kp5i8d72k6ck65cvsfbg4nh8bz40jwqn35fx9gj3zbb06x5l8sg6qxl7w2nsn3jan4hjq7m5lwf2c1l1mjaw81";
};
"plugins/LibreLogin.jar" = pkgs.fetchurl {
url = "https://modrinth.com/plugin/libre-login/version/0.23.0";
sha512 = "1wrnp82vv47hhvjp1lxdndmngndykshi7iindnpg61j0v7i8bdgr9rk5qvanvw95gcj59cnhxdmjynq8fm127n4gv53acdidlxz39sd";
};
};
files = {
"velocity.toml".value = {
config-version = "2.7"; # NEVER change this!
bind = "0.0.0.0:25565";
online-mode = false;
player-info-forwarding-mode = "modern";
enable-player-address-logging = false;
# servers.lobby = "";
servers.survival = "127.0.0.1:${toString config.services.minecraft-servers.servers."survival".serverProperties.server-port}";
servers.lobby = "127.0.0.1:123";
servers.try = [
#"lobby"
"survival"
];
forced-hosts."lobby.example.com" = [ "lobby" ];
advanced.tcp-fast-open = true;
};
};
};
networking.firewall.allowedTCPPorts = [ 25565 ];
# Configure Plugin Luckperms
sops.templates."minecraft/velocity/plugin/luckperms/config.yml".path = "/srv/minecraft/velocity/plugins/luckperms/config.yml";
sops.templates."minecraft/velocity/plugin/luckperms/config.yml".owner = config.services.minecraft-servers.user;
sops.templates."minecraft/velocity/plugin/luckperms/config.yml".content = lib.generators.toYAML { } { # Unfortunately currently lib.generators.toYAML generates JSON, and the File will not be Human readable
storage-method = "mariadb";
data.address = "localhost:${toString config.services.mysql.settings.mysqld.port}";
data.database = "luckperms";
data.username = "luckperms";
data.password = ''${config.sops.placeholder."minecraft/database/luckperms_password"}''; # Secret created in ./database.nix
}; };
}; };
} }

View file

@ -0,0 +1,105 @@
{ config, lib, pkgs, ... }:
# Source: https://github.com/Lykos153/numen-nix
with lib;
let
cfg = config.services.numen;
in
{
options.services.numen = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enables Numen Voice Control. Only available to Users in Group "input".
'';
};
numenPkg = mkOption {
type = types.package;
default = pkgs.kb-one.numen;
};
modelPkg = mkOption {
type = types.package;
default = pkgs.kb-one.vosk-model-small-en-us;
description = ''
Vosk model to be loaded by numen. Overrides modelPkg!
'';
};
# models = mkOption {
# type = types.uniq types.listOf types.package;
# default = [vosk-model-small-en-us];
# example = "[vosk-model-small-en-us]";
# description = ''
# List of vosk models to be loaded by numen. They can be referred to using the index, eg. model0 or model1.
# '';
# };
dotoolPkg = mkOption {
type = types.package;
default = pkgs.kb-one.dotool;
};
autoStart = mkOption {
type = types.bool;
default = true;
};
phrases = mkOption {
type = types.listOf types.path;
default = [
./phrases/character.phrases
./phrases/control.phrases
./phrases/environment.phrases
./phrases/voice.phrases
];
description = ''
Phrases to be loaded by numen. If empty, the default phrases are used.
'';
};
extraArgs = mkOption {
type = types.singleLineStr;
default = "";
description = ''
Additional arguments to be passed to numen.
'';
};
dotoolXkbLayout = mkOption {
type = types.singleLineStr;
default = "de";
description = ''
The XKB keyboard layout that should be used by dotool.
'';
};
};
config = mkIf cfg.enable {
# System Configuration
environment.systemPackages = [
cfg.numenPkg
cfg.dotoolPkg
cfg.modelPkg
];
services.udev.extraRules = ''
KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput"
'';
# Enable AutoStart Service
systemd.user.services.numen = mkIf cfg.autoStart {
description = "Numen voice control";
after = [ "graphical-session-pre.target" ];
partOf = [ "graphical-session.target" ];
wantedBy = [ "graphical-session.target" ];
environment = {
DOTOOL_XKB_LAYOUT = "${cfg.dotoolXkbLayout}";
NUMEN_MODEL = "${cfg.modelPkg}/usr/share/vosk-models/small-en-us/";
};
serviceConfig.ExecStart = "${cfg.numenPkg}/bin/numen ${cfg.extraArgs} ${lib.strings.concatStringsSep " " cfg.phrases}";
};
};
}

View file

@ -0,0 +1,71 @@
air: press a
bat: press b
cap: press c
drum: press d
each: press e
fig: press f
gust: press g
hoof: press h
ice: press i
jive: press j
kid: press k
link: press l
made: press m
nerd: press n
odd: press o
pit: press p
quench: press q
red: press r
sun: press s
trap: press t
urge: press u
void: press v
whiz: press w
plex: press x
yank: press y
zip: press z
newt: press 0
one: press 1
two: press 2
three: press 3
four: press 4
five: press 5
six: press 6
sept: press 7
eight: press 8
nine: press 9
ask: press question
plus: press plus
mine: press minus
tide: press asciitilde
yell: press exclam
quid: press dollar
score: press underscore
clause: press colon
same: press semicolon
wax: press parenleft
wane: press parenright
curl: press braceleft
crimp: press braceright
bric: press bracketleft
brac: press bracketright
small: press less
big: press greater
star: press asterisk
hash: press numbersign
mood: press percent
blunt: press asciicircum
snail: press at
gain: press ampersand
vert: press bar
spoke: press quotedbl
mark: press apostrophe
tick: press grave
slash: press slash
slope: press backslash
list: press comma
point: press period
match: press equal

View file

@ -0,0 +1,85 @@
space: press space
yes: press Return
tab: press Tab
scape: stick off \
press Escape
# Enable a modifier for the next press
# (The Super modifier is also known as the "Windows key")
shy: mod shift
troy: mod ctrl
hype: mod alt
shock: mod super \
stick off
# Clear modifiers
cleanse: mod clear \
caps off \
stick off
# Enable Caps Lock until the end of the sentence or you say "cleanse"
shout: caps on
<complete>: caps off
# Start holding down each pressed key, and stop by saying "cleanse"
squeeze: run notify-send STICKING & \
stick off \
stick on
hack: press BackSpace
mince: press BackSpace BackSpace
toss: press Delete
smite: press Delete Delete
raze: press BackSpace BackSpace BackSpace BackSpace
# Delete a word (depending on the program)
swipe: press ctrl+BackSpace
left: press Left
right: press Right
up: press Up
down: press Down
lunge: press Left Left
rush: press Right Right
leave: press Left Left Left Left
charge: press Right Right Right Right
# I use these to navigate words and to complete bits of shell autosuggestions
stretch: press ctrl+Right
wrench: press ctrl+Left
# PageDown, PageUp, Home, End
page: press Next
reel: press Prior
home: press Home
end: press End
# Paste the clipboard (depending on the program)
gluten: stick off \
press XF86Paste
# Repeat the previous press etc.
more: repeat 1
bunch: repeat 2
handful: repeat 4
fistful: repeat 8
plateful: repeat 12
frank one: press F1
frank two: press F2
frank three: press F3
frank four: press F4
frank five: press F5
frank six: press F6
frank sept: press F7
frank eight: press F8
frank nine: press F9
frank one newt: press F10
frank one one: press F11
frank one two: press F12
# This saves your changes in vi-style programs
save: caps off \
press Escape colon w Return
# This cycles round splits in Vim
switch: caps off \
press Escape ctrl+w w

View file

@ -0,0 +1,36 @@
# I use these for managing application windows but they just simulate keys,
# so you'll need to configure your desktop environment, or you can use my
# preconfigured desktop environment: https://git.sr.ht/~geb/tiles
# Navigate to the window in the given direction
west: stick off \
press super+Left
east: stick off \
press super+Right
north: stick off \
press super+Up
south: stick off \
press super+Down
# Cycle round the windows
cycle: stick off \
press super+c
recycle: stick off \
press super+C
# Close window
exterminate: stick off \
press super+q
# Toggle fullscreen
screen: stick off \
press super+f
# These two are just for --gadget mode.
# Switch to controlling the gadget
@gadget shock gadget: handler uinput
# Switch to controlling the host machine
@gadget shock host: handler gadget

View file

@ -0,0 +1,67 @@
# Cancel sentence
# For example, "four down no five down" would just do "five down".
@cancel no:
# Transcribe a sentence
# For example, "scribe please type this".
@transcribe scribe: set numen_fmt echo normal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# Transcribe a sentence formatted...
# With the first letter uppercase
@transcribe scrub: set numen_fmt echo sentence \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# With Each First Letter Uppercase
@transcribe tight scribe: set numen_fmt echo title \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with_underscrores_inbetween
@transcribe snake: set numen_fmt echo snake \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with-dashes-inbetween
@transcribe dash: set numen_fmt echo dash \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with.dots.inbetween
@transcribe dot scribe: set numen_fmt echo dot \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with, commas, inbetween
@transcribe roh scribe: set numen_fmt echo list \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with/slashes/inbetween
@transcribe path scribe: set numen_fmt echo path \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# allsmashedtogether
@transcribe kludge: set numen_fmt echo smash \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# camelCase
@transcribe camel: set numen_fmt echo camel \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# PascalCase
@transcribe pascal: set numen_fmt echo pascal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# dot.camelCase
@transcribe dot camel: set numen_fmt echo dotcamel \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# dot.PascalCase
@transcribe dot pascal: set numen_fmt echo dotpascal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# (You can also do "shout scribe" etc.)
# Erase the transcription
ditch: eval /etc/numen/scripts/transcripts | sed 's/./ BackSpace/g; s/^/press/; q'
# Go to the start of the transcription
trudge: eval /etc/numen/scripts/transcripts | sed 's/./ Left/g; s/^/press/; q'
# Menus to type or choose another transcription result
# They use the dmenu command (only works in X11) or the command specified
# by $NUMEN_DMENU or $DMENU (you could use wmenu if you're on Wayland).
transcripts: run /etc/numen/scripts/menu | numenc & \
run sleep 0.1
change: run /etc/numen/scripts/menu change | numenc & \
run sleep 0.1
# Ignore this, vosk-model-small-en-us-0.15 can output huh after a long silence.
huh:

View file

@ -0,0 +1,53 @@
{ inputs, config, lib, pkgs, ... }:
let
cfg = config.services.traefik-proxy;
in
{
imports = [
];
options.services.traefik-proxy = {
enable = lib.mkOption {
type = with lib.types; uniq bool;
default = false;
description = "Enable Pre-Configured Traefik Proxy";
};
};
config = lib.mkIf (cfg.enable ||
config.services.binary-cache.enable ||
config.suites.nas.media.enable) {
services.traefik = {
enable = true;
staticConfigOptions = {
entryPoints = {
web = {
address = ":80";
asDefault = true;
http.redirections.entrypoint = {
to = "websecure";
scheme = "https";
};
};
websecure = {
address = ":443";
asDefault = true;
http.tls.certResolver = "letsencrypt";
};
};
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
# Configure Letsencrypt
services.traefik.staticConfigOptions = {
certificatesResolvers.letsencrypt.acme = {
email = "kb01@kb-one.de";
tlsChallenge = {};
storage = "/var/secrets/traefik/acme.json";
};
};
};
}

View file

@ -0,0 +1,59 @@
{
inputs,
config,
lib,
pkgs,
system,
...
}:
let
cfg = config.suites.nas;
in
{
imports = [
./jellyfin.nix
./kavita.nix
];
options.suites.nas.enable = lib.mkOption {
type = with lib.types; uniq bool;
default = false;
description = "Enable Preconfigured NAS Config";
};
options.suites.nas.domain = lib.mkOption {
type = with lib.types; string;
default = "localhost";
description = "NAS Reachable Domain Name";
};
options.suites.nas.media.enable = lib.mkOption {
type = with lib.types; uniq bool;
default = true;
description = "Enable Media Servers";
};
options.suites.nas.media.folder = lib.mkOption {
type = with lib.types; str;
default = "/home/media/media";
description = "Media Root Directory";
};
# Media Config
config = lib.mkIf (cfg.enable && cfg.media.enable) {
# Media Defaults
suites.nas.media.jellyfin.enable = true;
suites.nas.media.kavita.enable = false;
# Create Media User
users.groups.media = {};
users.users.media = {
isSystemUser = true;
createHome = true;
description = "Media User";
group = "media";
home = "/home/media";
};
};
}

View file

@ -0,0 +1,41 @@
{
inputs,
config,
lib,
pkgs,
system,
...
}:
let
cfg = config.suites.nas.media.jellyfin;
in
{
options.suites.nas.media.jellyfin.enable = lib.mkOption {
type = with lib.types; uniq bool;
default = false;
description = "Enable Preconfigured Jellyfin Config";
};
options.suites.nas.media.jellyfin.subdomain = lib.mkOption {
type = with lib.types; string;
default = "watch";
description = "Subdomain for Jellyfin Server";
};
config = lib.mkIf (cfg.enable) {
services.jellyfin.enable = true;
services.jellyfin.user = "media";
# Configure Reverse-Proxy
services.traefik.dynamicConfigOptions = {
http.services.jellyfin.loadBalancer.servers = [ { url = "http://localhost:8096/"; } ];
http.routers.jellyfin.entrypoints = "websecure";
http.routers.jellyfin.tls = true;
#http.routers.jellyfin.tls.certresolver = "letsencrypt";
http.routers.jellyfin.rule = "Host(`${cfg.subdomain}.${config.suites.nas.domain}`)";
http.routers.jellyfin.service = "jellyfin";
};
};
}

View file

@ -0,0 +1,42 @@
{
inputs,
config,
lib,
pkgs,
system,
...
}:
let
cfg = config.suites.nas.media.kavita;
in
{
options.suites.nas.media.kavita.enable = lib.mkOption {
type = with lib.types; uniq bool;
default = false;
description = "Enable Preconfigured kavita Config";
};
options.suites.nas.media.kavita.subdomain = lib.mkOption {
type = with lib.types; string;
default = "read";
description = "Kavita Subdomain";
};
config = lib.mkIf (cfg.enable) {
services.kavita.enable = true;
services.kavita.user = "media";
services.kavita.tokenKeyFile = "/home/media/secrets/kavita-secret";
# Configure Reverse-Proxy
services.traefik.dynamicConfigOptions = {
http.services.kavita.loadBalancer.servers = [ { url = "http://localhost:5000/"; } ];
http.routers.kavita.entrypoints = "websecure";
http.routers.kavita.tls = true;
#http.routers.kavita.tls.certresolver = "letsencrypt";
http.routers.kavita.rule = "Host(`${cfg.subdomain}.${config.suites.nas.domain}`)";
http.routers.kavita.service = "kavita";
};
};
}

View file

@ -0,0 +1,18 @@
{ fetchFromSourcehut, buildGoModule, pkg-config, libxkbcommon, tree }:
# Source: https://github.com/Lykos153/numen-nix
buildGoModule rec {
pname = "dotool";
version = "1.5";
src = fetchFromSourcehut {
owner = "~geb";
repo = pname;
rev = version;
hash = "sha256-4QmTHeU3TnpRATKIvilkIA3i2hDjM5zQwSvmRvoWuNE=";
};
vendorHash = "sha256-IQ847LHDYJPboWL/6lQNJ4vPPD/+xkrGI2LSZ7kBnp4=";
nativeBuildInputs = [ pkg-config tree ];
buildInputs = [ libxkbcommon ];
postInstall = ''
install -D $src/80-dotool.rules $out/lib/udev/rules.d/80-dotool.rules
'';
}

View file

@ -0,0 +1,66 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkgs,
...
}:
stdenv.mkDerivation rec {
pname = "intel-media-sdk";
version = "23.2.2";
src = fetchFromGitHub {
owner = "Intel-Media-SDK";
repo = "MediaSDK";
rev = "intel-mediasdk-${version}";
hash = "sha256-wno3a/ZSKvgHvZiiJ0Gq9GlrEbfHCizkrSiHD6k/Loo=";
};
patches = [
# Search oneVPL-intel-gpu in NixOS specific /run/opengl-driver/lib directory
# See https://github.com/NixOS/nixpkgs/pull/315425
./nixos-search-onevplrt-in-run-opengl-driver-lib.patch
# https://github.com/Intel-Media-SDK/MediaSDK/pull/3005
(pkgs.fetchpatch {
name = "include-cstdint-explicitly.patch";
url = "https://github.com/Intel-Media-SDK/MediaSDK/commit/a4f37707c1bfdd5612d3de4623ffb2d21e8c1356.patch";
hash = "sha256-OPwGzcMTctJvHcKn5bHqV8Ivj4P7+E4K9WOKgECqf04=";
})
];
nativeBuildInputs = [
pkgs.cmake
pkgs.pkg-config
];
buildInputs = [
pkgs.libdrm
pkgs.libva
pkgs.xorg.libpciaccess
pkgs.xorg.libX11
pkgs.xorg.libXau
pkgs.xorg.libXdmcp
pkgs.xorg.libpthreadstubs
];
nativeCheckInputs = [ pkgs.gtest ];
cmakeFlags = [
"-DBUILD_SAMPLES=OFF"
"-DBUILD_TESTS=${if doCheck then "ON" else "OFF"}"
"-DUSE_SYSTEM_GTEST=ON"
];
doCheck = true;
meta = with lib; {
description = "Intel Media SDK";
mainProgram = "mfx-tracer-config";
license = licenses.mit;
maintainers = with maintainers; [
midchildan
pjungkamp
];
platforms = [ "x86_64-linux" "i686-linux" ];
};
}

View file

@ -0,0 +1,45 @@
From aceb689ae69857def8a26a8d1ceb114ccfbb2569 Mon Sep 17 00:00:00 2001
From: Philipp Jungkamp <p.jungkamp@gmx.net>
Date: Tue, 28 May 2024 19:22:29 +0200
Subject: [PATCH] NixOS: Search ONEVPLRT in /run/opengl-driver/lib
---
api/mfx_dispatch/linux/mfxloader.cpp | 2 ++
.../suites/mfx_dispatch/linux/mfx_dispatch_test_cases_libs.cpp | 1 +
2 files changed, 3 insertions(+)
diff --git a/api/mfx_dispatch/linux/mfxloader.cpp b/api/mfx_dispatch/linux/mfxloader.cpp
index 39b6bff1..f76ed65d 100644
--- a/api/mfx_dispatch/linux/mfxloader.cpp
+++ b/api/mfx_dispatch/linux/mfxloader.cpp
@@ -193,6 +193,7 @@ mfxStatus LoaderCtx::Init(mfxInitParam& par)
if (selected_runtime && strcmp(selected_runtime, "ONEVPL") == 0) {
libs.emplace_back(ONEVPLRT);
libs.emplace_back(MFX_MODULES_DIR "/" ONEVPLRT);
+ libs.emplace_back("/run/opengl-driver/lib/" ONEVPLRT);
} else if ((selected_runtime && strcmp(selected_runtime, "MSDK") == 0) || (platform != MFX_HW_UNKNOWN)) {
if (MFX_IMPL_BASETYPE(par.Implementation) == MFX_IMPL_AUTO ||
MFX_IMPL_BASETYPE(par.Implementation) == MFX_IMPL_AUTO_ANY) {
@@ -213,6 +214,7 @@ mfxStatus LoaderCtx::Init(mfxInitParam& par)
} else {
libs.emplace_back(ONEVPLRT);
libs.emplace_back(MFX_MODULES_DIR "/" ONEVPLRT);
+ libs.emplace_back("/run/opengl-driver/lib/" ONEVPLRT);
}
mfxStatus mfx_res = MFX_ERR_UNSUPPORTED;
diff --git a/tests/unit/suites/mfx_dispatch/linux/mfx_dispatch_test_cases_libs.cpp b/tests/unit/suites/mfx_dispatch/linux/mfx_dispatch_test_cases_libs.cpp
index dedee0b3..9657da4b 100644
--- a/tests/unit/suites/mfx_dispatch/linux/mfx_dispatch_test_cases_libs.cpp
+++ b/tests/unit/suites/mfx_dispatch/linux/mfx_dispatch_test_cases_libs.cpp
@@ -123,6 +123,7 @@ TEST_P(DispatcherLibsTestParametrized, ShouldEnumerateCorrectLibNames)
{
libs.emplace_back(ONEVPLRT);
libs.emplace_back(modules_dir + "/" + ONEVPLRT);
+ libs.emplace_back("/run/opengl-driver/lib/" + ONEVPLRT);
}
for (const std::string& lib : libs)
--
2.44.0

View file

@ -0,0 +1,88 @@
{ fetchFromSourcehut
, stdenv
, buildGoModule
, makeWrapper
, scdoc
, pkgs
, lib
, alsa-utils
, libxkbcommon
, gnused
, gawk
, coreutils
, libnotify
, dmenu
, procps
}:
# Source: https://github.com/Lykos153/numen-nix
buildGoModule rec {
pname = "numen";
version = "master";
vendorHash = "sha256-Y3CbAnIK+gEcUfll9IlEGZE/s3wxdhAmTJkj9zlAtoQ=";
src = fetchFromSourcehut {
owner = "~geb";
repo = pname;
rev = version;
hash = "sha256-haiaMBq9xbcDd83Kmm00Xc7823U+90DworOZk9H2n9w=";
};
allowGoReference = true;
preBuild = ''
export CGO_CFLAGS="-I${pkgs.kb-one.vosk-bin}/include"
export CGO_LDFLAGS="-L${pkgs.kb-one.vosk-bin}/lib"
'';
nativeBuildInputs = [
makeWrapper
scdoc
];
ldflags = [
"-X main.Version=${version}"
"-X main.DefaultModelPackage=vosk-model-small-en-us"
"-X main.DefaultModelPaths=${pkgs.kb-one.vosk-model-small-en-us}/usr/share/vosk-models/small-en-us"
"-X main.DefaultPhrasesDir=${placeholder "out"}/etc/numen/phrases"
];
# This is necessary because while the scripts are copied relative to
# the nix store, the hard-coded paths inside the scripts themselves
# still point outside of the store.
patchPhase = ''
substituteInPlace scripts/* \
--replace /etc/numen/scripts "$out/etc/numen/scripts" \
--replace sed ${gnused}/bin/sed \
--replace awk ${gawk}/bin/awk \
--replace cat ${coreutils}/bin/cat \
--replace notify-send ${libnotify}/bin/notify-send
substituteInPlace scripts/menu \
--replace "-dmenu" "-${dmenu}/bin/dmenu"
substituteInPlace scripts/displaying \
--replace "(pgrep" "(${procps}/bin/pgrep" \
--replace "(ps" "(${procps}/bin/ps"
substituteInPlace phrases/* \
--replace /etc/numen/scripts "$out/etc/numen/scripts" \
--replace numenc "$out/bin/numenc"
substituteInPlace numenc \
--replace /bin/echo "${coreutils}/bin/echo" \
--replace cat "${coreutils}/bin/cat"
'';
installPhase = ''
runHook preInstall
install -Dm755 $GOPATH/bin/numen -t "$out/bin"
install -Dm755 numenc -t "$out/bin"
install -Dm755 scripts/* -t "$out/scripts"
install -Dm644 phrases/* -t "$out/prases"
sed -i "s:/etc/numen/scripts:${placeholder "out"}/scripts:g" \
$out/scripts/* \
$out/prases/*
mkdir -p "$out/usr/share/man/man1" || exit
scdoc < doc/numen.1.scd > "$out/usr/share/man/man1/numen.1" || exit
echo Installed Successfully.
runHook postInstall
'';
postFixup = ''
wrapProgram $out/bin/numen \
--prefix PATH : ${lib.makeBinPath [ pkgs.kb-one.dotool alsa-utils ]} \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libxkbcommon stdenv.cc.cc.lib ]} \
'';
}

View file

@ -0,0 +1,153 @@
{
lib,
fetchFromGitHub,
fetchzip,
buildFHSEnv,
buildDotnetModule,
dotnetCorePackages,
luajitPackages,
sqlite,
libarchive,
curl,
love,
xdg-utils,
writeShellScript,
# These need overriding if you launch Celeste/Loenn/MiniInstaller from Olympus.
# Some examples:
# - null: Use default wrapper.
# - "": Do not use wrapper.
# - steam-run: Use steam-run.
# - "steam-run": Use steam-run command available from PATH.
# - writeShellScriptBin { ... }: Use a custom script.
# - ./my-wrapper.sh: Use a custom script.
# In any case, it can be overridden at runtime by OLYMPUS_{CELESTE,LOENN,MINIINSTALLER}_WRAPPER.
celesteWrapper ? null,
loennWrapper ? null,
miniinstallerWrapper ? null,
skipHandlerCheck ? false, # whether to skip olympus xdg-mime check, true will override it
}:
let
lua_cpath =
with luajitPackages;
lib.concatMapStringsSep ";" getLuaCPath [
(buildLuarocksPackage {
pname = "lsqlite3";
version = "0.9.6-1";
src = fetchzip {
url = "https://lua.sqlite.org/home/zip/lsqlite3_v096.zip";
hash = "sha256-Mq409A3X9/OS7IPI/KlULR6ZihqnYKk/mS/W/2yrGBg=";
};
buildInputs = [ sqlite.dev ];
})
lua-subprocess
nfd
];
# When installing Everest, Olympus uses MiniInstaller, which is dynamically linked.
miniinstaller-fhs = buildFHSEnv {
pname = "olympus-miniinstaller-fhs";
inherit version;
targetPkgs =
pkgs:
(with pkgs; [
icu
openssl
dotnet-runtime # Without this, MiniInstaller will install dotnet itself.
]);
};
wrapper-to-env =
wrapper:
if lib.isDerivation wrapper then
lib.getExe wrapper
else if wrapper != null then
wrapper
else
"";
miniinstaller-wrapper =
if miniinstallerWrapper == null then
(writeShellScript "miniinstaller-wrapper" "exec ${lib.getExe miniinstaller-fhs} -c \"$@\"")
else
(wrapper-to-env miniinstallerWrapper);
pname = "olympus";
phome = "$out/lib/${pname}";
# The following variables are to be updated by the update script.
version = "25.02.07.01";
buildId = "4624"; # IMPORTANT: This line is matched with regex in update.sh.
rev = "f4cd9dc973e68dc9b6c043941d5ab57f93b63ac4";
in
buildDotnetModule {
inherit pname version;
src = fetchFromGitHub {
inherit rev;
owner = "EverestAPI";
repo = "Olympus";
fetchSubmodules = true; # Required. See upstream's README.
hash = "sha256-I0tDqe7XvieL0kj8njzaNx3taY2VpFewi/SnYRCi4tk=";
};
nativeBuildInputs = [
libarchive # To create the .love file (zip format).
];
nugetDeps = ./deps.json;
projectFile = "sharp/Olympus.Sharp.csproj";
executables = [ ];
installPath = "${placeholder "out"}/lib/${pname}/sharp";
# See the 'Dist: Update src/version.txt' step in azure-pipelines.yml from upstream.
preConfigure = ''
echo ${version}-nixos-${buildId}-${builtins.substring 0 5 rev} > src/version.txt
'';
# The script find-love is hacked to use love from nixpkgs.
# It is used to launch Loenn from Olympus.
# I assume --fused is so saves are properly made (https://love2d.org/wiki/love.filesystem).
preInstall = ''
mkdir -p ${phome}
makeWrapper ${lib.getExe love} ${phome}/find-love \
--add-flags "--fused"
mkdir -p $out/bin
makeWrapper ${phome}/find-love $out/bin/olympus \
--prefix LUA_CPATH ";" "${lua_cpath}" \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ curl ]}" \
--suffix PATH : "${lib.makeBinPath [ xdg-utils ]}" \
--set-default OLYMPUS_MINIINSTALLER_WRAPPER "${miniinstaller-wrapper}" \
--set-default OLYMPUS_CELESTE_WRAPPER "${wrapper-to-env celesteWrapper}" \
--set-default OLYMPUS_LOENN_WRAPPER "${wrapper-to-env loennWrapper}" \
--set-default OLYMPUS_SKIP_SCHEME_HANDLER_CHECK ${if skipHandlerCheck then "1" else "0"} \
--add-flags ${phome}/olympus.love \
--set DOTNET_ROOT ${dotnetCorePackages.runtime_8_0}/share/dotnet
bsdtar --format zip --strip-components 1 -cf ${phome}/olympus.love src
'';
postInstall = ''
install -Dm644 lib-linux/olympus.desktop $out/share/applications/olympus.desktop
install -Dm644 src/data/icon.png $out/share/icons/hicolor/128x128/apps/olympus.png
install -Dm644 LICENSE $out/share/licenses/${pname}/LICENSE
'';
passthru.updateScript = ./update.sh;
meta = {
description = "Cross-platform GUI Everest installer and Celeste mod manager";
homepage = "https://github.com/EverestAPI/Olympus";
downloadPage = "https://everestapi.github.io/#olympus";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
ulysseszhan
petingoso
];
mainProgram = "olympus";
platforms = lib.platforms.unix;
badPlatforms = lib.platforms.aarch; # Celeste doesn't support aarch in the first place
};
}

317
packages/olympus/deps.json Normal file
View file

@ -0,0 +1,317 @@
[
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.1.0",
"hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="
},
{
"pname": "Microsoft.NETCore.Targets",
"version": "1.1.0",
"hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="
},
{
"pname": "Mono.Cecil",
"version": "0.11.4",
"hash": "sha256-HrnRgFsOzfqAWw0fUxi/vkzZd8dMn5zueUeLQWA9qvs="
},
{
"pname": "MonoMod",
"version": "22.1.4.3",
"hash": "sha256-kindD5YUjBWsopvEnmOL4XsldgwE1zRrmMxIh6nDua8="
},
{
"pname": "MonoMod.RuntimeDetour",
"version": "22.1.4.3",
"hash": "sha256-m7FN3SGME4GRGuc7l5ClCT9W3mXqbbhAJHHpWwYqLi8="
},
{
"pname": "MonoMod.RuntimeDetour.HookGen",
"version": "22.1.4.3",
"hash": "sha256-DuOnuXQcS63Z/y5s3q5FHZiqWTPgayNpylkzRzl6pE4="
},
{
"pname": "MonoMod.Utils",
"version": "22.1.4.3",
"hash": "sha256-0KyqozOCC26+z5+Ah35iFvRwrPXvvxDlEq6gLl5lPNU="
},
{
"pname": "Newtonsoft.Json",
"version": "13.0.1",
"hash": "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo="
},
{
"pname": "runtime.any.System.Collections",
"version": "4.3.0",
"hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="
},
{
"pname": "runtime.any.System.Globalization",
"version": "4.3.0",
"hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="
},
{
"pname": "runtime.any.System.IO",
"version": "4.3.0",
"hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE="
},
{
"pname": "runtime.any.System.Reflection",
"version": "4.3.0",
"hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk="
},
{
"pname": "runtime.any.System.Reflection.Extensions",
"version": "4.3.0",
"hash": "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8="
},
{
"pname": "runtime.any.System.Reflection.Primitives",
"version": "4.3.0",
"hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ="
},
{
"pname": "runtime.any.System.Resources.ResourceManager",
"version": "4.3.0",
"hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4="
},
{
"pname": "runtime.any.System.Runtime",
"version": "4.3.0",
"hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="
},
{
"pname": "runtime.any.System.Runtime.Handles",
"version": "4.3.0",
"hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4="
},
{
"pname": "runtime.any.System.Runtime.InteropServices",
"version": "4.3.0",
"hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA="
},
{
"pname": "runtime.any.System.Text.Encoding",
"version": "4.3.0",
"hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs="
},
{
"pname": "runtime.any.System.Threading.Tasks",
"version": "4.3.0",
"hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="
},
{
"pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps="
},
{
"pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I="
},
{
"pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA="
},
{
"pname": "runtime.native.System",
"version": "4.3.0",
"hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="
},
{
"pname": "runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="
},
{
"pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM="
},
{
"pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4="
},
{
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0="
},
{
"pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4="
},
{
"pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g="
},
{
"pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc="
},
{
"pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw="
},
{
"pname": "runtime.unix.System.Diagnostics.Debug",
"version": "4.3.0",
"hash": "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI="
},
{
"pname": "runtime.unix.System.Private.Uri",
"version": "4.3.0",
"hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="
},
{
"pname": "runtime.unix.System.Runtime.Extensions",
"version": "4.3.0",
"hash": "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4="
},
{
"pname": "System.Collections",
"version": "4.3.0",
"hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="
},
{
"pname": "System.Collections.NonGeneric",
"version": "4.3.0",
"hash": "sha256-8/yZmD4jjvq7m68SPkJZLBQ79jOTOyT5lyzX4SCYAx8="
},
{
"pname": "System.Collections.Specialized",
"version": "4.3.0",
"hash": "sha256-QNg0JJNx+zXMQ26MJRPzH7THdtqjrNtGLUgaR1SdvOk="
},
{
"pname": "System.ComponentModel",
"version": "4.3.0",
"hash": "sha256-i00uujMO4JEDIEPKLmdLY3QJ6vdSpw6Gh9oOzkFYBiU="
},
{
"pname": "System.ComponentModel.Primitives",
"version": "4.3.0",
"hash": "sha256-IOMJleuIBppmP4ECB3uftbdcgL7CCd56+oAD/Sqrbus="
},
{
"pname": "System.ComponentModel.TypeConverter",
"version": "4.3.0",
"hash": "sha256-PSDiPYt8PgTdTUBz+GH6lHCaM1YgfObneHnZsc8Fz54="
},
{
"pname": "System.Diagnostics.Debug",
"version": "4.3.0",
"hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM="
},
{
"pname": "System.Globalization",
"version": "4.3.0",
"hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="
},
{
"pname": "System.Globalization.Extensions",
"version": "4.3.0",
"hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk="
},
{
"pname": "System.IO",
"version": "4.3.0",
"hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="
},
{
"pname": "System.IO.FileSystem.Primitives",
"version": "4.3.0",
"hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg="
},
{
"pname": "System.Linq",
"version": "4.3.0",
"hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A="
},
{
"pname": "System.Private.Uri",
"version": "4.3.0",
"hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="
},
{
"pname": "System.Reflection",
"version": "4.3.0",
"hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY="
},
{
"pname": "System.Reflection.Emit.ILGeneration",
"version": "4.7.0",
"hash": "sha256-GUnQeGo/DtvZVQpFnESGq7lJcjB30/KnDY7Kd2G/ElE="
},
{
"pname": "System.Reflection.Emit.Lightweight",
"version": "4.7.0",
"hash": "sha256-V0Wz/UUoNIHdTGS9e1TR89u58zJjo/wPUWw6VaVyclU="
},
{
"pname": "System.Reflection.Extensions",
"version": "4.3.0",
"hash": "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk="
},
{
"pname": "System.Reflection.Primitives",
"version": "4.3.0",
"hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM="
},
{
"pname": "System.Reflection.TypeExtensions",
"version": "4.7.0",
"hash": "sha256-GEtCGXwtOnkYejSV+Tfl+DqyGq5jTUaVyL9eMupMHBM="
},
{
"pname": "System.Resources.ResourceManager",
"version": "4.3.0",
"hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo="
},
{
"pname": "System.Runtime",
"version": "4.3.0",
"hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg="
},
{
"pname": "System.Runtime.Extensions",
"version": "4.3.0",
"hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o="
},
{
"pname": "System.Runtime.Handles",
"version": "4.3.0",
"hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms="
},
{
"pname": "System.Runtime.InteropServices",
"version": "4.3.0",
"hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="
},
{
"pname": "System.Text.Encoding",
"version": "4.3.0",
"hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg="
},
{
"pname": "System.Threading",
"version": "4.3.0",
"hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc="
},
{
"pname": "System.Threading.Tasks",
"version": "4.3.0",
"hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="
},
{
"pname": "YamlDotNet",
"version": "9.1.0",
"hash": "sha256-WbMPOLkbyN+SdMrBYuaXV2qKB+bLTV+6RdSFSy/iljk="
}
]

View file

@ -0,0 +1,32 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq common-updater-scripts nixfmt-rfc-style
set -eu -o pipefail
attr=olympus
nix_file=$(nix-instantiate --eval --strict -A "$attr.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/')
api() {
curl -s "https://dev.azure.com/EverestAPI/Olympus/_apis/$1?api-version=7.1"
}
pipeline_id=$(api pipelines | jq -r '
.value
| map(select(.name == "EverestAPI.Olympus"))
| .[0].id
')
run_id=$(api pipelines/$pipeline_id/runs | jq -r '
.value
| map(select(.result == "succeeded"))
| max_by(.finishedDate)
| .id
')
sed -i 's|buildId\s*=\s*".*";|buildId = "'$run_id'";|' $nix_file
run=$(api pipelines/$pipeline_id/runs/$run_id)
commit=$(echo "$run" | jq -r '.resources.repositories.self.version')
version=$(echo "$run" | jq -r '.name')
update-source-version $attr $version --rev=$commit
"$(nix-build --attr $attr.fetch-deps --no-out-link)"

View file

@ -0,0 +1,40 @@
{ stdenv, fetchurl, unzip, system }:
# Source https://github.com/Lykos153/numen-nix
let
getSource = system: version: let
sources = {
x86_64-linux = {
systemString = "linux-x86_64";
sha256 = "sha256-u9yO2FxDl59kQxQoiXcOqVy/vFbP+1xdzXOvqHXF+7I=";
};
aarch64-linux = {
systemString = "linux-aarch64";
sha256 = "sha256-ReldN3Vd6wdWjnlJfX/rqMA67lqeBx3ymWGqAj/ZRUE=";
};
i686-linux = {
systemString = "linux-x86";
sha256 = "sha256-tTnvwieAlIvZji7LnBuSygizxVKhh0T3ICq3hAW44fk=";
};
};
in {
url = "https://github.com/alphacep/vosk-api/releases/download/v${version}/vosk-${(builtins.getAttr system sources).systemString}-${version}.zip";
sha256 = (builtins.getAttr system sources).sha256;
};
in
stdenv.mkDerivation rec {
# todo: other arches as well.
name = "vosk-bin";
version = "0.3.45";
src = fetchurl (getSource system version);
nativeBuildInputs = [ unzip ];
unpackCmd = "unzip $curSrc";
installPhase = ''
mkdir -p $out/lib
mv libvosk.so $out/lib/
mkdir -p $out/include
mv vosk_api.h $out/include/
'';
}

View file

@ -0,0 +1,18 @@
{ stdenv, fetchurl, unzip }:
# Source: https://github.com/Lykos153/numen-nix
stdenv.mkDerivation {
name = "vosk-model-small-en-us";
version = "0.15";
src = fetchurl {
url =
"https://alphacephei.com/kaldi/models/vosk-model-small-en-us-0.15.zip";
sha256 = "sha256-MPJiQsTrRJ+UjkLLMC3XpobLKaNCOoNn+Z/0F4CUJJg=";
};
nativeBuildInputs = [ unzip ];
unpackCmd = "unzip $curSrc";
installPhase = ''
mkdir -p $out/usr/share/vosk-models
cp -r . $out/usr/share/vosk-models/small-en-us
'';
}

198
systems/README.md Normal file
View file

@ -0,0 +1,198 @@
# Systems
## [LANA9Z](./x86_64-linux/LANA9Z)
<table>
<tr>
<td><img src="../assets/LANA9Z.jpeg" width="152" height="114"></td>
<td>
<table>
<tr>
<td>User</td>
<td><a href="../main/homes/x86_64-linux/kb@LANA9Z">kb@LANA9Z</a></td>
</tr>
<tr>
<td>Cpu</td>
<td><a href="https://www.intel.com/content/www/us/en/products/sku/53464/intel-core-i72640m-processor-4m-cache-up-to-3-50-ghz/specifications.html">Intel i7-2640M</a>, 2 Cores, max 3.50 GHz</td>
</tr>
<tr>
<td>Ram</td>
<td>16 GB</td>
</tr>
<tr>
<td>Device</td>
<td>MacBook Pro 2011 (MacBook Pro 8,1)</td>
</tr>
</table>
</td>
</tr>
</table>
## [LoyAdjo](./x86_64-linux/LoyAdjo)
<table>
<tr>
<td><img src="../assets/LoyAdjo.jpeg" width="152" height="114"></td>
<td>
<table>
<tr>
<td>User</td>
<td><a href="../main/homes/x86_64-linux/kb@LoyAdjo">kb@LoyAdjo</a></td>
</tr>
<tr>
<td>Cpu</td>
<td><a href="https://www.amd.com/en/products/processors/desktops/ryzen/5000-series/amd-ryzen-5-5600x.html">AMD Ryzen 5 5600X</a>, 6 Cores, max 4.60 GHz</td>
</tr>
<tr>
<td>Gpu</td>
<td><a href="https://www.nvidia.com/en-us/geforce/10-series/">GeForce GTX 1070</a></td>
</tr>
<tr>
<td>Ram</td>
<td>32 GB</td>
</tr>
<tr>
<td>Device</td>
<td>Custom Desktop Computer</td>
</tr>
</table>
</td>
</tr>
</table>
## [Ohybke](./x86_64-linux/Ohybke)
<table>
<tr>
<td><img src="../assets/Ohybke.jpeg" width="152" height="114"></td>
<td>
<table>
<tr>
<td>User</td>
<td><a href="../main/homes/x86_64-linux/kb@Ohybke">kb@Ohybke</a></td>
</tr>
<tr>
<td>Cpu</td>
<td><a href="https://www.intel.com/content/www/us/en/products/sku/196586/intel-core-i31000ng4-processor-4m-cache-up-to-3-20-ghz/specifications.html">Intel i3-1000NG4</a>, 2 Cores, 3.20 GHz</td>
</tr>
<tr>
<td>Ram</td>
<td>8 GB</td>
</tr>
<tr>
<td>Device</td>
<td>MacBook Air early 2020 (MacBook Air 9,1)</td>
</tr>
</table>
</td>
</tr>
</table>
## [HyperC](./x86_64-linux/HyperC)
<table>
<tr>
<td><img src="../assets/HyperC.jpeg" width="152" height="114"></td>
<td>
<table>
<tr>
<td>User</td>
<td><a href="../main/homes/x86_64-linux/kb@HyperC">kb@HyperC</a></td>
</tr>
<tr>
<td>Cpu</td>
<td><a href="https://www.intel.com/content/www/us/en/products/sku/97472/intel-core-i57300u-processor-3m-cache-up-to-3-50-ghz/specifications.html">Intel i5-7300U</a>, 2 Cores, max 3.50 GHz</td>
</tr>
<tr>
<td>Ram</td>
<td>8 GB</td>
</tr>
<tr>
<td>Device</td>
<td>Surface Pro 2017 (Surface Pro 5)</td>
</tr>
</table>
</td>
</tr>
</table>
## [Rubtrm](./i686-linux/Rubtrm)
<table>
<tr>
<td><img src="../assets/Rubtrm.jpeg" width="152" height="114"></td>
<td>
<table>
<tr>
<td>User</td>
<td>kb@Rubtrm</td>
</tr>
<tr>
<td>Cpu</td>
<td><a href="https://www.intel.com/content/www/us/en/products/sku/36331/intel-atom-processor-n270-512k-cache-1-60-ghz-533-mhz-fsb/specifications.html">Intel Atom N270</a>, 2 Cores, 1.60 GHz</td>
</tr>
<tr>
<td>Ram</td>
<td>2 GB</td>
</tr>
<tr>
<td>Device</td>
<td>Lenovo ideapad S10 4333-A13</td>
</tr>
</table>
</td>
</tr>
</table>
## [kb-game-01](./x86_64-linux/kb-game-01)
<table>
<tr>
<td><img src="../assets/server-solid.svg" width="152" height="114"></td>
<td>
<table>
<tr>
<td>User</td>
<td>master@kb-game-01</td>
</tr>
<tr>
<td>Cpu</td>
<td><a href="https://www.amd.com/en/products/processors/server/epyc/7002-series.html">AMD EPYC 7702P</a>, 4 / 64 Cores, max 3.35 GHz</td>
</tr>
<tr>
<td>Ram</td>
<td>16 GB</td>
</tr>
<tr>
<td>Device</td>
<td>KVM Server for Game-Servers (or Build-Server)</td>
</tr>
</table>
</td>
</tr>
</table>
## [U3ncSovm](./x86_64-linux/U3ncSovm)
<table>
<tr>
<td><img src="../assets/server-solid.svg" width="152" height="114"></td>
<td>
<table>
<tr>
<td>User</td>
<td>master@U3ncSovm</td>
</tr>
<tr>
<td>Cpu</td>
<td>...</td>
</tr>
<tr>
<td>Ram</td>
<td>...</td>
</tr>
<tr>
<td>Device</td>
<td>Custom NAS Server, currently under construction only as VM.</td>
</tr>
<tr>
<td>Build</td>
<td><pre lang="bash">nixos-rebuild build-vm --flake .#U3ncSovm</pre></td>
</tr>
</table>
</td>
</tr>
</table>

View file

@ -0,0 +1,75 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware.nix
];
# Configure Nix
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nix.settings.trusted-users=[ "remotebuild" ];
nix.package = pkgs.lix;
# Networking
networking.hostName = "kb-senfnvp";
networking.networkmanager.enable = true;
networking.nameservers = [
"1.1.1.1"
];
# Set your time zone.
time.timeZone = "Europe/Amsterdam";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "de";
};
users.users.master = { # Managed by Homemanager
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJszrrdVHmMUdgOakyFNOIPV9BfopwflqivmK13Fmsab kb@Ohybke"
];
isNormalUser = true;
extraGroups = [ "wheel" ];
};
users.users.remotebuild = {
isNormalUser = true;
createHome = true;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJV9cwMXlbaBdg2gReSnLxH3EV5cyFoSi21f5fZhPfdC kb@Ohybke"
];
};
environment.systemPackages = with pkgs; [
git
wget
vim
tree
fastfetch
];
# Default Editor
programs.vim.enable = true;
programs.vim.defaultEditor = true;
# SSH and Mosh
services.openssh = {
enable = true;
settings.PasswordAuthentication = false;
settings.KbdInteractiveAuthentication = false;
ports = [ 9553 ];
openFirewall = true;
};
programs.mosh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
system.stateVersion = "24.11"; # NEVER CHANGE THIS !!!!
}

View file

@ -0,0 +1,52 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
# System
boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_scsi" "sr_mod" "sr_mod" "r8169" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
# Boot Loader
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# SSH Remote Unlock
boot.kernelParams = [ "ip=dhcp" ];
boot.initrd.systemd.users.root.shell = "/bin/cryptsetup-askpass";
boot.initrd.network = {
enable = true;
ssh = {
enable = true;
port = 7299;
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ6jJa135d46R9XgV7h5SfxALabycI5ZPN8kdSQbEkYM kb@Ohybke" ];
hostKeys = [ "/etc/secrets/initrd/ssh_host_rsa_key" ];
};
postCommands = ''
echo 'cryptsetup-askpass' >> /root/.profile
'';
};
# Disks
boot.initrd.luks.devices."luks-2d08047a-a014-480b-8a24-a70e20a2d7d7".device = "/dev/disk/by-uuid/2d08047a-a014-480b-8a24-a70e20a2d7d7";
fileSystems."/" = {
device = "/dev/disk/by-uuid/9c1d9682-5cfb-4683-a789-f544fc6e7681";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/FEAA-61DA";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
# Networking
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp7s0.useDHCP = lib.mkDefault true;
}

View file

@ -20,6 +20,8 @@
"cache.game01.kb-one.de:XcqI+uobV7EoTKuRmnzYup/+oSfn8uLwnsiQFp8dk/g=" "cache.game01.kb-one.de:XcqI+uobV7EoTKuRmnzYup/+oSfn8uLwnsiQFp8dk/g="
]; ];
}; };
# nixpkgs.config.allowUnsupportedSystem = true;
nixpkgs.config.allowUnfree = true;
# Use the GRUB 2 boot loader. # Use the GRUB 2 boot loader.
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
@ -42,23 +44,43 @@
# Enable the X11 windowing system. # Enable the X11 windowing system.
services.xserver.enable = true; services.xserver.enable = true;
services.xserver.videoDrivers = [ "modesetting" "fbdev" "vesa" "intel_drv" "intel-media-sdk" ];
# Enable Desktop Environment.
services.displayManager.sddm.enable = true;
# services.displayManager.sddm.wayland.enable = true;
# services.xserver.displayManager.lightdm.enable = true;
# services.desktopManager.plasma6.enable = true;
# services.xserver.desktopManager.plasma5.enable = true;
services.xserver.desktopManager.xfce.enable = true;
# services.xserver.desktopManager.lxqt.enable = true;
# Configure keymap in X11 # Configure keymap in X11
services.xserver.xkb.layout = "de"; services.xserver.xkb = {
# services.xserver.xkb.options = "eurosign:e,caps:escape"; layout = "de";
variant = "";
};
# Enable sound. # Enable sound with pipewire.
# hardware.pulseaudio.enable = true; services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support (enabled default in most desktopManager).
services.xserver.libinput.enable = true; services.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd. # Define a user account. Don't forget to set a password with passwd.
users.users.kb = { users.users.kb = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ]; description = "kB";
extraGroups = [ "wheel" "networkmanager" "input" ];
packages = with pkgs; [ packages = with pkgs; [
tree tree
kb-one.numen
]; ];
}; };
@ -80,8 +102,6 @@
# enableSSHSupport = true; # enableSSHSupport = true;
# }; # };
# List services that you want to enable:
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
# services.openssh.enable = true; # services.openssh.enable = true;
@ -89,9 +109,13 @@
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ];
# Needed for dotool to act on numen voice commands
services.udev.extraRules = ''
KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput"
'';
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "24.05"; # Did you read the comment? system.stateVersion = "24.05"; # Did you read the comment?
} }

View file

@ -13,6 +13,7 @@
boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-label/NIXOS_LUKS"; boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-label/NIXOS_LUKS";
boot.kernelModules = [ ]; boot.kernelModules = [ ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
boot.kernelParams = [ "i915.force_probe=27ae" ];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-label/NIXOS_ROOT"; { device = "/dev/disk/by-label/NIXOS_ROOT";
@ -35,7 +36,9 @@
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true; # networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "i686-linux"; nixpkgs.hostPlatform = lib.mkDefault "i686-linux";
networking.enableIntel3945ABGFirmware = true; # networking.enableIntel3945ABGFirmware = true;
hardware.graphics.extraPackages = [ pkgs.intel-vaapi-driver pkgs.kb-one.intel-media-sdk ];
hardware.graphics.extraPackages32 = [ pkgs.intel-vaapi-driver pkgs.kb-one.intel-media-sdk ];
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# hardware.enableAllFirmware = true; hardware.enableAllFirmware = true;
} }

View file

@ -0,0 +1,7 @@
{ pkgs, modulesPath, lib, ... }:
{
imports = [
"${modulesPath}/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix"
];
}

View file

@ -109,7 +109,7 @@
services.printing.enable = true; services.printing.enable = true;
# Enable sound with pipewire. # Enable sound with pipewire.
hardware.pulseaudio.enable = false; services.pulseaudio.enable = false;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
enable = true; enable = true;

View file

@ -11,9 +11,12 @@ in {
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" ]; boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ "ipts" "mei" "mei_me" ];
# boot.initrd.systemd.enable = true; boot.initrd.systemd.enable = true;
# boot.initrd.unl0kr.enable = true; boot.initrd.unl0kr.enable = true;
boot.initrd.unl0kr.settings = {
general.backend = "drm";
};
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];

View file

@ -2,18 +2,17 @@
{ {
imports = imports =
[ # Include the results of the hardware scan. [
./hardware.nix ./hardware.nix
]; ];
# Configure Nix # Configure Nix
nix.package = pkgs.lix; nix.package = pkgs.lix;
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings = {
experimental-features = [ "nix-command" "flakes" ];
trusted-users = [ "remotebuild" ];
};
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
nixpkgs.config.permittedInsecurePackages = [
"electron-27.3.11"
];
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
@ -21,15 +20,14 @@
networking.hostName = "LoyAdjo"; networking.hostName = "LoyAdjo";
# Enable networking # Wireless
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
hardware.bluetooth.enable = true; # enables support for Bluetooth
hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot
# Set your time zone. # Locale
time.timeZone = "Europe/Berlin"; time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8"; LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8"; LC_IDENTIFICATION = "de_DE.UTF-8";
@ -42,28 +40,23 @@
LC_TIME = "de_DE.UTF-8"; LC_TIME = "de_DE.UTF-8";
}; };
# Enable the X11 windowing system. # GUI
services.xserver.enable = true; services.xserver.enable = true;
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = [ "nvidia" ];
# Enable the KDE Plasma Desktop Environment.
services.displayManager.sddm.enable = true; services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true; services.desktopManager.plasma6.enable = true;
# Configure keymap in X11 # Input
services.xserver.xkb = { services.xserver.xkb.layout = "de";
layout = "de"; services.xserver.xkb.variant = "";
variant = ""; console.keyMap = "de";
services.numen = {
enable = true;
autoStart = false;
}; };
# Configure console keymap # Output
console.keyMap = "de"; services.pulseaudio.enable = false;
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
hardware.pulseaudio.enable = false;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
enable = true; enable = true;
@ -71,26 +64,45 @@
alsa.support32Bit = true; alsa.support32Bit = true;
pulse.enable = true; pulse.enable = true;
}; };
services.printing.enable = true;
# Users
users.users.kb = { # Managed by Homemanager users.users.kb = { # Managed by Homemanager
isNormalUser = true; isNormalUser = true;
description = "kB"; description = "kB";
extraGroups = [ "networkmanager" "wheel" ]; extraGroups = [ "networkmanager" "wheel" "input" ];
};
users.users.remotebuild = {
isNormalUser = true;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIuvGIdO1nwuzq3YrjpxH84rpGhquNvRKz1SSPwKUsth kb @ Rubtrm"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGRlk8FEIN7P81SRVEkP1wjlBjsiUGcBcqzSbHVGB0sF root @ Ohybke"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAl0qiBLwbdSAMfnZCcpG23LgkhlV3Bko3U17oV3m18A root @ HyperC"
];
}; };
# Enable automatic login for the user. # Steam
# services.xserver.displayManager.autoLogin.enable = true; programs.steam.enable = true;
# services.xserver.displayManager.autoLogin.user = "kb";
# services.gpg-agent.enable = true; # SSH
programs.ssh.startAgent = true; programs.ssh.startAgent = true;
services.openssh = {
enable = true;
settings.PasswordAuthentication = false;
settings.KbdInteractiveAuthentication = false;
ports = [ 7325 ];
openFirewall = true;
};
# List packages installed in system profile. To search, run: $ nix search wget # System Packages
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [ # To search, run: $ nix search wget
vim vim
git git
kb-one.numen
kb-one.dotool
kb-one.vosk-model-small-en-us
tree
]; ];
system.stateVersion = "24.05"; # NEVER Change this! system.stateVersion = "24.05"; # NEVER Change this!
} }

View file

@ -9,12 +9,17 @@
]; ];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [
"kvm-amd"
];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
boot.supportedFilesystems = [ "zfs" ];
boot.zfs.forceImportRoot = false;
networking.hostId = "22d12b46";
# Setup Nvidia Driver # Setup Nvidia Driver
hardware.opengl.enable = true; hardware.graphics.enable = true;
hardware.nvidia = hardware.nvidia =
{ {
modesetting.enable = true; modesetting.enable = true;
@ -25,6 +30,9 @@
package = config.boot.kernelPackages.nvidiaPackages.beta; package = config.boot.kernelPackages.nvidiaPackages.beta;
}; };
# Enable Bosto Tochpad Support (See ../../../modules/nixos/hardware/bosto-touchpad/default.nix)
hardware.bosto-touchpad.enable = true;
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/b3344eaa-384e-4779-92b8-92f6e9a27d7d"; { device = "/dev/disk/by-uuid/b3344eaa-384e-4779-92b8-92f6e9a27d7d";
fsType = "ext4"; fsType = "ext4";

View file

@ -0,0 +1,138 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware.nix
];
# Configure Nix
nix.package = pkgs.lix;
nix.settings = {
experimental-features = [ "nix-command" "flakes" ];
};
nixpkgs.config.allowUnfree = true;
nixpkgs.config.permittedInsecurePackages = [
"electron-27.3.11"
"olm-3.2.16"
];
# Distributed Builds
nix.buildMachines = [
{
hostName = "kb-senfnvp-remotebuild";
systems = [ "aarch64-linux" ];
protocol = "ssh-ng";
maxJobs = 10;
speedFactor = 2;
supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" ];
mandatoryFeatures = [];
}
];
nix.distributedBuilds = true;
nix.extraOptions = ''
builders-use-substitutes = true
'';
# NAS Test-Config
suites.nas.enable = false;
# Networking
networking.hostName = "Ohybke";
networking.networkmanager.enable = true;
#networking.wireless.enable = true;
# Allow KDE Connect Ports
networking.firewall.allowedTCPPortRanges = [{ from = 1714; to = 1764; }];
networking.firewall.allowedUDPPortRanges = [{ from = 1714; to = 1764; }];
# Enable Bluetooth
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
# Locale
time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the KDE Plasma Desktop Environment.
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
# Keyboard and Keymap
services.xserver.xkb = {
layout = "de";
variant = "mac_nodeadkeys";
options = "";
};
console = {
font = "Lat2-Terminus16";
# keyMap = "de";
useXkbConfig = true;
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Protonmail Bridge
services.protonmail-bridge.enable = true;
# Languagetool Spellchecking Server
services.languagetool = {
enable = true;
allowOrigin = "*";
};
# Users
users.users.kb = { # Managed by Homemanager
isNormalUser = true;
description = "kB";
extraGroups = [ "networkmanager" "wheel" ];
};
# Enable SSH-Agent
programs.ssh.startAgent = true;
# Enable Steam
programs.steam.enable = true;
# Packages installed in system profile. Search Packages: $ nix search wget
environment.systemPackages = with pkgs; [
vim
helix
git
tree
dmg2img
curl
python3
sops
kb-one.numen
kb-one.dotool
kb-one.vosk-model-small-en-us
];
system.stateVersion = "24.11"; # NEVER Change this!
}

View file

@ -0,0 +1,43 @@
{ config, lib, pkgs, modulesPath, inputs, ... }: let
inherit (inputs) nixos-hardware;
in {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
nixos-hardware.nixosModules.apple-t2
];
# Nix Config
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "cryptd" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
boot.supportedFilesystems = [ "zfs" ];
boot.zfs.forceImportRoot = false;
networking.hostId = "60dbcc20";
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.efi.efiSysMountPoint = "/boot";
# File Systems
fileSystems."/" = {
device = "/dev/disk/by-uuid/e36a3f85-020f-4d6c-844f-b81131ce7e63";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-a226aaf4-1250-447b-a5fc-fa37758d332a".device = "/dev/disk/by-uuid/a226aaf4-1250-447b-a5fc-fa37758d332a";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/5F66-17ED";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ { device = "/swapfile"; size = 8 * 1024; } ];
# Misc
networking.useDHCP = lib.mkDefault true;
hardware.apple-t2.firmware.enable = true;
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -2,7 +2,7 @@
{ {
imports = [ # Include the results of the hardware scan. imports = [ # Include the results of the hardware scan.
./vm.nix ./hardware.nix
]; ];
# Configure Nix # Configure Nix

View file

@ -0,0 +1,49 @@
{ config, lib, pkgs, modulesPath, inputs, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
# Configure NixOS
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
# Boot Parameters
boot.initrd.availableKernelModules = [ "uhci_hcd" "ehci_pci" "ahci" "firewire_ohci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" "wl" ];
boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
# Filesystems
fileSystems."/" = {
device = "/dev/disk/by-uuid/00000000-0000-0000-0000-000000000000";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-00000000-0000-0000-0000-000000000000".device = "/dev/disk/by-uuid/00000000-0000-0000-0000-000000000000";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/0000-0000";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [
{
device = "/swapfile";
size = 4*1024;
}
];
# Network
networking.useDHCP = lib.mkDefault true;
# Hardware
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# Virtual Machine Configuration
virtualisation.vmVariant = {
# following configuration is added only when building VM with build-vm
virtualisation = {
memorySize = 4*1024;
cores = 3;
};
};
}

View file

@ -1,10 +0,0 @@
{ config, lib, pkgs, modulesPath, ... }:
{
virtualisation.vmVariant = {
# following configuration is added only when building VM with build-vm
virtualisation = {
memorySize = 4*1024;
cores = 3;
};
};
}

View file

@ -21,7 +21,7 @@
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
# Define your hostname. # Define your hostname.
networking.hostName = "kb-games-01"; networking.hostName = "kb-game-01";
# Set your time zone. # Set your time zone.
time.timeZone = "Europe/Amsterdam"; time.timeZone = "Europe/Amsterdam";
@ -36,12 +36,15 @@
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHS3DoQe/4TtdTLD/Fl41rTjE0n5MyFMl59VGVejcskO kb voloxo" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHS3DoQe/4TtdTLD/Fl41rTjE0n5MyFMl59VGVejcskO kb voloxo"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPpN/3esM0SFLJ2guCBOYX8IdBC+jUiMF+xPYkTEuzbe kb-work yerukall" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPpN/3esM0SFLJ2guCBOYX8IdBC+jUiMF+xPYkTEuzbe kb-work yerukall"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMN1LWMOfFtRKkSLIA/XTj3KYm7OG2bjqEmGXj0gmDc7 kb@LoyAdjo" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMN1LWMOfFtRKkSLIA/XTj3KYm7OG2bjqEmGXj0gmDc7 kb@LoyAdjo"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7W8FUUvM8rUGK6qV3XOIxR0y/pdyo9z5HZNzOADs5+ kb@Rubtrm"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILgfAxGyxjNOZyuUZIlwVCzj/mBM9uM7apNDzEJ3g+F+ kb@LANA9C"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKurR2GzSHyD3AM0Xn+YmwfGcLjBlQX1ZRh93S8YiQwn kb@Ohybke"
]; ];
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user. extraGroups = [ "wheel" ]; # Enable sudo for the user.
packages = with pkgs; [ packages = with pkgs; [
tree
vim vim
sops
]; ];
}; };
@ -49,6 +52,8 @@
isNormalUser = true; isNormalUser = true;
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBHdxVb42GEb/rwrsQx/Wc2v2P+WIq8/WNlF+l31Rl/a Remotebuilds from HyperC" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBHdxVb42GEb/rwrsQx/Wc2v2P+WIq8/WNlF+l31Rl/a Remotebuilds from HyperC"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL/WONflZXVoZd8I4HdNMXNtoYELnCaxqdFY0QKDXXS9 Remotebuilds from Rubtrm"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJqjdhtK0xeJcHwwCAia6I+WuZCkN9pUS21MNjJ2jOuc Remotebuilds from LANA9Z"
]; ];
}; };
@ -57,8 +62,17 @@
vim vim
wget wget
git git
tree
]; ];
# Default Editor
programs.vim.enable = true;
programs.vim.defaultEditor = true;
# Sops Secrets Config
sops.defaultSopsFormat = "yaml";
sops.age.keyFile = "/home/master/.config/sops/age/keys.txt";
# SSH and Mosh # SSH and Mosh
services.openssh = { services.openssh = {
enable = true; enable = true;
@ -79,10 +93,11 @@
# Forgejo Runner # Forgejo Runner
services.forgejo-runner.enable = true; services.forgejo-runner.enable = true;
services.nix-serve = { # Binary Cache
enable = true; services.binary-cache.enable = false; # No Binary-Cache, when there are Secrets in the /nix/store
secretKeyFile = "/var/cache-kb-games-01-priv-key.pem";
}; # Enable QUEMU Quest Agent
services.qemuGuest.enable = true;
# Do NOT change this value # Do NOT change this value
system.stateVersion = "24.05"; # Did you read the comment? system.stateVersion = "24.05"; # Did you read the comment?

View file

@ -1,281 +0,0 @@
{ config, lib, pkgs, inputs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware.nix
];
# Configure Nix
nix.package = pkgs.lix;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nixpkgs.config.allowUnfree = true;
nixpkgs.config.permittedInsecurePackages = [
"electron-27.3.11"
"olm-3.2.16"
];
nix.settings.trusted-public-keys = [
"cache.HyperC:90YNJ0eWsuBGVVP989lJh1rL8C0KM6IKbAtEUiu+FCU="
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Crosscompiling
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
networking.hostName = "voloxo"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
# Nvidia Configuration
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
# Enable the X11 windowing system.
services.xserver.enable = true;
services.xserver.videoDrivers = [ "nvidia" ];
# Enable the KDE Plasma Desktop Environment.
services.displayManager.sddm.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "us,dv2,de";
variant = "esc:swapcaps";
extraLayouts.dv2 = {
description = "German Dvorak Type 2";
languages = [ "de" ];
symbolsFile = ./symbols/dv2;
};
};
# Configure console keymap
console.keyMap = "de";
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.kb = {
isNormalUser = true;
description = "kb";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
firefox
kate
thunderbird
cheese
obs-studio
# blender
syncthing
keepassxc
freetube
libreoffice
adafruit-nrfutil
prismlauncher
gimp
inkscape
veracrypt
matrix-commander
vlc
protonvpn-gui
telegram-desktop
logseq
signal-desktop
kid3
#calibre
spotify-player
tidal-hifi
iamb # Matrix with Vim-Binds
yazi
nerdfonts
scrcpy
ryujinx
razergenie
webcord
mangohud
vscodium
pass-wayland
gnupg
kdePackages.kcalc
];
};
users.users.remotebuild = {
isNormalUser = true;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID8CBRiViR+JVFHEeeUbeHLY4gCvZ1TTlt63HlBD8xls Remotebuilds from HyperC"
];
};
# Define Service Users
users.groups.languagetool = {};
users.users.languagetool = {
isSystemUser = true;
group = "languagetool";
};
# Enable automatic login for the user.
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "kb";
programs.vim = {
enable = true;
defaultEditor = true;
};
programs.ssh.startAgent = true;
programs.kdeconnect.enable = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
};
programs.firefox.enable = true;
programs.firefox.nativeMessagingHosts.packages = [ pkgs.firefoxpwa ];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget
fastfetch
usbutils
fprintd
nss
mesa
python3
zulu
zulu8
languagetool
btop
firefoxpwa
bookworm
foliate
gparted
git
ntfs3g
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
systemd.services.languagetool = {
description = "LanguageTool HTTP Server for local Spellchecking";
wants = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "/run/current-system/sw/bin/languagetool-http-server --port 8081 --allow-origin '*'";
WorkingDirectory = "~"; # Defaults to "/" If the user has no home
User = "languagetool";
Restart = "always";
RestartSec = 30;
};
};
# services.udev.extraRules = ''
#ENV{ID_VENDOR_ID}=="EloTouchSystems_Inc",ENV{ID_MODEL_ID}=="Elo_TouchSystems_2216_AccuTouch®_USB_Touchmonitor_Interface",ENV{WL_OUTPUT}="DP-0",ENV{LIBINPUT_CALIBRATION_MATRIX}="0.4 0 0 0 -0.347826087 0.652173913"
#'';
# services.xserver.inputClassSections = [
# ''
# Identifier "calibration"
# MatchProduct "EloTouchSystems,Inc Elo TouchSystems 2216 AccuTouch® USB Touchmonitor Interface"
# Option "MinX" "6225"
# Option "MaxX" "59846"
# Option "MinY" "57849"
# Option "MaxY" "5925"
# Option "InvertY" "1"
# ''
# ];
# Virtualisation
virtualisation.podman = {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;
};
services.syncthing = {
enable = true;
user = "kb";
dataDir = "/home/kb/sync";
configDir = "/home/kb/.config/syncthing";
};
# SSH
services.openssh = {
enable = true;
settings.PasswordAuthentication = false;
settings.KbdInteractiveAuthentication = false;
ports = [ 4125 ];
openFirewall = true;
};
services.nix-serve = {
enable = true;
secretKeyFile = "/var/cache-voloxo-priv-key.pem";
};
# Do NOT change this value
system.stateVersion = "23.05"; # Did you read the comment?
}

View file

@ -1,45 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ "nvidia" ];
boot.kernelModules = [ "kvm-amd" "sg" ];
boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/f1abb1b8-0cc5-46f3-9e97-72f793c4b496";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-07910f1e-c989-4acc-8d81-fef02a2596b3".device = "/dev/disk/by-uuid/07910f1e-c989-4acc-8d81-fef02a2596b3";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/1ECE-940A";
fsType = "vfat";
};
swapDevices = [{ device = "/swapfile"; size = 8 * 1024; }];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp9s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
hardware.nvidia.open = false;
hardware.openrazer = {
enable = true;
users = [ "kb" ];
};
}

View file

@ -1,10 +0,0 @@
{ inputs, config, pkgs, lib, system, ... }:
{
modules.packagemanagers.appimage = true;
}

View file

@ -1,80 +0,0 @@
// German Dvorak keymap by Thorsten Staerk (www.staerk.de/thorsten)
// Have acute and grave as dead keys, tilde and circumflex alive as they are needed
// in many programming languages.
// to use this keymap, use a 105-key-keyboard and the command setxkbmap -model pc105 -layout dvorak -variant de
// source: http://www-lehre.informatik.uni-osnabrueck.de/~rfreund/dvorak.php
// Some modifications by Simon Spruenker (simon.spruenker.de) e. g.:
// Can also be used on 104-key-keyboard without loosing adiaeresis.
partial alphanumeric_keys
xkb_symbols "dvorak" {
include "us(dvorak)"
name[Group1]="Germany - Dvorak";
key <TLDE> { [ asciicircum, degree ] };
key <AE01> { [ 1, exclam, onesuperior ] };
key <AE02> { [ 2, quotedbl, twosuperior ] };
key <AE03> { [ 3, section, threesuperior ] };
key <AE04> { [ 4, dollar, bar ] };
key <AE05> { [ 5, percent, bar ] };
key <AE06> { [ 6, ampersand, brokenbar ] };
key <AE07> { [ 7, slash, braceleft ] };
key <AE08> { [ 8, parenleft, bracketleft ] };
key <AE09> { [ 9, parenright, bracketright ] };
key <AE10> { [ 0, equal, braceright ] };
key <AE11> { [ plus, asterisk, asciitilde ] };
key <AE12> { [ less, greater, dead_grave ] };
key <AD01> { [ udiaeresis, Udiaeresis, braceleft ] };
key <AD02> { [ comma, semicolon, bracketleft ] };
key <AD03> { [ period, colon, bracketright ] };
key <AD04> { [ p, P, braceright ] };
key <AD08> { [ c, C, copyright, Cacute ] };
key <AD09> { [ t, T, trademark ] };
key <AD10> { [ z, Z, zabovedot, Zabovedot ] };
key <AD11> { [ question, ssharp ] };
key <AD12> { [ slash, backslash, dead_acute ] };
key <AC01> { [ a, A, at, aogonek ] };
key <AC02> { [ o, O, oacute, Oacute ] };
key <AC03> { [ e, E, EuroSign, eogonek ] };
key <AC04> { [ i, I, bar ] };
key <AC05> { [ u, U ] };
key <AC06> { [ h, H ] };
key <AC07> { [ d, D ] };
key <AC08> { [ r, R, registered ] };
key <AC09> { [ n, N, nacute, Nacute ] };
key <AC10> { [ s, S, sacute, Sacute] };
key <AC11> { [ l, L, lstroke, Lstroke ] };
key <AB01> { [ odiaeresis, Odiaeresis, adiaeresis, Adiaeresis ] };
key <AB02> { [ q, Q, at ] };
key <AB07> { [ m, M, mu ] };
key <AB10> { [ numbersign, apostrophe ] };
key <BKSL> { [ minus, underscore, hyphen, diaeresis] };
key <LSGT> { [ adiaeresis, Adiaeresis, bar ] };
include "level3(ralt_switch)"
};
partial alphanumeric_keys
xkb_symbols "Sundeadkeys" {
// For naming consistency
include "de(basic)"
};
partial alphanumeric_keys
xkb_symbols "sundeadkeys" {
// For naming consistency
include "de(Sundeadkeys)"
name[Group1]="Germany - Sun dead keys";
};