Compare commits
32 Commits
500168950f
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e559f6dd01 | ||
|
|
6646ac30a3 | ||
|
|
e74848204c | ||
|
|
31f6307b4a | ||
|
|
94020b6df9 | ||
|
|
340f181c58 | ||
|
|
cf6aedc12a | ||
|
|
ab4392a661 | ||
|
|
0164cf392b | ||
|
|
117a9f3627 | ||
|
|
c004fa9fc8 | ||
|
|
91d2374069 | ||
|
|
cc96e7d20e | ||
|
|
2ab5eff599 | ||
|
|
650f0469bc | ||
|
|
90a2a8cf4b | ||
|
|
662e8a2f03 | ||
|
|
f6b4379767 | ||
|
|
fbc7644ac0 | ||
|
|
cc710ef85d | ||
|
|
5bc2bbef6c | ||
|
|
c9ad8e0e55 | ||
|
|
20bd5609e4 | ||
|
|
83c72a1742 | ||
|
|
aeea92d752 | ||
|
|
c10eca565f | ||
|
|
4974969c6f | ||
|
|
b34040203c | ||
|
|
a21805e59b | ||
|
|
60805bcace | ||
|
|
c8361a4c57 | ||
|
|
a117ed02a2 |
@@ -1,5 +0,0 @@
|
|||||||
# This directory is a Syncthing folder marker.
|
|
||||||
# Do not delete.
|
|
||||||
|
|
||||||
folderID: nix
|
|
||||||
created: 2026-01-29T23:06:32-06:00
|
|
||||||
92
README.md
92
README.md
@@ -1,31 +1,75 @@
|
|||||||
# nix
|
# nix
|
||||||
|
|
||||||
[dendritic](https://github.com/vic/den) [nix](https://nixos.org/) configuration.
|
my [nixos](https://nixos.org/) configuration, structured with [den](https://github.com/vic/den) and [flake-parts](https://github.com/hercules-ci/flake-parts).
|
||||||
|
|
||||||
|
## structure
|
||||||
|
|
||||||
|
```nix/flake.nix#L1-2
|
||||||
|
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules);
|
||||||
|
```
|
||||||
|
|
||||||
|
modules are automatically discovered via [import-tree](https://github.com/vic/import-tree) and composed using `den.aspects`.
|
||||||
|
|
||||||
|
```
|
||||||
|
modules/
|
||||||
|
├── core/ # System fundamentals (desktop, audio, graphics, network, theme)
|
||||||
|
├── hosts/ # Per-machine includes (nix, styx, box)
|
||||||
|
├── infra/ # Infrastructure (syncthing, cloudflared tunnels)
|
||||||
|
├── services/ # Self-hosted services (searxng, gitea, copyparty, ...)
|
||||||
|
├── software/ # User software (firefox, nixcord, beets, ...)
|
||||||
|
└── users/ # User accounts
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## hosts
|
## hosts
|
||||||
| host | command |
|
|
||||||
|-|-|
|
|
||||||
| [desktop](https://github.com/4DBug/nix/tree/master/modules/hosts/nix/nix.nix) | `nh os switch ~/nix --impure -H nix` |
|
|
||||||
| [laptop](https://github.com/4DBug/nix/tree/master/modules/hosts/nix/laptop.nix) | `nh os switch ~/nix --impure -H laptop` |
|
|
||||||
| [server](https://github.com/4DBug/nix/tree/master/modules/hosts/nix/box.nix) | `nh os switch ~/nix --impure -H box` |
|
|
||||||
|
|
||||||
## services
|
| Host | Role | GPU | Switch Command |
|
||||||
| service | location | file |
|
|------|------|-----|----------------|
|
||||||
|-|-|-|
|
| `nix` | desktop | nvidia | `nh os switch ~/nix --impure -H nix` |
|
||||||
| [invidious](https://github.com/invidious/invidious) | [tube.bug.tools](https://tube.bug.tools/) | /modules/services |
|
| `styx` | laptop | amd | `nh os switch ~/nix --impure -H styx` |
|
||||||
| [glances](https://github.com/nicolargo/glances) | [monitor.bug.tools](https://monitor.bug.tools/) | /modules/services |
|
| `box` | homeserver | — | `nh os switch ~/nix --impure -H box` |
|
||||||
| [searxng](https://github.com/searxng/searxng) | [search.bug.tools](https://search.bug.tools/) | /modules/services |
|
|
||||||
| [redlib](https://github.com/redlib-org/redlibb) | [reddit.bug.tools](https://reddit.bug.tools/) | ./modules/services/searxng/searxng.nix |
|
|
||||||
| [copyparty](https://github.com/9001/copyparty) | [files.bug.tools](https://files.bug.tools/) | /modules/services |
|
|
||||||
| [matrix](https://matrix.org/) | [matrix.bug.tools](https://matrix.bug.tools/) | /modules/services |
|
|
||||||
| [nixos-mailserver](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver) | [mail.bug.tools](https://mail.bug.tools/) | /modules/services |
|
|
||||||
| [sish](https://docs.ssi.sh/) | [tuns.bug.tools](https://tuns.bug.tools/) | /modules/services |
|
|
||||||
| [vscode-server](https://github.com/cdr/code-server) | - | /modules/services |
|
|
||||||
|
|
||||||
## software
|
---
|
||||||
|
|
||||||
| software | file |
|
## self-hosted services
|
||||||
|-|-|
|
|
||||||
| a | b |
|
all services on `box` are proxied through cloudflared tunnels to `*.bug.tools`.
|
||||||
| c | d |
|
|
||||||
| e | f |
|
| Service | URL | Description |
|
||||||
|
|---------|-----|-------------|
|
||||||
|
| [searxng](https://github.com/searxng/searxng) | [search.bug.tools](https://search.bug.tools) | Privacy-respecting metasearch engine |
|
||||||
|
| [redlib](https://github.com/redlib-org/redlib) | [reddit.bug.tools](https://reddit.bug.tools) | Private Reddit frontend *(disabled)* |
|
||||||
|
| [copyparty](https://github.com/9001/copyparty) | [files.bug.tools](https://files.bug.tools) | File server / uploader |
|
||||||
|
| [gitea](https://gitea.io/) | [git.bug.tools](https://git.bug.tools) | Self-hosted Git with org mirrors |
|
||||||
|
| [glances](https://github.com/nicolargo/glances) | [monitor.bug.tools](https://monitor.bug.tools) | System monitoring |
|
||||||
|
| [nixos-mailserver](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver) | [mail.bug.tools](https://mail.bug.tools) | Email server |
|
||||||
|
| [invidious](https://github.com/iv-org/invidious) | [tube.bug.tools](https://tube.bug.tools) | YouTube frontend *(disabled)* |
|
||||||
|
| [matrix](https://matrix.org/) | [matrix.bug.tools](https://matrix.bug.tools) | Matrix homeserver *(disabled)* |
|
||||||
|
| [sish](https://docs.ssi.sh/) | [tuns.bug.tools](https://tuns.bug.tools) | SSH tunnels *(disabled)* |
|
||||||
|
| vscode-server | — | Remote VS Code access |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## flake inputs
|
||||||
|
|
||||||
|
| Input | Purpose |
|
||||||
|
|-------|---------|
|
||||||
|
| [nixpkgs](https://github.com/nixos/nixpkgs) (unstable) | Package set |
|
||||||
|
| [home-manager](https://github.com/nix-community/home-manager) | User environment management |
|
||||||
|
| [flake-parts](https://github.com/hercules-ci/flake-parts) | Flake structure |
|
||||||
|
| [den](https://github.com/vic/den) | Dendritic aspect system |
|
||||||
|
| [import-tree](https://github.com/vic/import-tree) | Auto module discovery |
|
||||||
|
| [stylix](https://github.com/nix-community/stylix) | System-wide theming |
|
||||||
|
| [catppuccin/nix](https://github.com/catppuccin/nix) | Catppuccin theme modules |
|
||||||
|
| [nixcord](https://github.com/FlameFlag/nixcord) | Declarative Vesktop/Discord |
|
||||||
|
| [nix-flatpak](https://github.com/gmodena/nix-flatpak) | Declarative Flatpak |
|
||||||
|
| [copyparty](https://github.com/9001/copyparty) | File server |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
fix matrix server
|
||||||
|
fix invidious instance
|
||||||
|
fix redlib instance
|
||||||
|
configure cosmic with home
|
||||||
|
|||||||
777
flake.lock
generated
777
flake.lock
generated
@@ -68,6 +68,56 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"beaker-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1773884524,
|
||||||
|
"narHash": "sha256-1dnlofWaxI/YRID+WPz2jHZNDyloBubDt/bAQk9ePLU=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "abc598baf15d6f8a4de395a27ba34b1e769558e1",
|
||||||
|
"revCount": 21,
|
||||||
|
"shallow": false,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.bwaaa.monster/beaker"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"shallow": false,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.bwaaa.monster/beaker"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cachyos-kernel": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1773036026,
|
||||||
|
"narHash": "sha256-hRDSqn5jL0cq4aYTcAS61Jsw2DEqxHkAb01Cyu7jIDc=",
|
||||||
|
"owner": "CachyOS",
|
||||||
|
"repo": "linux-cachyos",
|
||||||
|
"rev": "dd72b90988e22422548f65e1ec8e2b52c8c7e35f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "CachyOS",
|
||||||
|
"repo": "linux-cachyos",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cachyos-kernel-patches": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1773035489,
|
||||||
|
"narHash": "sha256-qsniqHnVIZdhGO6tYyugtWpOtdYofnUcpJAj6YAAvM4=",
|
||||||
|
"owner": "CachyOS",
|
||||||
|
"repo": "kernel-patches",
|
||||||
|
"rev": "d60f37176775b87d3300b333b39ae974adbda381",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "CachyOS",
|
||||||
|
"repo": "kernel-patches",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"catppuccin": {
|
"catppuccin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
@@ -86,17 +136,56 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"catppuccin-userstyles": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1749817927,
|
||||||
|
"narHash": "sha256-lftRs+pfcOrqHDtDWX/Vd/CQvDJguCRxlhI/aIkIB/k=",
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "userstyles",
|
||||||
|
"rev": "714b153c7022c362a37ab8530286a87e4484a828",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "userstyles",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"catppuccin-userstyles-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"catppuccin-userstyles": "catppuccin-userstyles",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772639159,
|
||||||
|
"narHash": "sha256-kMVdp61rzAowZ7ukYq+eam6DMbOSCFXcydKyYjjm7lg=",
|
||||||
|
"owner": "4DBug",
|
||||||
|
"repo": "catppuccin-userstyles-nix",
|
||||||
|
"rev": "20756f27c723caeda354950e89cd9dc041a7b1a7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "4DBug",
|
||||||
|
"repo": "catppuccin-userstyles-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"copyparty": {
|
"copyparty": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils_2",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771834427,
|
"lastModified": 1772605780,
|
||||||
"narHash": "sha256-B1j0ahVuxyZtpbFfy34gk2DjacimPIuzyzCPvDhvxI4=",
|
"narHash": "sha256-p7IzkFmB1kCtl16+bvLKP1hdP61EFQxj+VSKX2lOWgE=",
|
||||||
"owner": "9001",
|
"owner": "9001",
|
||||||
"repo": "copyparty",
|
"repo": "copyparty",
|
||||||
"rev": "ab8bd0178b26a0b6c6406f7bae835d13b16ef188",
|
"rev": "00e821db231d143169236971b50b85b9c9edd298",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -107,11 +196,11 @@
|
|||||||
},
|
},
|
||||||
"den": {
|
"den": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771679476,
|
"lastModified": 1772645664,
|
||||||
"narHash": "sha256-rU58QADljRw8/d0ciRtMeaB4/Y/V8JQBlhT1TTvaKmc=",
|
"narHash": "sha256-7cf6DEczxIHuUFcfbmbLPznf/R35fyvMjgipO9DUyN0=",
|
||||||
"owner": "vic",
|
"owner": "vic",
|
||||||
"repo": "den",
|
"repo": "den",
|
||||||
"rev": "61341ee04b80104bdd22a60541fb8c4c3b49d342",
|
"rev": "21a1d36a234e7dca490edf1f1de5f1a5033a3652",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -138,11 +227,11 @@
|
|||||||
},
|
},
|
||||||
"flake-aspects": {
|
"flake-aspects": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771395573,
|
"lastModified": 1772587379,
|
||||||
"narHash": "sha256-bcCOG2CW23/Eww/zULJf1xd0Shz2zS4c2AJWwLALyJ8=",
|
"narHash": "sha256-Ftbenlg5Kz8j7dZ2dmsUJJbaYkB35IV41+jyvai0RpE=",
|
||||||
"owner": "vic",
|
"owner": "vic",
|
||||||
"repo": "flake-aspects",
|
"repo": "flake-aspects",
|
||||||
"rev": "8297f3bc41ad79b9f01d56d0dd92f7aac51bacfb",
|
"rev": "b0f62449459f91c050db9cd1f7709d488fcef48d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -152,6 +241,38 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733328505,
|
"lastModified": 1733328505,
|
||||||
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
@@ -167,11 +288,11 @@
|
|||||||
},
|
},
|
||||||
"flake-file": {
|
"flake-file": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771017549,
|
"lastModified": 1772343585,
|
||||||
"narHash": "sha256-n68HeYEQJ67hMH2LPI0cERD2pkpNe5dyeOGg11uZ7rc=",
|
"narHash": "sha256-7jADySzWscA2822JzNbfRdC+R+B7tzDoWavG8DMY1tU=",
|
||||||
"owner": "vic",
|
"owner": "vic",
|
||||||
"repo": "flake-file",
|
"repo": "flake-file",
|
||||||
"rev": "9d89918faacdbd2ce26d0aa7298da0fecad8b437",
|
"rev": "0f5c1039860127fa5673d362d68f8b7df29a44bc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -187,11 +308,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769996383,
|
"lastModified": 1772408722,
|
||||||
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
|
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -204,6 +325,45 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772408722,
|
||||||
|
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"nix-citizen",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772408722,
|
||||||
|
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_4": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib_2"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769996383,
|
"lastModified": 1769996383,
|
||||||
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
||||||
@@ -218,7 +378,25 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_3": {
|
"flake-parts_5": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772408722,
|
||||||
|
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_6": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"stylix",
|
"stylix",
|
||||||
@@ -240,6 +418,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": [
|
||||||
|
"catppuccin-userstyles-nix",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1678901627,
|
"lastModified": 1678901627,
|
||||||
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
||||||
@@ -254,6 +453,42 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils_3": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_4": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"fromYaml": {
|
"fromYaml": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -270,6 +505,51 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"git-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nix-gaming",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770726378,
|
||||||
|
"narHash": "sha256-kck+vIbGOaM/dHea7aTBxdFYpeUl/jHOy5W3eyRvVx8=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "5eaaedde414f6eb1aea8b8525c466dc37bba95ae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nix-gaming",
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gnome-shell": {
|
"gnome-shell": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -296,11 +576,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771683283,
|
"lastModified": 1772633327,
|
||||||
"narHash": "sha256-WxAEkAbo8dP7qiyPM6VN4ZGAxfuBVlNBNPkrqkrXVEc=",
|
"narHash": "sha256-jl+DJB2DUx7EbWLRng+6HNWW/1/VQOnf0NsQB4PlA7I=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "c6ed3eab64d23520bcbb858aa53fe2b533725d4a",
|
"rev": "5a75730e6f21ee624cbf86f4915c6e7489c74acc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -309,13 +589,31 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hytale-launcher": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1773947929,
|
||||||
|
"narHash": "sha256-flpkAPM3zpMpWoqvVkMTo3ptuBF0QKNi6Raa8rnIq7o=",
|
||||||
|
"owner": "JPyke3",
|
||||||
|
"repo": "hytale-launcher-nix",
|
||||||
|
"rev": "a8d0a974b187f0997c03c23000dea552194edf39",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "JPyke3",
|
||||||
|
"repo": "hytale-launcher-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"import-tree": {
|
"import-tree": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771045967,
|
"lastModified": 1772344373,
|
||||||
"narHash": "sha256-oYO4poyw0Sb/db2PigqugMlDwsvwLg6CSpFrMUWxA3Q=",
|
"narHash": "sha256-OQQ1MhB9t1J71b2wxRRTdH/Qd8UGG0p+dGspfCf5U1c=",
|
||||||
"owner": "vic",
|
"owner": "vic",
|
||||||
"repo": "import-tree",
|
"repo": "import-tree",
|
||||||
"rev": "c968d3b54d12cf5d9c13f16f7c545a06c9d1fde6",
|
"rev": "10fda59eee7d7970ec443b925f32a1bc7526648c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -324,6 +622,115 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"minecraft": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_3",
|
||||||
|
"metadata": [
|
||||||
|
"minecraft-metadata"
|
||||||
|
],
|
||||||
|
"nixpkgs": "nixpkgs_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1774233481,
|
||||||
|
"narHash": "sha256-Tnlkkd+2mjp+Yui1mjiqs/inQsvIdBhd0Tjf0ftDLyE=",
|
||||||
|
"owner": "Ninlives",
|
||||||
|
"repo": "minecraft.nix",
|
||||||
|
"rev": "aead7ec7962d1961ff3762d7001a9307a17cbb8e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Ninlives",
|
||||||
|
"repo": "minecraft.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minecraft-metadata": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_4",
|
||||||
|
"nixpkgs": "nixpkgs_5"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1774059698,
|
||||||
|
"narHash": "sha256-gRJaZ0RShc8dEGvR410WWYXucOePzT+m3pNllION/mo=",
|
||||||
|
"owner": "Ninlives",
|
||||||
|
"repo": "minecraft.json",
|
||||||
|
"rev": "4c4114c57766686c9ddbcd649907fb0326fd2d85",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Ninlives",
|
||||||
|
"repo": "minecraft.json",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"neu-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1774047654,
|
||||||
|
"narHash": "sha256-YFME/138SCI5+ETSwOvKRgwO9Q0Ir3ceEhBLgKmEjzE=",
|
||||||
|
"owner": "ricardomaps",
|
||||||
|
"repo": "neu-nix",
|
||||||
|
"rev": "fe9c0f995efbd263578618d5bd5426d9c5fcfa40",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ricardomaps",
|
||||||
|
"repo": "neu-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-cachyos-kernel": {
|
||||||
|
"inputs": {
|
||||||
|
"cachyos-kernel": "cachyos-kernel",
|
||||||
|
"cachyos-kernel-patches": "cachyos-kernel-patches",
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-parts": "flake-parts_2",
|
||||||
|
"nixpkgs": "nixpkgs_6"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1773166308,
|
||||||
|
"narHash": "sha256-fkJEQ1rbt/lqsA0+D3+LWtCok9Ofsz8dKDCnbt1MvOs=",
|
||||||
|
"owner": "xddxdd",
|
||||||
|
"repo": "nix-cachyos-kernel",
|
||||||
|
"rev": "2396c36f247f4c1e08f3ffd953b7b958d044e224",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "xddxdd",
|
||||||
|
"ref": "release",
|
||||||
|
"repo": "nix-cachyos-kernel",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-citizen": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts_3",
|
||||||
|
"nix-gaming": [
|
||||||
|
"nix-gaming"
|
||||||
|
],
|
||||||
|
"nix-github-actions": "nix-github-actions",
|
||||||
|
"nixpkgs": "nixpkgs_7",
|
||||||
|
"systems": "systems_4",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772758266,
|
||||||
|
"narHash": "sha256-Z6hXOIgFrl1jRVL9UnVf0SIYj7MaMn+0UYpSh3m5VhQ=",
|
||||||
|
"owner": "LovingMelody",
|
||||||
|
"repo": "nix-citizen",
|
||||||
|
"rev": "68d3aab61b813484ff0d0250139c2cc71872a215",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "LovingMelody",
|
||||||
|
"repo": "nix-citizen",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nix-flatpak": {
|
"nix-flatpak": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767983141,
|
"lastModified": 1767983141,
|
||||||
@@ -340,18 +747,59 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixcord": {
|
"nix-gaming": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-parts": "flake-parts_4",
|
||||||
"flake-parts": "flake-parts_2",
|
"git-hooks": "git-hooks",
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": "nixpkgs_8"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772266502,
|
"lastModified": 1772764431,
|
||||||
"narHash": "sha256-HBO3W1ooO9UwmxwwwFflnbCrAVHhaxpB8YnxFGPvOsY=",
|
"narHash": "sha256-Lkj9b2Lajgdnfj42Uhkui5gRYPRnq8DEuCrZH+CRiDI=",
|
||||||
|
"owner": "fufexan",
|
||||||
|
"repo": "nix-gaming",
|
||||||
|
"rev": "758f449e9c0b4e8b6f3e8720537fa8d958e1c103",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "fufexan",
|
||||||
|
"repo": "nix-gaming",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-github-actions": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nix-citizen",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737420293,
|
||||||
|
"narHash": "sha256-F1G5ifvqTpJq7fdkT34e/Jy9VCyzd5XfJ9TO8fHhJWE=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixcord": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_3",
|
||||||
|
"flake-parts": "flake-parts_5",
|
||||||
|
"nixpkgs": "nixpkgs_9"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772641310,
|
||||||
|
"narHash": "sha256-Hp3AyU0xX8kiwF5AA8BkziGhQUlUnGUV+P4FAMRG4Kc=",
|
||||||
"owner": "FlameFlag",
|
"owner": "FlameFlag",
|
||||||
"repo": "nixcord",
|
"repo": "nixcord",
|
||||||
"rev": "e805e50f0cc8b9f2d950dc81cd9ee1c986899eaf",
|
"rev": "02760c85446ac5b457c994b5a2ef3168d9b4dd4f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -377,6 +825,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772328832,
|
||||||
|
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-lib_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769909678,
|
"lastModified": 1769909678,
|
||||||
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
|
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
|
||||||
@@ -391,6 +854,37 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-lib_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772328832,
|
||||||
|
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_10": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772615108,
|
||||||
|
"narHash": "sha256-lC0KbklwgeSqS+sTkaYpnSYr/HDeVMzYUZqV/dT31Lo=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0c39f3b5a9a234421d4ad43ab9c7cf64840172d0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748162331,
|
"lastModified": 1748162331,
|
||||||
@@ -408,36 +902,114 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770617025,
|
"lastModified": 1773821835,
|
||||||
"narHash": "sha256-1jZvgZoAagZZB6NwGRv2T2ezPy+X6EFDsJm+YSlsvEs=",
|
"narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "2db38e08fdadcc0ce3232f7279bab59a15b94482",
|
"rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-25.11",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771207753,
|
"lastModified": 1774232173,
|
||||||
"narHash": "sha256-b9uG8yN50DRQ6A7JdZBfzq718ryYrlmGgqkRm9OOwCE=",
|
"narHash": "sha256-T3eZ0qmTBHf8/RDRcqjokzxRs7zNg4Jy6vqzL95RTmo=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d1c15b7d5806069da59e819999d70e1cec0760bf",
|
"rev": "609808cb49c288b0006dbefa69f788f09284799b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1774053289,
|
||||||
|
"narHash": "sha256-U+wnCEgsGdRqXfUlt1yZffhLMGbUnkb4MYmisBI+KcU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "28afc93f3c091ae6cacfba64d8a486fab9c9af07",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_6": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1773148319,
|
||||||
|
"narHash": "sha256-Yr9ej3uSDycQZHWB5HslVgryLkdSBN2fODAqURv/1wQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8da79c289ee165139257335eab0733d98c4ad458",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable-small",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_7": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772624091,
|
||||||
|
"narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "80bdc1e5ce51f56b19791b52b2901187931f5353",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_8": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772173633,
|
||||||
|
"narHash": "sha256-MOH58F4AIbCkh6qlQcwMycyk5SWvsqnS/TCfnqDlpj4=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c0f3d81a7ddbc2b1332be0d8481a672b4f6004d6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_9": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772465433,
|
||||||
|
"narHash": "sha256-ywy9troNEfpgh0Ee+zaV1UTgU8kYBVKtvPSxh6clYGU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c581273b8d5bdf1c6ce7e0a54da9841e6a763913",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-25.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
@@ -463,24 +1035,54 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"omnisearch": {
|
||||||
|
"inputs": {
|
||||||
|
"beaker-src": "beaker-src",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1774184185,
|
||||||
|
"narHash": "sha256-uxvwbXjpJUpWgXLi3Oadd+PqR3UV5MC7B/lm45oluLc=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "bcee71cbbb0282d84841ba9b8908773ab56decf2",
|
||||||
|
"revCount": 66,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.bwaaa.monster/omnisearch"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.bwaaa.monster/omnisearch"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"catppuccin": "catppuccin",
|
"catppuccin": "catppuccin",
|
||||||
|
"catppuccin-userstyles-nix": "catppuccin-userstyles-nix",
|
||||||
"copyparty": "copyparty",
|
"copyparty": "copyparty",
|
||||||
"den": "den",
|
"den": "den",
|
||||||
"flake-aspects": "flake-aspects",
|
"flake-aspects": "flake-aspects",
|
||||||
"flake-file": "flake-file",
|
"flake-file": "flake-file",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"hytale-launcher": "hytale-launcher",
|
||||||
"import-tree": "import-tree",
|
"import-tree": "import-tree",
|
||||||
|
"minecraft": "minecraft",
|
||||||
|
"minecraft-metadata": "minecraft-metadata",
|
||||||
|
"neu-nix": "neu-nix",
|
||||||
|
"nix-cachyos-kernel": "nix-cachyos-kernel",
|
||||||
|
"nix-citizen": "nix-citizen",
|
||||||
"nix-flatpak": "nix-flatpak",
|
"nix-flatpak": "nix-flatpak",
|
||||||
|
"nix-gaming": "nix-gaming",
|
||||||
"nixcord": "nixcord",
|
"nixcord": "nixcord",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_10",
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
|
"omnisearch": "omnisearch",
|
||||||
"stylix": "stylix",
|
"stylix": "stylix",
|
||||||
"systems": "systems_2"
|
"systems": "systems_6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stylix": {
|
"stylix": {
|
||||||
@@ -490,13 +1092,13 @@
|
|||||||
"base16-helix": "base16-helix",
|
"base16-helix": "base16-helix",
|
||||||
"base16-vim": "base16-vim",
|
"base16-vim": "base16-vim",
|
||||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||||
"flake-parts": "flake-parts_3",
|
"flake-parts": "flake-parts_6",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"systems": "systems",
|
"systems": "systems_5",
|
||||||
"tinted-foot": "tinted-foot",
|
"tinted-foot": "tinted-foot",
|
||||||
"tinted-kitty": "tinted-kitty",
|
"tinted-kitty": "tinted-kitty",
|
||||||
"tinted-schemes": "tinted-schemes",
|
"tinted-schemes": "tinted-schemes",
|
||||||
@@ -504,11 +1106,11 @@
|
|||||||
"tinted-zed": "tinted-zed"
|
"tinted-zed": "tinted-zed"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771626923,
|
"lastModified": 1772296853,
|
||||||
"narHash": "sha256-Mn6oeKrY+Sw6kH0jK+hp5QQH4MTcqwBRQL/ScZDNcz8=",
|
"narHash": "sha256-pAtzPsgHRKw/2Kv8HgAjSJg450FDldHPWsP3AKG/Xj0=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "b09847414b50c65788936199918272377f70fb91",
|
"rev": "c4b8e80a1020e09a1f081ad0f98ce804a6e85acf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -518,6 +1120,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
@@ -532,7 +1149,52 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_2": {
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
@@ -627,6 +1289,27 @@
|
|||||||
"repo": "base16-zed",
|
"repo": "base16-zed",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nix-citizen",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772660329,
|
||||||
|
"narHash": "sha256-IjU1FxYqm+VDe5qIOxoW+pISBlGvVApRjiw/Y/ttJzY=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "3710e0e1218041bbad640352a0440114b1e10428",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
43
flake.nix
43
flake.nix
@@ -3,24 +3,32 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
den.url = "github:vic/den";
|
den.url = "github:vic/den";
|
||||||
|
|
||||||
flake-aspects.url = "github:vic/flake-aspects";
|
flake-aspects.url = "github:vic/flake-aspects";
|
||||||
|
|
||||||
flake-file.url = "github:vic/flake-file";
|
flake-file.url = "github:vic/flake-file";
|
||||||
|
|
||||||
flake-parts = {
|
flake-parts = {
|
||||||
inputs.nixpkgs-lib.follows = "nixpkgs-lib";
|
inputs.nixpkgs-lib.follows = "nixpkgs-lib";
|
||||||
url = "github:hercules-ci/flake-parts";
|
url = "github:hercules-ci/flake-parts";
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
};
|
};
|
||||||
|
|
||||||
import-tree.url = "github:vic/import-tree";
|
import-tree.url = "github:vic/import-tree";
|
||||||
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||||
|
|
||||||
nixpkgs-lib.follows = "nixpkgs";
|
nixpkgs-lib.follows = "nixpkgs";
|
||||||
|
|
||||||
systems.url = "github:nix-systems/default";
|
systems.url = "github:nix-systems/default";
|
||||||
|
|
||||||
stylix = {
|
stylix = {
|
||||||
url = "github:nix-community/stylix";
|
url = "github:nix-community/stylix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
|
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
|
||||||
@@ -30,5 +38,36 @@
|
|||||||
catppuccin.url = "github:catppuccin/nix";
|
catppuccin.url = "github:catppuccin/nix";
|
||||||
|
|
||||||
nixcord.url = "github:FlameFlag/nixcord";
|
nixcord.url = "github:FlameFlag/nixcord";
|
||||||
|
|
||||||
|
catppuccin-userstyles-nix = {
|
||||||
|
url = "github:4DBug/catppuccin-userstyles-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-citizen.url = "github:LovingMelody/nix-citizen";
|
||||||
|
|
||||||
|
nix-gaming.url = "github:fufexan/nix-gaming";
|
||||||
|
nix-citizen.inputs.nix-gaming.follows = "nix-gaming";
|
||||||
|
|
||||||
|
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
|
||||||
|
|
||||||
|
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
|
||||||
|
|
||||||
|
omnisearch = {
|
||||||
|
url = "git+https://git.bwaaa.monster/omnisearch";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
minecraft = {
|
||||||
|
url = "github:Ninlives/minecraft.nix";
|
||||||
|
inputs.metadata.follows = "minecraft-metadata";
|
||||||
|
};
|
||||||
|
|
||||||
|
minecraft-metadata.url = "github:Ninlives/minecraft.json";
|
||||||
|
|
||||||
|
neu-nix = {
|
||||||
|
url = "github:ricardomaps/neu-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
9
modules/core/audio/alc897.nix
Normal file
9
modules/core/audio/alc897.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
den.aspects.alc897 = {
|
||||||
|
nixos = {
|
||||||
|
boot.extraModprobeConfig = ''
|
||||||
|
options snd-hda-intel model=alc897-fixup
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
22
modules/core/boot.nix
Normal file
22
modules/core/boot.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
den.aspects.boot = {
|
||||||
|
nixos = {
|
||||||
|
boot = {
|
||||||
|
# kernelPackages = lib.mkForce pkgs.linuxPackages_zen;
|
||||||
|
|
||||||
|
initrd.checkJournalingFS = false;
|
||||||
|
|
||||||
|
loader = {
|
||||||
|
grub.splashImage = null;
|
||||||
|
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 25;
|
||||||
|
};
|
||||||
|
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
modules/core/desktop/neu.nix
Normal file
9
modules/core/desktop/neu.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
den.aspects.neu = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
nixpkgs.overlays = [ inputs.neu-nix.overlays.default ];
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.shko pkgs.neuswc ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
3
modules/core/desktop/noctalia.nix
Normal file
3
modules/core/desktop/noctalia.nix
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
34
modules/core/infra/cloudflared.nix
Normal file
34
modules/core/infra/cloudflared.nix
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
let
|
||||||
|
uuid = "4118935e-359b-4dd2-95bd-eb27f7b0c5bb";
|
||||||
|
domain = "bug.tools";
|
||||||
|
creds = "/home/bug/.cloudflared/${uuid}.json";
|
||||||
|
in {
|
||||||
|
den.aspects.cloudflared = {
|
||||||
|
nixos = { config, pkgs, lib, ... }: {
|
||||||
|
options.den.tunnels = lib.mkOption {
|
||||||
|
default = [];
|
||||||
|
description = "cloudflared tunnels";
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
environment.systemPackages = [ pkgs.cloudflared ];
|
||||||
|
environment.etc."cloudflared/${uuid}.json".source = creds;
|
||||||
|
|
||||||
|
services.cloudflared = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
tunnels.${uuid} = {
|
||||||
|
credentialsFile = "/etc/cloudflared/${uuid}.json";
|
||||||
|
default = "http_status:404";
|
||||||
|
|
||||||
|
ingress = lib.listToAttrs (map (subdomain: {
|
||||||
|
name = "${subdomain}.${domain}";
|
||||||
|
value = "http://127.0.0.1:${toString config.den.portmap.${subdomain}}";
|
||||||
|
}) config.den.tunnels);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
46
modules/core/infra/syncthing.nix
Normal file
46
modules/core/infra/syncthing.nix
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
den.aspects.syncthing = {
|
||||||
|
homeManager = let
|
||||||
|
devices = ["desktop" "laptop" "server"];
|
||||||
|
|
||||||
|
mkFolder = path: {
|
||||||
|
inherit path;
|
||||||
|
devices = devices;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
services.syncthing = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
overrideDevices = true;
|
||||||
|
overrideFolders = true;
|
||||||
|
|
||||||
|
key = "/home/bug/.syncthing/key.pem";
|
||||||
|
cert = "/home/bug/.syncthing/cert.pem";
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
devices = {
|
||||||
|
desktop.id = "VEZXY3W-U6UXWTP-6BHANIG-O5EKNZY-XNV5YOX-4V4O3HB-ETECIUX-T2DK7AV";
|
||||||
|
laptop.id = "I6NW53P-IJMMT73-7O53TXY-3GAHS2U-4EAADM7-ZNB5ZPB-62QHKVW-H7DYXQ2";
|
||||||
|
server.id = "KJECAIP-Y2Y3FHV-NOJKIQV-LWIDMMZ-5ITEAZ4-LQCQL72-3BGW6T7-BFPFJQA";
|
||||||
|
};
|
||||||
|
|
||||||
|
folders = {
|
||||||
|
"Archives" = mkFolder "/home/bug/Archives";
|
||||||
|
"Software" = mkFolder "/home/bug/Software";
|
||||||
|
"Scripts" = mkFolder "/home/bug/Scripts";
|
||||||
|
"Documents" = mkFolder "/home/bug/Documents";
|
||||||
|
"Downloads" = mkFolder "/home/bug/Downloads";
|
||||||
|
"Pictures" = mkFolder "/home/bug/Pictures";
|
||||||
|
"Videos" = mkFolder "/home/bug/Videos";
|
||||||
|
"Music" = mkFolder "/home/bug/Music";
|
||||||
|
"nix" = mkFolder "/home/bug/nix";
|
||||||
|
"hytale" = mkFolder "/home/bug/.local/share/Hytale/UserData/Saves";
|
||||||
|
"ssh" = mkFolder "/home/bug/.ssh";
|
||||||
|
"cloudflared" = mkFolder "/home/bug/.cloudflared";
|
||||||
|
"copyparty" = mkFolder "/home/bug/copyparty";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
modules/core/kernel.nix
Normal file
9
modules/core/kernel.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
den.aspects.kernel = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
nixpkgs.overlays = [ inputs.nix-cachyos-kernel.overlays.default ];
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
23
modules/core/locale.nix
Normal file
23
modules/core/locale.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
den.aspects.locale = {
|
||||||
|
nixos = {
|
||||||
|
time.timeZone = "America/Chicago";
|
||||||
|
|
||||||
|
i18n = {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1 +1,41 @@
|
|||||||
{}
|
{
|
||||||
|
den.aspects.crab-hole = {
|
||||||
|
nixos = { ... }: {
|
||||||
|
services.crab-hole = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
blocklist = {
|
||||||
|
include_subdomains = true;
|
||||||
|
lists = [
|
||||||
|
"https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn/hosts"
|
||||||
|
"https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
downstream = [
|
||||||
|
{ protocol = "udp"; listen = "127.0.0.1"; port = 53; }
|
||||||
|
{ protocol = "udp"; listen = "::1"; port = 53; }
|
||||||
|
];
|
||||||
|
|
||||||
|
upstream = {
|
||||||
|
name_servers = [
|
||||||
|
{
|
||||||
|
socket_addr = "1.1.1.1:853";
|
||||||
|
protocol = "tls";
|
||||||
|
tls_dns_name = "1dot1dot1dot1.cloudflare-dns.com";
|
||||||
|
trust_nx_responses = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
socket_addr = "[2606:4700:4700::1111]:853";
|
||||||
|
protocol = "tls";
|
||||||
|
tls_dns_name = "1dot1dot1dot1.cloudflare-dns.com";
|
||||||
|
trust_nx_responses = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
{
|
{
|
||||||
den.aspects.dns = {
|
den.aspects.dns = {
|
||||||
nixos = {
|
nixos = { config, lib, ... }: {
|
||||||
networking = {
|
networking = {
|
||||||
networkmanager.enable = true;
|
networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
dns = lib.mkIf config.services.crab-hole.enable "none";
|
||||||
|
};
|
||||||
|
|
||||||
nameservers = [ "1.1.1.1" "1.0.0.1" ];
|
nameservers = if config.services.crab-hole.enable
|
||||||
|
then [ "127.0.0.1" "::1" ]
|
||||||
|
else [ "1.1.1.1" "1.0.0.1" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
10
modules/core/security.nix
Normal file
10
modules/core/security.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
den.aspects.security = {
|
||||||
|
nixos = {
|
||||||
|
security.sudo = {
|
||||||
|
enable = true;
|
||||||
|
wheelNeedsPassword = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,8 +1,27 @@
|
|||||||
{ inputs, ... }: {
|
{ inputs, ... }: {
|
||||||
den.aspects.stylix = {
|
den.aspects.stylix = let
|
||||||
|
catppuccin = {
|
||||||
|
base00 = "1E1E2E";
|
||||||
|
base01 = "181825";
|
||||||
|
base02 = "313244";
|
||||||
|
base03 = "45475A";
|
||||||
|
base04 = "585B70";
|
||||||
|
base05 = "CDD6F4";
|
||||||
|
base06 = "F5E0DC";
|
||||||
|
base07 = "B4BEFE";
|
||||||
|
base08 = "F38BA8";
|
||||||
|
base09 = "FAB387";
|
||||||
|
base0A = "F9E2AF";
|
||||||
|
base0B = "A6E3A1";
|
||||||
|
base0C = "94E2D5";
|
||||||
|
base0D = "89B4FA";
|
||||||
|
base0E = "CBA6F7";
|
||||||
|
base0F = "F2CDCD";
|
||||||
|
};
|
||||||
|
in {
|
||||||
homeManager = { pkgs, ... }: {
|
homeManager = { pkgs, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
(inputs.stylix.homeModules.stylix or {})
|
inputs.stylix.homeModules.stylix
|
||||||
];
|
];
|
||||||
|
|
||||||
stylix = {
|
stylix = {
|
||||||
@@ -10,25 +29,7 @@
|
|||||||
autoEnable = false;
|
autoEnable = false;
|
||||||
polarity = "dark";
|
polarity = "dark";
|
||||||
|
|
||||||
# catppuccin mocha
|
base16Scheme = catppuccin;
|
||||||
base16Scheme = {
|
|
||||||
base00 = "1E1E2E";
|
|
||||||
base01 = "181825";
|
|
||||||
base02 = "313244";
|
|
||||||
base03 = "45475A";
|
|
||||||
base04 = "585B70";
|
|
||||||
base05 = "CDD6F4";
|
|
||||||
base06 = "F5E0DC";
|
|
||||||
base07 = "B4BEFE";
|
|
||||||
base08 = "F38BA8";
|
|
||||||
base09 = "FAB387";
|
|
||||||
base0A = "F9E2AF";
|
|
||||||
base0B = "A6E3A1";
|
|
||||||
base0C = "94E2D5";
|
|
||||||
base0D = "89B4FA";
|
|
||||||
base0E = "CBA6F7";
|
|
||||||
base0F = "F2CDCD";
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts.emoji = {
|
fonts.emoji = {
|
||||||
name = "Twitter Color Emoji";
|
name = "Twitter Color Emoji";
|
||||||
@@ -40,6 +41,7 @@
|
|||||||
gnome.enable = true;
|
gnome.enable = true;
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
firefox.enable = true;
|
firefox.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ let
|
|||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = "bug";
|
description = "bug";
|
||||||
extraGroups = [ "networkmanager" "wheel" "audio" "video" "libvirtd" "ydotool" "dialout" ];
|
extraGroups = [ "networkmanager" "wheel" "audio" "video" "libvirtd" "ydotool" "dialout" ];
|
||||||
|
classes = [ "homeManager" ];
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
den.hosts.x86_64-linux = {
|
den.hosts.x86_64-linux = {
|
||||||
nix.users.bug = bug;
|
nix.users.bug = bug;
|
||||||
laptop.users.bug = bug;
|
styx.users.bug = bug;
|
||||||
box.users.bug = bug;
|
box.users.bug = bug;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,39 +1,35 @@
|
|||||||
|
|
||||||
{ den, ... }: {
|
{ den, ... }: {
|
||||||
den.aspects.box = {
|
den.aspects.box = {
|
||||||
includes = with den.aspects; [
|
includes = with den.aspects; [
|
||||||
den.default
|
den.default
|
||||||
den.provides.home-manager
|
|
||||||
syncthing
|
|
||||||
fish
|
|
||||||
|
|
||||||
#cloudflared
|
cloudflared
|
||||||
|
|
||||||
|
portmap
|
||||||
searxng
|
searxng
|
||||||
copyparty
|
copyparty
|
||||||
glances
|
glances
|
||||||
# invidious
|
invidious
|
||||||
mailserver
|
mailserver
|
||||||
# matrix
|
# matrix
|
||||||
redlib
|
redlib
|
||||||
# sish
|
# sish
|
||||||
vscode-server
|
vscode-server
|
||||||
dns
|
|
||||||
openssh
|
|
||||||
gitea
|
gitea
|
||||||
|
# omnisearch
|
||||||
|
|
||||||
catppuccin
|
catppuccin
|
||||||
|
|
||||||
(tunnel 3001 "tvtun")
|
janitor
|
||||||
(tunnel 8888 "search")
|
|
||||||
(tunnel 3210 "files")
|
|
||||||
(tunnel 3030 "tube")
|
|
||||||
(tunnel 8975 "reddit")
|
|
||||||
(tunnel 3002 "git")
|
|
||||||
(tunnel 61208 "monitor")
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nixos = {
|
nixos = { pkgs, ...}: {
|
||||||
networking.hostName = "box";
|
networking.hostName = "box";
|
||||||
|
|
||||||
|
# den.tunnels = [ "tvtun" ];
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.python3 ];
|
||||||
|
|
||||||
users.users.levi = {
|
users.users.levi = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = "levi";
|
description = "levi";
|
||||||
@@ -41,6 +37,12 @@
|
|||||||
|
|
||||||
hashedPasswordFile = "/home/bug/users/levi.passwd";
|
hashedPasswordFile = "/home/bug/users/levi.passwd";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" = {
|
||||||
|
device = "/dev/disk/by-uuid/30f357aa-fc86-4bcd-bed7-c91fc8afbdbc";
|
||||||
|
fsType = "ext4";
|
||||||
|
options = [ "defaults" "noatime" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
31
modules/hosts/common.nix
Normal file
31
modules/hosts/common.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.common = {
|
||||||
|
includes = with den.aspects; [
|
||||||
|
den.default
|
||||||
|
|
||||||
|
cosmic
|
||||||
|
audio
|
||||||
|
|
||||||
|
swap
|
||||||
|
virtualisation
|
||||||
|
|
||||||
|
stylix
|
||||||
|
|
||||||
|
flatpak
|
||||||
|
development
|
||||||
|
compatibility
|
||||||
|
utilities
|
||||||
|
|
||||||
|
firefox
|
||||||
|
librewolf
|
||||||
|
|
||||||
|
music
|
||||||
|
social
|
||||||
|
gaming
|
||||||
|
|
||||||
|
#crab-hole
|
||||||
|
|
||||||
|
kernel
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,12 +1,27 @@
|
|||||||
{
|
{ den, ... }: {
|
||||||
den.default = {
|
den.default = {
|
||||||
nixos = { pkgs, lib, ... }: {
|
includes = with den.aspects; [
|
||||||
|
boot
|
||||||
|
security
|
||||||
|
locale
|
||||||
|
essentials
|
||||||
|
|
||||||
|
dns
|
||||||
|
openssh
|
||||||
|
syncthing
|
||||||
|
|
||||||
|
fish
|
||||||
|
];
|
||||||
|
|
||||||
|
nixos = { ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
/etc/nixos/hardware-configuration.nix
|
/etc/nixos/hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager = {
|
||||||
home-manager.backupFileExtension = "hm-backup";
|
useGlobalPkgs = true;
|
||||||
|
backupFileExtension = "hm-backup";
|
||||||
|
};
|
||||||
|
|
||||||
system = {
|
system = {
|
||||||
stateVersion = "26.05";
|
stateVersion = "26.05";
|
||||||
@@ -17,85 +32,16 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs.config.allowUnfree = true;
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
optimise.automatic = true;
|
optimise.automatic = true;
|
||||||
settings.experimental-features = [ "nix-command" "flakes" ];
|
settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
security = {
|
|
||||||
sudo = {
|
|
||||||
enable = true;
|
|
||||||
wheelNeedsPassword = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
#kernelPackages = lib.mkForce pkgs.linuxPackages_zen;
|
|
||||||
|
|
||||||
initrd.checkJournalingFS = false;
|
|
||||||
|
|
||||||
loader = {
|
|
||||||
grub.splashImage = null;
|
|
||||||
|
|
||||||
systemd-boot = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 25;
|
|
||||||
};
|
|
||||||
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
comma
|
|
||||||
fastfetch
|
|
||||||
git
|
|
||||||
home-manager
|
|
||||||
inetutils
|
|
||||||
micro
|
|
||||||
nh
|
|
||||||
nil
|
|
||||||
nixd
|
|
||||||
nixfmt
|
|
||||||
nix-index
|
|
||||||
nix-output-monitor
|
|
||||||
nix-prefetch
|
|
||||||
nvd
|
|
||||||
psmisc
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
wget
|
|
||||||
];
|
|
||||||
|
|
||||||
time.timeZone = "America/Chicago";
|
|
||||||
|
|
||||||
i18n = {
|
|
||||||
defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
||||||
LC_MEASUREMENT = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "en_US.UTF-8";
|
|
||||||
LC_NAME = "en_US.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "en_US.UTF-8";
|
|
||||||
LC_TELEPHONE = "en_US.UTF-8";
|
|
||||||
LC_TIME = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
homeManager = {
|
homeManager = {
|
||||||
home = {
|
home.stateVersion = "26.05";
|
||||||
stateVersion = "26.05";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
|
|
||||||
{ den, ... }: {
|
|
||||||
den.aspects.laptop = {
|
|
||||||
includes = with den.aspects; [
|
|
||||||
den.default
|
|
||||||
den.aspects.amdgpu
|
|
||||||
cosmic
|
|
||||||
firefox
|
|
||||||
audio
|
|
||||||
|
|
||||||
den.provides.home-manager
|
|
||||||
stylix
|
|
||||||
syncthing
|
|
||||||
swap
|
|
||||||
cloudflare-warp
|
|
||||||
packages
|
|
||||||
development
|
|
||||||
cad
|
|
||||||
mpd
|
|
||||||
virtualisation
|
|
||||||
flatpak
|
|
||||||
fish
|
|
||||||
dns
|
|
||||||
openssh
|
|
||||||
beets
|
|
||||||
catppuccin
|
|
||||||
#librewolf
|
|
||||||
nixcord
|
|
||||||
organize
|
|
||||||
];
|
|
||||||
|
|
||||||
nixos = {
|
|
||||||
networking.hostName = "nix";
|
|
||||||
|
|
||||||
services.logind.settings.Login = {
|
|
||||||
HandleLidSwitch = "ignore";
|
|
||||||
HandleLidSwitchDocked = "ignore";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
23
modules/hosts/nix.nix
Normal file
23
modules/hosts/nix.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.nix = {
|
||||||
|
includes = with den.aspects; [
|
||||||
|
common
|
||||||
|
|
||||||
|
nvidia
|
||||||
|
|
||||||
|
catppuccin
|
||||||
|
|
||||||
|
janitor
|
||||||
|
|
||||||
|
ollama
|
||||||
|
|
||||||
|
alc897
|
||||||
|
|
||||||
|
cad
|
||||||
|
];
|
||||||
|
|
||||||
|
nixos = {
|
||||||
|
networking.hostName = "nix";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
{ den, ... }:
|
|
||||||
{
|
|
||||||
den.aspects.nix = {
|
|
||||||
includes = with den.aspects; [
|
|
||||||
den.default
|
|
||||||
#amdgpu
|
|
||||||
cosmic
|
|
||||||
firefox
|
|
||||||
audio
|
|
||||||
|
|
||||||
den.provides.home-manager
|
|
||||||
stylix
|
|
||||||
nvidia
|
|
||||||
syncthing
|
|
||||||
swap
|
|
||||||
#cloudflare-warp
|
|
||||||
packages
|
|
||||||
development
|
|
||||||
#cad
|
|
||||||
mpd
|
|
||||||
virtualisation
|
|
||||||
flatpak
|
|
||||||
fish
|
|
||||||
dns
|
|
||||||
openssh
|
|
||||||
beets
|
|
||||||
catppuccin
|
|
||||||
# librewolf
|
|
||||||
nixcord
|
|
||||||
];
|
|
||||||
|
|
||||||
nixos = {
|
|
||||||
networking.hostName = "nix";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
26
modules/hosts/styx.nix
Normal file
26
modules/hosts/styx.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.styx = {
|
||||||
|
includes = with den.aspects; [
|
||||||
|
common
|
||||||
|
|
||||||
|
amdgpu
|
||||||
|
cloudflare-warp
|
||||||
|
cad
|
||||||
|
|
||||||
|
catppuccin
|
||||||
|
|
||||||
|
janitor
|
||||||
|
|
||||||
|
neu
|
||||||
|
];
|
||||||
|
|
||||||
|
nixos = {
|
||||||
|
networking.hostName = "styx";
|
||||||
|
|
||||||
|
services.logind.settings.Login = {
|
||||||
|
HandleLidSwitch = "ignore";
|
||||||
|
HandleLidSwitchDocked = "ignore";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{ den, ... }: let
|
|
||||||
tunnel_uuid = "4118935e-359b-4dd2-95bd-eb27f7b0c5bb";
|
|
||||||
domain = "bug.tools";
|
|
||||||
creds = "/home/bug/.cloudflared/${tunnel_uuid}.json";
|
|
||||||
|
|
||||||
tunnel = port: subdomain: { pkgs, ... }: {
|
|
||||||
environment = {
|
|
||||||
systemPackages = [ pkgs.cloudflared ];
|
|
||||||
|
|
||||||
etc."cloudflared/${tunnel_uuid}.json".source = creds;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.cloudflared = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
tunnels.${tunnel_uuid} = {
|
|
||||||
credentialsFile = "/etc/cloudflared/${tunnel_uuid}.json";
|
|
||||||
default = "http_status:404";
|
|
||||||
|
|
||||||
ingress = {
|
|
||||||
"${subdomain}.${domain}" = "http://127.0.0.1:${toString port}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
den.aspects.tunnel = port: subdomain: den.lib.parametric {
|
|
||||||
includes = [
|
|
||||||
(_: { nixos = tunnel port subdomain; })
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
{
|
|
||||||
den.aspects.syncthing = {
|
|
||||||
homeManager = {
|
|
||||||
services.syncthing = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
overrideDevices = true;
|
|
||||||
overrideFolders = true;
|
|
||||||
|
|
||||||
key = "/home/bug/.syncthing/key.pem";
|
|
||||||
cert = "/home/bug/.syncthing/cert.pem";
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
devices = {
|
|
||||||
desktop.id = "VEZXY3W-U6UXWTP-6BHANIG-O5EKNZY-XNV5YOX-4V4O3HB-ETECIUX-T2DK7AV";
|
|
||||||
laptop.id = "I6NW53P-IJMMT73-7O53TXY-3GAHS2U-4EAADM7-ZNB5ZPB-62QHKVW-H7DYXQ2";
|
|
||||||
server.id = "KJECAIP-Y2Y3FHV-NOJKIQV-LWIDMMZ-5ITEAZ4-LQCQL72-3BGW6T7-BFPFJQA";
|
|
||||||
};
|
|
||||||
|
|
||||||
folders = {
|
|
||||||
"Documents" = {
|
|
||||||
path = "/home/bug/Documents";
|
|
||||||
devices = ["desktop" "laptop" "server"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"Downloads" = {
|
|
||||||
path = "/home/bug/Downloads";
|
|
||||||
devices = ["desktop" "laptop" "server"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"Pictures" = {
|
|
||||||
path = "/home/bug/Pictures";
|
|
||||||
devices = ["desktop" "laptop" "server"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"Videos" = {
|
|
||||||
path = "/home/bug/Videos";
|
|
||||||
devices = ["desktop" "laptop" "server"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"nix" = {
|
|
||||||
path = "/home/bug/nix";
|
|
||||||
devices = ["desktop" "laptop" "server"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"hytale" = {
|
|
||||||
path = "/home/bug/.local/share/Hytale/UserData/Saves";
|
|
||||||
devices = ["desktop" "laptop"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"ssh" = {
|
|
||||||
path = "/home/bug/.ssh";
|
|
||||||
devices = ["desktop" "laptop" "server"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"cloudflared" = {
|
|
||||||
path = "/home/bug/.cloudflared";
|
|
||||||
devices = ["desktop" "laptop" "server"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"Music" = {
|
|
||||||
path = "/home/bug/Music/";
|
|
||||||
devices = ["desktop" "laptop" "server"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
{ inputs, ... }: {
|
{ inputs, ... }: {
|
||||||
den.aspects.copyparty = {
|
den.aspects.copyparty = {
|
||||||
nixos = {
|
nixos = { config, ... }: {
|
||||||
imports = [ inputs.copyparty.nixosModules.default ];
|
imports = [ inputs.copyparty.nixosModules.default ];
|
||||||
|
|
||||||
nixpkgs.overlays = [ inputs.copyparty.overlays.default ];
|
nixpkgs.overlays = [ inputs.copyparty.overlays.default ];
|
||||||
|
|
||||||
|
den.tunnels = [ "files" ];
|
||||||
|
|
||||||
services.copyparty = {
|
services.copyparty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
@@ -13,19 +15,15 @@
|
|||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
i = "0.0.0.0";
|
i = "0.0.0.0";
|
||||||
p = [ 3210 3211 ];
|
p = [ config.den.portmap.files (config.den.portmap.files + 1) ];
|
||||||
no-reload = true;
|
no-reload = true;
|
||||||
ignored-flag = false;
|
ignored-flag = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
accounts = {
|
accounts = {
|
||||||
bug = {
|
bug = {
|
||||||
passwordFile = "/home/bug/mailserver/bug.passwd";
|
passwordFile = "/home/bug/copyparty/bug.passwd";
|
||||||
};
|
};
|
||||||
|
|
||||||
#sang = {
|
|
||||||
#passwordFile = "/home/bug/nix/sang.passwd";
|
|
||||||
#};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
groups = {
|
groups = {
|
||||||
@@ -34,11 +32,11 @@
|
|||||||
|
|
||||||
volumes = {
|
volumes = {
|
||||||
"/" = {
|
"/" = {
|
||||||
path = "/srv/copyparty";
|
path = "/home/bug/copyparty/public/";
|
||||||
|
|
||||||
access = {
|
access = {
|
||||||
r = "*";
|
r = "*";
|
||||||
rw = [ "bug" ];
|
rwda = [ "bug" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
flags = {
|
flags = {
|
||||||
@@ -47,12 +45,33 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"/music" = {
|
"/nix" = {
|
||||||
|
path = "/home/bug/nix/";
|
||||||
|
|
||||||
|
access = {
|
||||||
|
r = "*";
|
||||||
|
};
|
||||||
|
|
||||||
|
flags = {
|
||||||
|
fk = 4;
|
||||||
|
scan = 60;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"/box" = {
|
||||||
|
path = "/";
|
||||||
|
|
||||||
|
access = {
|
||||||
|
rwda = [ "bug" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"/Music" = {
|
||||||
path = "/home/bug/Music/";
|
path = "/home/bug/Music/";
|
||||||
|
|
||||||
access = {
|
access = {
|
||||||
r = "*";
|
r = "*";
|
||||||
rw = [ "bug" ];
|
rwda = [ "bug" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
flags = {
|
flags = {
|
||||||
@@ -60,19 +79,6 @@
|
|||||||
scan = 60;
|
scan = 60;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/* "/sang" = {
|
|
||||||
path = "/srv/sang";
|
|
||||||
|
|
||||||
access = {
|
|
||||||
rw = [ "bug" ]; #"sang" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
flags = {
|
|
||||||
fk = 4;
|
|
||||||
scan = 60;
|
|
||||||
};
|
|
||||||
}; */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
openFilesLimit = 8192;
|
openFilesLimit = 8192;
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
den.aspects.gitea = {
|
|
||||||
nixos = {
|
|
||||||
services.gitea = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
database.type = "mysql";
|
|
||||||
|
|
||||||
settings.service = {
|
|
||||||
DISABLE_REGISTRATION = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
settings.server.HTTP_PORT = 3002;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
218
modules/services/gitea/gitea-mirrors.nix
Normal file
218
modules/services/gitea/gitea-mirrors.nix
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
{
|
||||||
|
den.aspects.gitea-mirrors = {
|
||||||
|
nixos = { pkgs, lib, config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.services.gitea;
|
||||||
|
mcfg = cfg.mirrors;
|
||||||
|
|
||||||
|
uniqueOwners = lib.unique (
|
||||||
|
(map (m: m.owner) mcfg.repos) ++
|
||||||
|
(map (m: m.owner) mcfg.users)
|
||||||
|
);
|
||||||
|
|
||||||
|
giteaUrl = "http://localhost:${toString cfg.settings.server.HTTP_PORT}";
|
||||||
|
tokenFile = "${cfg.stateDir}/mirror-setup-token";
|
||||||
|
|
||||||
|
repoSource = m:
|
||||||
|
if m ? source then m.source
|
||||||
|
else if (m.service or "git") == "github" then "https://github.com/${m.owner}/${m.repo}.git"
|
||||||
|
else if (m.service or "git") == "gitlab" then "https://gitlab.com/${m.owner}/${m.repo}.git"
|
||||||
|
else throw "mirrors.repos: '${m.owner}/${m.repo}' has no source and service '${m.service or "git"}' needs an explicit source";
|
||||||
|
|
||||||
|
setupScript = pkgs.writeShellScript "gitea-mirror-setup" ''
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
GITEA_URL="${giteaUrl}"
|
||||||
|
TOKEN_FILE="${tokenFile}"
|
||||||
|
GITEA_CMD="${lib.getExe cfg.package}"
|
||||||
|
|
||||||
|
for i in $(seq 1 60); do
|
||||||
|
if ${pkgs.curl}/bin/curl -sf "$GITEA_URL/api/v1/version" >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
$GITEA_CMD admin user create \
|
||||||
|
--username "${mcfg.admin.user}" \
|
||||||
|
--email "${mcfg.admin.email}" \
|
||||||
|
--random-password \
|
||||||
|
--admin \
|
||||||
|
--must-change-password=false 2>/dev/null || true
|
||||||
|
|
||||||
|
if [ ! -f "$TOKEN_FILE" ]; then
|
||||||
|
TOKEN=$($GITEA_CMD admin user generate-access-token \
|
||||||
|
--username "${mcfg.admin.user}" \
|
||||||
|
--token-name "mirror-setup" \
|
||||||
|
--scopes "all" \
|
||||||
|
--raw)
|
||||||
|
echo "$TOKEN" > "$TOKEN_FILE"
|
||||||
|
chmod 600 "$TOKEN_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
TOKEN=$(cat "$TOKEN_FILE")
|
||||||
|
AUTH="Authorization: token $TOKEN"
|
||||||
|
|
||||||
|
${lib.concatMapStringsSep "\n" (owner: ''
|
||||||
|
RAND_PASS=$(${pkgs.openssl}/bin/openssl rand -base64 32)
|
||||||
|
${pkgs.curl}/bin/curl -sf -X POST "$GITEA_URL/api/v1/admin/users" \
|
||||||
|
-H "$AUTH" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{
|
||||||
|
\"username\": \"${owner}\",
|
||||||
|
\"email\": \"${owner}@git.bug.tools\",
|
||||||
|
\"password\": \"$RAND_PASS\",
|
||||||
|
\"must_change_password\": false,
|
||||||
|
\"visibility\": \"public\"
|
||||||
|
}" >/dev/null 2>&1 || true
|
||||||
|
'') uniqueOwners}
|
||||||
|
|
||||||
|
${lib.concatMapStringsSep "\n" (m: ''
|
||||||
|
${pkgs.curl}/bin/curl -sf -X POST "$GITEA_URL/api/v1/repos/migrate" \
|
||||||
|
-H "$AUTH" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{
|
||||||
|
"clone_addr": "${repoSource m}",
|
||||||
|
"repo_name": "${m.repo}",
|
||||||
|
"repo_owner": "${m.owner}",
|
||||||
|
"mirror": true,
|
||||||
|
"private": false,
|
||||||
|
"service": "${m.service or "git"}"
|
||||||
|
}' >/dev/null 2>&1 || true
|
||||||
|
'') mcfg.repos}
|
||||||
|
|
||||||
|
${lib.concatMapStringsSep "\n" (u:
|
||||||
|
let
|
||||||
|
platform = u.platform;
|
||||||
|
owner = u.owner;
|
||||||
|
baseUrl = u.baseUrl or (if platform == "github" then "https://api.github.com"
|
||||||
|
else if platform == "gitlab" then "https://gitlab.com"
|
||||||
|
else if platform == "gitea" then u.baseUrl
|
||||||
|
else throw "mirrors.users: unsupported platform '${platform}', provide baseUrl");
|
||||||
|
cloneBase = if platform == "github" then "https://github.com/${owner}"
|
||||||
|
else if platform == "gitlab" then "${u.baseUrl or "https://gitlab.com"}/${owner}"
|
||||||
|
else if platform == "gitea" then "${u.baseUrl}/${owner}"
|
||||||
|
else throw "mirrors.users: unsupported platform '${platform}'";
|
||||||
|
service = if platform == "github" then "github"
|
||||||
|
else if platform == "gitlab" then "gitlab"
|
||||||
|
else if platform == "gitea" then "gitea"
|
||||||
|
else "git";
|
||||||
|
jqExpr = if platform == "gitlab" then ".[].path" else ".[].name";
|
||||||
|
pageSize = if platform == "gitea" then 50 else 100;
|
||||||
|
pageSizeStr = toString pageSize;
|
||||||
|
listUrl = if platform == "github" then "${baseUrl}/users/${owner}/repos?per_page=${pageSizeStr}&type=owner"
|
||||||
|
else if platform == "gitlab" then "${baseUrl}/api/v4/users/${owner}/projects?per_page=${pageSizeStr}"
|
||||||
|
else "${baseUrl}/api/v1/users/${owner}/repos?limit=${pageSizeStr}";
|
||||||
|
in ''
|
||||||
|
echo "Fetching repos for ${owner} from ${platform}..."
|
||||||
|
PAGE=1
|
||||||
|
while true; do
|
||||||
|
REPOS=$(${pkgs.curl}/bin/curl -sf "${listUrl}&page=$PAGE" || echo "[]")
|
||||||
|
|
||||||
|
NAMES=$(echo "$REPOS" | ${pkgs.jq}/bin/jq -r '${jqExpr}')
|
||||||
|
if [ -z "$NAMES" ] || [ "$NAMES" = "null" ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
for REPO_NAME in $NAMES; do
|
||||||
|
${pkgs.curl}/bin/curl -sf -X POST "$GITEA_URL/api/v1/repos/migrate" \
|
||||||
|
-H "$AUTH" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{
|
||||||
|
\"clone_addr\": \"${cloneBase}/$REPO_NAME.git\",
|
||||||
|
\"repo_name\": \"$REPO_NAME\",
|
||||||
|
\"repo_owner\": \"${owner}\",
|
||||||
|
\"mirror\": true,
|
||||||
|
\"private\": false,
|
||||||
|
\"service\": \"${service}\"
|
||||||
|
}" >/dev/null 2>&1 || true
|
||||||
|
done
|
||||||
|
|
||||||
|
COUNT=$(echo "$REPOS" | ${pkgs.jq}/bin/jq 'length')
|
||||||
|
if [ "$COUNT" -lt ${pageSizeStr} ]; then break; fi
|
||||||
|
PAGE=$((PAGE + 1))
|
||||||
|
done
|
||||||
|
'') mcfg.users}
|
||||||
|
|
||||||
|
echo "Mirror setup complete."
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.gitea.mirrors = {
|
||||||
|
admin = {
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "admin";
|
||||||
|
description = "Gitea admin username for mirror management.";
|
||||||
|
};
|
||||||
|
|
||||||
|
email = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "admin@localhost";
|
||||||
|
description = "Gitea admin email.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
repos = lib.mkOption {
|
||||||
|
type = lib.types.listOf (lib.types.attrsOf lib.types.str);
|
||||||
|
default = [];
|
||||||
|
description = "Individual repositories to mirror. Each entry: { owner, repo, service?, source? }. Source is auto-derived for github/gitlab.";
|
||||||
|
example = [
|
||||||
|
{ owner = "nixos"; repo = "nixpkgs"; service = "github"; }
|
||||||
|
{ owner = "someone"; repo = "thing"; source = "https://custom.instance/someone/thing.git"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
users = lib.mkOption {
|
||||||
|
type = lib.types.listOf (lib.types.attrsOf lib.types.str);
|
||||||
|
default = [];
|
||||||
|
description = "Mirror all public repos of a user/org. Each entry: { owner, platform, baseUrl? }.";
|
||||||
|
example = [
|
||||||
|
{ owner = "catppuccin"; platform = "github"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf (mcfg.repos != [] || mcfg.users != []) {
|
||||||
|
services.gitea.settings.mirror = {
|
||||||
|
DEFAULT_INTERVAL = "6h";
|
||||||
|
MIN_INTERVAL = "10m";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gitea.settings."cron.update_mirrors" = {
|
||||||
|
SCHEDULE = "@every 10m";
|
||||||
|
RUN_AT_START = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.gitea-mirror-setup = {
|
||||||
|
description = "Setup Gitea mirror repositories";
|
||||||
|
after = [ "gitea.service" ];
|
||||||
|
requires = [ "gitea.service" ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
ExecStart = setupScript;
|
||||||
|
WorkingDirectory = cfg.stateDir;
|
||||||
|
Environment = [
|
||||||
|
"GITEA_WORK_DIR=${cfg.stateDir}"
|
||||||
|
"GITEA_CUSTOM=${cfg.customDir}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.timers.gitea-mirror-setup = {
|
||||||
|
description = "Run Gitea mirror setup on boot and periodically";
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
|
||||||
|
timerConfig = {
|
||||||
|
OnBootSec = "2min";
|
||||||
|
OnUnitActiveSec = "6h";
|
||||||
|
Unit = "gitea-mirror-setup.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
43
modules/services/gitea/gitea.nix
Normal file
43
modules/services/gitea/gitea.nix
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
den.aspects.gitea = {
|
||||||
|
# includes = [ den.aspects.gitea-mirrors ];
|
||||||
|
|
||||||
|
nixos = { config, ... }: {
|
||||||
|
den.tunnels = [ "git" ];
|
||||||
|
|
||||||
|
services.gitea = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
database.type = "mysql";
|
||||||
|
|
||||||
|
settings.service = {
|
||||||
|
DISABLE_REGISTRATION = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings.server.HTTP_PORT = config.den.portmap.git;
|
||||||
|
|
||||||
|
/*
|
||||||
|
mirrors = {
|
||||||
|
admin = {
|
||||||
|
user = "admin";
|
||||||
|
email = "admin@bug.tools";
|
||||||
|
};
|
||||||
|
|
||||||
|
repos = [
|
||||||
|
{ owner = "gmodena"; repo = "nix-flatpak"; service = "github"; }
|
||||||
|
{ owner = "FlameFlag"; repo = "nixcord"; service = "github"; }
|
||||||
|
{ owner = "jacob.eva"; repo = "opencom-lte"; source = "https://git.liberatedsystems.co.uk/jacob.eva/opencom-lte.git"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
users = [
|
||||||
|
{ owner = "nix-community"; platform = "github"; }
|
||||||
|
{ owner = "catppuccin"; platform = "github"; }
|
||||||
|
{ owner = "picosh"; platform = "github"; }
|
||||||
|
{ owner = "vic"; platform = "github"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
{ den, ...}: {
|
{
|
||||||
den.aspects.glances = {
|
den.aspects.glances = {
|
||||||
nixos = { pkgs, ... }: {
|
nixos = { pkgs, config, ... }: {
|
||||||
|
den.tunnels = [ "monitor" ];
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.glances ];
|
environment.systemPackages = [ pkgs.glances ];
|
||||||
|
|
||||||
users.users.glances = {
|
users.users.glances = {
|
||||||
@@ -24,7 +26,7 @@
|
|||||||
ExecStart = ''
|
ExecStart = ''
|
||||||
${pkgs.glances}/bin/glances \
|
${pkgs.glances}/bin/glances \
|
||||||
-w \
|
-w \
|
||||||
-p 61208 \
|
-p ${toString config.den.portmap.monitor} \
|
||||||
-B 0.0.0.0
|
-B 0.0.0.0
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|||||||
@@ -1,56 +1,59 @@
|
|||||||
{ den, lib, ... }: {
|
{ lib, ... }: {
|
||||||
den.aspects.invidious = {
|
den.aspects.invidious = {
|
||||||
nixos = { pkgs, ... }: let
|
nixos = { pkgs, config, ... }: let
|
||||||
companionPort = 8282;
|
companionPort = 8282;
|
||||||
companionPath = "/companion";
|
companionPath = "/companion";
|
||||||
companionKey = "kKg3RKeZjE7frmvw";
|
companionKey = "kKg3RKeZjE7frmvr";
|
||||||
|
port = config.den.portmap.tube;
|
||||||
in {
|
in {
|
||||||
|
den.tunnels = [ "tube" ];
|
||||||
|
|
||||||
virtualisation.podman.enable = true;
|
virtualisation.podman.enable = true;
|
||||||
virtualisation.oci-containers.backend = lib.mkDefault "podman";
|
virtualisation.oci-containers.backend = lib.mkDefault "podman";
|
||||||
|
|
||||||
virtualisation.oci-containers.containers.invidious-companion = {
|
virtualisation.oci-containers.containers.invidious-companion = {
|
||||||
image = "quay.io/invidious/invidious-companion:latest";
|
image = "quay.io/invidious/invidious-companion:latest";
|
||||||
extraOptions = [ "--network=host" "--pull=always" ];
|
extraOptions = [ "--network=host" "--pull=always" ];
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
SERVER_SECRET_KEY = companionKey;
|
SERVER_SECRET_KEY = companionKey;
|
||||||
HOST = "127.0.0.1";
|
HOST = "127.0.0.1";
|
||||||
PORT = toString companionPort;
|
PORT = toString companionPort;
|
||||||
SERVER_BASE_URL = "http://127.0.0.1:${toString companionPort}";
|
SERVER_BASE_URL = "http://127.0.0.1:${toString companionPort}";
|
||||||
|
|
||||||
# HTTP_PROXY = "http://proxy.example:3128";
|
# HTTP_PROXY = "http://proxy.example:3128";
|
||||||
# HTTPS_PROXY = "http://proxy.example:3128";
|
# HTTPS_PROXY = "http://proxy.example:3128";
|
||||||
# NO_PROXY = "127.0.0.1,localhost";
|
# NO_PROXY = "127.0.0.1,localhost";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.invidious = {
|
services.invidious = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.invidious;
|
package = pkgs.invidious;
|
||||||
|
|
||||||
address = "127.0.0.1";
|
address = "127.0.0.1";
|
||||||
port = 3030;
|
port = port;
|
||||||
|
|
||||||
nginx.enable = false;
|
nginx.enable = false;
|
||||||
sig-helper.enable = false;
|
sig-helper.enable = false;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
domain = "tube.bug.tools";
|
domain = "tube.bug.tools";
|
||||||
https_only = false;
|
https_only = false;
|
||||||
external_port = 3030;
|
external_port = port;
|
||||||
|
|
||||||
invidious_companion = [
|
invidious_companion = [
|
||||||
{ private_url = "http://127.0.0.1:${toString companionPort}${companionPath}"; }
|
{ private_url = "http://127.0.0.1:${toString companionPort}${companionPath}"; }
|
||||||
];
|
];
|
||||||
|
|
||||||
invidious_companion_key = companionKey;
|
invidious_companion_key = companionKey;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.invidious = let dep = "podman-invidious-companion.service"; in {
|
systemd.services.invidious = let dep = "podman-invidious-companion.service"; in {
|
||||||
wants = [ dep ];
|
wants = [ dep ];
|
||||||
after = [ dep ];
|
after = [ dep ];
|
||||||
requires = [ dep ];
|
requires = [ dep ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
imports = [
|
imports = [
|
||||||
(fetchTarball {
|
(fetchTarball {
|
||||||
url = "https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/archive/master.tar.gz";
|
url = "https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/archive/master.tar.gz";
|
||||||
sha256 = "0rm5f749xakmkqrpkl5ay1pydbnlinr50pvwg1vm795js2infmj5";
|
sha256 = "0mfc8xkpy6hrfwyhjjnfna8b54s2h01lzsw4mw3yym6ccacc75r8";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -44,14 +44,17 @@
|
|||||||
"fc2@bug.tools"
|
"fc2@bug.tools"
|
||||||
"counter@bug.tools"
|
"counter@bug.tools"
|
||||||
"claude@bug.tools"
|
"claude@bug.tools"
|
||||||
"bitcraft@bug.tools"
|
"rumble@bug.tools"
|
||||||
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
"pare@bug.tools" = {
|
"pare@bug.tools" = {
|
||||||
hashedPasswordFile = "/home/bug/mailserver/pare.passwd";
|
hashedPasswordFile = "/home/bug/mailserver/pare.passwd";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"poop@bug.tools" = {
|
||||||
|
hashedPasswordFile = "/home/bug/mailserver/pare.passwd";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
port = config.den.portmap.matrix;
|
||||||
domain = "bug.tools";
|
domain = "bug.tools";
|
||||||
matrixDomain = "matrix.${domain}";
|
matrixDomain = "matrix.${domain}";
|
||||||
clientConfig = {
|
clientConfig = {
|
||||||
@@ -29,7 +30,7 @@
|
|||||||
|
|
||||||
listeners = [
|
listeners = [
|
||||||
{
|
{
|
||||||
port = 8008;
|
port = port;
|
||||||
bind_addresses = ["127.0.0.1"];
|
bind_addresses = ["127.0.0.1"];
|
||||||
type = "http";
|
type = "http";
|
||||||
tls = false;
|
tls = false;
|
||||||
@@ -89,7 +90,7 @@
|
|||||||
enableACME = true;
|
enableACME = true;
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
proxyPass = "http://127.0.0.1:8008";
|
proxyPass = "http://127.0.0.1:${toString port}";
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
proxy_set_header X-Forwarded-For $remote_addr;
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
|||||||
11
modules/services/omnisearch.nix
Normal file
11
modules/services/omnisearch.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
den.aspects.omnisearch = {
|
||||||
|
nixos = {
|
||||||
|
imports = [ inputs.omnisearch.nixosModules.default ];
|
||||||
|
|
||||||
|
den.tunnels = [ "omnisearch" ];
|
||||||
|
|
||||||
|
services.omnisearch.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
21
modules/services/ports.nix
Normal file
21
modules/services/ports.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
den.aspects.portmap.nixos = { lib, ... }: {
|
||||||
|
options.den.portmap = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf lib.types.port;
|
||||||
|
default = {};
|
||||||
|
description = "ports";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.den.portmap = {
|
||||||
|
tvtun = 3001;
|
||||||
|
search = 8888;
|
||||||
|
files = 3210;
|
||||||
|
tube = 3030;
|
||||||
|
reddit = 8975;
|
||||||
|
git = 3002;
|
||||||
|
monitor = 61208;
|
||||||
|
matrix = 8008;
|
||||||
|
omnisearch = 8087;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
3
modules/services/pstream.nix
Normal file
3
modules/services/pstream.nix
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
{
|
{
|
||||||
den.aspects.redlib = {
|
den.aspects.redlib = {
|
||||||
nixos = {
|
nixos = { config, ... }: {
|
||||||
|
den.tunnels = [ "reddit" ];
|
||||||
|
|
||||||
services.redlib = {
|
services.redlib = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
address = "127.0.0.1";
|
address = "127.0.0.1";
|
||||||
port = 8975;
|
port = config.den.portmap.reddit;
|
||||||
openFirewall = false;
|
openFirewall = true;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
SFW_ONLY = "off";
|
SFW_ONLY = "off";
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
{
|
{
|
||||||
den.aspects.searxng = {
|
den.aspects.searxng = {
|
||||||
nixos = {
|
nixos = { config, ... }: {
|
||||||
|
den.tunnels = [ "search" ];
|
||||||
|
|
||||||
systemd.services.searx-init.serviceConfig.EnvironmentFile = [
|
systemd.services.searx-init.serviceConfig.EnvironmentFile = [
|
||||||
"/home/bug/.searxng.env"
|
"/home/bug/.searxng.env"
|
||||||
];
|
];
|
||||||
@@ -15,7 +17,7 @@
|
|||||||
settings = {
|
settings = {
|
||||||
general.instance_name = "search.bug.tools";
|
general.instance_name = "search.bug.tools";
|
||||||
|
|
||||||
server.port = 8888;
|
server.port = config.den.portmap.search;
|
||||||
server.bind_address = "0.0.0.0";
|
server.bind_address = "0.0.0.0";
|
||||||
server.secret_key = "$SEARX_SECRET_KEY";
|
server.secret_key = "$SEARX_SECRET_KEY";
|
||||||
};
|
};
|
||||||
|
|||||||
213
modules/software/browsers/librewolf.nix
Normal file
213
modules/software/browsers/librewolf.nix
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
{ inputs, lib, ... }: {
|
||||||
|
den.aspects.librewolf = {
|
||||||
|
homeManager = { pkgs, ... }: {
|
||||||
|
programs.librewolf = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
"browser.startup.homepage" = "https://search.bug.tools";
|
||||||
|
"browser.startup.page" = 3;
|
||||||
|
|
||||||
|
"datareporting.healthreport.uploadEnabled" = false;
|
||||||
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||||
|
"toolkit.telemetry.enabled" = false;
|
||||||
|
"toolkit.telemetry.unified" = false;
|
||||||
|
"toolkit.telemetry.archive.enabled" = false;
|
||||||
|
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||||
|
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||||
|
"toolkit.telemetry.updatePing.enabled" = false;
|
||||||
|
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.coverage.opt-out" = true;
|
||||||
|
"toolkit.coverage.opt-out" = true;
|
||||||
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
"app.normandy.enabled" = false;
|
||||||
|
"app.normandy.api_url" = "";
|
||||||
|
"breakpad.reportURL" = "";
|
||||||
|
"browser.tabs.crashReporting.sendReport" = false;
|
||||||
|
"browser.crashReports.unsubmittedCheck.enabled" = false;
|
||||||
|
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
|
||||||
|
|
||||||
|
"privacy.resistFingerprinting.letterboxing" = true;
|
||||||
|
"privacy.donottrackheader.enabled" = true;
|
||||||
|
"privacy.globalprivacycontrol.enabled" = true;
|
||||||
|
"privacy.resistFingerprinting" = false;
|
||||||
|
"privacy.fingerprintingProtection" = true;
|
||||||
|
"privacy.fingerprintingProtection.overrides" = "+AllTargets,-CSSPrefersColorScheme";
|
||||||
|
|
||||||
|
"browser.search.separatePrivateDefault" = false;
|
||||||
|
|
||||||
|
"browser.download.autohideButton" = true;
|
||||||
|
"browser.quitShortcut.disabled" = true;
|
||||||
|
"browser.sessionstore.resume_session_once" = true;
|
||||||
|
|
||||||
|
"browser.cache.memory.capacity" = 65536;
|
||||||
|
"browser.sessionstore.interval" = 60000;
|
||||||
|
"browser.sessionstore.max_tabs_undo" = 10;
|
||||||
|
"browser.sessionstore.max_windows_undo" = 1;
|
||||||
|
"browser.tabs.unloadOnLowMemory" = true;
|
||||||
|
|
||||||
|
"gfx.webrender.all" = true;
|
||||||
|
"gfx.canvas.accelerated" = true;
|
||||||
|
"media.hardware-video-decoding.force-enabled" = true;
|
||||||
|
|
||||||
|
"network.http.max-connections" = 1500;
|
||||||
|
"network.http.max-persistent-connections-per-server" = 10;
|
||||||
|
"network.prefetch-next" = false;
|
||||||
|
|
||||||
|
"browser.tabs.animate" = false;
|
||||||
|
"browser.fullscreen.animate" = false;
|
||||||
|
|
||||||
|
"ui.systemUsesDarkTheme" = 1;
|
||||||
|
"browser.theme.content-theme" = 0;
|
||||||
|
|
||||||
|
"layout.css.prefers-color-scheme.content-override" = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
profiles.default = {
|
||||||
|
search = {
|
||||||
|
force = true;
|
||||||
|
|
||||||
|
default = "search.bug.tools";
|
||||||
|
|
||||||
|
engines = {
|
||||||
|
"search.bug.tools" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://search.bug.tools/search";
|
||||||
|
params = [
|
||||||
|
{ name = "q"; value = "{searchTerms}"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
icon = "https://search.bug.tools/favicon.ico";
|
||||||
|
definedAliases = [ "@s" "@sq" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"NixOS Packages" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://search.nixos.org/packages";
|
||||||
|
params = [
|
||||||
|
{ name = "channel"; value = "unstable"; }
|
||||||
|
{ name = "query"; value = "{searchTerms}"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "https://search.nixos.org/favicon.png";
|
||||||
|
definedAliases = [ "@np" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"NixOS Options" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://search.nixos.org/options";
|
||||||
|
params = [
|
||||||
|
{ name = "channel"; value = "unstable"; }
|
||||||
|
{ name = "query"; value = "{searchTerms}"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "https://search.nixos.org/favicon.png";
|
||||||
|
definedAliases = [ "@no" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Home Manager Options" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://home-manager-options.extranix.com/";
|
||||||
|
params = [
|
||||||
|
{ name = "query"; value = "{searchTerms}"; }
|
||||||
|
{ name = "release"; value = "master"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
icon = "https://home-manager-options.extranix.com/images/favicon.png";
|
||||||
|
definedAliases = [ "@hm" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
google.metaData.hidden = true;
|
||||||
|
bing.metaData.hidden = true;
|
||||||
|
amazondotcom-us.metaData.hidden = true;
|
||||||
|
ebay.metaData.hidden = true;
|
||||||
|
|
||||||
|
wikipedia.metaData = {
|
||||||
|
hidden = false;
|
||||||
|
alias = "@w";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extensions = {
|
||||||
|
force = true;
|
||||||
|
settings = {
|
||||||
|
"{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}" = {
|
||||||
|
force = true;
|
||||||
|
settings = inputs.catppuccin-userstyles-nix.stylusSettings.${pkgs.stdenv.hostPlatform.system} {
|
||||||
|
global = {
|
||||||
|
lightFlavor = "mocha";
|
||||||
|
darkFlavor = "mocha";
|
||||||
|
accentColor = "mauve";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
policies = {
|
||||||
|
OverrideFirstRunPage = "";
|
||||||
|
OverridePostUpdatePage = "";
|
||||||
|
|
||||||
|
BlockAboutConfig = true;
|
||||||
|
|
||||||
|
DisableTelemetry = true;
|
||||||
|
DisableFirefoxStudies = true;
|
||||||
|
DisableFeedbackCommands = true;
|
||||||
|
DisableCrashReporter = true;
|
||||||
|
|
||||||
|
DisablePocket = true;
|
||||||
|
|
||||||
|
DisableFirefoxAccounts = false;
|
||||||
|
|
||||||
|
ExtensionSettings = let
|
||||||
|
mkExtensions = ids: lib.genAttrs ids (id: {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/${id}/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
private_browsing = true;
|
||||||
|
});
|
||||||
|
in {
|
||||||
|
"*".installation_mode = "blocked";
|
||||||
|
} // (mkExtensions [
|
||||||
|
"{cb31ec5d-c49a-4e5a-b240-16c767444f62}" # indie-wiki-buddy
|
||||||
|
|
||||||
|
"{1b66b5ad-408f-4300-aac6-55a68b2b24ff}" # catppuccin-mocha-no-borders
|
||||||
|
|
||||||
|
"{1b66b5ad-408f-4300-aac6-55a68b2b24ff}" # catppuccin-mocha-no-borders
|
||||||
|
|
||||||
|
"{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}" # styl-us
|
||||||
|
|
||||||
|
"{60f82f00-9ad5-4de5-b31c-b16a47c51558}" # cookie-quick-manager
|
||||||
|
|
||||||
|
"{88ebde3a-4581-4c6b-8019-2a05a9e3e938}" # hide-youtube-shorts
|
||||||
|
|
||||||
|
"firefox@tampermonkey.net" # tampermonkey
|
||||||
|
|
||||||
|
"deArrow@ajay.app" # dearrow
|
||||||
|
|
||||||
|
"sponsorBlocker@ajay.app" # sponsorblock
|
||||||
|
|
||||||
|
"uBlock0@raymondhill.net" # ublock-origin
|
||||||
|
|
||||||
|
"contact@lesspass.com" # lesspass
|
||||||
|
|
||||||
|
"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" # user-agent-string-switcher
|
||||||
|
|
||||||
|
"{762f9885-5a13-4abd-9c77-433dcd38b8fd}" # return-youtube-dislikes
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
14
modules/software/compatibility/appimage.nix
Normal file
14
modules/software/compatibility/appimage.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.appimage = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
appimage-run
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.appimage = {
|
||||||
|
enable = true;
|
||||||
|
binfmt = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
5
modules/software/compatibility/compatibility.nix
Normal file
5
modules/software/compatibility/compatibility.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.compatibility = {
|
||||||
|
includes = with den.aspects; [ wine appimage nix-ld nix-alien ];
|
||||||
|
};
|
||||||
|
}
|
||||||
13
modules/software/compatibility/nix-alien.nix
Normal file
13
modules/software/compatibility/nix-alien.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
den.aspects.nix-alien = {
|
||||||
|
nixos = {
|
||||||
|
environment.systemPackages = let
|
||||||
|
nix-alien = import (
|
||||||
|
fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master"
|
||||||
|
){};
|
||||||
|
in [
|
||||||
|
nix-alien.nix-alien
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
23
modules/software/compatibility/nix-ld.nix
Normal file
23
modules/software/compatibility/nix-ld.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.nix-ld = {
|
||||||
|
nixos = { pkgs, options, ... }: {
|
||||||
|
programs.nix-ld = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
libraries = options.programs.nix-ld.libraries.default ++ (with pkgs; [
|
||||||
|
libxml2
|
||||||
|
udev
|
||||||
|
gcc
|
||||||
|
egl-wayland
|
||||||
|
mesa
|
||||||
|
libglvnd
|
||||||
|
wayland
|
||||||
|
libX11
|
||||||
|
libXcursor
|
||||||
|
libXrandr
|
||||||
|
libXi
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
10
modules/software/compatibility/wine.nix
Normal file
10
modules/software/compatibility/wine.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.wine = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wine64
|
||||||
|
wineWow64Packages.full
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
5
modules/software/development/development.nix
Normal file
5
modules/software/development/development.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.development = {
|
||||||
|
includes = with den.aspects; [ editors ];
|
||||||
|
};
|
||||||
|
}
|
||||||
10
modules/software/development/editors.nix
Normal file
10
modules/software/development/editors.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.editors = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
users.users.bug.packages = with pkgs; [
|
||||||
|
zed-editor
|
||||||
|
arduino-ide
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
26
modules/software/essentials.nix
Normal file
26
modules/software/essentials.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
den.aspects.essentials = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
comma
|
||||||
|
fastfetch
|
||||||
|
git
|
||||||
|
home-manager
|
||||||
|
inetutils
|
||||||
|
micro
|
||||||
|
nh
|
||||||
|
nil
|
||||||
|
nixd
|
||||||
|
nixfmt
|
||||||
|
nix-index
|
||||||
|
nix-output-monitor
|
||||||
|
nix-prefetch
|
||||||
|
nvd
|
||||||
|
psmisc
|
||||||
|
tree
|
||||||
|
unzip
|
||||||
|
wget
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,9 +1,26 @@
|
|||||||
{
|
{
|
||||||
den.aspects.fish = {
|
den.aspects.fish = {
|
||||||
nixos = {
|
nixos = { pkgs, ...}: {
|
||||||
programs.fish.shellAliases = {
|
programs.fish.shellAliases = {
|
||||||
|
fetch = "fastfetch --file ~/nix/nix.ans";
|
||||||
|
|
||||||
box = "ssh box.bug.tools";
|
box = "ssh box.bug.tools";
|
||||||
|
unbox = "sh -c 'ssh -N -L \"$1\":0.0.0.0:\"$1\" box.bug.tools &' --";
|
||||||
|
rebox = "sh -c 'fuser -k \"$1\"/tcp' --";
|
||||||
|
dock = "sh -c 'ssh -N -D \"$1\" box.bug.tools &' --";
|
||||||
|
|
||||||
|
vpn = "sshuttle --dns --python python3 -r box.bug.tools 0/0";
|
||||||
|
|
||||||
|
pico = "ssh pico.sh";
|
||||||
|
|
||||||
|
ns = "nh os switch ~/nix --impure -H (hostname)";
|
||||||
|
rebuild = "ns";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs.fishPlugins; [
|
||||||
|
done
|
||||||
|
sponge
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,54 +1,27 @@
|
|||||||
{ inputs, lib, ... }: {
|
{ inputs, lib, ... }: {
|
||||||
den.aspects.flatpak = {
|
den.aspects.flatpak = {
|
||||||
nixos = { pkgs, ... }: {
|
nixos = { ... }: {
|
||||||
imports = [ inputs.nix-flatpak.nixosModules.nix-flatpak ];
|
imports = [ inputs.nix-flatpak.nixosModules.nix-flatpak ];
|
||||||
|
|
||||||
services.flatpak = {
|
services.flatpak = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
remotes = lib.mkOptionDefault [{
|
remotes = lib.mkOptionDefault [{
|
||||||
name = "flathub-beta";
|
name = "flathub-beta";
|
||||||
location = "https://flathub.org/beta-repo/flathub-beta.flatpakrepo";
|
location = "https://flathub.org/beta-repo/flathub-beta.flatpakrepo";
|
||||||
}];
|
} {
|
||||||
|
name = "RSILauncher";
|
||||||
|
location = "https://mactan-sc.github.io/rsilauncher/RSILauncher.flatpakrepo";
|
||||||
|
}];
|
||||||
|
|
||||||
update.auto.enable = true;
|
update.auto.enable = true;
|
||||||
uninstallUnmanaged = true;
|
uninstallUnmanaged = true;
|
||||||
|
|
||||||
packages = [
|
overrides = {
|
||||||
"org.vinegarhq.Sober"
|
global = {
|
||||||
"org.vinegarhq.Vinegar"
|
Context.sockets = [ "wayland" "!x11" "!fallback-x11" ];
|
||||||
"org.gnome.Decibels"
|
|
||||||
"org.pipewire.Helvum"
|
|
||||||
"community.pathofbuilding.PathOfBuilding"
|
|
||||||
"io.github.gaheldev.Millisecond"
|
|
||||||
|
|
||||||
{
|
|
||||||
appId = "com.hytale.Launcher";
|
|
||||||
sha256 = "sha256-SUxfyovC2umZmsOj5bOTZ8WfGCpnWcz7svOESwNekV0=";
|
|
||||||
bundle = "${pkgs.fetchurl {
|
|
||||||
url = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-latest.flatpak";
|
|
||||||
sha256 = "sha256-SUxfyovC2umZmsOj5bOTZ8WfGCpnWcz7svOESwNekV0=";
|
|
||||||
}}";
|
|
||||||
}
|
|
||||||
|
|
||||||
# add Polytoria client
|
|
||||||
# https://cdn.polytoria.com/releases/installer/linux/Polytoria%20Setup%204.12.0.flatpak
|
|
||||||
|
|
||||||
{
|
|
||||||
appId = "com.polytoria.launcher";
|
|
||||||
sha256 = "sha256-VjhNiJfSdCtlH2SuP3Mn8jjOrx5xcOqhtDKaWYIwxYg=";
|
|
||||||
bundle = "${pkgs.fetchurl {
|
|
||||||
url = "https://github.com/4DBug/poly/releases/download/poly/poly.flatpak";
|
|
||||||
sha256 = "sha256-VjhNiJfSdCtlH2SuP3Mn8jjOrx5xcOqhtDKaWYIwxYg=";
|
|
||||||
}}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
overrides = {
|
|
||||||
global = {
|
|
||||||
Context.sockets = ["wayland" "!x11" "!fallback-x11"];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
25
modules/software/fonts.nix
Normal file
25
modules/software/fonts.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.fonts = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
fonts = {
|
||||||
|
fontDir.enable = true;
|
||||||
|
enableDefaultPackages = true;
|
||||||
|
|
||||||
|
packages = with pkgs; [
|
||||||
|
twitter-color-emoji
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.droid-sans-mono
|
||||||
|
];
|
||||||
|
|
||||||
|
fontconfig = {
|
||||||
|
enable = true;
|
||||||
|
useEmbeddedBitmaps = true;
|
||||||
|
|
||||||
|
defaultFonts = {
|
||||||
|
emoji = [ "Twitter Color Emoji" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
9
modules/software/gaming/emulators.nix
Normal file
9
modules/software/gaming/emulators.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.emulators = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
users.users.bug.packages = with pkgs; [
|
||||||
|
ppsspp
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
18
modules/software/gaming/game-tools.nix
Normal file
18
modules/software/gaming/game-tools.nix
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.game-tools = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
users.users.bug.packages = with pkgs; [
|
||||||
|
steamtinkerlaunch
|
||||||
|
scanmem
|
||||||
|
samrewritten
|
||||||
|
lug-helper
|
||||||
|
gamemode
|
||||||
|
steam-run
|
||||||
|
];
|
||||||
|
|
||||||
|
services.flatpak.packages = [
|
||||||
|
"community.pathofbuilding.PathOfBuilding"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
5
modules/software/gaming/gaming.nix
Normal file
5
modules/software/gaming/gaming.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.gaming = {
|
||||||
|
includes = with den.aspects; [ steam roblox polytoria game-tools emulators star-citizen minecraft ];
|
||||||
|
};
|
||||||
|
}
|
||||||
9
modules/software/gaming/hytale.nix
Normal file
9
modules/software/gaming/hytale.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
den.aspects.hytale = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
users.users.bug.packages = [
|
||||||
|
inputs.hytale-launcher.packages.${pkgs.system}.default
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
119
modules/software/gaming/minecraft.nix
Normal file
119
modules/software/gaming/minecraft.nix
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
den.aspects.minecraft = {
|
||||||
|
nixos = { pkgs, ... }: let
|
||||||
|
inherit (pkgs) fetchurl symlinkJoin makeWrapper;
|
||||||
|
|
||||||
|
base = (inputs.minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.v1_21_11.fabric.client.withConfig [{
|
||||||
|
mods = [
|
||||||
|
(fetchurl {
|
||||||
|
name = "fabric-api.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/P7dR8mSH/versions/i5tSkVBH/fabric-api-0.141.3+1.21.11.jar";
|
||||||
|
sha256 = "sha256:1xgfpy6zj1nwwfrhr346firm8zw6lw63pl4parvjwrirc6l57i46";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "meteor-client.jar";
|
||||||
|
url = "https://meteorclient.com/api/download";
|
||||||
|
sha256 = "sha256:0d5l2c41b3d1nadzaavdx8pjciskj6i3h65k4pmhvhz3mg6njwvl";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "baritone.jar";
|
||||||
|
url = "https://www.meteorclient.com/api/downloadBaritone";
|
||||||
|
sha256 = "sha256:0g5xl90xphqy2c7xwlvjm71dn4l7c35yg8hwf7w4h0bwdfw7m31y";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "modmenu.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/mOgUt4GM/versions/Tyk71iSw/modmenu-17.0.0.jar";
|
||||||
|
sha256 = "sha256:0a2i5hl77bcw33m1h51y1dxrk7bbkj8fv0rp8w6y78d43ibwkwlm";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "distant-horizons.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/uCdwusMi/versions/GT3Bm3GN/DistantHorizons-2.4.5-b-1.21.11-fabric-neoforge.jar";
|
||||||
|
sha256 = "sha256:0gxwhvji4k0xnzidwrvlndh81r64n6i24v253grbxxamgshwg53n";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "iris.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/YL57xq9U/versions/fDpuVzVr/iris-fabric-1.10.7+mc1.21.11.jar";
|
||||||
|
sha256 = "sha256:06fb6r22gnsxnv2w0sgvfnsj6fk3a7jcxls7z14imjc9h6hmviaq";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "sodium.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/AANobbMI/versions/UddlN6L4/sodium-fabric-0.8.7+mc1.21.11.jar";
|
||||||
|
sha256 = "sha256:10rrqnyn8mb14b1k3ks84g6033zkkn94fwvyyflaiajhnf3ax3y0";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "lithium.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/gvQqBUqZ/versions/Ow7wA0kG/lithium-fabric-0.21.4+mc1.21.11.jar";
|
||||||
|
sha256 = "sha256:12y704i98rf0xb438f72hi0aqhsi35jxwjs2575vsg5lllfw8dai";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "immediatelyfast.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/5ZwdcRci/versions/QwkfUKSj/ImmediatelyFast-Fabric-1.14.2+1.21.11.jar";
|
||||||
|
sha256 = "sha256:1248yg69f5d232qn138xlcsdmbs2yj3gdjx9zl53v19c1j326pgb";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "entity-culling.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/NNAgCjsB/versions/SK12FGQf/entityculling-fabric-1.10.0-mc1.21.11.jar";
|
||||||
|
sha256 = "sha256:0iws5ql4k542lr4psrcw9hj5z4zz81218ywnpsl77zj8wnwm4l1d";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "ferrite-core.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/uXXizFIs/versions/Ii0gP3D8/ferritecore-8.2.0-fabric.jar";
|
||||||
|
sha256 = "sha256:05f7q9jac16syfnahd6r4kx3aqm4i580y623gk6810plrdhdfszp";
|
||||||
|
})
|
||||||
|
|
||||||
|
(fetchurl {
|
||||||
|
name = "dynamic-fps.jar";
|
||||||
|
url = "https://cdn.modrinth.com/data/LQ3K71Q1/versions/PUe5Asxs/dynamic-fps-3.11.4+minecraft-1.21.11-fabric.jar";
|
||||||
|
sha256 = "sha256:13dh0226f6j70ak752fj8s00hmrx175v9607plf4rhia9plqy3kx";
|
||||||
|
})
|
||||||
|
|
||||||
|
# (fetchurl {
|
||||||
|
# name = "removing-loading-screens.jar";
|
||||||
|
# url = "https://cdn.modrinth.com/data/ZP7xHXtw/versions/TCSbq6jC/rrlsFabric-5.1.15+mc.1.21.11.jar";
|
||||||
|
# sha256 = "sha256:16dkj8baa6xn47n9alzy4104wz6z4zp719dxwv5wm96g2wkp1z57";
|
||||||
|
# })
|
||||||
|
];
|
||||||
|
}]).withConfig {
|
||||||
|
resourcePacks = [
|
||||||
|
(fetchurl {
|
||||||
|
name = "unique-dark.zip";
|
||||||
|
url = "https://cdn.modrinth.com/data/BaY1UdGV/versions/UjQJb5zE/Unique%20Dark%20-%20Lite%20-%201.20.2-26.x.zip";
|
||||||
|
sha256 = "sha256:19cv5q8pnvxkf96lazg8angbfqwkxag8qsxk31cv487jq99kl621";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
shaderPacks = [
|
||||||
|
(fetchurl {
|
||||||
|
name = "complementary-shaders.zip";
|
||||||
|
url = "https://cdn.modrinth.com/data/HVnmMxH1/versions/836bPNGo/ComplementaryReimagined_r5.7.1.zip";
|
||||||
|
sha256 = "sha256:1w33kyknwc0qsi6l0saww906iwi9d3hkn0nm7hnl4bc3lws0d8i4";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
appArgs = [ "--gameDir" "/home/bug/.local/share/minecraft" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
minecraft = symlinkJoin {
|
||||||
|
name = "minecraft-wrapped";
|
||||||
|
paths = [ base ];
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
postBuild = ''
|
||||||
|
wrapProgram $out/bin/minecraft \
|
||||||
|
--set XDG_DATA_HOME "/home/bug/.local/share/minecraft"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
users.users.bug.packages = [ minecraft ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
16
modules/software/gaming/polytoria.nix
Normal file
16
modules/software/gaming/polytoria.nix
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.polytoria = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
services.flatpak.packages = [
|
||||||
|
{
|
||||||
|
appId = "com.polytoria.launcher";
|
||||||
|
sha256 = "sha256-VjhNiJfSdCtlH2SuP3Mn8jjOrx5xcOqhtDKaWYIwxYg=";
|
||||||
|
bundle = "${pkgs.fetchurl {
|
||||||
|
url = "https://github.com/4DBug/poly/releases/download/poly/poly.flatpak";
|
||||||
|
sha256 = "sha256-VjhNiJfSdCtlH2SuP3Mn8jjOrx5xcOqhtDKaWYIwxYg=";
|
||||||
|
}}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
10
modules/software/gaming/roblox.nix
Normal file
10
modules/software/gaming/roblox.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.roblox = {
|
||||||
|
nixos = {
|
||||||
|
services.flatpak.packages = [
|
||||||
|
"org.vinegarhq.Sober"
|
||||||
|
"org.vinegarhq.Vinegar"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
11
modules/software/gaming/star-citizen.nix
Normal file
11
modules/software/gaming/star-citizen.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
den.aspects.star-citizen = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
imports = [ inputs.nix-citizen.nixosModules.default ];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
inputs.nix-citizen.packages.${system}.rsi-launcher
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
34
modules/software/gaming/steam.nix
Normal file
34
modules/software/gaming/steam.nix
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.steam = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
programs = {
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
dedicatedServer.openFirewall = false;
|
||||||
|
|
||||||
|
localNetworkGameTransfers.openFirewall = true;
|
||||||
|
|
||||||
|
gamescopeSession.enable = true;
|
||||||
|
|
||||||
|
extraCompatPackages = with pkgs; [
|
||||||
|
proton-ge-bin
|
||||||
|
];
|
||||||
|
|
||||||
|
#platformOptimizations.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gamescope = {
|
||||||
|
enable = true;
|
||||||
|
capSysNice = true;
|
||||||
|
|
||||||
|
args = [
|
||||||
|
"--rt"
|
||||||
|
"--expose-wayland"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
189
modules/software/janitor/janitor-backend.nix
Normal file
189
modules/software/janitor/janitor-backend.nix
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
{
|
||||||
|
den.aspects.janitor-backend = {
|
||||||
|
nixos = { pkgs, lib, config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.services.janitor;
|
||||||
|
|
||||||
|
janitorScript = pkgs.writeText "janitor.py" ''
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import shutil
|
||||||
|
import time
|
||||||
|
import logging
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
logging.basicConfig(
|
||||||
|
level=logging.INFO,
|
||||||
|
format="[janitor] %(message)s",
|
||||||
|
stream=sys.stdout,
|
||||||
|
)
|
||||||
|
log = logging.getLogger("janitor")
|
||||||
|
|
||||||
|
CONFIG_PATH = os.environ.get("JANITOR_CONFIG")
|
||||||
|
|
||||||
|
|
||||||
|
def load_config():
|
||||||
|
if not CONFIG_PATH or not os.path.exists(CONFIG_PATH):
|
||||||
|
raise FileNotFoundError(f"JANITOR_CONFIG not set or missing: {CONFIG_PATH}")
|
||||||
|
with open(CONFIG_PATH) as f:
|
||||||
|
return json.load(f)
|
||||||
|
|
||||||
|
|
||||||
|
def get_destination(extension, rules):
|
||||||
|
ext = extension.lower().lstrip(".")
|
||||||
|
for folder, extensions in rules.items():
|
||||||
|
if ext in extensions:
|
||||||
|
return folder
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def resolve_dest(dest_key, watch_dir):
|
||||||
|
if os.path.isabs(dest_key):
|
||||||
|
return Path(dest_key)
|
||||||
|
return watch_dir.parent / dest_key
|
||||||
|
|
||||||
|
|
||||||
|
def unique_path(target):
|
||||||
|
if not target.exists():
|
||||||
|
return target
|
||||||
|
stem, suffix = target.stem, target.suffix
|
||||||
|
counter = 1
|
||||||
|
while True:
|
||||||
|
candidate = target.parent / f"{stem}_{counter}{suffix}"
|
||||||
|
if not candidate.exists():
|
||||||
|
return candidate
|
||||||
|
counter += 1
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
try:
|
||||||
|
config = load_config()
|
||||||
|
except Exception as e:
|
||||||
|
log.error("Failed to load config: %s", e)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
grace_period = config.get("grace_period", 60)
|
||||||
|
rules = config.get("rules", {})
|
||||||
|
now = time.time()
|
||||||
|
|
||||||
|
for watch_dir_str in config.get("watched_dirs", []):
|
||||||
|
watch_dir = Path(os.path.expanduser(watch_dir_str))
|
||||||
|
|
||||||
|
if not watch_dir.exists():
|
||||||
|
log.warning("Watched dir does not exist: %s", watch_dir)
|
||||||
|
continue
|
||||||
|
|
||||||
|
for item in watch_dir.iterdir():
|
||||||
|
if not item.is_file() or item.name.startswith("."):
|
||||||
|
continue
|
||||||
|
|
||||||
|
age = now - item.stat().st_mtime
|
||||||
|
if age < grace_period:
|
||||||
|
continue
|
||||||
|
|
||||||
|
dest_key = get_destination(item.suffix, rules)
|
||||||
|
if dest_key is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
target_dir = resolve_dest(dest_key, watch_dir)
|
||||||
|
target_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
target = unique_path(target_dir / item.name)
|
||||||
|
|
||||||
|
try:
|
||||||
|
shutil.move(str(item), str(target))
|
||||||
|
log.info("Moved %s -> %s", item.name, target)
|
||||||
|
except Exception as e:
|
||||||
|
log.error("Failed to move %s: %s", item.name, e)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
'';
|
||||||
|
|
||||||
|
janitorConfig = pkgs.writeText "janitor_config.json" (builtins.toJSON {
|
||||||
|
grace_period = cfg.gracePeriod;
|
||||||
|
watched_dirs = cfg.watchedDirs;
|
||||||
|
rules = cfg.rules;
|
||||||
|
});
|
||||||
|
|
||||||
|
in {
|
||||||
|
options.services.janitor = {
|
||||||
|
enable = lib.mkEnableOption "file sorting janitor";
|
||||||
|
|
||||||
|
interval = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "5min";
|
||||||
|
description = "How often to run the janitor (systemd time span, e.g. \"5min\", \"1h\").";
|
||||||
|
};
|
||||||
|
|
||||||
|
gracePeriod = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
default = 60;
|
||||||
|
description = "Seconds a file must remain unmodified before it is eligible to be moved.";
|
||||||
|
};
|
||||||
|
|
||||||
|
watchedDirs = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [ "~/Downloads" ];
|
||||||
|
description = "Directories to scan and sort. Supports ~ expansion.";
|
||||||
|
};
|
||||||
|
|
||||||
|
rules = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf (lib.types.listOf lib.types.str);
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
Mapping of destination folder path to a list of file extensions (without leading dot).
|
||||||
|
Destinations are relative to the parent of the watched directory, or absolute if they
|
||||||
|
start with /.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
rules = {
|
||||||
|
"Pictures/Downloads" = [ "jpg" "png" "gif" "webp" ];
|
||||||
|
"Videos/Downloads" = [ "mp4" "mkv" "webm" ];
|
||||||
|
"/mnt/archive" = [ "zip" "tar" ];
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
example = lib.literalExpression ''
|
||||||
|
{
|
||||||
|
"Pictures/Downloads" = [ "jpg" "jpeg" "png" "gif" "webp" "avif" ];
|
||||||
|
"Videos/Downloads" = [ "mp4" "mkv" "mov" "webm" "avi" ];
|
||||||
|
"Music/Downloads" = [ "mp3" "flac" "wav" "ogg" "opus" "m4a" ];
|
||||||
|
"Documents/Downloads" = [ "pdf" "doc" "docx" "odt" "txt" "md" "epub" ];
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "bug";
|
||||||
|
description = "User account the janitor service runs as.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
systemd.services.janitor = {
|
||||||
|
description = "File sorting janitor";
|
||||||
|
|
||||||
|
environment.JANITOR_CONFIG = "${janitorConfig}";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = cfg.user;
|
||||||
|
ExecStart = "${pkgs.python3}/bin/python3 ${janitorScript}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.timers.janitor = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
|
||||||
|
timerConfig = {
|
||||||
|
OnBootSec = "10m";
|
||||||
|
OnUnitActiveSec = cfg.interval;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
45
modules/software/janitor/janitor.nix
Normal file
45
modules/software/janitor/janitor.nix
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.janitor = {
|
||||||
|
includes = with den.aspects; [ janitor-backend ];
|
||||||
|
|
||||||
|
nixos = {
|
||||||
|
services.janitor = {
|
||||||
|
enable = true;
|
||||||
|
interval = "1min";
|
||||||
|
gracePeriod = 60;
|
||||||
|
watchedDirs = [ "~/Downloads" ];
|
||||||
|
|
||||||
|
rules = {
|
||||||
|
"Pictures/Downloads" = [ "jpg" "jpeg" "png" "gif" "webp" "svg" "heic" "avif" "ico" ];
|
||||||
|
"Videos/Downloads" = [ "mp4" "mkv" "mov" "webm" "avi" "flv" ];
|
||||||
|
"Music/Downloads" = [ "mp3" "flac" "wav" "ogg" "m4a" "opus" ];
|
||||||
|
"Documents/Downloads" = [ "pdf" "doc" "docx" "odt" "txt" "md" "epub" "ppt" "pptx" "xls" "xlsx" "csv" ];
|
||||||
|
"Archives/Downloads" = [ "iso" "zip" "tar" "gz" "bz2" "xz" "rar" "7z" "wsz" ];
|
||||||
|
"Fonts/Downloads" = [ "ttf" "otf" "woff" "woff2" ];
|
||||||
|
"3D/Downloads" = [ "blend" "obj" "fbx" "stl" "dae" "3ds" "3mf" ];
|
||||||
|
"Software/Downloads" = [ "deb" "rpm" "appimage" "jar" "exe" "msi" "flatpak" ];
|
||||||
|
"Scripts/Downloads" = [ "sh" "py" "lua" ];
|
||||||
|
|
||||||
|
"Games/Doom" = [ "wad" "pk3" ];
|
||||||
|
"Games/Switch" = [ "nsp" "xci" ];
|
||||||
|
"Games/3DS" = [ "3ds" "cia" ];
|
||||||
|
"Games/WiiU" = [ "wux" "wud" ];
|
||||||
|
"Games/Wii" = [ "wbfs" ];
|
||||||
|
"Games/GameCube" = [ "gcm" ];
|
||||||
|
"Games/N64" = [ "n64" "z64" ];
|
||||||
|
"Games/SNES" = [ "sfc" "smc" ];
|
||||||
|
"Games/NES" = [ "nes" ];
|
||||||
|
"Games/DS" = [ "nds" "dsi" ];
|
||||||
|
"Games/GBA" = [ "gba" ];
|
||||||
|
"Games/GBC" = [ "gbc" ];
|
||||||
|
"Games/GB" = [ "gb" ];
|
||||||
|
"Games/PS1" = [ "cue" "bin" ];
|
||||||
|
"Games/Xbox" = [ "xiso" ];
|
||||||
|
"Games/Genesis" = [ "gen" ];
|
||||||
|
"Games/Dreamcast" = [ "gdi" "cdi" ];
|
||||||
|
"Games/Saturn" = [ "sat" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
den.aspects.librewolf = {
|
|
||||||
homeManager = {
|
|
||||||
programs.librewolf = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
"browser.startup.homepage" = "https://search.bug.tools";
|
|
||||||
};
|
|
||||||
|
|
||||||
# set default search engine to search.bug.tools (searxng)
|
|
||||||
|
|
||||||
|
|
||||||
# and add stylus, tampermonkey, sponsorblock, dearrow, cookie quick manager
|
|
||||||
|
|
||||||
|
|
||||||
policies = {
|
|
||||||
BlockAboutConfig = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://github.com/nix-community/nur-combined/blob/main/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
5
modules/software/music/music.nix
Normal file
5
modules/software/music/music.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.music = {
|
||||||
|
includes = with den.aspects; [ beets player nicotine mpd ];
|
||||||
|
};
|
||||||
|
}
|
||||||
9
modules/software/music/nicotine.nix
Normal file
9
modules/software/music/nicotine.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
den.aspects.nicotine = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
users.users.bug.packages = with pkgs; [
|
||||||
|
nicotine-plus
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
15
modules/software/music/player.nix
Normal file
15
modules/software/music/player.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.player = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
users.users.bug.packages = with pkgs; [
|
||||||
|
euphonica
|
||||||
|
rhythmbox
|
||||||
|
dopamine
|
||||||
|
];
|
||||||
|
|
||||||
|
services.flatpak.packages = [
|
||||||
|
"org.pipewire.Helvum"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{ inputs, ... }: {
|
|
||||||
den.aspects.nixcord = {
|
|
||||||
homeManager = {
|
|
||||||
imports = [ inputs.nixcord.homeModules.nixcord ];
|
|
||||||
|
|
||||||
programs.nixcord = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
discord.enable = false;
|
|
||||||
vesktop.enable = true;
|
|
||||||
|
|
||||||
config = {
|
|
||||||
themeLinks = [ "https://catppuccin.github.io/discord/dist/catppuccin-mocha-mauve.theme.css" "https://codeberg.org/ridge/Discord-Adblock/raw/branch/main/discord-adblock.css" ];
|
|
||||||
|
|
||||||
plugins = {
|
|
||||||
alwaysTrust.enable = true;
|
|
||||||
betterGifPicker.enable = true;
|
|
||||||
betterUploadButton.enable = true;
|
|
||||||
biggerStreamPreview.enable = true;
|
|
||||||
callTimer.enable = true;
|
|
||||||
fullSearchContext.enable = true;
|
|
||||||
fullUserInChatbox.enable = true;
|
|
||||||
implicitRelationships.enable = true;
|
|
||||||
dearrow.enable = true;
|
|
||||||
youtubeAdblock.enable = true;
|
|
||||||
fixYoutubeEmbeds.enable = true;
|
|
||||||
|
|
||||||
# lastFMRichPresence = {
|
|
||||||
# enable = true;
|
|
||||||
# username = "USER_NAME";
|
|
||||||
# apiKey = "YOUR_LASTFM_API_KEY";
|
|
||||||
# hideWithSpotify = false;
|
|
||||||
# nameFormat = "artist-first";
|
|
||||||
# useListeningStatus = true;
|
|
||||||
# showLastFmLogo = false;
|
|
||||||
# };
|
|
||||||
|
|
||||||
viewIcons.enable = true;
|
|
||||||
volumeBooster.enable = true;
|
|
||||||
webScreenShareFixes.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
11
modules/software/ollama.nix
Normal file
11
modules/software/ollama.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.ollama = {
|
||||||
|
nixos = {
|
||||||
|
services.ollama = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
loadModels = [ "llama3.2:3b" "deepseek-r1:1.5b" "deepseek-r1:8b" "qwen2.5-coder:7b" "qwen3.5:9b" "aratan/qwen3.5-agent-multimodal:9b" "qwen3-coder:30b" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{ inputs, ... }: {
|
|
||||||
den.aspects.organize = {
|
|
||||||
nixos = {
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,195 +0,0 @@
|
|||||||
{
|
|
||||||
den.aspects.packages = {
|
|
||||||
nixos = { pkgs, options, ... }: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
gnome-boxes
|
|
||||||
|
|
||||||
wine64
|
|
||||||
wineWow64Packages.full
|
|
||||||
|
|
||||||
appimage-run
|
|
||||||
|
|
||||||
pulseaudioFull
|
|
||||||
|
|
||||||
lug-helper
|
|
||||||
gamemode
|
|
||||||
steam-run
|
|
||||||
|
|
||||||
firmware-updater
|
|
||||||
|
|
||||||
file-roller
|
|
||||||
|
|
||||||
baobab
|
|
||||||
|
|
||||||
firefox-bin
|
|
||||||
];
|
|
||||||
|
|
||||||
users.users.bug.packages = with pkgs; [
|
|
||||||
obsidian
|
|
||||||
# vesktop
|
|
||||||
nicotine-plus
|
|
||||||
fastfetch
|
|
||||||
gh
|
|
||||||
scanmem
|
|
||||||
samrewritten
|
|
||||||
impression
|
|
||||||
|
|
||||||
mission-center
|
|
||||||
|
|
||||||
authenticator
|
|
||||||
|
|
||||||
steamtinkerlaunch
|
|
||||||
|
|
||||||
#prismlauncher
|
|
||||||
|
|
||||||
euphonica
|
|
||||||
|
|
||||||
kooha
|
|
||||||
|
|
||||||
loupe
|
|
||||||
|
|
||||||
arduino-ide
|
|
||||||
|
|
||||||
geary
|
|
||||||
|
|
||||||
fractal
|
|
||||||
|
|
||||||
gnome-calendar
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
services = {
|
|
||||||
/*
|
|
||||||
flatpak = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
remotes = lib.mkOptionDefault [{
|
|
||||||
name = "flathub-beta";
|
|
||||||
location = "https://flathub.org/beta-repo/flathub-beta.flatpakrepo";
|
|
||||||
}];
|
|
||||||
|
|
||||||
update.auto.enable = true;
|
|
||||||
uninstallUnmanaged = true;
|
|
||||||
|
|
||||||
packages = [
|
|
||||||
"org.vinegarhq.Sober"
|
|
||||||
"org.vinegarhq.Vinegar"
|
|
||||||
"org.gnome.Decibels"
|
|
||||||
"org.pipewire.Helvum"
|
|
||||||
"community.pathofbuilding.PathOfBuilding"
|
|
||||||
"io.github.gaheldev.Millisecond"
|
|
||||||
|
|
||||||
{
|
|
||||||
appId = "com.hytale.Launcher";
|
|
||||||
sha256 = "sha256-SUxfyovC2umZmsOj5bOTZ8WfGCpnWcz7svOESwNekV0=";
|
|
||||||
bundle = "${pkgs.fetchurl {
|
|
||||||
url = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-latest.flatpak";
|
|
||||||
sha256 = "sha256-SUxfyovC2umZmsOj5bOTZ8WfGCpnWcz7svOESwNekV0=";
|
|
||||||
}}";
|
|
||||||
}
|
|
||||||
|
|
||||||
# add Polytoria client
|
|
||||||
# https://cdn.polytoria.com/releases/installer/linux/Polytoria%20Setup%204.12.0.flatpak
|
|
||||||
|
|
||||||
{
|
|
||||||
appId = "com.polytoria.launcher";
|
|
||||||
sha256 = "sha256-VjhNiJfSdCtlH2SuP3Mn8jjOrx5xcOqhtDKaWYIwxYg=";
|
|
||||||
bundle = "${pkgs.fetchurl {
|
|
||||||
url = "https://github.com/4DBug/poly/releases/download/poly/poly.flatpak";
|
|
||||||
sha256 = "sha256-VjhNiJfSdCtlH2SuP3Mn8jjOrx5xcOqhtDKaWYIwxYg=";
|
|
||||||
}}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
overrides = {
|
|
||||||
global = {
|
|
||||||
Context.sockets = ["wayland" "!x11" "!fallback-x11"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
|
|
||||||
ollama = {
|
|
||||||
enable = false;
|
|
||||||
|
|
||||||
loadModels = [ "llama3.2:3b" "deepseek-r1:1.5b" "deepseek-r1:8b"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
fontDir.enable = true;
|
|
||||||
enableDefaultPackages = true;
|
|
||||||
|
|
||||||
packages = with pkgs; [
|
|
||||||
twitter-color-emoji
|
|
||||||
nerd-fonts.fira-code
|
|
||||||
nerd-fonts.droid-sans-mono
|
|
||||||
];
|
|
||||||
|
|
||||||
fontconfig = {
|
|
||||||
enable = true;
|
|
||||||
useEmbeddedBitmaps = true;
|
|
||||||
|
|
||||||
defaultFonts = {
|
|
||||||
emoji = [ "Twitter Color Emoji" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
appimage = {
|
|
||||||
enable = true;
|
|
||||||
binfmt = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
steam = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
remotePlay.openFirewall = true;
|
|
||||||
dedicatedServer.openFirewall = false;
|
|
||||||
|
|
||||||
localNetworkGameTransfers.openFirewall = true;
|
|
||||||
|
|
||||||
gamescopeSession.enable = true;
|
|
||||||
|
|
||||||
extraCompatPackages = with pkgs; [
|
|
||||||
proton-ge-bin
|
|
||||||
];
|
|
||||||
|
|
||||||
#platformOptimizations.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
ydotool.enable = true;
|
|
||||||
|
|
||||||
gamescope = {
|
|
||||||
enable = true;
|
|
||||||
capSysNice = true;
|
|
||||||
args = [
|
|
||||||
"--rt"
|
|
||||||
"--expose-wayland"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
virt-manager.enable = true;
|
|
||||||
|
|
||||||
nix-ld = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
libraries = options.programs.nix-ld.libraries.default ++ (with pkgs; [
|
|
||||||
libxml2
|
|
||||||
udev
|
|
||||||
gcc
|
|
||||||
egl-wayland
|
|
||||||
mesa
|
|
||||||
libglvnd
|
|
||||||
wayland
|
|
||||||
libX11
|
|
||||||
libXcursor
|
|
||||||
libXrandr
|
|
||||||
libXi
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
9
modules/software/social/mail.nix
Normal file
9
modules/software/social/mail.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.mail = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
users.users.bug.packages = with pkgs; [
|
||||||
|
geary
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
modules/software/social/matrix.nix
Normal file
9
modules/software/social/matrix.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.matrix-client = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
users.users.bug.packages = with pkgs; [
|
||||||
|
fractal
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
93
modules/software/social/nixcord.nix
Normal file
93
modules/software/social/nixcord.nix
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
den.aspects.nixcord = {
|
||||||
|
homeManager = {
|
||||||
|
imports = [ inputs.nixcord.homeModules.nixcord ];
|
||||||
|
|
||||||
|
programs.nixcord = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
discord.enable = false;
|
||||||
|
vesktop.enable = true;
|
||||||
|
|
||||||
|
config = {
|
||||||
|
themeLinks = [
|
||||||
|
"https://catppuccin.github.io/discord/dist/catppuccin-mocha-mauve.theme.css"
|
||||||
|
"https://codeberg.org/ridge/Discord-Adblock/raw/branch/main/discord-adblock.css"
|
||||||
|
];
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
alwaysTrust.enable = true;
|
||||||
|
betterGifPicker.enable = true;
|
||||||
|
betterUploadButton.enable = true;
|
||||||
|
biggerStreamPreview.enable = true;
|
||||||
|
callTimer.enable = true;
|
||||||
|
fullSearchContext.enable = true;
|
||||||
|
fullUserInChatbox.enable = true;
|
||||||
|
implicitRelationships.enable = true;
|
||||||
|
dearrow.enable = true;
|
||||||
|
youtubeAdblock.enable = true;
|
||||||
|
fixYoutubeEmbeds.enable = true;
|
||||||
|
|
||||||
|
# lastFMRichPresence = {
|
||||||
|
# enable = true;
|
||||||
|
# username = "USER_NAME";
|
||||||
|
# apiKey = "YOUR_LASTFM_API_KEY";
|
||||||
|
# hideWithSpotify = false;
|
||||||
|
# nameFormat = "artist-first";
|
||||||
|
# useListeningStatus = true;
|
||||||
|
# showLastFmLogo = false;
|
||||||
|
# };
|
||||||
|
|
||||||
|
viewIcons.enable = true;
|
||||||
|
volumeBooster.enable = true;
|
||||||
|
webScreenShareFixes.enable = true;
|
||||||
|
fixImagesQuality.enable = true;
|
||||||
|
|
||||||
|
messageLogger = {
|
||||||
|
enable = true;
|
||||||
|
collapseDeleted = true;
|
||||||
|
ignoreSelf = true;
|
||||||
|
ignoreBots = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
textReplace.enable = true;
|
||||||
|
textReplace.regexRules = [
|
||||||
|
{
|
||||||
|
find = "https?:\\/\\/(www\\.)?instagram\\.com\\/[^\\/]+\\/(p|reel)\\/([A-Za-z0-9-_]+)\\/?";
|
||||||
|
replace = "https://g.ddinstagram.com/$2/$3";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
find = "https:\\/\\/x\\.com\\/([^\\/]+\\/status\\/[0-9]+)";
|
||||||
|
replace = "https://vxtwitter.com/$1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
find = "https:\\/\\/twitter\\.com\\/([^\\/]+\\/status\\/[0-9]+)";
|
||||||
|
replace = "https://vxtwitter.com/$1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
find = "https:\\/\\/(www\\.|old\\.)?reddit\\.com\\/(r\\/[a-zA-Z0-9_]+\\/comments\\/[a-zA-Z0-9_]+\\/[^\\s]*)";
|
||||||
|
replace = "https://vxreddit.com/$2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
find = "https:\\/\\/(www\\.)?pixiv\\.net\\/(.*)";
|
||||||
|
replace = "https://phixiv.net/$2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
find = "https:\\/\\/(?:www\\.|m\\.)?twitch\\.tv\\/twitch\\/clip\\/(.*)";
|
||||||
|
replace = "https://clips.fxtwitch.tv/$1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
find = "https:\\/\\/(?:www\\.)?youtube\\.com\\/(?:watch\\?v=|shorts\\/)([a-zA-Z0-9_-]+)";
|
||||||
|
replace = "https://youtu.be/$1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
disableCallIdle.enable = true;
|
||||||
|
|
||||||
|
ClearURLs.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
5
modules/software/social/social.nix
Normal file
5
modules/software/social/social.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.social = {
|
||||||
|
includes = with den.aspects; [ nixcord matrix-client mail ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,21 +1,17 @@
|
|||||||
{
|
{ ... }: {
|
||||||
den.aspects.development = {
|
den.aspects.desktop-utils = {
|
||||||
nixos = { pkgs, ... }: {
|
nixos = { pkgs, ... }: {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
file-roller
|
file-roller
|
||||||
];
|
];
|
||||||
|
|
||||||
users.users.bug.packages = with pkgs; [
|
users.users.bug.packages = with pkgs; [
|
||||||
zed-editor
|
obsidian
|
||||||
|
impression
|
||||||
vscode
|
kooha
|
||||||
|
loupe
|
||||||
tree
|
authenticator
|
||||||
gh
|
|
||||||
scanmem
|
|
||||||
|
|
||||||
arduino-ide
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
10
modules/software/utilities/sshuttle.nix
Normal file
10
modules/software/utilities/sshuttle.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.sshuttle = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
python3
|
||||||
|
sshuttle
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
23
modules/software/utilities/system.nix
Normal file
23
modules/software/utilities/system.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{ ... }: {
|
||||||
|
den.aspects.system-utils = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gnome-boxes
|
||||||
|
pulseaudioFull
|
||||||
|
firmware-updater
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users.bug.packages = with pkgs; [
|
||||||
|
mission-center
|
||||||
|
baobab
|
||||||
|
fastfetch
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
ydotool.enable = true;
|
||||||
|
|
||||||
|
virt-manager.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
modules/software/utilities/torrent.nix
Normal file
9
modules/software/utilities/torrent.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
den.aspects.torrent = {
|
||||||
|
nixos = { pkgs, ... }: {
|
||||||
|
users.users.bug.packages = with pkgs; [
|
||||||
|
fragments
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
5
modules/software/utilities/utilities.nix
Normal file
5
modules/software/utilities/utilities.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ den, ... }: {
|
||||||
|
den.aspects.utilities = {
|
||||||
|
includes = with den.aspects; [ system-utils desktop-utils fonts sshuttle torrent ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -6,6 +6,6 @@
|
|||||||
#den.provides.home-manager
|
#den.provides.home-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
user.extraGroups = [ "networkmanager" "wheel" "audio" "video" "libvirtd" "ydotool" "dialout" ];
|
user.extraGroups = [ "networkmanager" "wheel" "input" "audio" "video" "libvirtd" "ydotool" "dialout" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
# nix run .#vm
|
# nix run .#vm
|
||||||
|
|
||||||
{ inputs, den, ... }: {
|
{ inputs, den, ... }: {
|
||||||
den.aspects.nix.includes = [ (den.provides.tty-autologin "bug") ];
|
den.aspects.nix.includes = [ (den.provides.tty-autologin "bug") ];
|
||||||
|
|
||||||
perSystem = { pkgs, ... }: {
|
perSystem = { pkgs, ... }: {
|
||||||
packages.vm = pkgs.writeShellApplication {
|
packages.vm = pkgs.writeShellApplication {
|
||||||
name = "vm";
|
name = "vm";
|
||||||
text = let
|
text = let
|
||||||
host = inputs.self.nixosConfigurations.nix.config;
|
host = inputs.self.nixosConfigurations.nix.config;
|
||||||
in ''
|
in ''
|
||||||
${host.system.build.vm}/bin/run-${host.networking.hostName}-vm "$@"
|
${host.system.build.vm}/bin/run-${host.networking.hostName}-vm "$@"
|
||||||
'';
|
'';
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user