Compare commits
20 Commits
ee4237c6d6
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0bd23c5dfb | ||
|
|
986d227257 | ||
|
|
2d4510c2fd | ||
|
|
8ff72d5c6a | ||
|
|
84974b56ad | ||
|
|
1583ad75ee | ||
|
|
b025e987fc | ||
|
|
31a6f3aff8 | ||
|
|
6b5e71dd6c | ||
|
|
ca84fd5165 | ||
|
|
1b9322dd96 | ||
|
|
2fb9359a67 | ||
|
|
22df37a203 | ||
|
|
961351b098 | ||
|
|
e5f9674f8d | ||
|
|
bca6b60a3e | ||
|
|
2d430c1b3b | ||
|
|
66230cbc4f | ||
|
|
90f94f7888 | ||
|
|
6b7cbc4dbf |
31
README.md
Normal file
31
README.md
Normal 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 |
|
||||
@@ -1 +0,0 @@
|
||||
{ device = "server"; }
|
||||
501
flake.lock
generated
501
flake.lock
generated
@@ -68,17 +68,35 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"copyparty": {
|
||||
"catppuccin": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1770758715,
|
||||
"narHash": "sha256-FlRSDJ8OlCiWX+tIAZJkQnkBAAwbO125aUdAC6VJlOk=",
|
||||
"lastModified": 1772153824,
|
||||
"narHash": "sha256-T65qXmlcD9qFpPTi+mOXsn4dIkO2N8Ls67nqmuzepv0=",
|
||||
"owner": "catppuccin",
|
||||
"repo": "nix",
|
||||
"rev": "4b0f5b7bf7b3eeb484d49524f3c9791864ab9362",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "catppuccin",
|
||||
"repo": "nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"copyparty": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1771834427,
|
||||
"narHash": "sha256-B1j0ahVuxyZtpbFfy34gk2DjacimPIuzyzCPvDhvxI4=",
|
||||
"owner": "9001",
|
||||
"repo": "copyparty",
|
||||
"rev": "d44ea245307c06eb060b6e6f5c2cba91a759c940",
|
||||
"rev": "ab8bd0178b26a0b6c6406f7bae835d13b16ef188",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -87,6 +105,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 +136,54 @@
|
||||
"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-compat": {
|
||||
"locked": {
|
||||
"lastModified": 1733328505,
|
||||
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||
"revCount": 69,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
@@ -194,40 +254,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,140 +290,90 @@
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"nixcord": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-parts": "flake-parts_2",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772266502,
|
||||
"narHash": "sha256-HBO3W1ooO9UwmxwwwFflnbCrAVHhaxpB8YnxFGPvOsY=",
|
||||
"owner": "FlameFlag",
|
||||
"repo": "nixcord",
|
||||
"rev": "e805e50f0cc8b9f2d950dc81cd9ee1c986899eaf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "FlameFlag",
|
||||
"repo": "nixcord",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1748162331,
|
||||
"narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=",
|
||||
"lastModified": 1771848320,
|
||||
"narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334",
|
||||
"rev": "2fc6539b481e1d2569f25f8799236694180c0993",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-25.05",
|
||||
"type": "indirect"
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
@@ -415,132 +391,53 @@
|
||||
"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=",
|
||||
"lastModified": 1748162331,
|
||||
"narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
|
||||
"rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-25.05",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1770197578,
|
||||
"narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
|
||||
"lastModified": 1770617025,
|
||||
"narHash": "sha256-1jZvgZoAagZZB6NwGRv2T2ezPy+X6EFDsJm+YSlsvEs=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
|
||||
"rev": "2db38e08fdadcc0ce3232f7279bab59a15b94482",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"ref": "nixos-25.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1770562336,
|
||||
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
|
||||
"owner": "NixOS",
|
||||
"lastModified": 1771207753,
|
||||
"narHash": "sha256-b9uG8yN50DRQ6A7JdZBfzq718ryYrlmGgqkRm9OOwCE=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d6c71932130818840fc8fe9509cf50be8c64634f",
|
||||
"rev": "d1c15b7d5806069da59e819999d70e1cec0760bf",
|
||||
"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": [
|
||||
@@ -568,37 +465,22 @@
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"catppuccin": "catppuccin",
|
||||
"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",
|
||||
"nixcord": "nixcord",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"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": {
|
||||
@@ -614,7 +496,7 @@
|
||||
"nixpkgs"
|
||||
],
|
||||
"nur": "nur",
|
||||
"systems": "systems_2",
|
||||
"systems": "systems",
|
||||
"tinted-foot": "tinted-foot",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
"tinted-schemes": "tinted-schemes",
|
||||
@@ -622,11 +504,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 +547,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 +627,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",
|
||||
|
||||
108
flake.nix
108
flake.nix
@@ -1,90 +1,34 @@
|
||||
{
|
||||
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; };
|
||||
copyparty.url = "github:9001/copyparty";
|
||||
|
||||
modules = [
|
||||
{
|
||||
nix.settings = {
|
||||
substituters = [ "https://cosmic.cachix.org/" ];
|
||||
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
|
||||
};
|
||||
}
|
||||
catppuccin.url = "github:catppuccin/nix";
|
||||
|
||||
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
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
nixcord.url = "github:FlameFlag/nixcord";
|
||||
};
|
||||
}
|
||||
|
||||
40
home.nix
40
home.nix
@@ -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
117
main.nix
@@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
28
modules/core/audio/audio.nix
Normal file
28
modules/core/audio/audio.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
39
modules/core/audio/mpd.nix
Normal file
39
modules/core/audio/mpd.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
15
modules/core/dendritic.nix
Normal file
15
modules/core/dendritic.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
}
|
||||
74
modules/core/desktop/cosmic.nix
Normal file
74
modules/core/desktop/cosmic.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
10
modules/core/graphics/amdgpu.nix
Normal file
10
modules/core/graphics/amdgpu.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
den.aspects.amdgpu = {
|
||||
nixos = {
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
videoDrivers = ["amdgpu"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
45
modules/core/graphics/nvidia.nix
Normal file
45
modules/core/graphics/nvidia.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
9
modules/core/network/cloudflare-warp.nix
Normal file
9
modules/core/network/cloudflare-warp.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
den.aspects.cloudflare-warp = {
|
||||
nixos = {
|
||||
services.cloudflare-warp = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
1
modules/core/network/crab-hole.nix
Normal file
1
modules/core/network/crab-hole.nix
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
11
modules/core/network/dns.nix
Normal file
11
modules/core/network/dns.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
den.aspects.dns = {
|
||||
nixos = {
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
|
||||
nameservers = [ "1.1.1.1" "1.0.0.1" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
15
modules/core/network/openssh.nix
Normal file
15
modules/core/network/openssh.nix
Normal 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
19
modules/core/swap.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
35
modules/core/theme/catppuccin.nix
Normal file
35
modules/core/theme/catppuccin.nix
Normal file
@@ -0,0 +1,35 @@
|
||||
{ inputs, ... }: let
|
||||
flavor = "mocha";
|
||||
accent = "mauve";
|
||||
in {
|
||||
den.aspects.catppuccin = {
|
||||
nixos = {
|
||||
imports = [ inputs.catppuccin.nixosModules.catppuccin ];
|
||||
|
||||
catppuccin = {
|
||||
enable = true;
|
||||
flavor = flavor;
|
||||
accent = accent;
|
||||
|
||||
grub.enable = true;
|
||||
gitea.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
homeManager = {
|
||||
imports = [ inputs.catppuccin.homeModules.catppuccin ];
|
||||
|
||||
catppuccin = {
|
||||
enable = true;
|
||||
flavor = flavor;
|
||||
accent = accent;
|
||||
|
||||
firefox.enable = true;
|
||||
fish.enable = true;
|
||||
librewolf.enable = true;
|
||||
vesktop.enable = true;
|
||||
zed.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
47
modules/core/theme/stylix.nix
Normal file
47
modules/core/theme/stylix.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
3
modules/core/theme/stylus.nix
Normal file
3
modules/core/theme/stylus.nix
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
|
||||
}
|
||||
11
modules/core/virtualisation.nix
Normal file
11
modules/core/virtualisation.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
den.aspects.virtualisation = {
|
||||
nixos = {
|
||||
virtualisation = {
|
||||
libvirtd.enable = true;
|
||||
|
||||
spiceUSBRedirection.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
*/
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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
15
modules/hosts.nix
Normal 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"; };
|
||||
}
|
||||
46
modules/hosts/box/box.nix
Normal file
46
modules/hosts/box/box.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
|
||||
{ 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
|
||||
catppuccin
|
||||
|
||||
(tunnel 3001 "tvtun")
|
||||
(tunnel 8888 "search")
|
||||
(tunnel 3210 "files")
|
||||
(tunnel 3030 "tube")
|
||||
(tunnel 8975 "reddit")
|
||||
(tunnel 3002 "git")
|
||||
(tunnel 61208 "monitor")
|
||||
];
|
||||
|
||||
nixos = {
|
||||
networking.hostName = "box";
|
||||
|
||||
users.users.levi = {
|
||||
isNormalUser = true;
|
||||
description = "levi";
|
||||
extraGroups = [];
|
||||
|
||||
hashedPasswordFile = "/home/bug/users/levi.passwd";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
101
modules/hosts/defaults.nix
Normal file
101
modules/hosts/defaults.nix
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
den.default = {
|
||||
nixos = { pkgs, lib, ... }: {
|
||||
imports = [
|
||||
/etc/nixos/hardware-configuration.nix
|
||||
];
|
||||
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.backupFileExtension = "hm-backup";
|
||||
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
40
modules/hosts/laptop/laptop.nix
Normal file
40
modules/hosts/laptop/laptop.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
{ 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
|
||||
];
|
||||
|
||||
nixos = {
|
||||
networking.hostName = "nix";
|
||||
|
||||
services.logind.settings.Login = {
|
||||
HandleLidSwitch = "ignore";
|
||||
HandleLidSwitchDocked = "ignore";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
36
modules/hosts/nix/nix.nix
Normal file
36
modules/hosts/nix/nix.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
{ 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";
|
||||
};
|
||||
};
|
||||
}
|
||||
32
modules/infra/cloudflared.nix
Normal file
32
modules/infra/cloudflared.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{ 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; })
|
||||
];
|
||||
};
|
||||
}
|
||||
70
modules/infra/syncthing.nix
Normal file
70
modules/infra/syncthing.nix
Normal 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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
]);
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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"]
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{ config, pkgs, device, ... }:
|
||||
|
||||
{
|
||||
security = {
|
||||
polkit.enable = true;
|
||||
|
||||
sudo = {
|
||||
enable = true;
|
||||
wheelNeedsPassword = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
82
modules/services/copyparty.nix
Normal file
82
modules/services/copyparty.nix
Normal 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/";
|
||||
|
||||
access = {
|
||||
r = "*";
|
||||
rw = [ "bug" ];
|
||||
};
|
||||
|
||||
flags = {
|
||||
fk = 4;
|
||||
scan = 60;
|
||||
};
|
||||
};
|
||||
|
||||
/* "/sang" = {
|
||||
path = "/srv/sang";
|
||||
|
||||
access = {
|
||||
rw = [ "bug" ]; #"sang" ];
|
||||
};
|
||||
|
||||
flags = {
|
||||
fk = 4;
|
||||
scan = 60;
|
||||
};
|
||||
}; */
|
||||
};
|
||||
|
||||
openFilesLimit = 8192;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
17
modules/services/gitea.nix
Normal file
17
modules/services/gitea.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
den.aspects.gitea = {
|
||||
nixos = {
|
||||
services.gitea = {
|
||||
enable = true;
|
||||
|
||||
database.type = "mysql";
|
||||
|
||||
settings.service = {
|
||||
DISABLE_REGISTRATION = true;
|
||||
};
|
||||
|
||||
settings.server.HTTP_PORT = 3002;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
44
modules/services/glances.nix
Normal file
44
modules/services/glances.nix
Normal file
@@ -0,0 +1,44 @@
|
||||
{ den, ...}: {
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
57
modules/services/invidious.nix
Normal file
57
modules/services/invidious.nix
Normal 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 ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
59
modules/services/mailserver.nix
Normal file
59
modules/services/mailserver.nix
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
den.aspects.mailserver = {
|
||||
nixos = {
|
||||
imports = [
|
||||
(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"
|
||||
"git@bug.tools"
|
||||
"contact@bug.tools"
|
||||
"fc2@bug.tools"
|
||||
"counter@bug.tools"
|
||||
"claude@bug.tools"
|
||||
"bitcraft@bug.tools"
|
||||
|
||||
];
|
||||
};
|
||||
|
||||
"pare@bug.tools" = {
|
||||
hashedPasswordFile = "/home/bug/mailserver/pare.passwd";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
103
modules/services/matrix.nix
Normal file
103
modules/services/matrix.nix
Normal 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;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
1
modules/services/portmap.nix
Normal file
1
modules/services/portmap.nix
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
37
modules/services/redlib.nix
Normal file
37
modules/services/redlib.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
25
modules/services/searxng/searxng.nix
Normal file
25
modules/services/searxng/searxng.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
general:
|
||||
# Debug mode, only for development. Is overwritten by ${SEARXNG_DEBUG}
|
||||
debug: false
|
||||
# displayed name
|
||||
instance_name: "search.bug.tools"
|
||||
# For example: https://example.com/privacy
|
||||
privacypolicy_url: false
|
||||
@@ -9,7 +7,7 @@ general:
|
||||
# use false to disable the donation link
|
||||
donation_url: false
|
||||
# mailto:contact@example.com
|
||||
contact_url: false
|
||||
contact_url: contact@bug.tools
|
||||
# record stats
|
||||
enable_metrics: true
|
||||
# expose stats in open metrics format at /metrics
|
||||
@@ -2177,7 +2175,7 @@ engines:
|
||||
- name: yahoo
|
||||
engine: yahoo
|
||||
shortcut: yh
|
||||
|
||||
|
||||
- name: yahoo news
|
||||
engine: yahoo_news
|
||||
shortcut: yhn
|
||||
@@ -2823,4 +2821,4 @@ doi_resolvers:
|
||||
sci-hub.st: 'https://sci-hub.st/'
|
||||
sci-hub.ru: 'https://sci-hub.ru/'
|
||||
|
||||
default_doi_resolver: 'oadoi.org'
|
||||
default_doi_resolver: 'oadoi.org'
|
||||
7
modules/services/sish.nix
Normal file
7
modules/services/sish.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
den.aspects.sish = {
|
||||
nixos = {
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
11
modules/services/vscode-server.nix
Normal file
11
modules/services/vscode-server.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
||||
53
modules/software/beets.nix
Normal file
53
modules/software/beets.nix
Normal 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
11
modules/software/cad.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
den.aspects.cad = {
|
||||
nixos = { pkgs, ... }: {
|
||||
users.users.bug.packages = with pkgs; [
|
||||
blender
|
||||
plasticity
|
||||
orca-slicer
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
1
modules/software/compatibility.nix
Normal file
1
modules/software/compatibility.nix
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
21
modules/software/development.nix
Normal file
21
modules/software/development.nix
Normal 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
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
11
modules/software/firefox.nix
Normal file
11
modules/software/firefox.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
den.aspects.firefox = {
|
||||
nixos = { pkgs, ... }: {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
|
||||
package = pkgs.firefox-bin;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
9
modules/software/fish.nix
Normal file
9
modules/software/fish.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
den.aspects.fish = {
|
||||
nixos = {
|
||||
programs.fish.shellAliases = {
|
||||
box = "ssh box.bug.tools";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
55
modules/software/flatpak.nix
Normal file
55
modules/software/flatpak.nix
Normal 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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
1
modules/software/gaming.nix
Normal file
1
modules/software/gaming.nix
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
25
modules/software/librewolf.nix
Normal file
25
modules/software/librewolf.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
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
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
1
modules/software/music.nix
Normal file
1
modules/software/music.nix
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
46
modules/software/nixcord.nix
Normal file
46
modules/software/nixcord.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{ 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" ];
|
||||
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
195
modules/software/placeholder.nix
Normal file
195
modules/software/placeholder.nix
Normal 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
|
||||
]);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
1
modules/software/social.nix
Normal file
1
modules/software/social.nix
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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 {});
|
||||
}
|
||||
11
modules/users/bug.nix
Normal file
11
modules/users/bug.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ den, ... }: {
|
||||
den.aspects.bug = {
|
||||
includes = [
|
||||
den.provides.primary-user
|
||||
(den.provides.user-shell "fish")
|
||||
#den.provides.home-manager
|
||||
];
|
||||
|
||||
user.extraGroups = [ "networkmanager" "wheel" "audio" "video" "libvirtd" "ydotool" "dialout" ];
|
||||
};
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{ config, pkgs, device, ... }:
|
||||
|
||||
{
|
||||
virtualisation = {
|
||||
libvirtd.enable = true;
|
||||
|
||||
spiceUSBRedirection.enable = true;
|
||||
};
|
||||
}
|
||||
16
modules/vm.nix
Normal file
16
modules/vm.nix
Normal 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 "$@"
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{ config, pkgs, device, ... }:
|
||||
|
||||
{
|
||||
services = {
|
||||
vscode-server.enable = true;
|
||||
};
|
||||
}
|
||||
16
nix.ans
16
nix.ans
@@ -1,16 +0,0 @@
|
||||
[38;2;82;119;195m ◢██◣[38;2;127;183;255m ◥███◣ ◢██◣
|
||||
[38;2;82;119;195m ◥███◣[38;2;127;183;255m ◥███◣◢███◤
|
||||
[38;2;82;119;195m ◥███◣[38;2;127;183;255m ◥██████◤
|
||||
[38;2;82;119;195m ◢████████████[48;2;127;183;255m◣[0m[38;2;127;183;255m████◤[38;2;82;119;195m ◢◣
|
||||
[38;2;82;119;195m ◢██████████████[48;2;127;183;255m◣[0m[38;2;127;183;255m███◣[38;2;82;119;195m ◢██◣
|
||||
[38;2;127;183;255m ◢███◤ ◥███◣[38;2;82;119;195m◢███◤
|
||||
[38;2;127;183;255m ◢███◤ ◥██[48;2;82;119;195m◤[0m[38;2;82;119;195m███◤
|
||||
[38;2;127;183;255m◢█████████◤ ◥[48;2;82;119;195m◤[0m[38;2;82;119;195m████████◣
|
||||
[38;2;127;183;255m◥████████[48;2;82;119;195m◤[0m[38;2;82;119;195m◣ ◢█████████◤
|
||||
[38;2;127;183;255m ◢███[48;2;82;119;195m◤[0m[38;2;82;119;195m██◣ ◢███◤
|
||||
[38;2;127;183;255m ◢███◤[38;2;82;119;195m◥███◣ ◢███◤
|
||||
[38;2;127;183;255m ◥██◤ [38;2;82;119;195m◥███[48;2;127;183;255m◣[0m[38;2;127;183;255m██████████████◤
|
||||
[38;2;127;183;255m ◥◤ [38;2;82;119;195m◢████[48;2;127;183;255m◣[0m[38;2;127;183;255m████████████◤
|
||||
[38;2;82;119;195m ◢██████◣[38;2;127;183;255m ◥███◣
|
||||
[38;2;82;119;195m ◢███◤◥███◣[38;2;127;183;255m ◥███◣
|
||||
[38;2;82;119;195m ◥██◤ ◥███◣[38;2;127;183;255m ◥██◤
|
||||
16
resources/nix.ans
Executable file
16
resources/nix.ans
Executable file
@@ -0,0 +1,16 @@
|
||||
[38;2;82;119;195m ██[38;2;127;183;255m ███ ██
|
||||
[38;2;82;119;195m ███[38;2;127;183;255m ██████
|
||||
[38;2;82;119;195m ███[38;2;127;183;255m ██████
|
||||
[38;2;82;119;195m ████████████[48;2;127;183;255m[0m[38;2;127;183;255m████[38;2;82;119;195m
|
||||
[38;2;82;119;195m ██████████████[48;2;127;183;255m[0m[38;2;127;183;255m███[38;2;82;119;195m ██
|
||||
[38;2;127;183;255m ███ ███[38;2;82;119;195m███
|
||||
[38;2;127;183;255m ███ ██[48;2;82;119;195m[0m[38;2;82;119;195m███
|
||||
[38;2;127;183;255m█████████ [48;2;82;119;195m[0m[38;2;82;119;195m████████
|
||||
[38;2;127;183;255m████████[48;2;82;119;195m[0m[38;2;82;119;195m █████████
|
||||
[38;2;127;183;255m ███[48;2;82;119;195m[0m[38;2;82;119;195m██ ███
|
||||
[38;2;127;183;255m ███[38;2;82;119;195m███ ███
|
||||
[38;2;127;183;255m ██ [38;2;82;119;195m███[48;2;127;183;255m[0m[38;2;127;183;255m██████████████
|
||||
[38;2;127;183;255m [38;2;82;119;195m████[48;2;127;183;255m[0m[38;2;127;183;255m████████████
|
||||
[38;2;82;119;195m ██████[38;2;127;183;255m ███
|
||||
[38;2;82;119;195m ██████[38;2;127;183;255m ███
|
||||
[38;2;82;119;195m ██ ███[38;2;127;183;255m ██
|
||||
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Reference in New Issue
Block a user