Compare commits

...

10 Commits

Author SHA1 Message Date
4DBug
1b9322dd96 push 2026-02-22 22:25:51 -06:00
4DBug
2fb9359a67 push 2026-02-22 22:25:44 -06:00
4DBug
22df37a203 push 2026-02-19 18:49:49 -06:00
4DBug
961351b098 push 2026-02-18 22:49:32 -06:00
4DBug
e5f9674f8d push 2026-02-18 22:44:39 -06:00
4DBug
bca6b60a3e push 2026-02-18 22:44:11 -06:00
4DBug
2d430c1b3b push 2026-02-11 20:55:32 -06:00
4DBug
66230cbc4f push 2026-02-11 20:39:35 -06:00
4DBug
90f94f7888 push 2026-02-11 20:24:05 -06:00
4DBug
6b7cbc4dbf push 2026-02-11 01:07:20 -06:00
77 changed files with 1618 additions and 1809 deletions

View File

@@ -1,2 +0,0 @@
device.nix
hardware-configuration.nix

31
README.md Normal file
View File

@@ -0,0 +1,31 @@
# nix
[dendritic](https://github.com/vic/den) [nix](https://nixos.org/) configuration.
## 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
| service | location | file |
|-|-|-|
| [invidious](https://github.com/invidious/invidious) | [tube.bug.tools](https://tube.bug.tools/) | /modules/services |
| [glances](https://github.com/nicolargo/glances) | [monitor.bug.tools](https://monitor.bug.tools/) | /modules/services |
| [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 |
|-|-|
| a | b |
| c | d |
| e | f |

View File

@@ -1 +0,0 @@
{ device = "server"; }

476
flake.lock generated
View File

@@ -74,11 +74,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1770758715,
"narHash": "sha256-FlRSDJ8OlCiWX+tIAZJkQnkBAAwbO125aUdAC6VJlOk=",
"lastModified": 1771709154,
"narHash": "sha256-OtbD6omjc5fZ8eWDgZe6JC9OvRbYU7+E/FUlZaydX/Q=",
"owner": "9001",
"repo": "copyparty",
"rev": "d44ea245307c06eb060b6e6f5c2cba91a759c940",
"rev": "f5e70c7f6729e4f905863dbf057649eeac9425ec",
"type": "github"
},
"original": {
@@ -87,6 +87,21 @@
"type": "github"
}
},
"den": {
"locked": {
"lastModified": 1771679476,
"narHash": "sha256-rU58QADljRw8/d0ciRtMeaB4/Y/V8JQBlhT1TTvaKmc=",
"owner": "vic",
"repo": "den",
"rev": "61341ee04b80104bdd22a60541fb8c4c3b49d342",
"type": "github"
},
"original": {
"owner": "vic",
"repo": "den",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
@@ -103,27 +118,40 @@
"type": "github"
}
},
"flake-compat": {
"flake": false,
"flake-aspects": {
"locked": {
"lastModified": 1746162366,
"narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b",
"lastModified": 1771395573,
"narHash": "sha256-bcCOG2CW23/Eww/zULJf1xd0Shz2zS4c2AJWwLALyJ8=",
"owner": "vic",
"repo": "flake-aspects",
"rev": "8297f3bc41ad79b9f01d56d0dd92f7aac51bacfb",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-compat",
"owner": "vic",
"repo": "flake-aspects",
"type": "github"
}
},
"flake-file": {
"locked": {
"lastModified": 1771017549,
"narHash": "sha256-n68HeYEQJ67hMH2LPI0cERD2pkpNe5dyeOGg11uZ7rc=",
"owner": "vic",
"repo": "flake-file",
"rev": "9d89918faacdbd2ce26d0aa7298da0fecad8b437",
"type": "github"
},
"original": {
"owner": "vic",
"repo": "flake-file",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nix-citizen",
"nixpkgs"
"nixpkgs-lib"
]
},
"locked": {
@@ -141,24 +169,6 @@
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1769996383,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"stylix",
@@ -194,40 +204,6 @@
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1681202837,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flatpaks": {
"locked": {
"lastModified": 1767983141,
"narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "440818969ac2cbd77bfe025e884d0aa528991374",
"type": "github"
},
"original": {
"owner": "gmodena",
"ref": "latest",
"repo": "nix-flatpak",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
@@ -264,124 +240,53 @@
}
},
"home-manager": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1770654520,
"narHash": "sha256-mg5WZMIPGsFu9MxSrUcuJUPMbfMsF77el5yb/7rc10k=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "6c4fdbe1ad198fac36c320fd45c5957324a80b8e",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"hytale-launcher": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1770408363,
"narHash": "sha256-ocMI5t0EBxao7dRRnQi7Aa9jpBvtSZmOpPbXx8fbOjw=",
"owner": "JPyke3",
"repo": "hytale-launcher-nix",
"rev": "89db7a709e20525f145ea8ba729f32f8c6b43ac6",
"type": "github"
},
"original": {
"owner": "JPyke3",
"repo": "hytale-launcher-nix",
"type": "github"
}
},
"nix-citizen": {
"inputs": {
"flake-parts": "flake-parts",
"nix-gaming": [
"nix-gaming"
],
"nix-github-actions": "nix-github-actions",
"nixpkgs": "nixpkgs_4",
"systems": "systems",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1770673830,
"narHash": "sha256-m/4WPh6komkPfizenqHmEVZBzn/CpL+WAD4B7axDjqs=",
"owner": "LovingMelody",
"repo": "nix-citizen",
"rev": "8a7401f3ff547d4ee1a54e893a5e52d4c18cc9ff",
"type": "github"
},
"original": {
"owner": "LovingMelody",
"repo": "nix-citizen",
"type": "github"
}
},
"nix-gaming": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1770691919,
"narHash": "sha256-e3G2ebDGaMfNCeRRSFQivSC+iWktI7a37AEzZ9I+JZA=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "6cc488d4779f9dd15dd4831e97b15d2432ae761b",
"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=",
"lastModified": 1771683283,
"narHash": "sha256-WxAEkAbo8dP7qiyPM6VN4ZGAxfuBVlNBNPkrqkrXVEc=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9",
"repo": "home-manager",
"rev": "c6ed3eab64d23520bcbb858aa53fe2b533725d4a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"repo": "home-manager",
"type": "github"
}
},
"nixos-cosmic": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs_6",
"nixpkgs-stable": "nixpkgs-stable",
"rust-overlay": "rust-overlay"
},
"import-tree": {
"locked": {
"lastModified": 1751591814,
"narHash": "sha256-A4lgvuj4v+Pr8MniXz1FBG0DXOygi8tTECR+j53FMhM=",
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"rev": "fef2d0c78c4e4d6c600a88795af193131ff51bdc",
"lastModified": 1771045967,
"narHash": "sha256-oYO4poyw0Sb/db2PigqugMlDwsvwLg6CSpFrMUWxA3Q=",
"owner": "vic",
"repo": "import-tree",
"rev": "c968d3b54d12cf5d9c13f16f7c545a06c9d1fde6",
"type": "github"
},
"original": {
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"owner": "vic",
"repo": "import-tree",
"type": "github"
}
},
"nix-flatpak": {
"locked": {
"lastModified": 1767983141,
"narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "440818969ac2cbd77bfe025e884d0aa528991374",
"type": "github"
},
"original": {
"owner": "gmodena",
"ref": "latest",
"repo": "nix-flatpak",
"type": "github"
}
},
@@ -400,147 +305,22 @@
"type": "indirect"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1769909678,
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "72716169fe93074c333e8d0173151350670b824c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1751048012,
"narHash": "sha256-MYbotu4UjWpTsq01wglhN5xDRfZYLFtNk7SBY0BcjkU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a684c58d46ebbede49f280b653b9e56100aa3877",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1770197578,
"narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
"owner": "NixOS",
"lastModified": 1771207753,
"narHash": "sha256-b9uG8yN50DRQ6A7JdZBfzq718ryYrlmGgqkRm9OOwCE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
"rev": "d1c15b7d5806069da59e819999d70e1cec0760bf",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1770197578,
"narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1770562336,
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d6c71932130818840fc8fe9509cf50be8c64634f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1770537093,
"narHash": "sha256-pF1quXG5wsgtyuPOHcLfYg/ft/QMr8NnX0i6tW2187s=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fef9403a3e4d31b0a23f0bacebbec52c248fbb51",
"type": "github"
},
"original": {
"owner": "NixOS",
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1751011381,
"narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "30e2e2857ba47844aa71991daa6ed1fc678bcbb7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1770562336,
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d6c71932130818840fc8fe9509cf50be8c64634f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_8": {
"locked": {
"lastModified": 1682134069,
"narHash": "sha256-TnI/ZXSmRxQDt2sjRYK/8j8iha4B4zP2cnQCZZ3vp7k=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fd901ef4bf93499374c5af385b2943f5801c0833",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nur": {
"inputs": {
"flake-parts": [
@@ -569,36 +349,19 @@
"root": {
"inputs": {
"copyparty": "copyparty",
"flatpaks": "flatpaks",
"den": "den",
"flake-aspects": "flake-aspects",
"flake-file": "flake-file",
"flake-parts": "flake-parts",
"home-manager": "home-manager",
"hytale-launcher": "hytale-launcher",
"nix-citizen": "nix-citizen",
"nix-gaming": "nix-gaming",
"nixos-cosmic": "nixos-cosmic",
"nixpkgs": "nixpkgs_7",
"stylix": "stylix",
"vscode-server": "vscode-server"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"nixos-cosmic",
"import-tree": "import-tree",
"nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_2",
"nixpkgs-lib": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1751251399,
"narHash": "sha256-y+viCuy/eKKpkX1K2gDvXIJI/yzvy6zA3HObapz9XZ0=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "b22d5ee8c60ed1291521f2dde48784edd6bf695b",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
],
"stylix": "stylix",
"systems": "systems_2"
}
},
"stylix": {
@@ -608,13 +371,13 @@
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_3",
"flake-parts": "flake-parts_2",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
],
"nur": "nur",
"systems": "systems_2",
"systems": "systems",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
@@ -622,11 +385,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1770587906,
"narHash": "sha256-N9ZTG3ia7l4iQO+9JlOj+sX4yu6gl7a3aozrlhSIJwQ=",
"lastModified": 1771626923,
"narHash": "sha256-Mn6oeKrY+Sw6kH0jK+hp5QQH4MTcqwBRQL/ScZDNcz8=",
"owner": "nix-community",
"repo": "stylix",
"rev": "72e6483a88d51471a6c55e1d43e7ed2bc47a76a4",
"rev": "b09847414b50c65788936199918272377f70fb91",
"type": "github"
},
"original": {
@@ -665,21 +428,6 @@
"type": "github"
}
},
"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"
}
},
"tinted-foot": {
"flake": false,
"locked": {
@@ -760,46 +508,6 @@
"repo": "base16-zed",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nix-citizen",
"nixpkgs"
]
},
"locked": {
"lastModified": 1770228511,
"narHash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "337a4fe074be1042a35086f15481d763b8ddc0e7",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"vscode-server": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_8"
},
"locked": {
"lastModified": 1770124655,
"narHash": "sha256-yHmd2B13EtBUPLJ+x0EaBwNkQr9LTne1arLVxT6hSnY=",
"owner": "nix-community",
"repo": "nixos-vscode-server",
"rev": "92ce71c3ba5a94f854e02d57b14af4997ab54ef0",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixos-vscode-server",
"type": "github"
}
}
},
"root": "root",

106
flake.nix
View File

@@ -1,90 +1,30 @@
{
inputs = {
# nixpkgs.follows = "nixos-cosmic/nixpkgs";
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules);
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
inputs = {
den.url = "github:vic/den";
flake-aspects.url = "github:vic/flake-aspects";
flake-file.url = "github:vic/flake-file";
flake-parts = {
inputs.nixpkgs-lib.follows = "nixpkgs-lib";
url = "github:hercules-ci/flake-parts";
};
home-manager = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/home-manager";
};
import-tree.url = "github:vic/import-tree";
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nixpkgs-lib.follows = "nixpkgs";
systems.url = "github:nix-systems/default";
flatpaks.url = "github:gmodena/nix-flatpak/?ref=latest";
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
vscode-server.url = "github:nix-community/nixos-vscode-server";
home-manager.url = "github:nix-community/home-manager";
nix-citizen.url = "github:LovingMelody/nix-citizen";
nix-gaming.url = "github:fufexan/nix-gaming";
nix-citizen.inputs.nix-gaming.follows = "nix-gaming";
copyparty.url = "github:9001/copyparty";
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs@{ self, nixpkgs, stylix, home-manager, flatpaks, hytale-launcher, vscode-server, copyparty, nix-citizen, ... }:
let
deviceType = import ./device.nix;
system = "x86_64-linux";
in
{
nixosConfigurations = {
nix = nixpkgs.lib.nixosSystem {
inherit system;
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
specialArgs = { inherit inputs; inherit (deviceType) device; };
modules = [
{
nix.settings = {
substituters = [ "https://cosmic.cachix.org/" ];
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
};
}
nix-citizen.nixosModules.default
flatpaks.nixosModules.nix-flatpak
./main.nix
];
};
box = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; inherit (deviceType) device; };
modules = [
./main.nix
vscode-server.nixosModules.default
copyparty.nixosModules.default
];
};
};
homeConfigurations = {
bug = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {
inherit inputs;
inherit (deviceType) device;
};
modules = [
stylix.homeModules.stylix
./home.nix
];
};
};
};
copyparty.url = "github:9001/copyparty";
};
}

View File

@@ -1,40 +0,0 @@
{inputs, config, pkgs, device, ... }:
{
imports = [
./modules/syncthing.nix
] ++ (if device == "server" then [
] else [
./modules/stylix.nix
./modules/firefox.nix
]);
home = {
username = "bug";
homeDirectory = "/home/bug";
stateVersion = "25.11";
packages = with pkgs; [
] ++ (if device == "server" then [
gh
luajit
nodejs
node2nix
cloudflared
] else []);
file = {};
sessionVariables = {
EDITOR = "micro";
MICRO_TRUECOLOR = 1;
};
};
nixpkgs.config.allowUnfree = true;
#programs.home-manager.enable = true;
}

117
main.nix
View File

@@ -1,117 +0,0 @@
{ lib, config, inputs, pkgs, options, device, ... }:
{
imports = [
/etc/nixos/hardware-configuration.nix
./modules/users.nix
./modules/boot.nix
./modules/network.nix
./modules/locale.nix
./modules/security.nix
] ++ (if device == "server" then [
./modules/mailserver.nix
./modules/vscode-server.nix
./modules/copyparty.nix
./modules/searxng.nix
./modules/cloudflared.nix
./modules/invidious.nix
./modules/glances.nix
./modules/redlib.nix
({ pkgs, ... }: {
environment.systemPackages = with pkgs; [
nh comma nix-index home-manager micro wget git fastfetch
];
})
] else [
./modules/packages.nix
./modules/cosmic.nix
./modules/graphics.nix
./modules/audio.nix
./modules/swap.nix
./modules/virtualisation.nix
#./modules/firefox.nix
]) ++ (if device == "laptop" then [
./modules/mpd.nix
] else []) ++ (if device == "desktop" then [
] else []);
system = {
stateVersion = "25.11";
autoUpgrade = {
enable = true;
allowReboot = true;
};
};
nix = {
optimise.automatic = true;
settings.experimental-features = [ "nix-command" "flakes" ];
};
nixpkgs = {
config = {
allowUnfree = true;
cudaSupport = (device == "desktop");
nvidia.acceptLicense = (device == "desktop");
};
overlays = [
];
};
environment.sessionVariables.NIXPKGS_ALLOW_UNFREE = 1;
systemd = {
user.extraConfig = ''
DefaultEnvironment="PATH=/run/current-system/sw/bin"
'';
services.monitord.wantedBy = [ "multi-user.target" ];
};
services.fstrim.enable = true;
programs = {
bash.shellAliases = {
fetch = "fastfetch --file ~/nix/nix.ans";
rebuild = "nh os switch ~/nix"; #"sudo nixos-rebuild switch --impure"; # home-manager switch --impure
#pissh = "ssh -t $(avahi-resolve-host-name -4 pi.home | awk '{print $2}')";
#pi = "pissh \"cd $(pwd) && bash\"";
#pi = "ssh pi.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 &' --";
pico = "ssh pico.sh";
# tuns name port
tuns = "bash -c '\''if [ \"$#\" -ne 2 ]; then echo \"Usage: tun name port\"; exit 1; fi;
if [[ \"$1\" =~ ^[0-9]+$ ]]; then port=\"$1\"; name=\"$2\";
elif [[ \"$2\" =~ ^[0-9]+$ ]]; then port=\"$2\"; name=\"$1\";
else echo \"Error: One argument must be a number (port)\"; exit 1; fi;
ssh -R \"$\{name}:80:localhost:$\{port}\" tuns.sh'\'' _";
# pgs name directory
pgs = "bash -c '\''if [ \"$#\" -ne 2 ]; then echo \"Usage: pgs NAME DIRECTORY\"; exit 1; fi; rsync -rv \"$2\" pgs.sh:/\"$1\"'\'' _";
bambu = "env -u WAYLAND_DISPLAY XDG_SESSION_TYPE=x11 WEBKIT_FORCE_COMPOSITING_MODE=1 WEBKIT_DISABLE_COMPOSITING_MODE=1 GBM_BACKEND=dri bambu-studio";
scale = "env GDK_BACKEND=x11 GDK_SCALE=1 GDK_DPI_SCALE=1";
hytale = "env -u WAYLAND_DISPLAY -u EGL_PLATFORM -u ELECTRON_ENABLE_WAYLAND DISPLAY=:0 XDG_SESSION_TYPE=x11 __GLX_VENDOR_LIBRARY_NAME=nvidia LD_LIBRARY_PATH=/run/opengl-driver/lib hytale-launcher";
};
};
}

View File

@@ -1,24 +0,0 @@
{ config, pkgs, device, ... }:
{
security.rtkit.enable = true;
services = {
pulseaudio.enable = false;
pipewire = {
enable = true;
wireplumber.enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
lowLatency.enable = false;
jack.enable = true;
};
};
}

View File

@@ -1,23 +0,0 @@
{ config, pkgs, device, ... }:
{
boot = {
kernelModules = if (device == "desktop") then ["nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" "uinput"] else [];
kernelParams = if (device == "desktop") then ["nvidia-drm.modeset=1" "nvidia_drm.fbdev=1"] else [];
kernelPackages = pkgs.linuxPackages_zen;
initrd.checkJournalingFS = false;
loader = {
grub.splashImage = null;
systemd-boot = {
enable = true;
configurationLimit = 25;
};
efi.canTouchEfiVariables = true;
};
};
}

View File

@@ -1,28 +0,0 @@
{ config, pkgs, ... }:
let
TUNNEL_UUID = "4118935e-359b-4dd2-95bd-eb27f7b0c5bb";
in
{
environment.systemPackages = [ pkgs.cloudflared ];
environment.etc."cloudflared/${TUNNEL_UUID}.json".source = "/home/bug/.cloudflared/${TUNNEL_UUID}.json";
services.cloudflared = {
enable = true;
tunnels."${TUNNEL_UUID}" = {
credentialsFile = "/etc/cloudflared/${TUNNEL_UUID}.json";
default = "http_status:404";
ingress = {
"tvtun.bug.tools" = "http://127.0.0.1:3001";
"search.bug.tools" = "http://127.0.0.1:8888";
"files.bug.tools" = "http://127.0.0.1:3210";
"tube.bug.tools" = "http://127.0.0.1:3030";
"monitor.bug.tools" = "http://127.0.0.1:61208";
"reddit.bug.tools" = "http://127.0.0.1:8975";
};
};
};
}

View File

@@ -1,48 +0,0 @@
{ config, pkgs, inputs, ... }:
{
nixpkgs.overlays = [ inputs.copyparty.overlays.default ];
services.copyparty = {
enable = true;
user = "bug";
group = "copyparty";
settings = {
i = "0.0.0.0";
p = [ 3210 3211 ];
no-reload = true;
ignored-flag = false;
};
accounts = {
bug = {
passwordFile = "/home/bug/mailserver/bug.passwd";
};
};
groups = {
g1 = [ "bug" ];
};
volumes = {
"/" = {
path = "/srv/copyparty";
access = {
r = "*";
rw = [ "bug" ];
};
flags = {
fk = 4;
scan = 60;
};
};
};
openFilesLimit = 8192;
};
}

View File

@@ -0,0 +1,28 @@
{
den.aspects.audio = {
nixos = {
security.rtkit.enable = true;
services = {
pulseaudio.enable = false;
pipewire = {
enable = true;
wireplumber.enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
#lowLatency.enable = false;
jack.enable = true;
};
};
};
};
}

View File

@@ -0,0 +1,39 @@
{
den.aspects.mpd = {
nixos = {
services = {
mpd = {
enable = true;
settings = {
music_directory = "/home/bug/Music";
decoder = [
{
plugin = "ffmpeg";
enabled = "yes";
}
{
plugin = "opus";
enabled = "no";
}
];
audio_output = [{
type = "pipewire";
name = "PipeWire Sound Server";
}];
};
user = "bug";
};
};
systemd.services = {
mpd.environment = {
XDG_RUNTIME_DIR = "/run/user/1000";
};
};
};
};
}

View File

@@ -0,0 +1,15 @@
{ inputs, ... }: {
imports = [
(inputs.flake-file.flakeModules.dendritic or {})
(inputs.den.flakeModules.dendritic or {})
];
flake-file.inputs = {
den.url = "github:vic/den";
flake-file.url = "github:vic/flake-file";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
}

View File

@@ -0,0 +1,74 @@
{
den.aspects.cosmic = {
nixos = { pkgs, ... }: {
services = {
greetd.enable = true;
system76-scheduler.enable = true;
displayManager = {
cosmic-greeter.enable = true;
autoLogin = {
enable = true;
user = "bug";
};
};
desktopManager.cosmic.enable = true;
};
environment.systemPackages = with pkgs; [
cosmic-edit
cosmic-ext-calculator
cosmic-ext-tweaks
cosmic-screenshot
xdg-desktop-portal-gtk
xdg-desktop-portal-cosmic
];
environment.sessionVariables = {
COSMIC_DATA_CONTROL_ENABLED = 1;
};
xdg = {
portal = {
enable = true;
xdgOpenUsePortal = true;
config.common.default = ["gtk"];
extraPortals = [pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-cosmic];
};
mime = {
enable = true;
defaultApplications = {
"text/html" = "firefox.desktop";
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/about" = "firefox.desktop";
"x-scheme-handler/unknown" = "firefox.desktop";
"application/pdf" = "firefox.desktop";
"inode/directory" = "com.system76.CosmicFiles.desktop";
"text/plain" = "com.system76.CosmicEdit.desktop";
"text/markdown" = "com.system76.CosmicEdit.desktop";
"application/zip" = "org.gnome.FileRoller.desktop";
"application/x-7z-compressed" = "org.gnome.FileRoller.desktop";
"application/x-tar" = "org.gnome.FileRoller.desktop";
"application/gzip" = "org.gnome.FileRoller.desktop";
"application/x-xz" = "org.gnome.FileRoller.desktop";
"application/x-zip-compressed" = "org.gnome.FileRoller.desktop";
"application/x-ms-dos-executable" = "wine.desktop";
};
};
};
};
};
}

View File

@@ -0,0 +1,10 @@
{
den.aspects.amdgpu = {
nixos = {
services.xserver = {
enable = true;
videoDrivers = ["amdgpu"];
};
};
};
}

View File

@@ -0,0 +1,45 @@
{
den.aspects.nvidia = {
nixos = { pkgs, config, ... }: {
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
libva-vdpau-driver
libvdpau
libvdpau-va-gl
vdpauinfo
libva
libva-utils
libglvnd
mesa
nvidia-vaapi-driver
];
};
services.xserver = {
enable = true;
videoDrivers = ["nvidia"];
};
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
};
nixpkgs.config = {
cudaSupport = true;
nvidia.acceptLicense = true;
};
};
};
}

View File

@@ -0,0 +1,9 @@
{
den.aspects.cloudflare-warp = {
nixos = {
services.cloudflare-warp = {
enable = true;
};
};
};
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,11 @@
{
den.aspects.dns = {
nixos = {
networking = {
networkmanager.enable = true;
nameservers = [ "1.1.1.1" "1.0.0.1" ];
};
};
};
}

View File

@@ -0,0 +1,15 @@
{
den.aspects.openssh = {
nixos = {
services.openssh = {
enable = true;
settings = {
PrintMotd = true;
X11Forwarding = true;
AllowTcpForwarding = true;
};
};
};
};
}

19
modules/core/swap.nix Normal file
View File

@@ -0,0 +1,19 @@
{
den.aspects.swap = {
nixos = {
boot.kernel.sysctl = {
"fs.file-max" = 524288;
};
swapDevices = [{
device = "/var/lib/swapfile";
size = 8 * 1024;
}];
zramSwap = {
enable = true;
memoryMax = 64 * 1024 * 1024 * 1024;
};
};
};
}

View File

@@ -0,0 +1,11 @@
{
den.aspects.virtualisation = {
nixos = {
virtualisation = {
libvirtd.enable = true;
spiceUSBRedirection.enable = true;
};
};
};
}

View File

@@ -1,62 +0,0 @@
{ config, pkgs, device, ... }:
{
services = {
greetd.enable = true;
system76-scheduler.enable = true;
displayManager = {
cosmic-greeter.enable = true;
autoLogin = {
enable = (device == "desktop");
user = "bug";
};
};
desktopManager.cosmic.enable = true;
};
environment.sessionVariables = {
COSMIC_DATA_CONTROL_ENABLED = 1;
};
xdg = {
portal = {
enable = true;
xdgOpenUsePortal = true;
config.common.default = ["gtk"];
extraPortals = [pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-cosmic];
};
mime = {
enable = true;
defaultApplications = {
"text/html" = "firefox.desktop";
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/about" = "firefox.desktop";
"x-scheme-handler/unknown" = "firefox.desktop";
"application/pdf" = "firefox.desktop";
"inode/directory" = "com.system76.CosmicFiles.desktop";
"text/plain" = "com.system76.CosmicEdit.desktop";
"text/markdown" = "com.system76.CosmicEdit.desktop";
"application/zip" = "org.gnome.FileRoller.desktop";
"application/x-7z-compressed" = "org.gnome.FileRoller.desktop";
"application/x-tar" = "org.gnome.FileRoller.desktop";
"application/gzip" = "org.gnome.FileRoller.desktop";
"application/x-xz" = "org.gnome.FileRoller.desktop";
"application/x-zip-compressed" = "org.gnome.FileRoller.desktop";
"application/x-ms-dos-executable" = "wine.desktop";
};
};
};
}

View File

@@ -1,90 +0,0 @@
{ config, pkgs, device, ... }:
{
programs.firefox = {
enable = true;
package = pkgs.librewolf;
profiles = {
"bug" = {
id = 0;
name = "bug";
isDefault = true;
};
};
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
Preferences = {
"cookiebanners.service.mode" = 2;
"cookiebanners.service.mode.privateBrowsing" = 2;
"network.cookie.lifetimePolicy" = 0;
"privacy.clearonShutdown.cookies" = false;
"privacy.claerOnShutdown.history" = false;
"privacy.donottrackheader.enabled" = true;
"privacy.fingerprintingProtection.enabled" = true;
"privacy.resistFingerprinting" = false;
"privacy.trackingprotection.enabled" = true;
"privacy.trackingprotection.socialtracking.enabled" = true;
"privacy.trackingprotection.fingerprinting.enabled" = true;
"privacy.trackingprotection.emailtracking.enabled" = true;
"webgl.disabled" = false;
};
/*
ExtensionSettings = {
# catppuccin no borders https://addons.mozilla.org/en-US/firefox/addon/catppuccin-mocha-no-borders/
"catppuccin-mocha-no-borders@skyrpex" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/catppuccin-mocha-no-borders/latest.xpi";
};
# DeArrow
"dearrow@jetpack" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/dearrow-jetpack/latest.xpi";
};
# Return Youtube Dislike
"return-youtube-dislike@0.4.11" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/return-youtube-dislike/latest.xpi";
};
# SponsorBlock for YouTube
"sponsorblock@sponsorblock.com" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock-for-youtube/latest.xpi";
};
# Stylus
"stylus@stylus" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/stylus/latest.xpi";
};
# Tampermonkey
"tampermonkey.net" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/tampermonkey/latest.xpi";
};
# uBlock Origin
"ublockorigin@raymondhill.net" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
};
# BTRoblox
"btroblox@btroblox" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/btroblox/latest.xpi";
};
};
*/
};
};
}

View File

@@ -1,44 +0,0 @@
{ config, pkgs, lib, ... }:
{
environment.systemPackages = [
pkgs.glances
];
users.users.glances = {
isSystemUser = true;
group = "glances";
home = "/var/lib/glances";
createHome = true;
};
users.groups.glances = {};
systemd.services.glances-web = {
description = "glances web interface";
after = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
User = "glances";
Group = "glances";
ExecStart = ''
${pkgs.glances}/bin/glances \
-w \
-p 61208 \
-B 0.0.0.0
'';
Restart = "always";
RestartSec = 5;
NoNewPrivileges = true;
PrivateTmp = true;
ProtectSystem = "strict";
ProtectHome = true;
LockPersonality = true;
MemoryDenyWriteExecute = true;
};
};
}

View File

@@ -1,88 +0,0 @@
{ config, pkgs, device, ... }:
{
services = {
xserver = {
enable = true;
videoDrivers = if (device == "desktop") then ["nvidia"] else ["amdgpu"];
excludePackages = [pkgs.xterm];
xkb = {
layout = "us";
variant = "";
};
};
};
hardware = {
graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
libva-vdpau-driver
libvdpau
libvdpau-va-gl
vdpauinfo
libva
libva-utils
libglvnd
mesa
] ++ (if (device == "desktop") then [
nvidia-vaapi-driver
] else [
]);
};
nvidia = if (device == "desktop") then {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
nvidiaPersistenced = true;
} else {};
enableRedistributableFirmware = true;
};
environment = {
variables = {
} // (if (device == "desktop") then {
WGPU_BACKEND = "gl";
GBM_BACKEND = "nvidia-drm";
LIBVA_DRIVER_NAME = "nvidia";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
EGL_PLATFORM = "wayland";
} else {
});
sessionVariables = {
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
} // (if (device == "desktop") then {
WGPU_BACKEND = "gl";
GBM_BACKEND = "nvidia-drm";
LIBVA_DRIVER_NAME = "nvidia";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
EGL_PLATFORM = "wayland";
} else {
});
};
services.logind.settings.Login = {
HandleLidSwitch = "ignore";
HandleLidSwitchDocked = "ignore";
};
}

15
modules/hosts.nix Normal file
View File

@@ -0,0 +1,15 @@
let
bug = {
isNormalUser = true;
description = "bug";
extraGroups = [ "networkmanager" "wheel" "audio" "video" "libvirtd" "ydotool" "dialout" ];
};
in {
den.hosts.x86_64-linux = {
nix.users.bug = bug;
laptop.users.bug = bug;
box.users.bug = bug;
};
den.homes.x86_64-linux.bug = { aspect = "bug"; };
}

37
modules/hosts/box/box.nix Normal file
View File

@@ -0,0 +1,37 @@
{ den, ... }: {
den.aspects.box = {
includes = with den.aspects; [
den.default
den.provides.home-manager
syncthing
fish
cloudflared
searxng
copyparty
glances
# invidious
mailserver
#matrix
redlib
#sish
vscode-server
dns
openssh
gitea
];
nixos = {
networking.hostName = "box";
users.users.levi = {
isNormalUser = true;
description = "levi";
extraGroups = [];
hashedPasswordFile = "/home/bug/users/levi.passwd";
};
};
};
}

View File

@@ -0,0 +1,98 @@
{
den.default = {
nixos = { pkgs, lib, ... }: {
imports = [
/etc/nixos/hardware-configuration.nix
];
system = {
stateVersion = "26.05";
autoUpgrade = {
enable = true;
allowReboot = false;
};
};
nixpkgs = {
config = {
allowUnfree = true;
};
};
nix = {
optimise.automatic = true;
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 = {
home = {
stateVersion = "26.05";
};
};
};
}

View File

@@ -0,0 +1,37 @@
{ den, ... }: {
den.aspects.laptop = {
includes = [
den.default
<amdgpu>
<cosmic>
<firefox>
<audio>
den.provides.home-manager
<stylix>
<syncthing>
<swap>
<cloudflare-warp>
<packages>
<development>
<cad>
<mpd>
<virtualisation>
<flatpak>
<fish>
<dns>
<openssh>
<beets>
];
nixos = {
networking.hostName = "nix";
services.logind.settings.Login = {
HandleLidSwitch = "ignore";
HandleLidSwitchDocked = "ignore";
};
};
};
}

33
modules/hosts/nix/nix.nix Normal file
View File

@@ -0,0 +1,33 @@
{ 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
];
nixos = {
networking.hostName = "nix";
};
};
}

View File

@@ -0,0 +1,32 @@
{
den.aspects.cloudflared = {
nixos = { pkgs, ...}: let
TUNNEL_UUID = "4118935e-359b-4dd2-95bd-eb27f7b0c5bb";
in {
environment.systemPackages = [ pkgs.cloudflared ];
environment.etc."cloudflared/${TUNNEL_UUID}.json".source = "/home/bug/.cloudflared/${TUNNEL_UUID}.json";
services.cloudflared = {
enable = true;
tunnels."${TUNNEL_UUID}" = {
credentialsFile = "/etc/cloudflared/${TUNNEL_UUID}.json";
default = "http_status:404";
ingress = {
"tvtun.bug.tools" = "http://127.0.0.1:3001";
"search.bug.tools" = "http://127.0.0.1:8888";
"files.bug.tools" = "http://127.0.0.1:3210";
"tube.bug.tools" = "http://127.0.0.1:3030";
"monitor.bug.tools" = "http://127.0.0.1:61208";
"reddit.bug.tools" = "http://127.0.0.1:8975";
#"matrix.bug.tools" = "http://127.0.0.1:8008";
#"bug.tools" = "http://127.0.0.1:8080";
"git.bug.tools" = "http://127.0.0.1:3000";
};
};
};
};
};
}

View File

@@ -0,0 +1,70 @@
{
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"];
};
};
};
};
};
};
}

View File

@@ -1,56 +0,0 @@
{ config, pkgs, lib, ... }:
let
companionPort = 8282;
companionPath = "/companion";
companionKey = "kKg3RKeZjE7frmuw";
in
{
virtualisation.podman.enable = true;
virtualisation.oci-containers.backend = lib.mkDefault "podman";
virtualisation.oci-containers.containers.invidious-companion = {
image = "quay.io/invidious/invidious-companion:latest";
extraOptions = [ "--network=host" "--pull=always" ];
environment = {
SERVER_SECRET_KEY = companionKey;
HOST = "127.0.0.1";
PORT = toString companionPort;
SERVER_BASE_URL = "http://127.0.0.1:${toString companionPort}";
# HTTP_PROXY = "http://proxy.example:3128";
# HTTPS_PROXY = "http://proxy.example:3128";
# NO_PROXY = "127.0.0.1,localhost";
};
};
services.invidious = {
enable = true;
package = pkgs.invidious;
address = "127.0.0.1";
port = 3030;
nginx.enable = false;
sig-helper.enable = false;
settings = {
domain = "tube.bug.tools";
https_only = true;
external_port = 3030;
invidious_companion = [
{ private_url = "http://127.0.0.1:${toString companionPort}${companionPath}"; }
];
invidious_companion_key = companionKey;
};
};
systemd.services.invidious = let dep = "podman-invidious-companion.service"; in {
wants = [ dep ];
after = [ dep ];
requires = [ dep ];
};
}

View File

@@ -1,21 +0,0 @@
{ config, pkgs, device, ... }:
{
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";
};
};
}

View File

@@ -1,45 +0,0 @@
{ config, pkgs, device, ... }:
{
imports = [
(builtins.fetchTarball {
url = "https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/archive/master.tar.gz";
sha256 = "0xlhl8zhcz5c6hvmpkfw9ay2lfnk6nhax8pphvbv3vzxf1p9dhw9";
})
];
security.acme = {
acceptTerms = true;
defaults.email = "security@bug.tools";
certs."mail.bug.tools" = {
listenHTTP = "1360";
};
};
mailserver = {
enable = true;
stateVersion = 3;
fqdn = "mail.bug.tools";
domains = [ "bug.tools" ];
x509.useACMEHost = "mail.bug.tools";
loginAccounts = {
"bug@bug.tools" = {
hashedPasswordFile = "/home/bug/mailserver/bug.passwd";
aliases = [
"admin@bug.tools"
"google@bug.tools"
];
};
"pare@bug.tools" = {
hashedPasswordFile = "/home/bug/mailserver/pare.passwd";
};
};
};
}

View File

@@ -1,37 +0,0 @@
{ config, pkgs, device, ... }:
{
services = {
mpd = {
enable = true;
settings = {
music_directory = "/run/media/bug/Music/";
decoder = [
{
plugin = "ffmpeg";
enabled = "yes";
}
{
plugin = "opus";
enabled = "no";
}
];
audio_output = [{
type = "pipewire";
name = "PipeWire Sound Server";
}];
};
user = "bug";
};
};
systemd.services = {
mpd.environment = {
XDG_RUNTIME_DIR = "/run/user/1000";
};
};
}

View File

@@ -1,25 +0,0 @@
{ config, pkgs, device, ... }:
{
networking = {
hostName = if (device == "server") then "box" else "nix";
networkmanager.enable = true;
nameservers = [ "1.1.1.1" "1.0.0.1" ];
};
services = {
cloudflare-warp.enable = (device == "laptop");
openssh = {
enable = true;
settings = {
PrintMotd = true;
X11Forwarding = true;
AllowTcpForwarding = true;
};
};
};
}

View File

@@ -1,359 +0,0 @@
{ lib, config, inputs, pkgs, options, device, ... }:
let
nix-gaming = import (builtins.fetchTarball "https://github.com/fufexan/nix-gaming/archive/master.tar.gz");
nix-alien = import (
builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master"
) {};
in
{
imports = [
nix-gaming.nixosModules.platformOptimizations
nix-gaming.nixosModules.pipewireLowLatency
];
nixpkgs = {
config = {
allowUnfree = true;
cudaSupport = (device == "desktop");
nvidia.acceptLicense = (device == "desktop");
};
overlays = [
];
};
environment.sessionVariables = {
BROWSER = "firefox";
NIXPKGS_ALLOW_UNFREE = 1;
};
users.users.bug.packages = with pkgs; [
vscode
(luajit.withPackages (ps: with ps; [
luasocket
bit32
]))
go
#(python3.withPackages (ps: with ps; [
#unidecode
#discordpy
#setuptools
#pip
#pynput
#python-uinput
#mido
#pyautogui
#pygobject3
#pycairo
#tkinter
#numpy
#scipy
#imageio
#evdev
#]))
nodejs
(blender.withPackages (ps: with ps; [
libGLU
gcc
zlib
xorg.libX11
fontconfig
pcre2
xorg.libXext
xorg.libxcb
glib
]))
plasticity
obsidian
vesktop
nicotine-plus
fastfetch
tree
gh
scanmem
samrewritten
impression
mission-center
authenticator
steamtinkerlaunch
obs-studio
#prismlauncher
euphonica
kooha
loupe
arduino-ide
geary
];
environment.systemPackages = with pkgs; [
home-manager
comma # run nixpkgs without installing
nix-index
git
wget
gcc
gnumake
nmap
inetutils
nix-prefetch
nix-output-monitor
nvd # nix pkg diff
nixfmt # nix formatter
nixd # nix language server
nil # nix language server
nh # nix helper
gnome-boxes # gnome vm manager
vulkan-tools
openjdk
zlib
glfw
glew
wine64
wineWow64Packages.full
lug-helper
appimage-run
vulkan-validation-layers
vulkan-loader
pulseaudioFull
gamemode
winetricks
steam-run
firmware-updater
cosmic-applets
cosmic-edit
cosmic-ext-calculator
cosmic-ext-tweaks
cosmic-screenshot
quick-webapps
nix-alien.nix-alien
file-roller
unzip
xdg-desktop-portal-gtk
xdg-desktop-portal-cosmic
mangohud
mesa-demos
lutris
gnome-software
neovim
micro
inputs.hytale-launcher.packages.${pkgs.system}.default
baobab
psmisc
firefox-bin
] ++ (if (device == "desktop") then [
#(nix-gaming.packages.${pkgs.stdenv.hostPlatform.system}.star-citizen.override {
# tricks = [ "arial" "vcrun2019" "win10" "sound=alsa" ];
#})
inputs.nix-citizen.packages.${system}.rsi-launcher
libxshmfence
(appimage-run.override {
extraPkgs = pkgs: [ pkgs.xorg.libxshmfence pkgs.linuxPackages.nvidia_x11 ];
})
] else [
bambu-studio
]);
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"
{
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 = {
rsi-launcher = {
enable = (device == "desktop");
preCommands = ''
export DISPLAY=;
'';
};
appimage = {
enable = true;
binfmt = true;
};
#firefox = {
# enable = true;
# package = pkgs.firefox-bin;
#};
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
xorg.libX11
xorg.libXcursor
xorg.libXrandr
xorg.libXi
]);
};
};
}

View File

@@ -1,35 +0,0 @@
{ config, lib, pkgs, ... }:
{
services.redlib = {
enable = true;
address = "127.0.0.1";
port = 8975;
openFirewall = false;
settings = {
SFW_ONLY = "off"; # ["on", "off"]
ROBOTS_DISABLE_INDEXING = "on"; # ["on", "off"]
ENABLE_RSS = "on"; # ["on", "off"]
THEME = "system"; # ["system", "light", "dark", "black", "dracula", "nord", "laserwave", "violet", "gold", "rosebox", "gruvboxdark", "gruvboxlight", "tokyoNight", "icebergDark", "doomone", "libredditBlack", "libredditDark", "libredditLight"]
FRONT_PAGE = "default"; # ["default", "popular", "all"]
LAYOUT = "card"; # ["card", "clean", "compact"]
WIDE = "on"; # ["on", "off"]
POST_SORT = "hot"; # ["hot", "new", "top", "rising", "controversial"]
COMMENT_SORT = "confidence"; # ["confidence", "top", "new", "controversial", "old"]
BLUR_SPOILER = "off"; # ["on", "off"]
SHOW_NSFW = "on"; # ["on", "off"]
BLUR_NSFW = "off"; # ["on", "off"]
USE_HLS = "on"; # ["on", "off"]
HIDE_HLS_NOTIFICATION = "off"; # ["on", "off"]
AUTOPLAY_VIDEOS = "off"; # ["on", "off"]
HIDE_AWARDS = "off"; # ["on", "off"]
DISABLE_VISIT_REDDIT_CONFIRMATION = "off"; # ["on", "off"]
HIDE_SCORE = "off"; # ["on", "off"]
HIDE_SIDEBAR_AND_SUMMARY = "off"; # ["on", "off"]
FIXED_NAVBAR = "on"; # ["on", "off"]
REMOVE_DEFAULT_FEEDS = "off"; # ["on", "off"]
};
};
}

View File

@@ -1,23 +0,0 @@
{ config, lib, pkgs, ... }:
{
systemd.services.searx-init.serviceConfig.EnvironmentFile = [
"/home/bug/.searxng.env"
];
services.searx = {
enable = true;
redisCreateLocally = false;
configureUwsgi = false;
settingsFile = ./searxng.yml;
environmentFile = "/home/bug/.searxng.env";
settings = {
general.instance_name = "search.bug.tools";
server.port = 8888;
server.bind_address = "0.0.0.0";
server.secret_key = "$SEARX_SECRET_KEY";
};
};
}

View File

@@ -1,12 +0,0 @@
{ config, pkgs, device, ... }:
{
security = {
polkit.enable = true;
sudo = {
enable = true;
wheelNeedsPassword = false;
};
};
}

View File

@@ -0,0 +1,82 @@
{ inputs, ... }: {
den.aspects.copyparty = {
nixos = {
imports = [ inputs.copyparty.nixosModules.default ];
nixpkgs.overlays = [ inputs.copyparty.overlays.default ];
services.copyparty = {
enable = true;
user = "bug";
group = "copyparty";
settings = {
i = "0.0.0.0";
p = [ 3210 3211 ];
no-reload = true;
ignored-flag = false;
};
accounts = {
bug = {
passwordFile = "/home/bug/mailserver/bug.passwd";
};
#sang = {
#passwordFile = "/home/bug/nix/sang.passwd";
#};
};
groups = {
g1 = [ "bug" ];
};
volumes = {
"/" = {
path = "/srv/copyparty";
access = {
r = "*";
rw = [ "bug" ];
};
flags = {
fk = 4;
scan = 60;
};
};
"/music" = {
path = "/home/bug/Music/TidalScrape/Downloads/";
access = {
r = "*";
rw = [ "bug" ];
};
flags = {
fk = 4;
scan = 60;
};
};
/* "/sang" = {
path = "/srv/sang";
access = {
rw = [ "bug" ]; #"sang" ];
};
flags = {
fk = 4;
scan = 60;
};
}; */
};
openFilesLimit = 8192;
};
};
};
}

View File

@@ -0,0 +1,20 @@
{
den.aspects.gitea = {
nixos = {
services.gitea = {
enable = true;
config = {
database = {
type = "sqlite3";
path = "/var/lib/gitea/gitea.db";
};
server = {
domain = "example.com";
httpPort = 3000;
};
};
};
};
};
}

View File

@@ -0,0 +1,44 @@
{
den.aspects.glances = {
nixos = { pkgs, ... }: {
environment.systemPackages = [ pkgs.glances ];
users.users.glances = {
isSystemUser = true;
group = "glances";
home = "/var/lib/glances";
createHome = true;
};
users.groups.glances = {};
systemd.services.glances-web = {
description = "glances web interface";
after = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
User = "glances";
Group = "glances";
ExecStart = ''
${pkgs.glances}/bin/glances \
-w \
-p 61208 \
-B 0.0.0.0
'';
Restart = "always";
RestartSec = 5;
NoNewPrivileges = true;
PrivateTmp = true;
ProtectSystem = "strict";
ProtectHome = true;
LockPersonality = true;
MemoryDenyWriteExecute = true;
};
};
};
};
}

View File

@@ -0,0 +1,57 @@
{ den, lib, ... }: {
den.aspects.invidious = {
nixos = { pkgs, ... }: let
companionPort = 8282;
companionPath = "/companion";
companionKey = "kKg3RKeZjE7frmvw";
in {
virtualisation.podman.enable = true;
virtualisation.oci-containers.backend = lib.mkDefault "podman";
virtualisation.oci-containers.containers.invidious-companion = {
image = "quay.io/invidious/invidious-companion:latest";
extraOptions = [ "--network=host" "--pull=always" ];
environment = {
SERVER_SECRET_KEY = companionKey;
HOST = "127.0.0.1";
PORT = toString companionPort;
SERVER_BASE_URL = "http://127.0.0.1:${toString companionPort}";
# HTTP_PROXY = "http://proxy.example:3128";
# HTTPS_PROXY = "http://proxy.example:3128";
# NO_PROXY = "127.0.0.1,localhost";
};
};
services.invidious = {
enable = true;
package = pkgs.invidious;
address = "127.0.0.1";
port = 3030;
nginx.enable = false;
sig-helper.enable = false;
settings = {
domain = "tube.bug.tools";
https_only = false;
external_port = 3030;
invidious_companion = [
{ private_url = "http://127.0.0.1:${toString companionPort}${companionPath}"; }
];
invidious_companion_key = companionKey;
};
};
systemd.services.invidious = let dep = "podman-invidious-companion.service"; in {
wants = [ dep ];
after = [ dep ];
requires = [ dep ];
};
};
};
}

View File

@@ -0,0 +1,54 @@
{
den.aspects.mailserver = {
nixos = {
imports = [
(builtins.fetchTarball {
url = "https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/archive/master.tar.gz";
sha256 = "0rm5f749xakmkqrpkl5ay1pydbnlinr50pvwg1vm795js2infmj5";
})
];
security.acme = {
acceptTerms = true;
defaults.email = "security@bug.tools";
certs."mail.bug.tools" = {
listenHTTP = "1360";
};
};
mailserver = {
enable = true;
stateVersion = 3;
fqdn = "mail.bug.tools";
domains = [ "bug.tools" ];
x509.useACMEHost = "mail.bug.tools";
loginAccounts = {
"bug@bug.tools" = {
hashedPasswordFile = "/home/bug/mailserver/bug.passwd";
aliases = [
"admin@bug.tools"
"google@bug.tools"
"apple@bug.tools"
"roblox@bug.tools"
"twitch@bug.tools"
"discord@bug.tools"
"github@bug.tools"
"matrix@bug.tools"
"fluxer@bug.tools"
"git@bug.tools"
];
};
"pare@bug.tools" = {
hashedPasswordFile = "/home/bug/mailserver/pare.passwd";
};
};
};
};
};
}

103
modules/services/matrix.nix Normal file
View File

@@ -0,0 +1,103 @@
{
den.aspects.matrix = {
nixos = {
config,
pkgs,
lib,
...
}: let
domain = "bug.tools";
matrixDomain = "matrix.${domain}";
clientConfig = {
"m.homeserver".base_url = "https://${matrixDomain}";
"m.identity_server" = {};
};
serverConfig = {
"m.server" = "${matrixDomain}:443";
};
mkWellKnown = data: ''
default_type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '${builtins.toJSON data}';
'';
in {
services.matrix-synapse = {
enable = true;
settings = {
server_name = domain;
public_baseurl = "https://${matrixDomain}";
listeners = [
{
port = 8008;
bind_addresses = ["127.0.0.1"];
type = "http";
tls = false;
x_forwarded = true;
resources = [
{
names = ["client" "federation"];
compress = true;
}
];
}
];
database = {
name = "psycopg2";
allow_unsafe_locale = true;
args = {
user = "matrix-synapse";
database = "matrix-synapse";
host = "/run/postgresql";
};
};
max_upload_size_mib = 100;
url_preview_enabled = true;
enable_registration = false;
enable_metrics = false;
registration_shared_secret_path = "/var/lib/matrix-synapse/registration_secret";
trusted_key_servers = [
{
server_name = "matrix.org";
}
];
};
};
services.postgresql = {
enable = true;
ensureDatabases = ["matrix-synapse"];
ensureUsers = [
{
name = "matrix-synapse";
ensureDBOwnership = true;
}
];
};
services.nginx.virtualHosts.${domain} = {
enableACME = true;
forceSSL = true;
locations."= /.well-known/matrix/server".extraConfig = mkWellKnown serverConfig;
locations."= /.well-known/matrix/client".extraConfig = mkWellKnown clientConfig;
};
services.nginx.virtualHosts.${matrixDomain} = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:8008";
extraConfig = ''
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
client_max_body_size 100M;
'';
};
};
};
};
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,37 @@
{
den.aspects.redlib = {
nixos = {
services.redlib = {
enable = true;
address = "127.0.0.1";
port = 8975;
openFirewall = false;
settings = {
SFW_ONLY = "off";
ROBOTS_DISABLE_INDEXING = "on";
ENABLE_RSS = "on";
THEME = "system";
FRONT_PAGE = "default";
LAYOUT = "card";
WIDE = "on";
POST_SORT = "hot";
COMMENT_SORT = "confidence";
BLUR_SPOILER = "off";
SHOW_NSFW = "on";
BLUR_NSFW = "off";
USE_HLS = "on";
HIDE_HLS_NOTIFICATION = "off";
AUTOPLAY_VIDEOS = "off";
HIDE_AWARDS = "off";
DISABLE_VISIT_REDDIT_CONFIRMATION = "off";
HIDE_SCORE = "off";
HIDE_SIDEBAR_AND_SUMMARY = "off";
FIXED_NAVBAR = "on";
REMOVE_DEFAULT_FEEDS = "off";
};
};
};
};
}

View File

@@ -0,0 +1,25 @@
{
den.aspects.searxng = {
nixos = {
systemd.services.searx-init.serviceConfig.EnvironmentFile = [
"/home/bug/.searxng.env"
];
services.searx = {
enable = true;
redisCreateLocally = false;
configureUwsgi = false;
settingsFile = ./searxng.yml;
environmentFile = "/home/bug/.searxng.env";
settings = {
general.instance_name = "search.bug.tools";
server.port = 8888;
server.bind_address = "0.0.0.0";
server.secret_key = "$SEARX_SECRET_KEY";
};
};
};
};
}

View File

@@ -0,0 +1,7 @@
{
den.aspects.sish = {
nixos = {
};
};
}

View File

@@ -0,0 +1,11 @@
{
den.aspects.vscode-server = {
nixos = {
imports = [
(fetchTarball "https://github.com/nix-community/nixos-vscode-server/tarball/master")
];
services.vscode-server.enable = true;
};
};
}

View File

@@ -0,0 +1,53 @@
{
den.aspects.beets = {
homeManager = { pkgs, ... }: {
home = {
packages = with pkgs; [
beets
ffmpeg
chromaprint
];
file.".config/beets/config.yaml".text = ''
library: ~/.local/share/beets/library.db
directory: ~/Music
import:
write: true
copy: true
plugins:
- convert
- fetchart
- embedart
- fromfilename
- chroma
- smartplaylist
paths:
default: $artist/$album/$track - $title
convert:
auto: true
format: opus
formats:
opus: ffmpeg -i $source -y -vn -c:a libopus -b:a 160k $dest
dest: /home/bug/Music
fetchart:
auto: yes
ifempty: yes
art_filename: folder
embedart:
auto: yes
smartplaylist:
playlist_dir: ~/Music/playlists
relative_to: library
output: extm3u
'';
};
};
};
}

11
modules/software/cad.nix Normal file
View File

@@ -0,0 +1,11 @@
{
den.aspects.cad = {
nixos = { pkgs, ... }: {
users.users.bug.packages = with pkgs; [
blender
plasticity
orca-slicer
];
};
};
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,21 @@
{
den.aspects.development = {
nixos = { pkgs, ... }: {
environment.systemPackages = with pkgs; [
file-roller
];
users.users.bug.packages = with pkgs; [
zed-editor
vscode
tree
gh
scanmem
arduino-ide
];
};
};
}

View File

@@ -0,0 +1,11 @@
{
den.aspects.firefox = {
nixos = { pkgs, ... }: {
programs.firefox = {
enable = true;
package = pkgs.firefox-bin;
};
};
};
}

View File

@@ -0,0 +1,9 @@
{
den.aspects.fish = {
nixos = {
programs.fish.shellAliases = {
box = "ssh box.bug.tools";
};
};
};
}

View File

@@ -0,0 +1,55 @@
{ inputs, lib, ... }: {
den.aspects.flatpak = {
nixos = { pkgs, ... }: {
imports = [ inputs.nix-flatpak.nixosModules.nix-flatpak ];
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"];
};
};
};
};
};
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,195 @@
{
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
]);
};
};
};
};
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,47 @@
{ inputs, ... }: {
den.aspects.stylix = {
homeManager = { pkgs, ... }: {
imports = [
(inputs.stylix.homeModules.stylix or {})
];
stylix = {
enable = true;
autoEnable = false;
polarity = "dark";
# catppuccin mocha
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 = {
name = "Twitter Color Emoji";
package = pkgs.twitter-color-emoji;
};
targets = {
vesktop.enable = true;
gnome.enable = true;
gtk.enable = true;
firefox.enable = true;
};
};
};
};
}

View File

@@ -1,41 +0,0 @@
{ config, pkgs, device, ... }:
{
stylix = {
enable = true;
autoEnable = true;
polarity = "dark";
# catppuccin mocha
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 = {
name = "Twitter Color Emoji";
package = pkgs.twitter-color-emoji;
};
targets = {
vesktop.enable = true;
gnome.enable = true;
gtk.enable = true;
firefox.enable = true;
};
};
}

View File

@@ -1,17 +0,0 @@
{ config, pkgs, device, ... }:
{
boot.kernel.sysctl = {
"fs.file-max" = 524288;
};
swapDevices = [{
device = "/var/lib/swapfile";
size = 8 * 1024;
}];
zramSwap = {
enable = true;
memoryMax = 64 * 1024 * 1024 * 1024;
};
}

View File

@@ -1,68 +0,0 @@
{ config, pkgs, device, ... }:
{
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"];
ignorePatterns = [
"device.nix"
"hardware-configuration.nix"
];
};
"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"];
};
};
};
};
}

View File

@@ -1,19 +0,0 @@
{ config, pkgs, device, ... }:
{
users.users = {
bug = {
isNormalUser = true;
description = "bug";
extraGroups = [ "networkmanager" "wheel" "audio" "video" "libvirtd" "ydotool" "dialout" ];
};
} // (if (device == "server") then {
levi = {
isNormalUser = true;
description = "levi";
extraGroups = [];
hashedPasswordFile = "/home/bug/users/levi.passwd";
};
} else {});
}

9
modules/users/bug.nix Normal file
View File

@@ -0,0 +1,9 @@
{ den, ... }: {
den.aspects.bug = {
includes = [
den.provides.primary-user
(den.provides.user-shell "fish")
#den.provides.home-manager
];
};
}

View File

@@ -1,9 +0,0 @@
{ config, pkgs, device, ... }:
{
virtualisation = {
libvirtd.enable = true;
spiceUSBRedirection.enable = true;
};
}

16
modules/vm.nix Normal file
View File

@@ -0,0 +1,16 @@
# nix run .#vm
{ inputs, den, ... }: {
den.aspects.nix.includes = [ (den.provides.tty-autologin "bug") ];
perSystem = { pkgs, ... }: {
packages.vm = pkgs.writeShellApplication {
name = "vm";
text = let
host = inputs.self.nixosConfigurations.nix.config;
in ''
${host.system.build.vm}/bin/run-${host.networking.hostName}-vm "$@"
'';
};
};
}

View File

@@ -1,7 +0,0 @@
{ config, pkgs, device, ... }:
{
services = {
vscode-server.enable = true;
};
}

View File

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB