My NixOS config Part 3: Flake-Parts Crusaders nix.ladas552.me
hjem nix nixos impermanence flake-parts nvfetcher niri noctalia

Merge remote-tracking branch 'origin/HEAD'

Ladas552 abda861e 56f79f32

+913 -366
+1
AGENTS.md
···
··· 1 + DIE
+4 -3
README.md
··· 25 - [NixOS-WSL](https://github.com/nix-community/NixOS-WSL) for Windows partition 26 - NixVM for testing, you shouldn't use it unless testing breaking changes 27 - NixIso for my portable NixOS image 28 ## Modular 29 I adopted [Dendritic layout](https://github.com/mightyiam/dendritic) for my config. 30 Making all files their own modules that I can import, and if module isn't imported, it doesn't exist. This way most of my config is fairy atomic and you can pop in and out modules as you wish. ··· 38 39 Also, I have [Norg document](./nix.norg), containing notes and TODO for the config 40 41 - I also write some [blog posts about Nix](https://ladas552.me/Flake-Ocean/), feel free to check it out 42 43 ## Nvfetcher 44 ··· 54 55 I also use nvfetcher to fetch nixos modules, the method described in the `flake.nix` file. 56 57 - [Check out a blog post about it](https://ladas552.me/Flake-Ocean/posts/Nvfetcher/) 58 59 ## Screenshot if you care 60 - ![desktop](https://ladas552.me/assets/desktop/desktop.png) 61 62 ## Name 63
··· 25 - [NixOS-WSL](https://github.com/nix-community/NixOS-WSL) for Windows partition 26 - NixVM for testing, you shouldn't use it unless testing breaking changes 27 - NixIso for my portable NixOS image 28 + - NixWool is my Hetzner cloud that runs [Tangled.sh](https://tangled.org/) knot 29 ## Modular 30 I adopted [Dendritic layout](https://github.com/mightyiam/dendritic) for my config. 31 Making all files their own modules that I can import, and if module isn't imported, it doesn't exist. This way most of my config is fairy atomic and you can pop in and out modules as you wish. ··· 39 40 Also, I have [Norg document](./nix.norg), containing notes and TODO for the config 41 42 + I also write some [blog posts about Nix](https://nix.ladas552.me/), feel free to check it out 43 44 ## Nvfetcher 45 ··· 55 56 I also use nvfetcher to fetch nixos modules, the method described in the `flake.nix` file. 57 58 + [Check out a blog post about it](https://nix.ladas552.me/posts/Nvfetcher/) 59 60 ## Screenshot if you care 61 + ![desktop](https://blog.ladas552.me/assets/desktop/desktop.png) 62 63 ## Name 64
+19 -19
_sources/generated.json
··· 50 "pinned": false, 51 "src": { 52 "name": null, 53 - "sha256": "sha256-jFSLLDsHB/NiJqFmn8S+JpdM8iCy3Zgyq+8l4RkBecM=", 54 "type": "url", 55 - "url": "https://github.com/imputnet/helium-linux/releases/download/0.8.5.1/helium-0.8.5.1-x86_64.AppImage" 56 }, 57 - "version": "0.8.5.1" 58 }, 59 "impermanence": { 60 "cargoLock": null, ··· 141 }, 142 "nixos-hardware": { 143 "cargoLock": null, 144 - "date": "2026-02-09", 145 "extract": null, 146 "name": "nixos-hardware", 147 "passthru": null, ··· 151 "fetchSubmodules": false, 152 "leaveDotGit": false, 153 "name": null, 154 - "rev": "2889685785848de940375bf7fea5e7c5a3c8d502", 155 - "sha256": "sha256-b7iK/x+zOXbjhRqa+XBlYla4zFvPZyU5Ln2HJkiSnzc=", 156 "sparseCheckout": [], 157 "type": "git", 158 "url": "https://github.com/nixos/nixos-hardware" 159 }, 160 - "version": "2889685785848de940375bf7fea5e7c5a3c8d502" 161 }, 162 "nixos-wsl": { 163 "cargoLock": null, 164 - "date": "2026-02-09", 165 "extract": null, 166 "name": "nixos-wsl", 167 "passthru": null, ··· 171 "fetchSubmodules": false, 172 "leaveDotGit": false, 173 "name": null, 174 - "rev": "5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d", 175 - "sha256": "sha256-v/LA5ZSJ+JQYzMSKB4sySM0wKfsAqddNzzxLLnbsV/E=", 176 "sparseCheckout": [], 177 "type": "git", 178 "url": "https://github.com/nix-community/NixOS-WSL" 179 }, 180 - "version": "5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d" 181 }, 182 "noctalia-dev": { 183 "cargoLock": null, 184 - "date": "2026-02-10", 185 "extract": null, 186 "name": "noctalia-dev", 187 "passthru": null, ··· 191 "fetchSubmodules": false, 192 "leaveDotGit": false, 193 "name": null, 194 - "rev": "c1b63e1153fec1e6db5aa95b1423c5bd4de4eb6a", 195 - "sha256": "sha256-JLkzqAts3GfWcx9VH1aHoaMIhk5R+gfZ5o1GapG9Ylc=", 196 "sparseCheckout": [], 197 "type": "git", 198 "url": "https://github.com/noctalia-dev/noctalia-shell" 199 }, 200 - "version": "c1b63e1153fec1e6db5aa95b1423c5bd4de4eb6a" 201 }, 202 "sops-nix": { 203 "cargoLock": null, 204 - "date": "2026-02-10", 205 "extract": null, 206 "name": "sops-nix", 207 "passthru": null, ··· 211 "fetchSubmodules": false, 212 "leaveDotGit": false, 213 "name": null, 214 - "rev": "8b89f44c2cc4581e402111d928869fe7ba9f7033", 215 - "sha256": "sha256-xVfPvXDf9QN3Eh9dV+Lw6IkWG42KSuQ1u2260HKvpnc=", 216 "sparseCheckout": [], 217 "type": "git", 218 "url": "https://github.com/Mic92/sops-nix" 219 }, 220 - "version": "8b89f44c2cc4581e402111d928869fe7ba9f7033" 221 } 222 }
··· 50 "pinned": false, 51 "src": { 52 "name": null, 53 + "sha256": "sha256-4c7tIra7SriBQe3ii4bLFTV1chLPQSNdOWNUR6dxfP0=", 54 "type": "url", 55 + "url": "https://github.com/imputnet/helium-linux/releases/download/0.9.3.1/helium-0.9.3.1-x86_64_linux.tar.xz" 56 }, 57 + "version": "0.9.3.1" 58 }, 59 "impermanence": { 60 "cargoLock": null, ··· 141 }, 142 "nixos-hardware": { 143 "cargoLock": null, 144 + "date": "2026-02-18", 145 "extract": null, 146 "name": "nixos-hardware", 147 "passthru": null, ··· 151 "fetchSubmodules": false, 152 "leaveDotGit": false, 153 "name": null, 154 + "rev": "740a22363033e9f1bb6270fbfb5a9574067af15b", 155 + "sha256": "sha256-yRKJ7gpVmXbX2ZcA8nFi6CMPkJXZGjie2unsiMzj3Ig=", 156 "sparseCheckout": [], 157 "type": "git", 158 "url": "https://github.com/nixos/nixos-hardware" 159 }, 160 + "version": "740a22363033e9f1bb6270fbfb5a9574067af15b" 161 }, 162 "nixos-wsl": { 163 "cargoLock": null, 164 + "date": "2026-02-20", 165 "extract": null, 166 "name": "nixos-wsl", 167 "passthru": null, ··· 171 "fetchSubmodules": false, 172 "leaveDotGit": false, 173 "name": null, 174 + "rev": "379d20c55f552e91fb9f3f0382e4a97d3f452943", 175 + "sha256": "sha256-vA5hocvdGhr+jfBN7A7ogeZqIz2qx01EixXwdVsQcnE=", 176 "sparseCheckout": [], 177 "type": "git", 178 "url": "https://github.com/nix-community/NixOS-WSL" 179 }, 180 + "version": "379d20c55f552e91fb9f3f0382e4a97d3f452943" 181 }, 182 "noctalia-dev": { 183 "cargoLock": null, 184 + "date": "2026-02-21", 185 "extract": null, 186 "name": "noctalia-dev", 187 "passthru": null, ··· 191 "fetchSubmodules": false, 192 "leaveDotGit": false, 193 "name": null, 194 + "rev": "198a9f740d82997c0de7f1b52cfb92907f30bfca", 195 + "sha256": "sha256-c7O9D30C145cI5QlDxO/IemLbZHyU3SfP+ptOmyJdY0=", 196 "sparseCheckout": [], 197 "type": "git", 198 "url": "https://github.com/noctalia-dev/noctalia-shell" 199 }, 200 + "version": "198a9f740d82997c0de7f1b52cfb92907f30bfca" 201 }, 202 "sops-nix": { 203 "cargoLock": null, 204 + "date": "2026-02-19", 205 "extract": null, 206 "name": "sops-nix", 207 "passthru": null, ··· 211 "fetchSubmodules": false, 212 "leaveDotGit": false, 213 "name": null, 214 + "rev": "e85540ffe97322dc1fea14dd11cdc2f59d540ac7", 215 + "sha256": "sha256-eksVUcUsfS9mQx4D9DrYu88u9w70bAf+n6KmTDuIGEE=", 216 "sparseCheckout": [], 217 "type": "git", 218 "url": "https://github.com/Mic92/sops-nix" 219 }, 220 + "version": "e85540ffe97322dc1fea14dd11cdc2f59d540ac7" 221 } 222 }
+19 -19
_sources/generated.nix
··· 32 }; 33 helium = { 34 pname = "helium"; 35 - version = "0.8.5.1"; 36 src = fetchurl { 37 - url = "https://github.com/imputnet/helium-linux/releases/download/0.8.5.1/helium-0.8.5.1-x86_64.AppImage"; 38 - sha256 = "sha256-jFSLLDsHB/NiJqFmn8S+JpdM8iCy3Zgyq+8l4RkBecM="; 39 }; 40 }; 41 impermanence = { ··· 90 }; 91 nixos-hardware = { 92 pname = "nixos-hardware"; 93 - version = "2889685785848de940375bf7fea5e7c5a3c8d502"; 94 src = fetchgit { 95 url = "https://github.com/nixos/nixos-hardware"; 96 - rev = "2889685785848de940375bf7fea5e7c5a3c8d502"; 97 fetchSubmodules = false; 98 deepClone = false; 99 leaveDotGit = false; 100 sparseCheckout = [ ]; 101 - sha256 = "sha256-b7iK/x+zOXbjhRqa+XBlYla4zFvPZyU5Ln2HJkiSnzc="; 102 }; 103 - date = "2026-02-09"; 104 }; 105 nixos-wsl = { 106 pname = "nixos-wsl"; 107 - version = "5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d"; 108 src = fetchgit { 109 url = "https://github.com/nix-community/NixOS-WSL"; 110 - rev = "5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d"; 111 fetchSubmodules = false; 112 deepClone = false; 113 leaveDotGit = false; 114 sparseCheckout = [ ]; 115 - sha256 = "sha256-v/LA5ZSJ+JQYzMSKB4sySM0wKfsAqddNzzxLLnbsV/E="; 116 }; 117 - date = "2026-02-09"; 118 }; 119 noctalia-dev = { 120 pname = "noctalia-dev"; 121 - version = "c1b63e1153fec1e6db5aa95b1423c5bd4de4eb6a"; 122 src = fetchgit { 123 url = "https://github.com/noctalia-dev/noctalia-shell"; 124 - rev = "c1b63e1153fec1e6db5aa95b1423c5bd4de4eb6a"; 125 fetchSubmodules = false; 126 deepClone = false; 127 leaveDotGit = false; 128 sparseCheckout = [ ]; 129 - sha256 = "sha256-JLkzqAts3GfWcx9VH1aHoaMIhk5R+gfZ5o1GapG9Ylc="; 130 }; 131 - date = "2026-02-10"; 132 }; 133 sops-nix = { 134 pname = "sops-nix"; 135 - version = "8b89f44c2cc4581e402111d928869fe7ba9f7033"; 136 src = fetchgit { 137 url = "https://github.com/Mic92/sops-nix"; 138 - rev = "8b89f44c2cc4581e402111d928869fe7ba9f7033"; 139 fetchSubmodules = false; 140 deepClone = false; 141 leaveDotGit = false; 142 sparseCheckout = [ ]; 143 - sha256 = "sha256-xVfPvXDf9QN3Eh9dV+Lw6IkWG42KSuQ1u2260HKvpnc="; 144 }; 145 - date = "2026-02-10"; 146 }; 147 }
··· 32 }; 33 helium = { 34 pname = "helium"; 35 + version = "0.9.3.1"; 36 src = fetchurl { 37 + url = "https://github.com/imputnet/helium-linux/releases/download/0.9.3.1/helium-0.9.3.1-x86_64_linux.tar.xz"; 38 + sha256 = "sha256-4c7tIra7SriBQe3ii4bLFTV1chLPQSNdOWNUR6dxfP0="; 39 }; 40 }; 41 impermanence = { ··· 90 }; 91 nixos-hardware = { 92 pname = "nixos-hardware"; 93 + version = "740a22363033e9f1bb6270fbfb5a9574067af15b"; 94 src = fetchgit { 95 url = "https://github.com/nixos/nixos-hardware"; 96 + rev = "740a22363033e9f1bb6270fbfb5a9574067af15b"; 97 fetchSubmodules = false; 98 deepClone = false; 99 leaveDotGit = false; 100 sparseCheckout = [ ]; 101 + sha256 = "sha256-yRKJ7gpVmXbX2ZcA8nFi6CMPkJXZGjie2unsiMzj3Ig="; 102 }; 103 + date = "2026-02-18"; 104 }; 105 nixos-wsl = { 106 pname = "nixos-wsl"; 107 + version = "379d20c55f552e91fb9f3f0382e4a97d3f452943"; 108 src = fetchgit { 109 url = "https://github.com/nix-community/NixOS-WSL"; 110 + rev = "379d20c55f552e91fb9f3f0382e4a97d3f452943"; 111 fetchSubmodules = false; 112 deepClone = false; 113 leaveDotGit = false; 114 sparseCheckout = [ ]; 115 + sha256 = "sha256-vA5hocvdGhr+jfBN7A7ogeZqIz2qx01EixXwdVsQcnE="; 116 }; 117 + date = "2026-02-20"; 118 }; 119 noctalia-dev = { 120 pname = "noctalia-dev"; 121 + version = "198a9f740d82997c0de7f1b52cfb92907f30bfca"; 122 src = fetchgit { 123 url = "https://github.com/noctalia-dev/noctalia-shell"; 124 + rev = "198a9f740d82997c0de7f1b52cfb92907f30bfca"; 125 fetchSubmodules = false; 126 deepClone = false; 127 leaveDotGit = false; 128 sparseCheckout = [ ]; 129 + sha256 = "sha256-c7O9D30C145cI5QlDxO/IemLbZHyU3SfP+ptOmyJdY0="; 130 }; 131 + date = "2026-02-21"; 132 }; 133 sops-nix = { 134 pname = "sops-nix"; 135 + version = "e85540ffe97322dc1fea14dd11cdc2f59d540ac7"; 136 src = fetchgit { 137 url = "https://github.com/Mic92/sops-nix"; 138 + rev = "e85540ffe97322dc1fea14dd11cdc2f59d540ac7"; 139 fetchSubmodules = false; 140 deepClone = false; 141 leaveDotGit = false; 142 sparseCheckout = [ ]; 143 + sha256 = "sha256-eksVUcUsfS9mQx4D9DrYu88u9w70bAf+n6KmTDuIGEE="; 144 }; 145 + date = "2026-02-19"; 146 }; 147 }
+131 -45
flake.lock
··· 20 "type": "github" 21 } 22 }, 23 "hjem": { 24 "inputs": { 25 "nix-darwin": [], ··· 29 "smfh": "smfh" 30 }, 31 "locked": { 32 - "lastModified": 1769053318, 33 - "narHash": "sha256-cKETEBrseo7Iz+bOzflwy1xTpDuUj3QaLA+P49yJw8k=", 34 "owner": "feel-co", 35 "repo": "hjem", 36 - "rev": "9d0c8d4b44f661910595b07e6480557644c1431c", 37 "type": "github" 38 }, 39 "original": { ··· 54 "treefmt-nix": [] 55 }, 56 "locked": { 57 - "lastModified": 1766394058, 58 - "narHash": "sha256-P+59TbVusYqdx2Jt2liwvQ+hslUzU6M1ezRDy6c66Tc=", 59 "owner": "snugnug", 60 "repo": "hjem-rum", 61 - "rev": "edac54b7d57ad72cc4b124da2f44e7b2e584f3c6", 62 "type": "github" 63 }, 64 "original": { ··· 74 ] 75 }, 76 "locked": { 77 - "lastModified": 1770654520, 78 - "narHash": "sha256-mg5WZMIPGsFu9MxSrUcuJUPMbfMsF77el5yb/7rc10k=", 79 "owner": "nix-community", 80 "repo": "home-manager", 81 - "rev": "6c4fdbe1ad198fac36c320fd45c5957324a80b8e", 82 "type": "github" 83 }, 84 "original": { ··· 89 }, 90 "mnw": { 91 "locked": { 92 - "lastModified": 1769981889, 93 - "narHash": "sha256-ndI7AxL/6auelkLHngdUGVImBiHkG8w2N2fOTKZKn4k=", 94 "owner": "Gerg-L", 95 "repo": "mnw", 96 - "rev": "332fed8f43b77149c582f1782683d6aeee1f07cf", 97 "type": "github" 98 }, 99 "original": { ··· 110 "xwayland-satellite-unstable": "xwayland-satellite-unstable" 111 }, 112 "locked": { 113 - "lastModified": 1770682715, 114 - "narHash": "sha256-3yEtMRAhKcQ8rLdy3xyD/BWcUsBkeG4jm4vVYExcl3E=", 115 "ref": "refs/heads/main", 116 - "rev": "30a736dd3b6c8129a395c934af92355a0debcb92", 117 - "revCount": 60, 118 "type": "git", 119 "url": "https://codeberg.org/BANanaD3V/niri-nix" 120 }, ··· 126 "niri-unstable": { 127 "flake": false, 128 "locked": { 129 - "lastModified": 1770394959, 130 - "narHash": "sha256-if7bIsomdceIufOhkFwN74rFY/pLCWPynRxGyol2viQ=", 131 "owner": "YaLTeR", 132 "repo": "niri", 133 - "rev": "ab47f5cec4c1c5758afeb91c0c98554ffd3433db", 134 "type": "github" 135 }, 136 "original": { ··· 168 }, 169 "nixpkgs": { 170 "locked": { 171 - "lastModified": 1770562336, 172 - "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", 173 "owner": "nixos", 174 "repo": "nixpkgs", 175 - "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", 176 "type": "github" 177 }, 178 "original": { ··· 184 }, 185 "nixpkgs_2": { 186 "locked": { 187 - "lastModified": 1770562336, 188 - "narHash": "sha256-MIMad536rq4nepqzYDTwuSDNQP+YuM0cfsvtcJJJItM=", 189 - "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", 190 "type": "tarball", 191 - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre942779.d6c719321308/nixexprs.tar.xz?lastModified=1770562336&rev=d6c71932130818840fc8fe9509cf50be8c64634f" 192 }, 193 "original": { 194 "type": "tarball", ··· 197 }, 198 "nixpkgs_3": { 199 "locked": { 200 - "lastModified": 1769461804, 201 - "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", 202 "owner": "nixos", 203 "repo": "nixpkgs", 204 - "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", 205 "type": "github" 206 }, 207 "original": { ··· 224 ] 225 }, 226 "locked": { 227 - "lastModified": 1770630823, 228 - "narHash": "sha256-5SEmOnJ61vmbap39vzWEsCX5UQ+3Ul8J4mXWKdqSn3w=", 229 "owner": "nix-community", 230 "repo": "nixvim", 231 - "rev": "6acc964664ac916c64fe4e394edd467af4d90790", 232 "type": "github" 233 }, 234 "original": { ··· 251 ] 252 }, 253 "locked": { 254 - "lastModified": 1770703021, 255 - "narHash": "sha256-gqb5psh3ydigaeAnOby4KwXAXtzU0uZK9AeRAYIw53g=", 256 "owner": "notashelf", 257 "repo": "nvf", 258 - "rev": "4d0d1884a00b32c034299fcd3e96f9e0cb68d23b", 259 "type": "github" 260 }, 261 "original": { ··· 275 "nixpkgs": "nixpkgs_2", 276 "nixvim": "nixvim", 277 "nvf": "nvf", 278 - "systems": "systems" 279 } 280 }, 281 "rust-overlay": { ··· 287 ] 288 }, 289 "locked": { 290 - "lastModified": 1763347184, 291 - "narHash": "sha256-6QH8hpCYJxifvyHEYg+Da0BotUn03BwLIvYo3JAxuqQ=", 292 "owner": "oxalica", 293 "repo": "rust-overlay", 294 - "rev": "08895cce80433978d5bfd668efa41c5e24578cbd", 295 "type": "github" 296 }, 297 "original": { ··· 312 ] 313 }, 314 "locked": { 315 - "lastModified": 1763430012, 316 - "narHash": "sha256-06G7pXUdpMnUqR0JWWvV7sA8oNGOZU1cSLqQS1GMf7Y=", 317 "owner": "feel-co", 318 "repo": "smfh", 319 - "rev": "eddda76e3dd4c6deaea5f819f174fc16dbe70f90", 320 "type": "github" 321 }, 322 "original": { ··· 325 "type": "github" 326 } 327 }, 328 "systems": { 329 "locked": { 330 "lastModified": 1689347949, ··· 340 "type": "github" 341 } 342 }, 343 "xwayland-satellite-unstable": { 344 "flake": false, 345 "locked": { 346 - "lastModified": 1770583271, 347 - "narHash": "sha256-Q75S8cEqJoZ92s1y4zArvk2U1ayAy2E4SaF7gbNXkYQ=", 348 "owner": "Supreeeme", 349 "repo": "xwayland-satellite", 350 - "rev": "86f5bd5d867ad6e120935dfe825f6b903ebbeddd", 351 "type": "github" 352 }, 353 "original": {
··· 20 "type": "github" 21 } 22 }, 23 + "flake-utils": { 24 + "inputs": { 25 + "systems": [ 26 + "systems" 27 + ] 28 + }, 29 + "locked": { 30 + "lastModified": 1731533236, 31 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 32 + "owner": "numtide", 33 + "repo": "flake-utils", 34 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 35 + "type": "github" 36 + }, 37 + "original": { 38 + "owner": "numtide", 39 + "repo": "flake-utils", 40 + "type": "github" 41 + } 42 + }, 43 + "gomod2nix": { 44 + "inputs": { 45 + "flake-utils": "flake-utils", 46 + "nixpkgs": [ 47 + "tangled", 48 + "nixpkgs" 49 + ] 50 + }, 51 + "locked": { 52 + "lastModified": 1763982521, 53 + "narHash": "sha256-ur4QIAHwgFc0vXiaxn5No/FuZicxBr2p0gmT54xZkUQ=", 54 + "owner": "nix-community", 55 + "repo": "gomod2nix", 56 + "rev": "02e63a239d6eabd595db56852535992c898eba72", 57 + "type": "github" 58 + }, 59 + "original": { 60 + "owner": "nix-community", 61 + "repo": "gomod2nix", 62 + "type": "github" 63 + } 64 + }, 65 "hjem": { 66 "inputs": { 67 "nix-darwin": [], ··· 71 "smfh": "smfh" 72 }, 73 "locked": { 74 + "lastModified": 1771212460, 75 + "narHash": "sha256-1RfmXbDIxgwP2/SrYSYd9zdArUaJEm6C3FXpdRlmeso=", 76 "owner": "feel-co", 77 "repo": "hjem", 78 + "rev": "7f2880d705edf541955d98f56cb78f9507384423", 79 "type": "github" 80 }, 81 "original": { ··· 96 "treefmt-nix": [] 97 }, 98 "locked": { 99 + "lastModified": 1771501078, 100 + "narHash": "sha256-Z2bux6QPs4lBzdiw5NdgPqk+BPF1H4lEu3C68ID7bYg=", 101 "owner": "snugnug", 102 "repo": "hjem-rum", 103 + "rev": "57175e2f6ab7caf212dd985ef810ec1cd9abf755", 104 "type": "github" 105 }, 106 "original": { ··· 116 ] 117 }, 118 "locked": { 119 + "lastModified": 1771647911, 120 + "narHash": "sha256-18liNHHwOmcaKCpOptE3wLW97fm5v7RTLiZBecX7km0=", 121 "owner": "nix-community", 122 "repo": "home-manager", 123 + "rev": "436b27742c996b75e2baf8e835e3b3eae0c9fbd4", 124 "type": "github" 125 }, 126 "original": { ··· 131 }, 132 "mnw": { 133 "locked": { 134 + "lastModified": 1770419553, 135 + "narHash": "sha256-b1XqsH7AtVf2dXmq2iyRr2NC1yG7skY7Z6N2MpWHlK4=", 136 "owner": "Gerg-L", 137 "repo": "mnw", 138 + "rev": "2aaffa8030d0b262176146adbb6b0e6374ce2957", 139 "type": "github" 140 }, 141 "original": { ··· 152 "xwayland-satellite-unstable": "xwayland-satellite-unstable" 153 }, 154 "locked": { 155 + "lastModified": 1771201162, 156 + "narHash": "sha256-2ecVvWTeanuLqSRIpKj+Y2QeaDyAeG/iNJdMwAOAgII=", 157 "ref": "refs/heads/main", 158 + "rev": "4ebc410878b0dc943eafb941f534e9b6c43726ef", 159 + "revCount": 64, 160 "type": "git", 161 "url": "https://codeberg.org/BANanaD3V/niri-nix" 162 }, ··· 168 "niri-unstable": { 169 "flake": false, 170 "locked": { 171 + "lastModified": 1771182017, 172 + "narHash": "sha256-lrXBx91NQAVoFeFUNZi46ZWP9M6tbBmT5BNsqSh8QOY=", 173 "owner": "YaLTeR", 174 "repo": "niri", 175 + "rev": "1fa0338a172a69b05a1a35d55b291693ff1bc29f", 176 "type": "github" 177 }, 178 "original": { ··· 210 }, 211 "nixpkgs": { 212 "locked": { 213 + "lastModified": 1771008912, 214 + "narHash": "sha256-gf2AmWVTs8lEq7z/3ZAsgnZDhWIckkb+ZnAo5RzSxJg=", 215 "owner": "nixos", 216 "repo": "nixpkgs", 217 + "rev": "a82ccc39b39b621151d6732718e3e250109076fa", 218 "type": "github" 219 }, 220 "original": { ··· 226 }, 227 "nixpkgs_2": { 228 "locked": { 229 + "lastModified": 1771008912, 230 + "narHash": "sha256-MUxwjvnO2hZitXm52phpSCcCv5Zx4DeVTAPZa8jcxtw=", 231 + "rev": "a82ccc39b39b621151d6732718e3e250109076fa", 232 "type": "tarball", 233 + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre945868.a82ccc39b39b/nixexprs.tar.xz?lastModified=1771008912&rev=a82ccc39b39b621151d6732718e3e250109076fa" 234 }, 235 "original": { 236 "type": "tarball", ··· 239 }, 240 "nixpkgs_3": { 241 "locked": { 242 + "lastModified": 1771008912, 243 + "narHash": "sha256-gf2AmWVTs8lEq7z/3ZAsgnZDhWIckkb+ZnAo5RzSxJg=", 244 "owner": "nixos", 245 "repo": "nixpkgs", 246 + "rev": "a82ccc39b39b621151d6732718e3e250109076fa", 247 "type": "github" 248 }, 249 "original": { ··· 266 ] 267 }, 268 "locked": { 269 + "lastModified": 1771135771, 270 + "narHash": "sha256-wyvBIhDuyCRyjB3yPg77qoyxrlgQtBR1rVW3c9knV3E=", 271 "owner": "nix-community", 272 "repo": "nixvim", 273 + "rev": "ed0424f0b08d303a7348f52f7850ad1b2704f9ba", 274 "type": "github" 275 }, 276 "original": { ··· 293 ] 294 }, 295 "locked": { 296 + "lastModified": 1771667684, 297 + "narHash": "sha256-EED6YOg3DdRwaehpt4oS3xDESKaGRH202N0WZEkl9iY=", 298 "owner": "notashelf", 299 "repo": "nvf", 300 + "rev": "39345e58341597b654c3331749b45e29686ca254", 301 "type": "github" 302 }, 303 "original": { ··· 317 "nixpkgs": "nixpkgs_2", 318 "nixvim": "nixvim", 319 "nvf": "nvf", 320 + "systems": "systems", 321 + "tangled": "tangled" 322 } 323 }, 324 "rust-overlay": { ··· 330 ] 331 }, 332 "locked": { 333 + "lastModified": 1771125043, 334 + "narHash": "sha256-ldf/s49n6rOAxl7pYLJGGS1N/assoHkCOWdEdLyNZkc=", 335 "owner": "oxalica", 336 "repo": "rust-overlay", 337 + "rev": "4912f951a26dc8142b176be2c2ad834319dc06e8", 338 "type": "github" 339 }, 340 "original": { ··· 355 ] 356 }, 357 "locked": { 358 + "lastModified": 1771208268, 359 + "narHash": "sha256-6zMgOPzBbTSm8jzPqmGcotjvkN3HzxcnMM8pW64JpZQ=", 360 "owner": "feel-co", 361 "repo": "smfh", 362 + "rev": "dd0a33fc9d1fe7c29da86225af4b4a47b1714839", 363 "type": "github" 364 }, 365 "original": { ··· 368 "type": "github" 369 } 370 }, 371 + "sqlite-lib-src": { 372 + "flake": false, 373 + "locked": { 374 + "lastModified": 1706631843, 375 + "narHash": "sha256-bJoMjirsBjm2Qk9KPiy3yV3+8b/POlYe76/FQbciHro=", 376 + "type": "tarball", 377 + "url": "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip" 378 + }, 379 + "original": { 380 + "type": "tarball", 381 + "url": "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip" 382 + } 383 + }, 384 "systems": { 385 "locked": { 386 "lastModified": 1689347949, ··· 396 "type": "github" 397 } 398 }, 399 + "tangled": { 400 + "inputs": { 401 + "actor-typeahead-src": [], 402 + "flake-compat": [], 403 + "gomod2nix": "gomod2nix", 404 + "htmx-src": [], 405 + "htmx-ws-src": [], 406 + "ibm-plex-mono-src": [], 407 + "indigo": [], 408 + "inter-fonts-src": [], 409 + "lucide-src": [], 410 + "nixpkgs": [ 411 + "nixpkgs" 412 + ], 413 + "sqlite-lib-src": "sqlite-lib-src" 414 + }, 415 + "locked": { 416 + "lastModified": 1771411022, 417 + "narHash": "sha256-em6gASXvT/UQvXTTOAiirQQCeBNLC/eI+noYqFIig+k=", 418 + "ref": "refs/heads/master", 419 + "rev": "1d0c1d8c05cb58d4ead517a1f41cb19d84dbe02f", 420 + "revCount": 1977, 421 + "type": "git", 422 + "url": "https://tangled.org/@tangled.org/core" 423 + }, 424 + "original": { 425 + "type": "git", 426 + "url": "https://tangled.org/@tangled.org/core" 427 + } 428 + }, 429 "xwayland-satellite-unstable": { 430 "flake": false, 431 "locked": { 432 + "lastModified": 1771195969, 433 + "narHash": "sha256-BUE41HjLIGPjq3U8VXPjf8asH8GaMI7FYdgrIHKFMXA=", 434 "owner": "Supreeeme", 435 "repo": "xwayland-satellite", 436 + "rev": "536bd32efc935bf876d6de385ec18a1b715c9358", 437 "type": "github" 438 }, 439 "original": {
+21 -9
flake.nix
··· 17 inputs.nixpkgs.follows = "nixpkgs"; 18 # No useless inputs 19 inputs.nix-darwin.follows = ""; # I don't use nix-darwin machine 20 inputs.smfh.inputs.systems.follows = "systems"; 21 }; 22 # Modules for hjem ··· 72 inputs.git-hooks.follows = ""; 73 }; 74 75 # Boilerplate 76 systems.url = "github:nix-systems/default-linux"; 77 ··· 124 inputs: 125 let 126 # Function to stop using `import-tree` by Vic. 127 - # Just to lighten the config a bit, written by https://codeberg.org/BANanaD3V 128 - # Adaptation stolen from @iynai 129 - inherit (inputs.nixpkgs.lib.fileset) toList fileFilter; 130 - import-tree = 131 - paths: 132 - toList ( 133 - fileFilter (file: file.hasExt "nix" && !(inputs.nixpkgs.lib.hasPrefix "_" file.name)) paths 134 - ); 135 136 # a way to fetch nix files via nvfetcher and import them in the config 137 # basically parse the json crated by nvfetcher, and use fetchTarball ··· 156 specialArgs = { inherit modules; }; 157 } 158 { 159 - imports = import-tree ./modules; 160 flake.templates = import ./templates; 161 }; 162 }
··· 17 inputs.nixpkgs.follows = "nixpkgs"; 18 # No useless inputs 19 inputs.nix-darwin.follows = ""; # I don't use nix-darwin machine 20 + # inputs.smfh.follows = ""; 21 inputs.smfh.inputs.systems.follows = "systems"; 22 }; 23 # Modules for hjem ··· 73 inputs.git-hooks.follows = ""; 74 }; 75 76 + # Tangled, git hosting 77 + tangled = { 78 + url = "git+https://tangled.org/@tangled.org/core"; 79 + # No useless inputs 80 + inputs.nixpkgs.follows = "nixpkgs"; 81 + inputs.gomod2nix.inputs.flake-utils.inputs.systems.follows = "systems"; 82 + inputs.flake-compat.follows = ""; 83 + inputs.indigo.follows = ""; 84 + inputs.htmx-src.follows = ""; 85 + inputs.htmx-ws-src.follows = ""; 86 + inputs.lucide-src.follows = ""; 87 + inputs.inter-fonts-src.follows = ""; 88 + inputs.actor-typeahead-src.follows = ""; 89 + inputs.ibm-plex-mono-src.follows = ""; 90 + # inputs.sqlite-lib-src.follows = ""; 91 + }; 92 + 93 # Boilerplate 94 systems.url = "github:nix-systems/default-linux"; 95 ··· 142 inputs: 143 let 144 # Function to stop using `import-tree` by Vic. 145 + # Just to lighten the config a bit, written by @llakala https://github.com/llakala/synaptic-standard/blob/main/demo/recursivelyImport.nix 146 + import-tree = import ./stuff/recursivelyImport.nix { lib = inputs.nixpkgs.lib; }; 147 148 # a way to fetch nix files via nvfetcher and import them in the config 149 # basically parse the json crated by nvfetcher, and use fetchTarball ··· 168 specialArgs = { inherit modules; }; 169 } 170 { 171 + imports = import-tree [ ./modules ]; 172 flake.templates = import ./templates; 173 }; 174 }
install/impermanence.norg stuff/impermanence.norg
install/zfs.norg stuff/zfs.norg
+1 -1
modules/hjemModules/Terminals/git.nix
··· 11 init.defaultBranch = "master"; 12 gpg.format = "ssh"; 13 #it can't read it. permission error or something 14 - user.signingkey = "~/.ssh/NixToks.pub"; 15 # commit.gpgsign = true; 16 aliases = { 17 cm = "commit -m";
··· 11 init.defaultBranch = "master"; 12 gpg.format = "ssh"; 13 #it can't read it. permission error or something 14 + user.signingkey = "~/.ssh/NixToks"; 15 # commit.gpgsign = true; 16 aliases = { 17 cm = "commit -m";
-1
modules/hjemModules/imv.nix
··· 1 { 2 flake.modules.hjem.imv = { 3 - # imv rum module from https://github.com/snugnug/hjem-rum/pull/160 4 rum.programs.imv = { 5 enable = true; 6 settings = {
··· 1 { 2 flake.modules.hjem.imv = { 3 rum.programs.imv = { 4 enable = true; 5 settings = {
-50
modules/homeBrew/chawan.nix
··· 1 - { 2 - flake.modules.hjem.chawan-brew = 3 - { 4 - config, 5 - lib, 6 - pkgs, 7 - ... 8 - }: 9 - let 10 - inherit (lib.modules) mkIf; 11 - inherit (lib.options) mkOption mkEnableOption mkPackageOption; 12 - 13 - toml = pkgs.formats.toml { }; 14 - 15 - cfg = config.rum.programs.chawan; 16 - in 17 - { 18 - options.rum.programs.chawan = { 19 - enable = mkEnableOption "chawan"; 20 - 21 - package = mkPackageOption pkgs "chawan" { nullable = true; }; 22 - 23 - settings = mkOption { 24 - type = toml.type; 25 - default = { }; 26 - example = { 27 - buffer = { 28 - images = true; 29 - autofocus = true; 30 - }; 31 - page."C-k" = "() => pager.load('ddg:')"; 32 - }; 33 - description = '' 34 - Configuration written to {file}`$XDG_CONFIG_HOME/chawan/config.toml`. 35 - Please reference [chawan's documentation] for config options. 36 - 37 - [chawan's documentation]: https://git.sr.ht/~bptato/chawan/tree/master/doc/config.md 38 - ''; 39 - }; 40 - }; 41 - 42 - config = mkIf cfg.enable { 43 - packages = mkIf (cfg.package != null) [ cfg.package ]; 44 - xdg.config.files."chawan/config.toml" = mkIf (cfg.settings != { }) { 45 - source = toml.generate "chawan-config.toml" cfg.settings; 46 - }; 47 - }; 48 - }; 49 - 50 - }
···
-3
modules/homeBrew/default.nix
··· 6 mpdris2-brew 7 syncthing-brew 8 userDirs-brew 9 - fastfetch-brew 10 - imv-brew 11 - chawan-brew 12 ]; 13 }
··· 6 mpdris2-brew 7 syncthing-brew 8 userDirs-brew 9 ]; 10 }
-62
modules/homeBrew/fastfetch.nix
··· 1 - { 2 - flake.modules.hjem.fastfetch-brew = 3 - { 4 - lib, 5 - pkgs, 6 - config, 7 - ... 8 - }: 9 - let 10 - inherit (lib) 11 - mkEnableOption 12 - mkPackageOption 13 - mkOption 14 - mkIf 15 - ; 16 - json = pkgs.formats.json { }; 17 - cfg = config.rum.programs.fastfetch; 18 - 19 - in 20 - { 21 - 22 - options.rum.programs.fastfetch = { 23 - enable = mkEnableOption "Fastfetch"; 24 - 25 - package = mkPackageOption pkgs "fastfetch" { nullable = true; }; 26 - 27 - settings = mkOption { 28 - type = json.type; 29 - default = { }; 30 - example = { 31 - logo.source = "nixos_old_small"; 32 - display = { 33 - constants = [ "██ " ]; 34 - }; 35 - modules = [ 36 - { 37 - key = "{$1}Distro"; 38 - keyColor = "38;5;210"; 39 - type = "os"; 40 - } 41 - ]; 42 - }; 43 - description = '' 44 - The configuration written to {file}`$XDG_CONFIG_HOME/fastfetch/config.jsonc`. 45 - Please reference [Json Schema] for more information. 46 - 47 - [Json Schema]: https://gitlab.com/CarterLi/fastfetch/-/wikis/Json-Schema 48 - ''; 49 - }; 50 - }; 51 - 52 - config = mkIf cfg.enable { 53 - packages = lib.mkIf (cfg.package != null) [ cfg.package ]; 54 - 55 - xdg.config.files = { 56 - "fastfetch/config.jsonc" = mkIf (cfg.settings != { }) { 57 - source = json.generate "fastfetch-config.jsonc" cfg.settings; 58 - }; 59 - }; 60 - }; 61 - }; 62 - }
···
-59
modules/homeBrew/imv.nix
··· 1 - { 2 - flake.modules.hjem.imv-brew = 3 - { 4 - lib, 5 - pkgs, 6 - config, 7 - ... 8 - }: 9 - let 10 - inherit (lib.modules) mkIf; 11 - inherit (lib.options) mkOption mkEnableOption mkPackageOption; 12 - 13 - ini = pkgs.formats.ini { }; 14 - 15 - cfg = config.rum.programs.imv; 16 - 17 - optionsFile = ini.generate "imv-options.ini" { 18 - options = cfg.settings.options or { }; 19 - }; 20 - aliasesFile = ini.generate "imv-aliases.ini" { 21 - aliases = cfg.settings.aliases or { }; 22 - }; 23 - bindsFile = ini.generate "imv-binds.ini" { 24 - binds = cfg.settings.binds or { }; 25 - }; 26 - in 27 - { 28 - options.rum.programs.imv = { 29 - enable = mkEnableOption "imv"; 30 - 31 - package = mkPackageOption pkgs "imv" { nullable = true; }; 32 - 33 - settings = mkOption { 34 - type = ini.type; 35 - default = { }; 36 - example = { 37 - options.background = "ffffff"; 38 - aliases.x = "close"; 39 - }; 40 - description = '' 41 - Settings are written as an INI file to {file}`$XDG_CONFIG_HOME/imv/config`. 42 - The lists are separated between options, aliases, and binds. 43 - Please reference {manpage}`IMV(5)` to configure it accordingly. 44 - ''; 45 - }; 46 - }; 47 - 48 - config = mkIf cfg.enable { 49 - packages = mkIf (cfg.package != null) [ cfg.package ]; 50 - xdg.config.files."imv/config" = mkIf (cfg.settings != { }) { 51 - source = pkgs.concatText "imv-config.ini" [ 52 - optionsFile 53 - aliasesFile 54 - bindsFile 55 - ]; 56 - }; 57 - }; 58 - }; 59 - }
···
+3 -1
modules/hosts/NixToks/imports.nix
··· 17 cat-mocha 18 general 19 cache 20 - grub 21 nix 22 sops 23 tailscale ··· 45 fish 46 yt-dlp-NixToks 47 48 # Modules 49 # Users 50 root
··· 17 cat-mocha 18 general 19 cache 20 + grub-efi 21 nix 22 sops 23 tailscale ··· 45 fish 46 yt-dlp-NixToks 47 48 + # temporary 49 + # tangled 50 # Modules 51 # Users 52 root
+44
modules/hosts/NixWool/hardware-configuration.nix
···
··· 1 + { 2 + flake.modules.nixos.NixWool = 3 + { 4 + lib, 5 + modulesPath, 6 + pkgs, 7 + ... 8 + }: 9 + { 10 + imports = [ 11 + (modulesPath + "/installer/scan/not-detected.nix") 12 + (modulesPath + "/profiles/qemu-guest.nix") 13 + ]; 14 + 15 + boot.initrd.availableKernelModules = [ 16 + "ahci" 17 + "virtio_pci" 18 + "sd_mod" 19 + "sr_mod" 20 + "xhci_pci" 21 + "virtio_scsi" 22 + ]; 23 + boot.initrd.kernelModules = [ "virtio_gpu" ]; 24 + boot.kernelModules = [ 25 + "nls_cp437" 26 + "nls_iso8859-1" 27 + ]; 28 + boot.kernelParams = [ "console=tty" ]; 29 + boot.extraModulePackages = [ ]; 30 + # Xanmod broken on aarch64-linux, idk 31 + boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_18; 32 + 33 + swapDevices = [ { label = "SWAP"; } ]; 34 + 35 + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 36 + # (the default) this is the recommended approach. When using systemd-networkd it's 37 + # still possible to use this option, but it's recommended to use it in conjunction 38 + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 39 + networking.useDHCP = lib.mkDefault true; 40 + # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; 41 + 42 + nixpkgs.hostPlatform = "aarch64-linux"; 43 + }; 44 + }
+59
modules/hosts/NixWool/imports.nix
···
··· 1 + { config, ... }: 2 + let 3 + custom.meta = { 4 + hostname = "NixWool"; 5 + self = "git+https://tangled.org/ladas552.me/flake-ocean"; 6 + isTermux = false; 7 + norg = null; 8 + }; 9 + in 10 + { 11 + flake.modules.nixvim.NixWool.imports = [ { inherit custom; } ]; 12 + flake.modules.nvf.NixWool.imports = [ { inherit custom; } ]; 13 + flake.modules.nixos."hosts/NixWool".imports = 14 + with config.flake.modules.nixos; 15 + [ 16 + { inherit custom; } 17 + NixWool 18 + # Modules 19 + cache 20 + general 21 + imp 22 + nh 23 + nix 24 + openssh 25 + systemd-boot 26 + sops 27 + tailscale 28 + zfs 29 + network-manager 30 + fish 31 + bluesky-pds 32 + tangled 33 + # Users 34 + root 35 + ladas552 36 + ] 37 + # Specific Home-Manager modules 38 + ++ [ 39 + { 40 + home-manager.users."${config.custom.meta.user}".imports = with config.flake.modules.homeManager; [ 41 + { inherit custom; } 42 + NixWool 43 + lf 44 + ]; 45 + } 46 + ] 47 + 48 + ++ [ 49 + { 50 + hjem.users."${config.custom.meta.user}".imports = with config.flake.modules.hjem; [ 51 + { inherit custom; } 52 + direnv 53 + git 54 + fastfetch 55 + nvf 56 + ]; 57 + } 58 + ]; 59 + }
+69
modules/hosts/NixWool/install.sh
···
··· 1 + # installation script for Hetzner VPS, I just loaded a standart nix iso in there 2 + # Stolen from @Jet https://github.com/Michael-C-Buckley/nixos/blob/master/modules/hosts/o1/tools/format.sh 3 + 4 + # find a way to put keys for secrets into respective directories yourself 5 + # My way is to `sudo passwd` a new root password and `ssh root@ip` into the vps 6 + # Then just `scp ./keys.txt root@ip:/root` 7 + 8 + #!/usr/bin/env bash 9 + set -euo pipefail 10 + 11 + ZFS_OPTS="-o ashift=12 \ 12 + -O compression=zstd \ 13 + -O atime=off \ 14 + -O xattr=sa \ 15 + -O acltype=posixacl \ 16 + -O dnodesize=auto \ 17 + -O normalization=formD \ 18 + -O mountpoint=none" 19 + 20 + hostname="NixWool" 21 + 22 + read -rp "This will erase the drives, as you sure? [y/N]" confirm 23 + if [[ $confirm =~ ^[Yy]$ ]]; then 24 + echo "Proceeding..." 25 + else 26 + echo "Aborted." 27 + exit 1 28 + fi 29 + 30 + echo "Wiping drives..." 31 + # Wipe the NVMe 32 + wipefs -a /dev/sda 33 + sgdisk --zap-all /dev/sda 34 + 35 + echo "Formatting drives..." 36 + # Put boot on the NVMe then fill the rest with ZFS 37 + sgdisk -n1:1M:+512M -t1:EF00 -c1:"NIXBOOT" /dev/sda 38 + sgdisk -n2:0:+4G -t2:8200 -c2:"Linux Swap" /dev/sda 39 + sgdisk -n3:0:0 -t3:BF01 -c3:"ZROOT" /dev/sda 40 + 41 + # Format the boot partition 42 + mkfs.vfat -n NIXBOOT -F32 /dev/sda1 43 + 44 + # Swap 45 + mkswap -L SWAP /dev/sda2 46 + swapon /dev/sda2 47 + 48 + # Create the pool on the drive, use reasonable settings 49 + echo "Creating zroot..." 50 + zpool create -f $ZFS_OPTS zroot /dev/sda3 51 + 52 + # Mount the drives and prepare for the install 53 + mkdir -p /mnt 54 + mkdir -p /mnt/{cache,nix,persist,tmp,boot} 55 + mount /dev/sda1 /mnt/boot 56 + 57 + # This create the zvols used in this cluster 58 + for zvol in "tmp" "nix" "cache" "persist"; do 59 + zfs create -o mountpoint=legacy zroot/$zvol 60 + mount -t zfs zroot/$zvol /mnt/$zvol 61 + done 62 + 63 + mkdir -p /mnt/persist/home/ladas552/.ssh 64 + mkdir -p /mnt/persist/home/ladas552/.config/sops/age 65 + cp ./NixToks /mnt/persist/home/ladas552/.ssh/ 66 + cp ./keys.txt /mnt/persist/home/ladas552/.config/sops/age/ 67 + 68 + nixos-install --no-root-password --flake "github:Ladas552/Flake-Ocean#NixWool" 69 +
+110
modules/hosts/NixWool/nixwool.nix
···
··· 1 + { 2 + flake.modules = { 3 + nixos.NixWool = 4 + { 5 + pkgs, 6 + lib, 7 + config, 8 + ... 9 + }: 10 + { 11 + nix = { 12 + distributedBuilds = true; 13 + buildMachines = [ 14 + { 15 + hostName = "NixToks"; 16 + sshUser = "ladas552"; 17 + protocol = "ssh-ng"; 18 + systems = [ 19 + "x86_64-linux" 20 + "aarch64-linux" 21 + ]; 22 + maxJobs = 16; 23 + speedFactor = 6; 24 + supportedFeatures = [ 25 + "big-parallel" 26 + "kvm" 27 + "nixos-test" 28 + ]; 29 + } 30 + ]; 31 + }; 32 + # Standalone Packages 33 + environment.systemPackages = with pkgs; [ 34 + libqalculate 35 + lshw 36 + ]; 37 + 38 + # Environmental Variables 39 + environment.variables = { 40 + NIX_REMOTE = "daemon"; 41 + }; 42 + 43 + services.sshguard.enable = true; 44 + # I chowned this directories `sudo chown -R ladas552:caddy /var/www` 45 + users.users."${config.custom.meta.user}".extraGroups = [ "caddy" ]; 46 + services.caddy = { 47 + enable = true; 48 + globalConfig = '' 49 + email me@ladas552.me 50 + ''; 51 + virtualHosts = { 52 + "www.ladas552.me" = { 53 + extraConfig = ''respond "Blog: https://blog.ladas552.me Nix-Docs: https://nix.ladas552.me Git-Hosting: https://tangled.org/did:plc:6ikdlkw64mrjygj6cea62kn4 GitHub: https://github.com/Ladas552"''; 54 + }; 55 + "blog.ladas552.me" = { 56 + extraConfig = '' 57 + root * /var/www/blog 58 + file_server 59 + encode gzip 60 + ''; 61 + }; 62 + "nix.ladas552.me" = { 63 + extraConfig = '' 64 + root * /var/www/nix 65 + file_server 66 + encode gzip 67 + ''; 68 + }; 69 + }; 70 + }; 71 + 72 + # ZFS needs it 73 + networking.hostId = "fcb8b0b0"; 74 + 75 + # No 76 + system.stateVersion = "26.05"; # Did you read the comment? 77 + 78 + # It's a 2 vCPU server 79 + nix.settings = { 80 + cores = lib.mkForce 1; 81 + max-jobs = lib.mkForce 1; 82 + }; 83 + 84 + # I don't have firewall enabled, firewall is managed by hetzner, but just to be sure I added these ports 85 + networking.firewall.allowedTCPPorts = [ 86 + 80 87 + 443 88 + 22 89 + 3000 90 + ]; 91 + networking.firewall.allowedUDPPorts = [ 92 + 443 93 + 22 94 + ]; 95 + 96 + environment.persistence."/cache".directories = [ 97 + { 98 + directory = "/var/www"; 99 + mode = "0755"; 100 + user = "ladas552"; 101 + group = "caddy"; 102 + } 103 + ]; 104 + }; 105 + homeManager.NixWool = { 106 + # Don't change 107 + home.stateVersion = "26.05"; # Please read the comment before changing. 108 + }; 109 + }; 110 + }
+14
modules/nixosModules/Boot/grub-legacy.nix
···
··· 1 + { 2 + flake.modules.nixos.grub-legacy = { 3 + # GRUB Bootloader for legacy (no efi, msdos table) systems 4 + boot = { 5 + initrd.systemd.enable = true; 6 + loader.grub = { 7 + enable = true; 8 + efiSupport = false; 9 + device = "/dev/sda"; 10 + timeoutStyle = "hidden"; 11 + }; 12 + }; 13 + }; 14 + }
+1 -1
modules/nixosModules/Boot/grub.nix modules/nixosModules/Boot/grub-efi.nix
··· 1 { 2 - flake.modules.nixos.grub = { 3 # GRUB Bootloader 4 boot = { 5 initrd.systemd.enable = true;
··· 1 { 2 + flake.modules.nixos.grub-efi = { 3 # GRUB Bootloader 4 boot = { 5 initrd.systemd.enable = true;
+6
modules/nixosModules/Connections/openssh/home.nix
··· 25 identityFile = [ "~/.ssh/NixToks.pub" ]; 26 }; 27 28 matchBlocks."aur.archlinux.org" = { 29 host = "aur.archlinux.org"; 30 user = "aur";
··· 25 identityFile = [ "~/.ssh/NixToks.pub" ]; 26 }; 27 28 + matchBlocks."git.ladas552.me" = { 29 + host = "git.ladas552.me"; 30 + user = "git"; 31 + identityFile = [ "~/.ssh/NixToks" ]; 32 + }; 33 + 34 matchBlocks."aur.archlinux.org" = { 35 host = "aur.archlinux.org"; 36 user = "aur";
+6 -6
modules/nixosModules/Desktops/niri/niri-flake.nix
··· 276 # GUI apps 277 "Super+F".spawn = "thunar"; 278 "Super+W".spawn = "librewolf"; 279 - "Shift+Super+W".spawn-sh = "helium"; 280 # MPD 281 "Shift+Alt+P" = { 282 spawn = [ ··· 640 }; 641 }; 642 }; 643 homeManager.niri-flake = { 644 imports = [ inputs.niri.homeModules.default ]; 645 wayland.windowManager.niri = { ··· 647 inherit settings; 648 }; 649 }; 650 - hjem.niri-flake = 651 - { pkgs, ... }: 652 - { 653 - xdg.config.files."niri/config.kdl".text = inputs.niri.lib.mkNiriKDL settings; 654 - }; 655 }; 656 }
··· 276 # GUI apps 277 "Super+F".spawn = "thunar"; 278 "Super+W".spawn = "librewolf"; 279 + "Shift+Super+W".spawn-sh = "helium &"; 280 # MPD 281 "Shift+Alt+P" = { 282 spawn = [ ··· 640 }; 641 }; 642 }; 643 + 644 homeManager.niri-flake = { 645 imports = [ inputs.niri.homeModules.default ]; 646 wayland.windowManager.niri = { ··· 648 inherit settings; 649 }; 650 }; 651 + 652 + hjem.niri-flake = { 653 + xdg.config.files."niri/config.kdl".text = inputs.niri.lib.mkNiriKDL settings; 654 + }; 655 }; 656 }
+55 -25
modules/nixosModules/Desktops/niri/noct/settings.json
··· 1 { 2 - "settingsVersion": 49, 3 "bar": { 4 "barType": "simple", 5 "position": "left", ··· 99 "labelMode": "index", 100 "occupiedColor": "secondary", 101 "pillSize": 0.6, 102 - "reverseScroll": false, 103 "showApplications": true, 104 "showBadge": true, 105 "showLabelsOnlyWhenOccupied": true, ··· 191 "animationSpeed": 1.5, 192 "animationDisabled": false, 193 "compactLockScreen": false, 194 - "lockScreenAnimations": false, 195 "lockOnSuspend": true, 196 "showSessionButtonsOnLockScreen": true, 197 "showHibernateOnLockScreen": false, ··· 207 "lockScreenCountdownDuration": 10000, 208 "autoStartAuth": false, 209 "allowPasswordWithFprintd": false, 210 - "clockStyle": "custom", 211 "clockFormat": "hh\\nmm", 212 "lockScreenMonitors": [], 213 "keybinds": { 214 - "keyUp": "Up", 215 - "keyDown": "Down", 216 - "keyLeft": "Left", 217 - "keyRight": "Right", 218 - "keyEnter": "Return", 219 - "keyEscape": "Esc" 220 - } 221 }, 222 "ui": { 223 "fontDefault": "JetBrainsMono Nerd Font Mono", ··· 282 "randomIntervalSec": 600, 283 "transitionDuration": 1500, 284 "transitionType": "random", 285 "transitionEdgeSmoothness": 0.05, 286 "panelPosition": "top_left", 287 "hideWallpaperFilenames": true, ··· 298 "wallhavenResolutionMode": "atleast", 299 "wallhavenResolutionWidth": "", 300 "wallhavenResolutionHeight": "", 301 - "sortOrder": "name" 302 }, 303 "appLauncher": { 304 "enableClipboardHistory": false, ··· 320 "showIconBackground": false, 321 "enableSettingsSearch": false, 322 "enableWindowsSearch": true, 323 "ignoreMouseInput": false, 324 "screenshotAnnotationTool": "", 325 "overviewLayer": true, ··· 396 "diskAvailCriticalThreshold": 10, 397 "batteryWarningThreshold": 30, 398 "batteryCriticalThreshold": 5, 399 - "cpuPollingInterval": 1000, 400 - "gpuPollingInterval": 3000, 401 "enableDgpuMonitoring": false, 402 - "memPollingInterval": 1000, 403 - "diskPollingInterval": 3000, 404 - "networkPollingInterval": 1000, 405 - "loadAvgPollingInterval": 3000, 406 "useCustomColors": false, 407 "warningColor": "#94e2d5", 408 "criticalColor": "#f38ba8", ··· 412 "enabled": false, 413 "position": "bottom", 414 "displayMode": "auto_hide", 415 "backgroundOpacity": 1, 416 "floatingRatio": 0, 417 "size": 1, ··· 422 "pinnedStatic": false, 423 "inactiveIndicators": false, 424 "deadOpacity": 0.6, 425 - "animationSpeed": 1 426 }, 427 "network": { 428 "wifiEnabled": true, 429 "bluetoothRssiPollingEnabled": false, 430 "bluetoothRssiPollIntervalMs": 10000, 431 "wifiDetailsViewMode": "grid", 432 "bluetoothDetailsViewMode": "grid", 433 - "bluetoothHideUnnamedDevices": false 434 }, 435 "sessionMenu": { 436 "enableCountdown": false, 437 "countdownDuration": 10000, 438 "position": "center", 439 "showHeader": false, 440 "largeButtonsStyle": false, 441 "largeButtonsLayout": "single-row", 442 - "showNumberLabels": true, 443 "powerOptions": [ 444 { 445 "action": "lock", 446 "command": "", 447 "countdownEnabled": false, 448 "enabled": true, 449 - "keybind": "" 450 }, 451 { 452 "action": "suspend", 453 "command": "", 454 "countdownEnabled": false, 455 "enabled": true, 456 - "keybind": "" 457 }, 458 { 459 "action": "hibernate", ··· 467 "command": "", 468 "countdownEnabled": false, 469 "enabled": true, 470 - "keybind": "" 471 }, 472 { 473 "action": "logout", ··· 481 "command": "", 482 "countdownEnabled": false, 483 "enabled": true, 484 "keybind": "" 485 } 486 ] 487 }, 488 "notifications": { 489 "enabled": true, 490 "monitors": [], 491 "location": "top_right", 492 "overlayLayer": true, ··· 495 "lowUrgencyDuration": 3, 496 "normalUrgencyDuration": 3, 497 "criticalUrgencyDuration": 30, 498 "saveToHistory": { 499 "low": false, 500 "normal": true, ··· 530 "volumeStep": 5, 531 "volumeOverdrive": false, 532 "cavaFrameRate": 30, 533 - "visualizerType": "mirrored", 534 "mprisBlacklist": [], 535 "preferredPlayer": "mpd", 536 "volumeFeedback": false
··· 1 { 2 + "settingsVersion": 53, 3 "bar": { 4 "barType": "simple", 5 "position": "left", ··· 99 "labelMode": "index", 100 "occupiedColor": "secondary", 101 "pillSize": 0.6, 102 "showApplications": true, 103 "showBadge": true, 104 "showLabelsOnlyWhenOccupied": true, ··· 190 "animationSpeed": 1.5, 191 "animationDisabled": false, 192 "compactLockScreen": false, 193 + "lockScreenAnimations": true, 194 "lockOnSuspend": true, 195 "showSessionButtonsOnLockScreen": true, 196 "showHibernateOnLockScreen": false, ··· 206 "lockScreenCountdownDuration": 10000, 207 "autoStartAuth": false, 208 "allowPasswordWithFprintd": false, 209 + "clockStyle": "digital", 210 "clockFormat": "hh\\nmm", 211 + "passwordChars": false, 212 "lockScreenMonitors": [], 213 + "lockScreenBlur": 0.8, 214 + "lockScreenTint": 0.8, 215 "keybinds": { 216 + "keyUp": [ 217 + "Up" 218 + ], 219 + "keyDown": [ 220 + "Down" 221 + ], 222 + "keyLeft": [ 223 + "Left" 224 + ], 225 + "keyRight": [ 226 + "Right" 227 + ], 228 + "keyEnter": [ 229 + "Return" 230 + ], 231 + "keyEscape": [ 232 + "Esc" 233 + ], 234 + "keyRemove": [ 235 + "Del" 236 + ] 237 + }, 238 + "reverseScroll": false 239 }, 240 "ui": { 241 "fontDefault": "JetBrainsMono Nerd Font Mono", ··· 300 "randomIntervalSec": 600, 301 "transitionDuration": 1500, 302 "transitionType": "random", 303 + "skipStartupTransition": true, 304 "transitionEdgeSmoothness": 0.05, 305 "panelPosition": "top_left", 306 "hideWallpaperFilenames": true, ··· 317 "wallhavenResolutionMode": "atleast", 318 "wallhavenResolutionWidth": "", 319 "wallhavenResolutionHeight": "", 320 + "sortOrder": "name", 321 + "favorites": [] 322 }, 323 "appLauncher": { 324 "enableClipboardHistory": false, ··· 340 "showIconBackground": false, 341 "enableSettingsSearch": false, 342 "enableWindowsSearch": true, 343 + "enableSessionSearch": true, 344 "ignoreMouseInput": false, 345 "screenshotAnnotationTool": "", 346 "overviewLayer": true, ··· 417 "diskAvailCriticalThreshold": 10, 418 "batteryWarningThreshold": 30, 419 "batteryCriticalThreshold": 5, 420 "enableDgpuMonitoring": false, 421 "useCustomColors": false, 422 "warningColor": "#94e2d5", 423 "criticalColor": "#f38ba8", ··· 427 "enabled": false, 428 "position": "bottom", 429 "displayMode": "auto_hide", 430 + "dockType": "floating", 431 "backgroundOpacity": 1, 432 "floatingRatio": 0, 433 "size": 1, ··· 438 "pinnedStatic": false, 439 "inactiveIndicators": false, 440 "deadOpacity": 0.6, 441 + "animationSpeed": 1, 442 + "sitOnFrame": false, 443 + "showFrameIndicator": true 444 }, 445 "network": { 446 "wifiEnabled": true, 447 + "airplaneModeEnabled": false, 448 "bluetoothRssiPollingEnabled": false, 449 "bluetoothRssiPollIntervalMs": 10000, 450 "wifiDetailsViewMode": "grid", 451 "bluetoothDetailsViewMode": "grid", 452 + "bluetoothHideUnnamedDevices": false, 453 + "disableDiscoverability": false 454 }, 455 "sessionMenu": { 456 "enableCountdown": false, 457 "countdownDuration": 10000, 458 "position": "center", 459 "showHeader": false, 460 + "showKeybinds": true, 461 "largeButtonsStyle": false, 462 "largeButtonsLayout": "single-row", 463 "powerOptions": [ 464 { 465 "action": "lock", 466 "command": "", 467 "countdownEnabled": false, 468 "enabled": true, 469 + "keybind": "1" 470 }, 471 { 472 "action": "suspend", 473 "command": "", 474 "countdownEnabled": false, 475 "enabled": true, 476 + "keybind": "2" 477 }, 478 { 479 "action": "hibernate", ··· 487 "command": "", 488 "countdownEnabled": false, 489 "enabled": true, 490 + "keybind": "3" 491 }, 492 { 493 "action": "logout", ··· 501 "command": "", 502 "countdownEnabled": false, 503 "enabled": true, 504 + "keybind": "4" 505 + }, 506 + { 507 + "action": "rebootToUefi", 508 + "command": "", 509 + "countdownEnabled": true, 510 + "enabled": true, 511 "keybind": "" 512 } 513 ] 514 }, 515 "notifications": { 516 "enabled": true, 517 + "enableMarkdown": false, 518 + "density": "default", 519 "monitors": [], 520 "location": "top_right", 521 "overlayLayer": true, ··· 524 "lowUrgencyDuration": 3, 525 "normalUrgencyDuration": 3, 526 "criticalUrgencyDuration": 30, 527 + "clearDismissed": true, 528 "saveToHistory": { 529 "low": false, 530 "normal": true, ··· 560 "volumeStep": 5, 561 "volumeOverdrive": false, 562 "cavaFrameRate": 30, 563 + "visualizerType": "wave", 564 "mprisBlacklist": [], 565 "preferredPlayer": "mpd", 566 "volumeFeedback": false
+1 -1
modules/nixosModules/Games/emulators.nix
··· 11 # snes9x-gtk 12 # https://github.com/NixOS/nixpkgs/issues/461665 13 # punes 14 - melonDS 15 # doesn't work retroarchFull 16 # too complex and need a special controller mame 17 ];
··· 11 # snes9x-gtk 12 # https://github.com/NixOS/nixpkgs/issues/461665 13 # punes 14 + melonds 15 # doesn't work retroarchFull 16 # too complex and need a special controller mame 17 ];
+50
modules/nixosModules/Server/bluesky-pds.nix
···
··· 1 + # bluesky social federation 2 + # stolen from @SapphoSys https://github.com/SapphoSys/flake/blob/1d8ef92b389c467a83403cbaf7681352d7a53434/services/bluesky-pds/default.nix 3 + { 4 + flake.modules.nixos.bluesky-pds = 5 + { lib, config, ... }: 6 + { 7 + # secrets 8 + sops.secrets."mystuff/bluesky-pdsJWT" = { }; 9 + sops.secrets."mystuff/bluesky-pdsADMIN" = { }; 10 + sops.secrets."mystuff/bluesky-pdsKEY" = { }; 11 + sops.templates."bluesky-pds-secrets".content = '' 12 + PDS_JWT_SECRET="${config.sops.placeholder."mystuff/bluesky-pdsJWT"}" 13 + PDS_ADMIN_PASSWORD="${config.sops.placeholder."mystuff/bluesky-pdsADMIN"}" 14 + PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX="${config.sops.placeholder."mystuff/bluesky-pdsKEY"}" 15 + ''; 16 + 17 + # module 18 + services.bluesky-pds = { 19 + enable = true; 20 + goat.enable = true; 21 + pdsadmin.enable = true; 22 + settings = { 23 + PDS_HOSTNAME = "social.ladas552.me"; 24 + PDS_PORT = 3000; 25 + PDS_BLOB_UPLOAD_LIMIT = "200000000"; # 200 MB 26 + PDS_CRAWLERS = lib.concatStringsSep "," [ 27 + "https://bsky.network" 28 + "https://relay.cerulea.blue" 29 + "https://relay.upcloud.world" 30 + "https://atproto.africa" 31 + ]; 32 + }; 33 + environmentFiles = [ 34 + config.sops.templates."bluesky-pds-secrets".path 35 + ]; 36 + }; 37 + 38 + # Reverse proxy 39 + services.caddy.virtualHosts."social.ladas552.me" = { 40 + extraConfig = '' 41 + handle { 42 + reverse_proxy http://127.0.0.1:${toString config.services.bluesky-pds.settings.PDS_PORT} 43 + } 44 + ''; 45 + }; 46 + 47 + # persist for Impermanence 48 + custom.imp.root.directories = [ "/var/lib/pds/" ]; 49 + }; 50 + }
+25 -23
modules/nixosModules/Server/miniflux.nix
··· 1 { 2 - flake.modules.nixos.miniflux = args: { 3 - # secrets 4 - sops.secrets."mystuff/minifluxl" = { }; 5 - sops.secrets."mystuff/minifluxp" = { }; 6 - sops.templates."miniflux-admin-credentials".content = '' 7 - ADMIN_USERNAME="${args.config.sops.placeholder."mystuff/minifluxl"}" 8 - ADMIN_PASSWORD="${args.config.sops.placeholder."mystuff/minifluxp"}" 9 - ''; 10 11 - # module 12 - services.miniflux = { 13 - enable = true; 14 - adminCredentialsFile = "${args.config.sops.templates."miniflux-admin-credentials".path}"; 15 - config = { 16 - LISTEN_ADDR = "100.74.112.27:8067"; 17 - CREATE_ADMIN = true; 18 - LOG_DATE_TIME = "1"; 19 20 - FETCH_BILIBILI_WATCH_TIME = "1"; 21 - FETCH_NEBULA_WATCH_TIME = "1"; 22 - FETCH_ODYSEE_WATCH_TIME = "1"; 23 - FETCH_YOUTUBE_WATCH_TIME = "1"; 24 25 }; 26 }; 27 - # Only allow Tailscale 28 - networking.firewall.interfaces.tailscale0.allowedTCPPorts = [ 8067 ]; 29 - }; 30 }
··· 1 { 2 + flake.modules.nixos.miniflux = 3 + { config, ... }: 4 + { 5 + # secrets 6 + sops.secrets."mystuff/minifluxl" = { }; 7 + sops.secrets."mystuff/minifluxp" = { }; 8 + sops.templates."miniflux-admin-credentials".content = '' 9 + ADMIN_USERNAME="${config.sops.placeholder."mystuff/minifluxl"}" 10 + ADMIN_PASSWORD="${config.sops.placeholder."mystuff/minifluxp"}" 11 + ''; 12 13 + # module 14 + services.miniflux = { 15 + enable = true; 16 + adminCredentialsFile = "${config.sops.templates."miniflux-admin-credentials".path}"; 17 + config = { 18 + LISTEN_ADDR = "100.74.112.27:8067"; 19 + CREATE_ADMIN = true; 20 + LOG_DATE_TIME = "1"; 21 22 + FETCH_BILIBILI_WATCH_TIME = "1"; 23 + FETCH_NEBULA_WATCH_TIME = "1"; 24 + FETCH_ODYSEE_WATCH_TIME = "1"; 25 + FETCH_YOUTUBE_WATCH_TIME = "1"; 26 27 + }; 28 }; 29 + # Only allow Tailscale 30 + networking.firewall.interfaces.tailscale0.allowedTCPPorts = [ 8067 ]; 31 }; 32 }
+70
modules/nixosModules/Server/tangled.nix
···
··· 1 + { inputs, ... }: 2 + { 3 + flake.modules.nixos.tangled = 4 + { config, ... }: 5 + let 6 + cfg = config.services.tangled.knot; 7 + in 8 + { 9 + imports = [ 10 + # git 11 + inputs.tangled.nixosModules.knot 12 + # UI 13 + # inputs.tangled.nixosModules.appview 14 + # CI 15 + # inputs.tangled.nixosModules.spindle 16 + ]; 17 + 18 + # module 19 + services = { 20 + tangled = { 21 + knot = { 22 + enable = true; 23 + gitUser = "git"; 24 + repo.scanPath = "${cfg.stateDir}/repos"; 25 + server = { 26 + listenAddr = "0.0.0.0:3050"; 27 + hostname = "knot.ladas552.me"; 28 + internalListenAddr = "127.0.0.1:5444"; 29 + owner = "did:plc:6ikdlkw64mrjygj6cea62kn4"; # @ladas552.me 30 + }; 31 + }; 32 + # My VPS is too weak for docker containers 33 + # spindle = { 34 + # enable = true; 35 + # server = { 36 + # listenAddr = "0.0.0.0:6555"; 37 + # hostname = "spindle.ladas552.me"; 38 + # owner = "did:plc:6ikdlkw64mrjygj6cea62kn4"; 39 + # }; 40 + # pipelines.workflowTimeout = "10m"; 41 + # }; 42 + }; 43 + }; 44 + 45 + # Reverse proxy 46 + services.caddy.virtualHosts = { 47 + "knot.ladas552.me".extraConfig = '' 48 + handle { 49 + reverse_proxy http://127.0.0.1:3050 50 + } 51 + ''; 52 + # "spindle.ladas552.me".extraConfig = '' 53 + # handle { 54 + # reverse_proxy http://127.0.0.1:6555 55 + # } 56 + # ''; 57 + }; 58 + 59 + # persist for Impermanence 60 + custom.imp.root = { 61 + directories = [ 62 + "/home/git" 63 + ]; 64 + cache.directories = [ 65 + # "/var/lib/containers" 66 + # "/var/log/spindle" 67 + ]; 68 + }; 69 + }; 70 + }
+1
modules/nixosModules/Users/HJEM.nix
··· 5 { 6 imports = [ inputs.hjem.nixosModules.default ]; 7 hjem = { 8 linker = inputs.hjem.packages.${pkgs.stdenv.hostPlatform.system}.smfh; 9 clobberByDefault = true; 10 users.${config.custom.meta.user} = {
··· 5 { 6 imports = [ inputs.hjem.nixosModules.default ]; 7 hjem = { 8 + # linker = pkgs.smfh; 9 linker = inputs.hjem.packages.${pkgs.stdenv.hostPlatform.system}.smfh; 10 clobberByDefault = true; 11 users.${config.custom.meta.user} = {
+3
modules/nixosModules/Users/ladas552.nix
··· 13 hashedPasswordFile = config.sops.secrets."mystuff/host_pwd".path; 14 openssh.authorizedKeys.keys = [ 15 "ssh-ed25520 AAAAC3NzaC1lZDI1NTE5AAAAIPiFWLpIrKZ1+8PPSegYpNrRaPlE4t7iVUnHucvWQJJx ladas552@NixPort" 16 ]; 17 }; 18 nix.settings.trusted-users = [ "ladas552" ];
··· 13 hashedPasswordFile = config.sops.secrets."mystuff/host_pwd".path; 14 openssh.authorizedKeys.keys = [ 15 "ssh-ed25520 AAAAC3NzaC1lZDI1NTE5AAAAIPiFWLpIrKZ1+8PPSegYpNrRaPlE4t7iVUnHucvWQJJx ladas552@NixPort" 16 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPiFWLpIrKZ1+8PPSegYpNrRaPlE4t7iVUnHucvWQJJx ladas552@NixToks-2024-06-25" 17 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJOZaAO4vfV5kiLiHrrKTO8Y/YLVi72e/918YfWdgQBJ u0_a595@localhost" 18 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEyzumytf6gU/PgXAqlKTMASUg3NJbdq4weMfnxZJmEG u0_a189@localhost" 19 ]; 20 }; 21 nix.settings.trusted-users = [ "ladas552" ];
+7 -2
modules/nixosModules/general.nix
··· 1 { 2 flake.modules.nixos.general = 3 - { pkgs, config, ... }: 4 { 5 # Define hostname. 6 networking.hostName = "${config.custom.meta.hostname}"; 7 # Set kernel 8 - boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod; 9 # boot.kernelPackages = pkgs.linuxKernel.packages.linux_zen; 10 11 # Updates firmware directly from vendors
··· 1 { 2 flake.modules.nixos.general = 3 + { 4 + pkgs, 5 + config, 6 + lib, 7 + ... 8 + }: 9 { 10 # Define hostname. 11 networking.hostName = "${config.custom.meta.hostname}"; 12 # Set kernel 13 + boot.kernelPackages = lib.mkDefault pkgs.linuxKernel.packages.linux_xanmod; 14 # boot.kernelPackages = pkgs.linuxKernel.packages.linux_zen; 15 16 # Updates firmware directly from vendors
-1
modules/userModules/chawan.nix
··· 45 in 46 { 47 hjem.chawan = { 48 - # from https://github.com/snugnug/hjem-rum/pull/162 49 inherit custom; 50 rum.programs.chawan = config-chawan; 51 };
··· 45 in 46 { 47 hjem.chawan = { 48 inherit custom; 49 rum.programs.chawan = config-chawan; 50 };
-1
modules/userModules/fastfetch.nix
··· 51 }; 52 in 53 { 54 - # fastfetch hjem-rum is from https://github.com/snugnug/hjem-rum/pull/172 55 hjem.fastfetch.rum.programs.fastfetch = config-fastfetch; 56 homeManager.fastfetch.programs.fastfetch = config-fastfetch; 57 };
··· 51 }; 52 in 53 { 54 hjem.fastfetch.rum.programs.fastfetch = config-fastfetch; 55 homeManager.fastfetch.programs.fastfetch = config-fastfetch; 56 };
+145 -19
modules/wrappers/helium/flake-outputs.nix
··· 1 { self, ... }: 2 { 3 - # stolen from @iynaix 4 perSystem = 5 - { pkgs, ... }: 6 let 7 - pname = "helium"; 8 source = (pkgs.callPackage "${self}/_sources/generated.nix" { }).helium; 9 - appimageContents = pkgs.appimageTools.extract source; 10 - helium = pkgs.appimageTools.wrapType2 source // { 11 - nativeBuildInputs = [ pkgs.makeWrapper ]; 12 - extraInstallCommands = '' 13 - wrapProgram $out/bin/${pname} \ 14 - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" 15 16 - install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications 17 - substituteInPlace $out/share/applications/${pname}.desktop \ 18 - --replace 'Exec=AppRun' 'Exec=${pname}' 19 - cp -r ${appimageContents}/usr/share/icons $out/share 20 ''; 21 22 - # pass through files from the root fs 23 extraBwrapArgs = [ 24 - # chromium policies 25 - "--ro-bind-try /etc/chromium/policies/managed/default.json /etc/chromium/policies/managed/default.json" 26 - # xdg scheme-handlers 27 - "--ro-bind-try /etc/xdg/ /etc/xdg/" 28 ]; 29 30 }; 31 in 32 { 33 - packages.helium = helium; 34 }; 35 }
··· 1 { self, ... }: 2 + # stolen from weegs710 3 + # https://github.com/weegs710/AnomalOS/blob/f23a7019a53a8952d253d43defb1281712dccdbd/modules/shareables/wrapped-helium.nix 4 { 5 perSystem = 6 + { 7 + pkgs, 8 + system, 9 + ... 10 + }: 11 let 12 + pkgsUnfree = import pkgs.path { 13 + inherit system; 14 + config.allowUnfree = true; 15 + }; 16 + 17 source = (pkgs.callPackage "${self}/_sources/generated.nix" { }).helium; 18 + 19 + extensionPolicy = pkgs.writeText "policy.json" ( 20 + builtins.toJSON { 21 + # IDs only (no URLs) to avoid triggering TRK protocol blocking 22 + ExtensionInstallForcelist = [ 23 + "eimadpbcbfnmbkopoojfekhnkhdbieeh" # Dark Reader 24 + "odibgflepadohfmpcemnjbhkionjkapk" # Helium Translator Inline 25 + ]; 26 + } 27 + ); 28 29 + policiesDir = pkgs.runCommand "helium-policies" { } '' 30 + mkdir -p $out/etc/opt/chrome/policies/managed 31 + cp ${extensionPolicy} $out/etc/opt/chrome/policies/managed/extensions.json 32 + ''; 33 + 34 + widevineConfig = pkgs.writeText "latest-component-updated-widevine-cdm" ( 35 + builtins.toJSON { 36 + Path = "${pkgsUnfree.widevine-cdm}/share/google/chrome/WidevineCdm"; 37 + } 38 + ); 39 + 40 + # Tarball allows more control than AppImage 41 + heliumPkg = pkgs.stdenv.mkDerivation rec { 42 + inherit (source) pname version src; 43 + 44 + nativeBuildInputs = with pkgs; [ 45 + makeWrapper 46 + autoPatchelfHook 47 + ]; 48 + 49 + buildInputs = with pkgs; [ 50 + stdenv.cc.cc.lib 51 + gtk3 52 + nss 53 + nspr 54 + alsa-lib 55 + cups 56 + libdrm 57 + mesa 58 + expat 59 + libxkbcommon 60 + pango 61 + cairo 62 + at-spi2-atk 63 + at-spi2-core 64 + dbus 65 + libva 66 + libGL 67 + ]; 68 + 69 + # Qt shim libraries are optional compatibility layers 70 + autoPatchelfIgnoreMissingDeps = [ 71 + "libQt5Core.so.5" 72 + "libQt5Gui.so.5" 73 + "libQt5Widgets.so.5" 74 + "libQt6Core.so.6" 75 + "libQt6Gui.so.6" 76 + "libQt6Widgets.so.6" 77 + ]; 78 + 79 + sourceRoot = "helium-${version}-x86_64_linux"; 80 + 81 + installPhase = '' 82 + mkdir -p $out/opt/helium $out/bin 83 + 84 + cp -r . $out/opt/helium/ 85 + chmod +x $out/opt/helium/helium 86 + 87 + makeWrapper $out/opt/helium/helium $out/bin/helium \ 88 + --add-flags "--enable-features=VaapiVideoDecoder,WebUIDarkMode,HeliumCatUi,HideCrashedBubble,LinkPreview" \ 89 + --add-flags "--disable-features=EyeDropper,HeliumCatFixedAddressBar" 90 + 91 + mkdir -p $out/share/applications 92 + cp $out/opt/helium/helium.desktop $out/share/applications/ 93 + substituteInPlace $out/share/applications/helium.desktop \ 94 + --replace 'Exec=helium --incognito' 'Exec=${pname} &' 95 + 96 + for size in 16 32 48 64 128 256; do 97 + mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps 98 + if [ -f $out/opt/helium/product_logo_''${size}.png ]; then 99 + cp $out/opt/helium/product_logo_''${size}.png \ 100 + $out/share/icons/hicolor/''${size}x''${size}/apps/helium.png 101 + fi 102 + done 103 ''; 104 105 + meta = { 106 + description = "Private, fast, and honest web browser"; 107 + homepage = "https://helium.computer/"; 108 + platforms = [ "x86_64-linux" ]; 109 + }; 110 + }; 111 + 112 + heliumWrapper = pkgs.writeShellScript "helium-wrapper" '' 113 + USER_DATA_DIR="" 114 + for arg in "$@"; do 115 + if [[ "$arg" == --user-data-dir=* ]]; then 116 + USER_DATA_DIR="''${arg#*=}" 117 + break 118 + fi 119 + done 120 + 121 + if [ -z "$USER_DATA_DIR" ]; then 122 + USER_DATA_DIR="$HOME/.config/net.imput.helium" 123 + fi 124 + 125 + mkdir -p "$USER_DATA_DIR/WidevineCdm" 126 + cp ${widevineConfig} "$USER_DATA_DIR/WidevineCdm/latest-component-updated-widevine-cdm" 127 + 128 + exec ${heliumPkg}/bin/helium "$@" 129 + ''; 130 + 131 + wrappedHelium = pkgs.buildFHSEnv { 132 + name = "helium"; 133 + targetPkgs = pkgs: [ 134 + heliumPkg 135 + ]; 136 extraBwrapArgs = [ 137 + "--ro-bind ${policiesDir}/etc/opt/chrome/policies/managed /etc/chromium/policies/managed" 138 ]; 139 + runScript = heliumWrapper; 140 + extraInstallCommands = '' 141 + mkdir -p $out/share/applications 142 + cp ${heliumPkg}/share/applications/helium.desktop $out/share/applications/ 143 144 + for size in 16 32 48 64 128 256; do 145 + mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps 146 + if [ -f ${heliumPkg}/share/icons/hicolor/''${size}x''${size}/apps/helium.png ]; then 147 + cp ${heliumPkg}/share/icons/hicolor/''${size}x''${size}/apps/helium.png \ 148 + $out/share/icons/hicolor/''${size}x''${size}/apps/ 149 + fi 150 + done 151 + ''; 152 + meta = { 153 + mainProgram = "helium"; 154 + description = "Helium browser with DRM, dark UI, and bundled extensions"; 155 + }; 156 }; 157 in 158 { 159 + packages.helium = wrappedHelium; 160 }; 161 }
-8
modules/wrappers/helium/user.nix
··· 5 { 6 packages = [ self.packages.${pkgs.stdenv.hostPlatform.system}.helium ]; 7 8 - # Add widevine support, inspired from this comment: 9 - # DRM 10 - # https://github.com/imputnet/helium/issues/116#issuecomment-3668370766 11 - # https://github.com/Michael-C-Buckley/nixos/blob/319f441b799e7c2db7eabd77524f5bbc3d74a3d2/modules/hjem/configs/applications/helium.nix#L15 12 - xdg.config.files."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm".text = '' 13 - {"Path":"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm"} 14 - ''; 15 - 16 custom.imp.home.cache.directories = [ 17 ".cache/net.imput.helium" 18 ".config/net.imput.helium"
··· 5 { 6 packages = [ self.packages.${pkgs.stdenv.hostPlatform.system}.helium ]; 7 8 custom.imp.home.cache.directories = [ 9 ".cache/net.imput.helium" 10 ".config/net.imput.helium"
+10
modules/wrappers/nvf/flake-outputs.nix
··· 85 NixMux 86 ]; 87 }).neovim; 88 }; 89 }; 90 }
··· 85 NixMux 86 ]; 87 }).neovim; 88 + nvf-NixWool = 89 + (inputs.nvf.lib.neovimConfiguration { 90 + inherit pkgs; 91 + modules = 92 + with config.flake.modules.nvf; 93 + base 94 + ++ [ 95 + NixWool 96 + ]; 97 + }).neovim; 98 }; 99 }; 100 }
+3 -1
modules/wrappers/nvf/user.nix
··· 16 let 17 nvf-NixPort = self.packages."x86_64-linux".nvf-NixPort; 18 nvf-NixToks = self.packages."x86_64-linux".nvf-NixToks; 19 in 20 { 21 packages = 22 [ ] 23 ++ lib.optionals (config.custom.meta.hostname == "NixPort") [ nvf-NixPort ] 24 - ++ lib.optionals (config.custom.meta.hostname == "NixToks") [ nvf-NixToks ]; 25 environment.sessionVariables.EDITOR = "neovim"; 26 }; 27 };
··· 16 let 17 nvf-NixPort = self.packages."x86_64-linux".nvf-NixPort; 18 nvf-NixToks = self.packages."x86_64-linux".nvf-NixToks; 19 + nvf-NixWool = self.packages."aarch64-linux".nvf-NixWool; 20 in 21 { 22 packages = 23 [ ] 24 ++ lib.optionals (config.custom.meta.hostname == "NixPort") [ nvf-NixPort ] 25 + ++ lib.optionals (config.custom.meta.hostname == "NixToks") [ nvf-NixToks ] 26 + ++ lib.optionals (config.custom.meta.hostname == "NixWool") [ nvf-NixWool ]; 27 environment.sessionVariables.EDITOR = "neovim"; 28 }; 29 };
+1 -2
nvfetcher.toml
··· 1 # helium 2 [helium] 3 src.github_tag = "imputnet/helium-linux" 4 - fetch.url = "https://github.com/imputnet/helium-linux/releases/download/$ver/helium-$ver-x86_64.AppImage" 5 6 # neorg 7 [neorg-interim-ls] ··· 45 [nixos-hardware] 46 src.git = "https://github.com/nixos/nixos-hardware" 47 fetch.git = "https://github.com/nixos/nixos-hardware" 48 -
··· 1 # helium 2 [helium] 3 src.github_tag = "imputnet/helium-linux" 4 + fetch.url = "https://github.com/imputnet/helium-linux/releases/download/$ver/helium-$ver-x86_64_linux.tar.xz" 5 6 # neorg 7 [neorg-interim-ls] ··· 45 [nixos-hardware] 46 src.git = "https://github.com/nixos/nixos-hardware" 47 fetch.git = "https://github.com/nixos/nixos-hardware"
+1 -1
pkgs/musnow.nix
··· 4 '' 5 #Dependencis 6 #fish,ffmpeg,mpd,mpc 7 - #get current's song url into 'crtl+v' clipvoard 8 ffprobe -loglevel error -show_entries format_tags=purl -of default=noprint_wrappers=1:nokey=1 ~/Music/(mpc -f %file% current) | wl-copy 9 '' 10
··· 4 '' 5 #Dependencis 6 #fish,ffmpeg,mpd,mpc 7 + #get current's song url into 'crtl+v' clipboard 8 ffprobe -loglevel error -show_entries format_tags=purl -of default=noprint_wrappers=1:nokey=1 ~/Music/(mpc -f %file% current) | wl-copy 9 '' 10
+6 -3
secrets/secrets.yaml
··· 13 minifluxl: ENC[AES256_GCM,data:MIS320w=,iv:KF7B27fHOniQOFGauYDmIpNdXgl+dN0mV3uSvzhwT6g=,tag:LoqqkE40pko3fzSsU/XpPw==,type:str] 14 minifluxp: ENC[AES256_GCM,data:Jx7IjJE7jdY=,iv:BFcVmH7HWjrhFJSAG7HchEiOlw1se2DbCB9d84BWyw4=,tag:9G7rCBVqu0zsUMt0LbaY8Q==,type:str] 15 tailnet: ENC[AES256_GCM,data:H+WFQd2cU+dZR6dj8IZDDqwC7uXEBwKbjQ+q/xOj8RanD5lFzL6to49mVOKTu7e+LH8iBCB19eCiHWGg5aE=,iv:5kwqZkO4cM2yGxq+mi9R25tlH8Q7hiIAshjXpb9I/AU=,tag:FytBMP9URERgJEpz9ZuAPw==,type:str] 16 sops: 17 age: 18 - recipient: age18yaw2nreuzgmh2w9y2mpx7kmgfrwqzr6hf2raws0fk37ut950ydqwwctu8 ··· 24 RkFQSEYxY3NnMkhpWXdCd1llb2ZYcHMK6BoBQQCJqntA69nPdZxPl066pkxA4c/i 25 k4RwkMDyyRLTnFP8jWhqH1AxUzDQluRnmGPJ4wq6DPe5mLKa6649Mg== 26 -----END AGE ENCRYPTED FILE----- 27 - lastmodified: "2025-09-17T13:27:31Z" 28 - mac: ENC[AES256_GCM,data:yaq5tXuDF3TSNxtiDMLO6M52quAS4Hw/wa479xX+qjhiovEfvieA03lMRYa9Tam7DmjTsFrpr4pm/Rt8jBMxOw1RxEBwL/iqnB861m8ac9qyCr8AmwC1Zbu5gtRpXd6LlBodRdkNkbybN1Db2XIVIjd09YubsLx0WU2HVmN97Os=,iv:O0YsKRU+M6Heigi5uCPgNsU3JJQAmwJX0SK7DuI9BR8=,tag:ow5SOtOjVuFElHTMqMYBJA==,type:str] 29 unencrypted_suffix: _unencrypted 30 - version: 3.10.2
··· 13 minifluxl: ENC[AES256_GCM,data:MIS320w=,iv:KF7B27fHOniQOFGauYDmIpNdXgl+dN0mV3uSvzhwT6g=,tag:LoqqkE40pko3fzSsU/XpPw==,type:str] 14 minifluxp: ENC[AES256_GCM,data:Jx7IjJE7jdY=,iv:BFcVmH7HWjrhFJSAG7HchEiOlw1se2DbCB9d84BWyw4=,tag:9G7rCBVqu0zsUMt0LbaY8Q==,type:str] 15 tailnet: ENC[AES256_GCM,data:H+WFQd2cU+dZR6dj8IZDDqwC7uXEBwKbjQ+q/xOj8RanD5lFzL6to49mVOKTu7e+LH8iBCB19eCiHWGg5aE=,iv:5kwqZkO4cM2yGxq+mi9R25tlH8Q7hiIAshjXpb9I/AU=,tag:FytBMP9URERgJEpz9ZuAPw==,type:str] 16 + bluesky-pdsJWT: ENC[AES256_GCM,data:gTE82RxcKdqmGLjlitGxfxMXlk/+woWYp4lrsbWaiVY=,iv:QpiZjO4nxYi9Vx6qOTfWyenbfAYiSlhKjtxVFYqJ1/I=,tag:sJN8pn4VKH/S4l63fk/c0Q==,type:str] 17 + bluesky-pdsADMIN: ENC[AES256_GCM,data:xqJEeR6uAsRB18KDQ65ABWy3ZAYLc5OS6YR13VsVxWA=,iv:UI6HlcOPktfpzH87qALtGXR12oSbcxlTA62xcF/nyeA=,tag:62obwEMwj3bKrdjQComTpw==,type:str] 18 + bluesky-pdsKEY: ENC[AES256_GCM,data:AAQ+W/8/5oL5Z1qSvuEeCTsNfJLmSTKpl/Kse2wUlAefNLm8A5IfTTLqwh+3GNC8thXPD77js4z8orSveh6VCg==,iv:hi8ohwxNgzSt1ikpMRHlSYfXjx4+6yrAtO2i9opnl34=,tag:hqIe42HxkdEzIMZ2TeKs/g==,type:str] 19 sops: 20 age: 21 - recipient: age18yaw2nreuzgmh2w9y2mpx7kmgfrwqzr6hf2raws0fk37ut950ydqwwctu8 ··· 27 RkFQSEYxY3NnMkhpWXdCd1llb2ZYcHMK6BoBQQCJqntA69nPdZxPl066pkxA4c/i 28 k4RwkMDyyRLTnFP8jWhqH1AxUzDQluRnmGPJ4wq6DPe5mLKa6649Mg== 29 -----END AGE ENCRYPTED FILE----- 30 + lastmodified: "2026-02-16T15:59:29Z" 31 + mac: ENC[AES256_GCM,data:nEVpqlj0tqJ586ymxo8y7mde07XtrtboNMEhsyQPsa9TwdPBDGr3fhNLzu9//6Dq78RUhyGK/t1nfvs5zE/Opaze8SmS4LXZACPrruUC6YFQFvN10H3g8Q/4rJ8xtaU9Q1KVL8fbjCXjmthixS7ORjQ0+wdiPyk3rQamxYK89DE=,iv:7RiCtcXk+a135ARgrA7UwJCs8cwPVMUFIGtMBVx5S9g=,tag:qi/zhUDGQu7dgEFJMbTxxA==,type:str] 32 unencrypted_suffix: _unencrypted 33 + version: 3.11.0
+27
stuff/recursivelyImport.nix
···
··· 1 + { lib }: 2 + let 3 + inherit (lib) hasSuffix hasPrefix; 4 + inherit (builtins) 5 + concatMap 6 + isPath 7 + filter 8 + readFileType 9 + ; 10 + 11 + expandIfFolder = 12 + elem: 13 + if !isPath elem || readFileType elem != "directory" then 14 + [ elem ] 15 + else 16 + lib.filesystem.listFilesRecursive elem; 17 + in 18 + list: 19 + filter 20 + # Filter out any path that doesn't look like `*.nix`. Don't forget to use 21 + # toString to prevent copying paths to the store unnecessarily 22 + ( 23 + elem: 24 + !isPath elem || (hasSuffix ".nix" (toString elem) && !hasPrefix "_" (baseNameOf (toString elem))) 25 + ) 26 + # Expand any folder to all the files within it. 27 + (concatMap expandIfFolder list)