🎉📝 initialize v2
							
								
								
									
										5
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,2 +1,3 @@ | ||||||
| ### Jetbrains | ### Buid-VM outputs | ||||||
| /.idea | *.qcow2 | ||||||
|  | /result | ||||||
|  |  | ||||||
|  | @ -1,9 +0,0 @@ | ||||||
| keys: |  | ||||||
|   - &jo age1gudgza8lv02nwec0pejqpp5t7zu0tzjsfkmvgvy3ckfscr9f4qrq2sl5dv |  | ||||||
|   - &server_absolutesolver age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d |  | ||||||
| creation_rules: |  | ||||||
|   - path_regex: secrets/[^/]+\.(yaml|json|env|ini)$ |  | ||||||
|     key_groups: |  | ||||||
|       - age: |  | ||||||
|           - *jo |  | ||||||
|           - *server_absolutesolver |  | ||||||
							
								
								
									
										9
									
								
								CHANGELOG.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,9 @@ | ||||||
|  | # 0.1.0 | ||||||
|  | 
 | ||||||
|  | * Add README and assets | ||||||
|  | * Add CHANGELOG | ||||||
|  | 
 | ||||||
|  | # 0.1.1 | ||||||
|  | 
 | ||||||
|  | * Add goals and improvements to README | ||||||
|  | * Document nixos-rebuild buid-vm usage | ||||||
							
								
								
									
										32
									
								
								README.md
									
										
									
									
									
								
							
							
						
						|  | @ -1,15 +1,35 @@ | ||||||
| # Puzzlevision | <br> | ||||||
|  | <div align="center"><img src="assets/puzzlevision.png" width="120px" height="auto"></div> | ||||||
| 
 | 
 | ||||||
| Non-stop entertainment! The wackiest NixOS configuration to-date. | <h1 align="center">✨ Puzzlevision ✨<br></h1> | ||||||
|  | <div align="center">Non-stop entertainment! The wackiest NixOS configuration to-date.</div> | ||||||
|  | <br> | ||||||
| 
 | 
 | ||||||
| ## Deployment | ## 🚧 State of development | ||||||
|  | Version 2.0 is still very much an experiment and not ready to be used in a production | ||||||
|  | environment. If you must, try running it within a VM using the provided deployment | ||||||
|  | instructions. | ||||||
|  | 
 | ||||||
|  | ## 🚀 Deployment | ||||||
|  | To deploy a system run the following command in your terminal of choice. | ||||||
| 
 | 
 | ||||||
| Run this to apply your system configuration. |  | ||||||
| ```sh | ```sh | ||||||
| sudo nixos-rebuild switch --flake .#hostname | sudo nixos-rebuild switch --flake .#hostname | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Run this, to apply your home-manager configuration. | If you're interested in a quick way to experiment with this configuration, | ||||||
|  | you may use the following command to build a VM. | ||||||
|  | 
 | ||||||
| ```sh | ```sh | ||||||
| home-manager switch --flake .#username@hostname | sudo nixos-rebuild build-vm --flake .#hostname | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## 📝 Goals and improvements | ||||||
|  | The main goals of this rewritten flake are: | ||||||
|  | 
 | ||||||
|  | - using flake-parts in place of Snowfall lib | ||||||
|  | - significantly improving the re-usability of all modules | ||||||
|  | - avoiding anti-patterns, such as `with lib; with lib.${namespace};` | ||||||
|  | - improved secrets management | ||||||
|  | - keeping external assets closer to their related nix file, e.g. wallpapers in | ||||||
|  | the desktop modules folder | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								assets/puzzlevision.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 128 KiB | 
							
								
								
									
										541
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						|  | @ -1,541 +0,0 @@ | ||||||
| { |  | ||||||
|   "nodes": { |  | ||||||
|     "catppuccin": { |  | ||||||
|       "inputs": { |  | ||||||
|         "catppuccin-v1_1": "catppuccin-v1_1", |  | ||||||
|         "catppuccin-v1_2": "catppuccin-v1_2", |  | ||||||
|         "home-manager": "home-manager", |  | ||||||
|         "home-manager-stable": "home-manager-stable", |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "nixpkgs" |  | ||||||
|         ], |  | ||||||
|         "nixpkgs-stable": "nixpkgs-stable", |  | ||||||
|         "nuscht-search": "nuscht-search" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1736069220, |  | ||||||
|         "narHash": "sha256-76MaB3COao55nlhWmSmq9PKgu2iGIs54C1cAE0E5J6Y=", |  | ||||||
|         "owner": "catppuccin", |  | ||||||
|         "repo": "nix", |  | ||||||
|         "rev": "8eada392fd6571a747e1c5fc358dd61c14c8704e", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "catppuccin", |  | ||||||
|         "repo": "nix", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "catppuccin-v1_1": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1734055249, |  | ||||||
|         "narHash": "sha256-pCWJgwo77KD7EJpwynwKrWPZ//dwypHq2TfdzZWqK68=", |  | ||||||
|         "rev": "7221d6ca17ac36ed20588e1c3a80177ac5843fa7", |  | ||||||
|         "revCount": 326, |  | ||||||
|         "type": "tarball", |  | ||||||
|         "url": "https://api.flakehub.com/f/pinned/catppuccin/nix/1.1.1/0193bdc0-b045-7eed-bbec-95611a8ecdf5/source.tar.gz" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "type": "tarball", |  | ||||||
|         "url": "https://flakehub.com/f/catppuccin/nix/1.1.%2A.tar.gz" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "catppuccin-v1_2": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1734728407, |  | ||||||
|         "narHash": "sha256-Let3uJo4YDyfqbqaw66dpZxhJB2TrDyZWSFd5rpPLJA=", |  | ||||||
|         "rev": "23ee86dbf4ed347878115a78971d43025362fab1", |  | ||||||
|         "revCount": 341, |  | ||||||
|         "type": "tarball", |  | ||||||
|         "url": "https://api.flakehub.com/f/pinned/catppuccin/nix/1.2.0/0193e5e0-33b7-7149-a362-bfe56b20f64e/source.tar.gz" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "type": "tarball", |  | ||||||
|         "url": "https://flakehub.com/f/catppuccin/nix/1.2.%2A.tar.gz" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-compat": { |  | ||||||
|       "flake": false, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1696426674, |  | ||||||
|         "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-compat_2": { |  | ||||||
|       "flake": false, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1650374568, |  | ||||||
|         "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "rev": "b4a34015c698c7793d592d66adbab377907a2be8", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-utils": { |  | ||||||
|       "inputs": { |  | ||||||
|         "systems": "systems" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1731533236, |  | ||||||
|         "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-utils-plus": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-utils": "flake-utils_3" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1715533576, |  | ||||||
|         "narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=", |  | ||||||
|         "owner": "gytis-ivaskevicius", |  | ||||||
|         "repo": "flake-utils-plus", |  | ||||||
|         "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "gytis-ivaskevicius", |  | ||||||
|         "repo": "flake-utils-plus", |  | ||||||
|         "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-utils_2": { |  | ||||||
|       "inputs": { |  | ||||||
|         "systems": "systems_2" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1705309234, |  | ||||||
|         "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-utils_3": { |  | ||||||
|       "inputs": { |  | ||||||
|         "systems": "systems_3" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1694529238, |  | ||||||
|         "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "ghostty": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-compat": "flake-compat", |  | ||||||
|         "nixpkgs-stable": "nixpkgs-stable_2", |  | ||||||
|         "nixpkgs-unstable": "nixpkgs-unstable", |  | ||||||
|         "zig": "zig" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1736402835, |  | ||||||
|         "narHash": "sha256-SiG2B2KfU4BIOggrJJa9nKoagXtLXWWo9vXJ88a+ls8=", |  | ||||||
|         "owner": "ghostty-org", |  | ||||||
|         "repo": "ghostty", |  | ||||||
|         "rev": "2d7706ec4f7042b9072d3b8ac8ea496dee209bc8", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "ghostty-org", |  | ||||||
|         "repo": "ghostty", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "hardware": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1736283893, |  | ||||||
|         "narHash": "sha256-BG1FfTexFwNty5VhYjaQLMR6CMPfI3QRcaZrFQYu2EM=", |  | ||||||
|         "owner": "NixOS", |  | ||||||
|         "repo": "nixos-hardware", |  | ||||||
|         "rev": "4f339f6be2b61662f957c2ee9eda0fa597d8a6d6", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "NixOS", |  | ||||||
|         "ref": "master", |  | ||||||
|         "repo": "nixos-hardware", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "home-manager": { |  | ||||||
|       "inputs": { |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "catppuccin", |  | ||||||
|           "nixpkgs" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1734622215, |  | ||||||
|         "narHash": "sha256-OOfI0XhSJGHblfdNDhfnn8QnZxng63rWk9eeJ2tCbiI=", |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "repo": "home-manager", |  | ||||||
|         "rev": "1395379a7a36e40f2a76e7b9936cc52950baa1be", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "repo": "home-manager", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "home-manager-stable": { |  | ||||||
|       "inputs": { |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "catppuccin", |  | ||||||
|           "nixpkgs-stable" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1734366194, |  | ||||||
|         "narHash": "sha256-vykpJ1xsdkv0j8WOVXrRFHUAdp9NXHpxdnn1F4pYgSw=", |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "repo": "home-manager", |  | ||||||
|         "rev": "80b0fdf483c5d1cb75aaad909bd390d48673857f", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "ref": "release-24.11", |  | ||||||
|         "repo": "home-manager", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "home-manager_2": { |  | ||||||
|       "inputs": { |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "nixpkgs" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1736366465, |  | ||||||
|         "narHash": "sha256-Fo68EF6p/N9GJyHiAUbXtiE7IJlb3IMjK86LuxFMsRU=", |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "repo": "home-manager", |  | ||||||
|         "rev": "7e00856596891850ba5ad4c5ecd2ed74468c08c5", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "repo": "home-manager", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "ixx": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-utils": [ |  | ||||||
|           "catppuccin", |  | ||||||
|           "nuscht-search", |  | ||||||
|           "flake-utils" |  | ||||||
|         ], |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "catppuccin", |  | ||||||
|           "nuscht-search", |  | ||||||
|           "nixpkgs" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1729958008, |  | ||||||
|         "narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=", |  | ||||||
|         "owner": "NuschtOS", |  | ||||||
|         "repo": "ixx", |  | ||||||
|         "rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "NuschtOS", |  | ||||||
|         "ref": "v0.0.6", |  | ||||||
|         "repo": "ixx", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nix-flatpak": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1711997201, |  | ||||||
|         "narHash": "sha256-J71xzQlVYsjagA4AsVwRazhBh2rZrPpKvxTgs6UzL7c=", |  | ||||||
|         "owner": "gmodena", |  | ||||||
|         "repo": "nix-flatpak", |  | ||||||
|         "rev": "b76fa31346db7fc958a9898f3c594696ca71c4fd", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "gmodena", |  | ||||||
|         "ref": "v0.4.1", |  | ||||||
|         "repo": "nix-flatpak", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixpkgs": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1736241350, |  | ||||||
|         "narHash": "sha256-CHd7yhaDigUuJyDeX0SADbTM9FXfiWaeNyY34FL1wQU=", |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "8c9fd3e564728e90829ee7dbac6edc972971cd0f", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "ref": "nixpkgs-unstable", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixpkgs-stable": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1734600368, |  | ||||||
|         "narHash": "sha256-nbG9TijTMcfr+au7ZVbKpAhMJzzE2nQBYmRvSdXUD8g=", |  | ||||||
|         "owner": "NixOS", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "b47fd6fa00c6afca88b8ee46cfdb00e104f50bca", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "NixOS", |  | ||||||
|         "ref": "nixos-24.11", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixpkgs-stable_2": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1733423277, |  | ||||||
|         "narHash": "sha256-TxabjxEgkNbCGFRHgM/b9yZWlBj60gUOUnRT/wbVQR8=", |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "e36963a147267afc055f7cf65225958633e536bf", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "ref": "release-24.11", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixpkgs-unstable": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1733229606, |  | ||||||
|         "narHash": "sha256-FLYY5M0rpa5C2QAE3CKLYAM6TwbKicdRK6qNrSHlNrE=", |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "566e53c2ad750c84f6d31f9ccb9d00f823165550", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "ref": "nixpkgs-unstable", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nuscht-search": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-utils": "flake-utils", |  | ||||||
|         "ixx": "ixx", |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "catppuccin", |  | ||||||
|           "nixpkgs" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1733773348, |  | ||||||
|         "narHash": "sha256-Y47y+LesOCkJaLvj+dI/Oa6FAKj/T9sKVKDXLNsViPw=", |  | ||||||
|         "owner": "NuschtOS", |  | ||||||
|         "repo": "search", |  | ||||||
|         "rev": "3051be7f403bff1d1d380e4612f0c70675b44fc9", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "NuschtOS", |  | ||||||
|         "repo": "search", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "root": { |  | ||||||
|       "inputs": { |  | ||||||
|         "catppuccin": "catppuccin", |  | ||||||
|         "ghostty": "ghostty", |  | ||||||
|         "hardware": "hardware", |  | ||||||
|         "home-manager": "home-manager_2", |  | ||||||
|         "nix-flatpak": "nix-flatpak", |  | ||||||
|         "nixpkgs": "nixpkgs", |  | ||||||
|         "snowfall-lib": "snowfall-lib", |  | ||||||
|         "sops-nix": "sops-nix", |  | ||||||
|         "zen-browser": "zen-browser" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "snowfall-lib": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-compat": "flake-compat_2", |  | ||||||
|         "flake-utils-plus": "flake-utils-plus", |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "nixpkgs" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1736130495, |  | ||||||
|         "narHash": "sha256-4i9nAJEZFv7vZMmrE0YG55I3Ggrtfo5/T07JEpEZ/RM=", |  | ||||||
|         "owner": "snowfallorg", |  | ||||||
|         "repo": "lib", |  | ||||||
|         "rev": "02d941739f98a09e81f3d2d9b3ab08918958beac", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "snowfallorg", |  | ||||||
|         "repo": "lib", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "sops-nix": { |  | ||||||
|       "inputs": { |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "nixpkgs" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1736203741, |  | ||||||
|         "narHash": "sha256-eSjkBwBdQk+TZWFlLbclF2rAh4JxbGg8az4w/Lfe7f4=", |  | ||||||
|         "owner": "Mic92", |  | ||||||
|         "repo": "sops-nix", |  | ||||||
|         "rev": "c9c88f08e3ee495e888b8d7c8624a0b2519cb773", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "Mic92", |  | ||||||
|         "repo": "sops-nix", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "systems": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1681028828, |  | ||||||
|         "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", |  | ||||||
|         "owner": "nix-systems", |  | ||||||
|         "repo": "default", |  | ||||||
|         "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nix-systems", |  | ||||||
|         "repo": "default", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "systems_2": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1681028828, |  | ||||||
|         "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", |  | ||||||
|         "owner": "nix-systems", |  | ||||||
|         "repo": "default", |  | ||||||
|         "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nix-systems", |  | ||||||
|         "repo": "default", |  | ||||||
|         "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" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "zen-browser": { |  | ||||||
|       "inputs": { |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "nixpkgs" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1736267677, |  | ||||||
|         "narHash": "sha256-7FH/gFShKOzf46yKqA4VWAaWxuyHBRnXOdaffbTxVo4=", |  | ||||||
|         "owner": "0xc000022070", |  | ||||||
|         "repo": "zen-browser-flake", |  | ||||||
|         "rev": "c96c6a1ebf1bea782f9528dc316d986a6087ebc0", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "0xc000022070", |  | ||||||
|         "repo": "zen-browser-flake", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "zig": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-compat": [ |  | ||||||
|           "ghostty" |  | ||||||
|         ], |  | ||||||
|         "flake-utils": "flake-utils_2", |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "ghostty", |  | ||||||
|           "nixpkgs-stable" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1717848532, |  | ||||||
|         "narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=", |  | ||||||
|         "owner": "mitchellh", |  | ||||||
|         "repo": "zig-overlay", |  | ||||||
|         "rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "mitchellh", |  | ||||||
|         "repo": "zig-overlay", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   "root": "root", |  | ||||||
|   "version": 7 |  | ||||||
| } |  | ||||||
							
								
								
									
										76
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						|  | @ -1,76 +0,0 @@ | ||||||
| { |  | ||||||
|   description = "Jo's NixOS configuration"; |  | ||||||
| 
 |  | ||||||
|   inputs = { |  | ||||||
|     # Nixpkgs instance. |  | ||||||
|     nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; |  | ||||||
| 
 |  | ||||||
|     # Snowfall lib imposes an opinionated file-structure, which makes things a little easier sometimes. |  | ||||||
|     snowfall-lib = { url = "github:snowfallorg/lib"; inputs.nixpkgs.follows = "nixpkgs"; }; |  | ||||||
| 
 |  | ||||||
|     # Secret management tool |  | ||||||
|     sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; |  | ||||||
| 
 |  | ||||||
|     # Home manager for managing the /home directory. |  | ||||||
|     home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; |  | ||||||
| 
 |  | ||||||
|     # Hardware specific tweaks and performance optimizations. |  | ||||||
|     hardware = { url = "github:NixOS/nixos-hardware/master"; }; |  | ||||||
| 
 |  | ||||||
|     # Catppuccin theme nix configuration. |  | ||||||
|     catppuccin = { url = "github:catppuccin/nix"; inputs.nixpkgs.follows = "nixpkgs"; }; |  | ||||||
| 
 |  | ||||||
|     # Declarative management of Flatpak packages. |  | ||||||
|     nix-flatpak = { url = "github:gmodena/nix-flatpak/?ref=v0.4.1"; }; |  | ||||||
| 
 |  | ||||||
|     # Apps |  | ||||||
|     zen-browser = { url = "github:0xc000022070/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; |  | ||||||
|     ghostty = { url = "github:ghostty-org/ghostty"; }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   nixConfig = { |  | ||||||
|     extra-substituters = [ |  | ||||||
|       "https://nix-community.cachix.org" |  | ||||||
|       "https://cache.nixos.org" |  | ||||||
|       "https://devenv.cachix.org" |  | ||||||
|       "https://shopware.cachix.org" |  | ||||||
|     ]; |  | ||||||
|     extra-trusted-public-keys = [ |  | ||||||
|       "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" |  | ||||||
|       "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" |  | ||||||
|       "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=" |  | ||||||
|       "shopware.cachix.org-1:IDifwLVQaaDU2qhlPkJsWJp/Pq0PfzHPIB90hBOhL3k=" |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   outputs = inputs: |  | ||||||
|     inputs.snowfall-lib.mkFlake { |  | ||||||
|       inherit inputs; # Providing flake inputs to Snowfall Lib. |  | ||||||
|       src = ./.; # "src" must point to the root of the flake. |  | ||||||
| 
 |  | ||||||
|       snowfall = { |  | ||||||
|         # Namespace for this flake's packages, library and overlays. |  | ||||||
|         namespace = "puzzlevision"; |  | ||||||
| 
 |  | ||||||
|         meta = { |  | ||||||
|           name = "jos-nixos-configuration"; # Used in certain places, like documentations. No spaces. |  | ||||||
|           title = "Jo's NixOS configuration"; # Basically just for decorational purposes. |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       channels-config = { |  | ||||||
|         allowUnfree = true; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       # Apply some NixOS modules globally. |  | ||||||
|       systems.modules.nixos = with inputs; [ |  | ||||||
|         sops-nix.nixosModules.sops |  | ||||||
|       ]; |  | ||||||
| 
 |  | ||||||
|       # Apply some home-manager modules globally. |  | ||||||
|       homes.modules = with inputs; [ |  | ||||||
|         nix-flatpak.homeManagerModules.nix-flatpak |  | ||||||
|         catppuccin.homeManagerModules.catppuccin |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
| } |  | ||||||
|  | @ -1,19 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| { |  | ||||||
|   # Declare user packages. |  | ||||||
|   home.packages = with pkgs; [ |  | ||||||
|     ### Runtimes |  | ||||||
|     nodejs_22 |  | ||||||
|     bun |  | ||||||
| 
 |  | ||||||
|     ### Tools |  | ||||||
|     git |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   home.stateVersion = "24.05"; |  | ||||||
| } |  | ||||||
|  | @ -1,70 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| { |  | ||||||
|   puzzlevision = { |  | ||||||
|     themes.catppuccin = { |  | ||||||
|       gtk.enable = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   home.file."~/.config/Yubico/u2f_keys".text = '' |  | ||||||
|     jo:gtKwCQKVw5O4IkWg8J8o7vHIo3hStmOqVcnmk97E335DwHnPUMIDTMnD46qEn/1tucTZlYfGABfzVVG+iYeUOA==,fVRFZb9iBiqjOXvk5Gm9ygO/O4huEUR1Uq3DGBlnS1RtqqK0shif8aOlNLkmn8Xe9+x4HYIeNEX4fc8Z7Y2Hgw==,es256,+presence |  | ||||||
|   ''; |  | ||||||
| 
 |  | ||||||
|   # Flatpak configuration. |  | ||||||
|   services.flatpak = { |  | ||||||
|     enable = true; |  | ||||||
|     update.auto.enable = true; |  | ||||||
|     uninstallUnmanaged = true; |  | ||||||
| 
 |  | ||||||
|     packages = []; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # TODO: look at git-sync for syncing stuff like obsidian vaults. |  | ||||||
|   programs.git-credential-oauth.enable = true; |  | ||||||
| 
 |  | ||||||
|   # Declare user packages. |  | ||||||
|   home.packages = with pkgs; [ |  | ||||||
|     ### General |  | ||||||
|     qflipper |  | ||||||
|     wineWowPackages.waylandFull |  | ||||||
|     vesktop |  | ||||||
|     lunar-client |  | ||||||
|     steam |  | ||||||
|     g4music |  | ||||||
|     bitwarden-desktop |  | ||||||
|     youtube-music |  | ||||||
| 
 |  | ||||||
|     ### Development |  | ||||||
|     avra |  | ||||||
|     avrdude |  | ||||||
|     jetbrains.phpstorm |  | ||||||
|     jetbrains-toolbox |  | ||||||
|     git |  | ||||||
|     nodejs_22 |  | ||||||
|     bun |  | ||||||
|     devenv |  | ||||||
|     python39 |  | ||||||
|     poetry |  | ||||||
|     nil |  | ||||||
|     zed-editor |  | ||||||
|     bruno |  | ||||||
|     deno |  | ||||||
| 
 |  | ||||||
|     ### Work |  | ||||||
|     teams-for-linux |  | ||||||
|     enpass |  | ||||||
| 
 |  | ||||||
|     ### Notes & Organisation |  | ||||||
|     obsidian |  | ||||||
| 
 |  | ||||||
|     ### Virtual Reality |  | ||||||
|     sidequest |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   home.stateVersion = "24.05"; |  | ||||||
| } |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   ... |  | ||||||
| }: with lib; |  | ||||||
| rec { |  | ||||||
|   ## Create a NixOS module option. (Stolen from Jake Hamilton) |  | ||||||
|   ## |  | ||||||
|   ## ```nix |  | ||||||
|   ## lib.mkOpt nixpkgs.lib.types.str "My default" "Description of my option." |  | ||||||
|   ## ``` |  | ||||||
|   ## |  | ||||||
|   #@ Type -> Any -> String |  | ||||||
|   mkOpt = |  | ||||||
|     type: default: description: |  | ||||||
|     mkOption { inherit type default description; }; |  | ||||||
| } |  | ||||||
|  | @ -1,8 +0,0 @@ | ||||||
| { |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: { |  | ||||||
|   home.packages = with pkgs; [ |  | ||||||
|     openssh |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,88 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   config, |  | ||||||
|   osConfig, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.desktop.gnome; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.desktop.gnome = with types; { |  | ||||||
|     enabled-extensions = mkOption { |  | ||||||
|       type = listOf package; |  | ||||||
|       default = with pkgs.gnomeExtensions; [ dash-to-dock user-themes blur-my-shell appindicator unite color-picker clipboard-history ]; |  | ||||||
|       example = [ dash-to-dock blur-my-shell ]; |  | ||||||
|       description = "Specify gnome extensions to install."; |  | ||||||
|     }; |  | ||||||
|     favorite-apps = mkOption { |  | ||||||
|       type = listOf str; |  | ||||||
|       default = ["org.gnome.Nautilus.desktop" "obsidian.desktop" "zen.desktop" "dev.zed.Zed.desktop"]; |  | ||||||
|       example = ["org.gnome.Nautilus.desktop" "obsidian.desktop"]; |  | ||||||
|       description = "Specify your favorite apps (sorted left to right)."; |  | ||||||
|     }; |  | ||||||
|     extensions = { |  | ||||||
|       unite = { |  | ||||||
|         show-window-buttons = mkOption { |  | ||||||
|           type = str; |  | ||||||
|           default = "never"; |  | ||||||
|           example = "never | maximized | tiled | both | always"; |  | ||||||
|           description = "Specify when Unite should display window buttons within the top panel."; |  | ||||||
|         }; |  | ||||||
|         hide-window-titlebars = mkOption { |  | ||||||
|           type = str; |  | ||||||
|           default = "maximized"; |  | ||||||
|           example = "never | maximized | tiled | both | always"; |  | ||||||
|           description = "Specify when Unite should hide window titlebars."; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|       blur-my-shell = { |  | ||||||
|         enable-blur = mkOpt bool false "Whether to enable blur-my-shell application blur."; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|     wallpaper = mkOpt str (builtins.toString ./wallpapers/abstract/amber-d.jxl) "Specify the path of your prefered Gnome wallpaper."; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf osConfig.${namespace}.desktop.gnome.enable { |  | ||||||
|     home.packages = cfg.enabled-extensions; |  | ||||||
| 
 |  | ||||||
|     dconf.settings = { |  | ||||||
|       "org/gnome/shell" = { |  | ||||||
|         favorite-apps = cfg.favorite-apps; |  | ||||||
|         enabled-extensions = forEach cfg.enabled-extensions (x: x.extensionUuid); |  | ||||||
|         disabled-extensions = []; # Make sure none of our extensions are disabled on system rebuild |  | ||||||
|       }; |  | ||||||
|       "org/gnome/shell/extensions/unite" = mkIf (builtins.elem pkgs.gnomeExtensions.unite cfg.enabled-extensions) { |  | ||||||
|         show-window-buttons = cfg.extensions.unite.show-window-buttons; |  | ||||||
|         hide-window-titlebars = cfg.extensions.unite.hide-window-titlebars; |  | ||||||
| 
 |  | ||||||
|         use-activities-text = false; |  | ||||||
|         extend-left-box = false; |  | ||||||
|         reduce-panel-spacing = false; |  | ||||||
|         show-legacy-tray = false; |  | ||||||
|         show-appmenu-button = false; |  | ||||||
|         show-desktop-name = false; |  | ||||||
|         enable-titlebar-actions = false; |  | ||||||
|         restrict-to-primary-screen = false; |  | ||||||
|         hide-activities-button = "never"; |  | ||||||
|         autofocus-windows = true; |  | ||||||
|         notifications-position = "right"; |  | ||||||
|       }; |  | ||||||
|       "org/gnome/shell/extensions/blur-my-shell/applications" = mkIf cfg.extensions.blur-my-shell.enable-blur { |  | ||||||
|         blur = true; |  | ||||||
|         sigma = 30; |  | ||||||
|         opacity = 230; |  | ||||||
|         enable-all = true; |  | ||||||
|       }; |  | ||||||
|       "org/gnome/desktop/background" = { |  | ||||||
|         picture-uri = cfg.wallpaper; |  | ||||||
|         picture-uri-dark = cfg.wallpaper; |  | ||||||
|       }; |  | ||||||
|       "org/gnome/desktop/interface" = { |  | ||||||
|         color-scheme = "prefer-dark"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| Before Width: | Height: | Size: 166 KiB | 
| Before Width: | Height: | Size: 5 MiB | 
| Before Width: | Height: | Size: 620 KiB | 
| Before Width: | Height: | Size: 549 KiB | 
| Before Width: | Height: | Size: 554 KiB | 
| Before Width: | Height: | Size: 164 KiB | 
| Before Width: | Height: | Size: 4.1 MiB | 
| Before Width: | Height: | Size: 1.6 MiB | 
| Before Width: | Height: | Size: 118 KiB | 
| Before Width: | Height: | Size: 815 KiB | 
| Before Width: | Height: | Size: 3.3 MiB | 
| Before Width: | Height: | Size: 836 KiB | 
| Before Width: | Height: | Size: 2.7 MiB | 
| Before Width: | Height: | Size: 1.4 MiB | 
| Before Width: | Height: | Size: 1.4 MiB | 
| Before Width: | Height: | Size: 707 KiB | 
| Before Width: | Height: | Size: 22 KiB | 
| Before Width: | Height: | Size: 760 KiB | 
| Before Width: | Height: | Size: 3.3 MiB | 
| Before Width: | Height: | Size: 864 KiB | 
| Before Width: | Height: | Size: 1,013 KiB | 
| Before Width: | Height: | Size: 256 KiB | 
| Before Width: | Height: | Size: 1.7 MiB | 
| Before Width: | Height: | Size: 5 MiB | 
|  | @ -1,17 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   palette = (pkgs.lib.importJSON (config.catppuccin.sources.palette + "/palette.json")).${config.catppuccin.flavor}.colors; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.palette = mkOption { type = types.attrsOf types.raw; }; |  | ||||||
| 
 |  | ||||||
|   config = { |  | ||||||
|     inherit palette; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,23 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   inherit (lib) mkEnableOption mkIf; |  | ||||||
|   cfg = config.${namespace}.themes.catppuccin.black-box; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.themes.catppuccin.black-box = { |  | ||||||
|     enable = mkEnableOption "Whether to enable the catppuccin theme for black-box."; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     dconf.settings = { |  | ||||||
|       "com/raggesilver/BlackBox" = { |  | ||||||
|         theme-dark = "Catppuccin Macchiato"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   ... |  | ||||||
| }: { |  | ||||||
|   home.file.".config/fish/themes/Catppuccin\ Macchiato.theme".source = lib.snowfall.fs.get-file "resources/apps/fish/Catppuccin\ Macchiato.theme"; |  | ||||||
| } |  | ||||||
|  | @ -1,13 +0,0 @@ | ||||||
| { |  | ||||||
|   ... |  | ||||||
| }: { |  | ||||||
|   catppuccin = { |  | ||||||
|     enable = true; |  | ||||||
|     accent = "blue"; |  | ||||||
|     flavor = "macchiato"; |  | ||||||
| 
 |  | ||||||
|     cursors.enable = true; |  | ||||||
|     cursors.accent = "blue"; |  | ||||||
|     cursors.flavor = "macchiato"; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,166 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   # Stolen from Oli @ git.gay, basically just themes default libadwaita components. |  | ||||||
|   css = pkgs.writeTextFile { |  | ||||||
|     name = "gtk-css"; |  | ||||||
|     text = '' |  | ||||||
|       @define-color accent_color ${config.palette.maroon.hex}; |  | ||||||
|       @define-color accent_bg_color ${config.palette.maroon.hex}; |  | ||||||
|       @define-color accent_fg_color ${config.palette.base.hex}; |  | ||||||
|       @define-color destructive_color ${config.palette.red.hex}; |  | ||||||
|       @define-color destructive_bg_color ${config.palette.red.hex}; |  | ||||||
|       @define-color destructive_fg_color ${config.palette.base.hex}; |  | ||||||
|       @define-color success_color ${config.palette.green.hex}; |  | ||||||
|       @define-color success_bg_color ${config.palette.green.hex}; |  | ||||||
|       @define-color success_fg_color ${config.palette.base.hex}; |  | ||||||
|       @define-color warning_color ${config.palette.mauve.hex}; |  | ||||||
|       @define-color warning_bg_color ${config.palette.mauve.hex}; |  | ||||||
|       @define-color warning_fg_color ${config.palette.base.hex}; |  | ||||||
|       @define-color error_color ${config.palette.red.hex}; |  | ||||||
|       @define-color error_bg_color ${config.palette.red.hex}; |  | ||||||
|       @define-color error_fg_color ${config.palette.base.hex}; |  | ||||||
|       @define-color window_bg_color ${config.palette.base.hex}; |  | ||||||
|       @define-color window_fg_color ${config.palette.text.hex}; |  | ||||||
|       @define-color view_bg_color ${config.palette.base.hex}; |  | ||||||
|       @define-color view_fg_color ${config.palette.text.hex}; |  | ||||||
|       @define-color headerbar_bg_color ${config.palette.mantle.hex}; |  | ||||||
|       @define-color headerbar_fg_color ${config.palette.text.hex}; |  | ||||||
|       @define-color headerbar_border_color rgba(${builtins.toString config.palette.base.rgb.r}, ${builtins.toString config.palette.base.rgb.g}, ${builtins.toString config.palette.base.rgb.b}, 0.7); |  | ||||||
|       @define-color headerbar_backdrop_color @window_bg_color; |  | ||||||
|       @define-color headerbar_shade_color rgba(0, 0, 0, 0.07); |  | ||||||
|       @define-color headerbar_darker_shade_color rgba(0, 0, 0, 0.07); |  | ||||||
|       @define-color sidebar_bg_color ${config.palette.mantle.hex}; |  | ||||||
|       @define-color sidebar_fg_color ${config.palette.text.hex}; |  | ||||||
|       @define-color sidebar_backdrop_color @window_bg_color; |  | ||||||
|       @define-color sidebar_shade_color rgba(0, 0, 0, 0.07); |  | ||||||
|       @define-color secondary_sidebar_bg_color @sidebar_bg_color; |  | ||||||
|       @define-color secondary_sidebar_fg_color @sidebar_fg_color; |  | ||||||
|       @define-color secondary_sidebar_backdrop_color @sidebar_backdrop_color; |  | ||||||
|       @define-color secondary_sidebar_shade_color @sidebar_shade_color; |  | ||||||
|       @define-color card_bg_color ${config.palette.mantle.hex}; |  | ||||||
|       @define-color card_fg_color ${config.palette.text.hex}; |  | ||||||
|       @define-color card_shade_color rgba(0, 0, 0, 0.07); |  | ||||||
|       @define-color dialog_bg_color ${config.palette.mantle.hex}; |  | ||||||
|       @define-color dialog_fg_color ${config.palette.text.hex}; |  | ||||||
|       @define-color popover_bg_color ${config.palette.mantle.hex}; |  | ||||||
|       @define-color popover_fg_color ${config.palette.text.hex}; |  | ||||||
|       @define-color popover_shade_color rgba(0, 0, 0, 0.07); |  | ||||||
|       @define-color shade_color rgba(0, 0, 0, 0.07); |  | ||||||
|       @define-color scrollbar_outline_color ${config.palette.surface0.hex}; |  | ||||||
|       @define-color blue_1 ${config.palette.blue.hex}; |  | ||||||
|       @define-color blue_2 ${config.palette.blue.hex}; |  | ||||||
|       @define-color blue_3 ${config.palette.blue.hex}; |  | ||||||
|       @define-color blue_4 ${config.palette.blue.hex}; |  | ||||||
|       @define-color blue_5 ${config.palette.blue.hex}; |  | ||||||
|       @define-color green_1 ${config.palette.green.hex}; |  | ||||||
|       @define-color green_2 ${config.palette.green.hex}; |  | ||||||
|       @define-color green_3 ${config.palette.green.hex}; |  | ||||||
|       @define-color green_4 ${config.palette.green.hex}; |  | ||||||
|       @define-color green_5 ${config.palette.green.hex}; |  | ||||||
|       @define-color yellow_1 ${config.palette.yellow.hex}; |  | ||||||
|       @define-color yellow_2 ${config.palette.yellow.hex}; |  | ||||||
|       @define-color yellow_3 ${config.palette.yellow.hex}; |  | ||||||
|       @define-color yellow_4 ${config.palette.yellow.hex}; |  | ||||||
|       @define-color yellow_5 ${config.palette.yellow.hex}; |  | ||||||
|       @define-color orange_1 ${config.palette.peach.hex}; |  | ||||||
|       @define-color orange_2 ${config.palette.peach.hex}; |  | ||||||
|       @define-color orange_3 ${config.palette.peach.hex}; |  | ||||||
|       @define-color orange_4 ${config.palette.peach.hex}; |  | ||||||
|       @define-color orange_5 ${config.palette.peach.hex}; |  | ||||||
|       @define-color red_1 ${config.palette.red.hex}; |  | ||||||
|       @define-color red_2 ${config.palette.red.hex}; |  | ||||||
|       @define-color red_3 ${config.palette.red.hex}; |  | ||||||
|       @define-color red_4 ${config.palette.red.hex}; |  | ||||||
|       @define-color red_5 ${config.palette.red.hex}; |  | ||||||
|       @define-color purple_1 ${config.palette.mauve.hex}; |  | ||||||
|       @define-color purple_2 ${config.palette.mauve.hex}; |  | ||||||
|       @define-color purple_3 ${config.palette.mauve.hex}; |  | ||||||
|       @define-color purple_4 ${config.palette.mauve.hex}; |  | ||||||
|       @define-color purple_5 ${config.palette.mauve.hex}; |  | ||||||
|       @define-color brown_1 ${config.palette.flamingo.hex}; |  | ||||||
|       @define-color brown_2 ${config.palette.flamingo.hex}; |  | ||||||
|       @define-color brown_3 ${config.palette.flamingo.hex}; |  | ||||||
|       @define-color brown_4 ${config.palette.flamingo.hex}; |  | ||||||
|       @define-color brown_5 ${config.palette.flamingo.hex}; |  | ||||||
|       @define-color light_1 ${config.palette.mantle.hex}; |  | ||||||
|       @define-color light_2 ${config.palette.mantle.hex}; |  | ||||||
|       @define-color light_3 ${config.palette.mantle.hex}; |  | ||||||
|       @define-color light_4 ${config.palette.mantle.hex}; |  | ||||||
|       @define-color light_5 ${config.palette.mantle.hex}; |  | ||||||
|       @define-color dark_1 ${config.palette.mantle.hex}; |  | ||||||
|       @define-color dark_2 ${config.palette.mantle.hex}; |  | ||||||
|       @define-color dark_3 ${config.palette.mantle.hex}; |  | ||||||
|       @define-color dark_4 ${config.palette.mantle.hex}; |  | ||||||
|       @define-color dark_5 ${config.palette.mantle.hex}; |  | ||||||
|     ''; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   cfg = config.${namespace}.themes.catppuccin.gtk; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.themes.catppuccin.gtk = { enable = mkEnableOption "Enable the Catppuccin theme for GTK"; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     home.packages = with pkgs; [ |  | ||||||
|       (colloid-gtk-theme.override { |  | ||||||
|         themeVariants = ["default"]; |  | ||||||
|         colorVariants = ["dark"]; |  | ||||||
|         sizeVariants = ["standard"]; |  | ||||||
|         tweaks = ["catppuccin"]; |  | ||||||
|       }) |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     gtk = { |  | ||||||
|       enable = true; |  | ||||||
| 
 |  | ||||||
|       font = { |  | ||||||
|         name = "Poppins"; |  | ||||||
|         size = 12; |  | ||||||
|         package = pkgs.poppins; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       theme = { |  | ||||||
|         name = "adw-gtk3-dark"; |  | ||||||
|         package = pkgs.adw-gtk3; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       gtk3 = { |  | ||||||
|         extraCss = ''@import url("${css}");''; |  | ||||||
|         extraConfig = { |  | ||||||
|           gtk-application-prefer-dark-theme = 1; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       gtk4 = { |  | ||||||
|         extraCss = ''@import url("${css}");''; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     catppuccin = { |  | ||||||
|       gtk = { |  | ||||||
|         icon = { |  | ||||||
|           enable = true; |  | ||||||
|           accent = "maroon"; |  | ||||||
|           flavor = "mocha"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     dconf.settings = { |  | ||||||
|       "org/gnome/shell/extensions/user-theme" = { |  | ||||||
|         name = "Colloid-Dark-Catppuccin"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "org/gnome/desktop/interface" = { |  | ||||||
|         color-scheme = "prefer-dark"; |  | ||||||
|         cursor-theme = "catppuccin-macchiato-blue-cursors"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   inherit (lib.${namespace}) mkOpt; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.user = with lib.types; { |  | ||||||
|     name = mkOpt str "Jo" "The user's short name."; |  | ||||||
|     fullName = mkOpt str "Johannes Reckers" "The user's full name."; |  | ||||||
|     email = mkOpt str "reckers.johannes@proton.me" "The user's primary E-Mail address."; |  | ||||||
|     icon = mkOpt str "./icon.jpg" "The path to the users prefered icon."; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| Before Width: | Height: | Size: 72 KiB | 
|  | @ -1,16 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   inherit (lib) types; |  | ||||||
|   inherit (lib.${namespace}) mkOpt; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.admin = with types; { |  | ||||||
|     name = mkOpt str "Jo" "The short name of the system admin."; |  | ||||||
|     full-name = mkOpt str "Johannes Reckers" "The full name of the system admin."; |  | ||||||
|     email = mkOpt str "system@thevoid.cafe" "The E-Mail of the system admin. (Used for system services by default)"; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,32 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.archetypes.server; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.archetypes.server = { enable = mkEnableOption "Enable the server archetype for your current system"; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     # Enable modules |  | ||||||
|     puzzlevision = { |  | ||||||
|       common = { |  | ||||||
|         nix = { |  | ||||||
|           enable = true; |  | ||||||
|           use-lix = true; |  | ||||||
|         }; |  | ||||||
|         grub.enable = true; |  | ||||||
|         networking.enable = true; |  | ||||||
|         kernel.enable = true; |  | ||||||
|         shell.enable = true; |  | ||||||
|         hardware.enable = true; |  | ||||||
|         locale.enable = true; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # Enable SSH for remote login |  | ||||||
|     services.openssh.enable = true; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,44 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.archetypes.workstation; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.archetypes.workstation = { enable = mkEnableOption "Enable the workstation archetype for your current system"; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     environment.sessionVariables = { |  | ||||||
|       MOZ_ENABLE_WAYLAND = "1"; # Firefox native Wayland support |  | ||||||
|       NIXOS_OZONE_WL = "1"; # Native Wayland in Chromium and Electron based applications |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # Enable modules |  | ||||||
|     puzzlevision = { |  | ||||||
|       common = { |  | ||||||
|         nix = { |  | ||||||
|           enable = true; # Standard Nix configuration |  | ||||||
|           use-lix = true; |  | ||||||
|           use-nixld = true; |  | ||||||
|         }; |  | ||||||
|         grub.enable = true; # Bootloader grub |  | ||||||
|         networking.enable = true; # Networkmanager configuration |  | ||||||
|         kernel.enable = true; # Kernel modifications |  | ||||||
|         bluetooth.enable = true; # Bluetooth support |  | ||||||
|         shell.enable = true; # Shell environment configuration |  | ||||||
|         hardware.enable = true; # Common hardware support and tweaks |  | ||||||
|         fonts.enable = true; # Common fonts and font management tweaks |  | ||||||
|         audio.enable = true; # Audio setup |  | ||||||
|         locale.enable = true; # Locale settings |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       tools = { |  | ||||||
|         cachix.enable = true; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       desktop.gnome.enable = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,23 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.common.audio; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.audio = { enable = mkEnableOption "whether to enable common audio support and tweaks"; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     services.pulseaudio.enable = false; |  | ||||||
| 
 |  | ||||||
|     security.rtkit.enable = true; |  | ||||||
|     services.pipewire = { |  | ||||||
|       enable = true; |  | ||||||
|       alsa.enable = true; |  | ||||||
|       alsa.support32Bit = true; |  | ||||||
|       pulse.enable = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,32 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.common.bluetooth; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.bluetooth = { enable = mkEnableOption "Enable bluetooth support on your current system"; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     environment.systemPackages = with pkgs; [ bluez ]; |  | ||||||
| 
 |  | ||||||
|     hardware.bluetooth = { |  | ||||||
|       enable = true; |  | ||||||
|       powerOnBoot = true; |  | ||||||
|       package = pkgs.bluez; |  | ||||||
| 
 |  | ||||||
|       settings = { |  | ||||||
|         General = { |  | ||||||
|           ControllerMode = "dual"; |  | ||||||
|           FastConnectable = "true"; |  | ||||||
|           Experimental = "true"; |  | ||||||
|           KernelExperimental = "true"; |  | ||||||
|           Disable= "Handsfree"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,30 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.common.fonts; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.fonts = with types; { |  | ||||||
|     enable = mkEnableOption "Enable system font management"; |  | ||||||
|     fonts = mkOption { |  | ||||||
|       type = listOf package; |  | ||||||
|       default = with pkgs; [ noto-fonts noto-fonts-cjk-sans noto-fonts-cjk-serif noto-fonts-emoji nerd-fonts.bigblue-terminal nerd-fonts.zed-mono monocraft ]; |  | ||||||
|       example = [ noto-fonts noto-fonts-emoji ]; |  | ||||||
|       description = "Install additional font packages"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     environment.variables = { |  | ||||||
|       LOG_ICONS = "true"; # Enable icons in tooling (requires nerdfonts) |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     environment.systemPackages = with pkgs; [ font-manager ]; |  | ||||||
| 
 |  | ||||||
|     fonts.packages = cfg.fonts; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,31 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.common.grub; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.grub = { enable = mkEnableOption "grub"; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     boot.loader.systemd-boot.enable = false; |  | ||||||
| 
 |  | ||||||
|     boot.loader.grub = { |  | ||||||
|       enable = true; |  | ||||||
|       devices = [ "nodev" ]; |  | ||||||
|       efiInstallAsRemovable = true; |  | ||||||
|       efiSupport = true; |  | ||||||
| 
 |  | ||||||
|       extraEntries = '' |  | ||||||
|         menuentry "Reboot" { |  | ||||||
|           reboot |  | ||||||
|         } |  | ||||||
|         menuentry "Poweroff" { |  | ||||||
|           halt |  | ||||||
|         } |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.common.hardware; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.hardware = { enable = mkEnableOption "whether to enable common hardware support"; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     hardware.sensor.iio.enable = true; # Enable iio-sensor for automatic screen rotation and similar features. |  | ||||||
|     hardware.flipperzero.enable = true; # Enable support for the flipperzero device. |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,24 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.common.kernel; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.kernel = { |  | ||||||
|     enable = mkEnableOption "Modify the standard kernel settings"; |  | ||||||
|     version = mkOption { |  | ||||||
|       type = types.str; |  | ||||||
|       default = "linuxPackages_latest"; |  | ||||||
|       example = "linuxPackages_latest"; |  | ||||||
|       description = "Set the kernel version to be used by your system"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     boot.kernelPackages = pkgs.${cfg.version}; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,56 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.common.locale; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.locale = { |  | ||||||
|     enable = mkEnableOption "whether to enable common locale tweaks"; |  | ||||||
| 
 |  | ||||||
|     language = mkOption { |  | ||||||
|       type = types.str; |  | ||||||
|       default = "en_US"; |  | ||||||
|       example = "en_US"; |  | ||||||
|       description = "Sets the language for most text, doesn't include monetary or measurement settings"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     country = mkOption { |  | ||||||
|       type = types.str; |  | ||||||
|       default = "de_DE"; |  | ||||||
|       example = "de_DE"; |  | ||||||
|       description = "Sets the language used for monetary or measurement settings (USD vs Euro, etc...)"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     keymap = mkOption { |  | ||||||
|       type = types.str; |  | ||||||
|       default = "de"; |  | ||||||
|       example = "de"; |  | ||||||
|       description = "Sets the keymap to be used by the system"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     # Internationalisation properties. |  | ||||||
|     i18n.defaultLocale = "${cfg.language}.UTF-8"; |  | ||||||
|     i18n.extraLocaleSettings = { |  | ||||||
|       LC_ADDRESS = "${cfg.country}.UTF-8"; |  | ||||||
|       LC_IDENTIFICATION = "${cfg.country}.UTF-8"; |  | ||||||
|       LC_MEASUREMENT = "${cfg.country}.UTF-8"; |  | ||||||
|       LC_MONETARY = "${cfg.country}.UTF-8"; |  | ||||||
|       LC_NAME = "${cfg.country}.UTF-8"; |  | ||||||
|       LC_NUMERIC = "${cfg.country}.UTF-8"; |  | ||||||
|       LC_PAPER = "${cfg.country}.UTF-8"; |  | ||||||
|       LC_TELEPHONE = "${cfg.country}.UTF-8"; |  | ||||||
|       LC_TIME = "${cfg.country}.UTF-8"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # Set console keymap. |  | ||||||
|     console.keyMap = cfg.keymap; |  | ||||||
|     services.xserver = { |  | ||||||
|       xkb.layout = cfg.keymap; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,20 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkEnableOption; |  | ||||||
|   cfg = config.${namespace}.common.networking; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.networking = { |  | ||||||
|     enable = mkEnableOption "Whether to enable networking through NetworkManager."; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     networking.networkmanager = { |  | ||||||
|       enable = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,53 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.common.nix; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.nix = { |  | ||||||
|     enable = mkEnableOption "Overwrite the default Nix configuration."; |  | ||||||
|     use-lix = mkEnableOption "Enable Lix as an alternative to CppNix."; |  | ||||||
|     use-nixld = mkEnableOption "Enable the use of dynamically linked executables on nix based systems."; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     nix = { |  | ||||||
|       settings = { |  | ||||||
|         auto-optimise-store = true; |  | ||||||
|         builders-use-substitutes = true; |  | ||||||
|         experimental-features = [ "nix-command" "flakes" ]; |  | ||||||
|         keep-derivations = true; |  | ||||||
|         keep-outputs = true; |  | ||||||
|         max-jobs = "auto"; |  | ||||||
|         warn-dirty = false; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       # Garbage collection configuration. |  | ||||||
|       gc = { |  | ||||||
|         automatic = true; |  | ||||||
|         dates = "daily"; |  | ||||||
|         options = "--delete-older-than 3d"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       extraOptions = '' |  | ||||||
|         extra-substituters = https://devenv.cachix.org |  | ||||||
|         extra-trusted-public-keys = devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw= |  | ||||||
|       ''; |  | ||||||
| 
 |  | ||||||
|       package = mkIf cfg.use-lix pkgs.lix; # Enable LIX |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # Dynamic libraries for unpackaged programs |  | ||||||
|     programs.nix-ld = mkIf cfg.use-nixld { |  | ||||||
|       enable = true; |  | ||||||
|       libraries = with pkgs; [ |  | ||||||
|         glibc |  | ||||||
|         libcxx |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,20 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.common.shell; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.common.shell = { |  | ||||||
|     enable = mkEnableOption "Modify the standard shell options"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     environment.shells = with pkgs; [ fish ]; |  | ||||||
|     users.defaultUserShell = pkgs.fish; |  | ||||||
|     programs.fish.enable = true; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,53 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.desktop.gnome; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.desktop.gnome = { enable = mkEnableOption "gnome"; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     services.xserver.enable = true; |  | ||||||
| 
 |  | ||||||
|     # Enable GNOME and GDM. |  | ||||||
|     services.xserver.displayManager.gdm.enable = true; |  | ||||||
|     services.xserver.desktopManager.gnome.enable = true; |  | ||||||
| 
 |  | ||||||
|     environment.gnome.excludePackages = with pkgs; [ |  | ||||||
|       gnome-tour |  | ||||||
|       gedit |  | ||||||
|       cheese |  | ||||||
|       geary |  | ||||||
|       yelp # Help view |  | ||||||
|       epiphany # Gnome web |  | ||||||
|       gnome-console |  | ||||||
|       gnome-terminal |  | ||||||
|       gnome-music |  | ||||||
|       tali # Poker game |  | ||||||
|       iagno # Go game |  | ||||||
|       hitori # Sudoku game |  | ||||||
|       gnome-contacts |  | ||||||
|       gnome-initial-setup |  | ||||||
|       gnome-system-monitor |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     programs.dconf.enable = true; |  | ||||||
| 
 |  | ||||||
|     services.gnome.gnome-keyring.enable = true; |  | ||||||
| 
 |  | ||||||
|     programs.kdeconnect = { |  | ||||||
|       enable = true; |  | ||||||
|       package = pkgs.gnomeExtensions.gsconnect; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     environment.systemPackages = with pkgs; [ |  | ||||||
|       gnome-tweaks |  | ||||||
|       blackbox-terminal # Terminal app |  | ||||||
|       resources # System resource manager |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,20 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.desktop.plasma; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.desktop.plasma = { enable = mkEnableOption "Whether to enable the KDE Plasma desktop environment"; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     services.xserver.enable = true; |  | ||||||
| 
 |  | ||||||
|     services.desktopManager.plasma6.enable = true; |  | ||||||
|     services.displayManager.sddm.enable = true; |  | ||||||
| 
 |  | ||||||
|     programs.kdeconnect.enable = true; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,50 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   config, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.security.yubikey; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.security.yubikey = with types; { |  | ||||||
|     enable = mkEnableOption "Enable the Yubikey as a security device."; |  | ||||||
|     key-id = mkOption { |  | ||||||
|       type = listOf str; |  | ||||||
|       default = [ "30650551" ]; |  | ||||||
|       example = [ "123456" "1234567" ]; |  | ||||||
|       description = "Register additional Yubikey IDs."; |  | ||||||
|     }; |  | ||||||
|     enable-agent = mkEnableOption "Enable the Yubikey agent"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     environment.systemPackages = with pkgs; [ yubikey-manager yubioath-flutter ]; |  | ||||||
| 
 |  | ||||||
|     services.udev.packages = [ pkgs.yubikey-personalization ]; |  | ||||||
|     services.pcscd.enable = true; |  | ||||||
| 
 |  | ||||||
|     programs.gnupg.agent = { |  | ||||||
|       enable = true; |  | ||||||
|       enableSSHSupport = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     security.pam.services = { |  | ||||||
|       login.u2fAuth = true; |  | ||||||
|       sudo.u2fAuth = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     services.yubikey-agent.enable = cfg.enable-agent; |  | ||||||
| 
 |  | ||||||
|     programs.ssh.extraConfig = mkIf cfg.enable-agent '' |  | ||||||
|         Host * |  | ||||||
|             IdentityAgent /usr/local/var/run/yubikey-agent.sock |  | ||||||
|     ''; |  | ||||||
| 
 |  | ||||||
|     environment.sessionVariables = mkIf cfg.enable-agent { |  | ||||||
|         SSH_AUTH_SOCK = "/usr/local/var/run/yubikey-agent.sock"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,47 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   host, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.bluesky.pds; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.services.bluesky.pds = { |  | ||||||
|     enable = mkEnableOption "Enable the Bluesky PDS, your own ATproto home!"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     sops.secrets.bluesky-pds = { |  | ||||||
|       sopsFile = lib.snowfall.fs.get-file "secrets/bluesky-pds.service.env"; |  | ||||||
|       format = "dotenv"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     systemd.tmpfiles.rules = [ |  | ||||||
|       "d /var/lib/containers/bluesky 0700 root root -" |  | ||||||
|       "d /var/lib/containers/bluesky/pds 0700 root root -" |  | ||||||
|       "d /var/lib/containers/bluesky/pds/blobs 0700 root root -" |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     virtualisation.oci-containers.containers.bluesky-pds = { |  | ||||||
|       image = "ghcr.io/bluesky-social/pds:0.4"; |  | ||||||
|       autoStart = true; |  | ||||||
|       hostname = host; |  | ||||||
|       environmentFiles = [ |  | ||||||
|         config.sops.secrets.bluesky-pds.path |  | ||||||
|       ]; |  | ||||||
|       labels = { |  | ||||||
|         "traefik.enable" = "true"; |  | ||||||
|         "traefik.http.routers.bluesky-pds.entrypoints" = "websecure"; |  | ||||||
|         "traefik.http.routers.bluesky-pds.rule" = "Host(`bsky.thevoid.cafe`) || HostRegexp(`.+\.bsky\.thevoid\.cafe`)"; |  | ||||||
|         "traefik.http.middlewares.bluesky-pds-header.headers.customrequestheaders.Host" = "{host}"; |  | ||||||
|         "traefik.http.services.bluesky-pds.loadbalancer.server.port" = "2583"; |  | ||||||
|       }; |  | ||||||
|       volumes = [ |  | ||||||
|         "/var/lib/containers/bluesky/pds:/pds" |  | ||||||
|       ]; |  | ||||||
|       extraOptions = ["--network=proxy"]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,30 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   host, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.duckdns; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.services.duckdns = { |  | ||||||
|     enable = mkEnableOption "Enable DuckDNS, the dynamic dns service. Will periodically refresh your IP."; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     sops.secrets.duckdns = { |  | ||||||
|       sopsFile = lib.snowfall.fs.get-file "secrets/duckdns.service.env"; |  | ||||||
|       format = "dotenv"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     virtualisation.oci-containers.containers.duckdns = { |  | ||||||
|       image = "lscr.io/linuxserver/duckdns:latest"; |  | ||||||
|       autoStart = true; |  | ||||||
|       hostname = host; |  | ||||||
|       environmentFiles = [ |  | ||||||
|         config.sops.secrets.duckdns.path |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,56 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   inherit (lib) mkEnableOption mkIf; |  | ||||||
|   cfg = config.${namespace}.services.forgejo; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.services.forgejo = { |  | ||||||
|     enable = mkEnableOption "Whether to enable the forgejo git service."; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     services.forgejo = { |  | ||||||
|       enable = true; |  | ||||||
| 
 |  | ||||||
|       database = { |  | ||||||
|         type = "postgres"; |  | ||||||
|       }; |  | ||||||
|       lfs.enable = true; |  | ||||||
|       settings = { |  | ||||||
|         server = { |  | ||||||
|           DOMAIN = "git.thevoid.cafe"; |  | ||||||
|           ROOT_URL = "https://git.thevoid.cafe/"; |  | ||||||
|           HTTP_PORT = "3030"; |  | ||||||
|         }; |  | ||||||
|         service.DISABLE_REGISTRATION = true; |  | ||||||
|         actions = { |  | ||||||
|           ENABLED = true; |  | ||||||
|           DEFAULT_ACTIONS_URL = "github"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # TODO: finish this configuration |  | ||||||
| 
 |  | ||||||
|     services.traefik = { |  | ||||||
|       dynamicConfigOptions = { |  | ||||||
|         http = { |  | ||||||
|           routers.forgejo = { |  | ||||||
|             entryPoints = ["websecure"]; |  | ||||||
|             rule = "Host(`git.thevoid.cafe`)"; |  | ||||||
|             service = "forgejo"; |  | ||||||
|           }; |  | ||||||
| 
 |  | ||||||
|           services.forgejo.loadbalancer.server = { |  | ||||||
|             url = "http://localhost:3030"; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,44 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   host, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.homepage; |  | ||||||
|   homepageConfigDirectory = lib.snowfall.fs.get-file "resources/services/homepage"; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.services.homepage = { enable = mkEnableOption "Enable Homepage, an intuitive dashboard for your services."; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     systemd.tmpfiles.rules = [ |  | ||||||
|       "d /var/lib/containers/homepage 0700 root root -" |  | ||||||
|       "d /var/lib/containers/homepage/config 0700 root root -" |  | ||||||
|       "d /var/lib/containers/homepage/images 0700 root root -" |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     # Copy files from homepageConfigDirectory to the target directory |  | ||||||
|     system.activationScripts.homepage = '' |  | ||||||
|       cp -r ${homepageConfigDirectory}/* /var/lib/containers/homepage/ |  | ||||||
|     ''; |  | ||||||
| 
 |  | ||||||
|     virtualisation.oci-containers.containers.homepage = { |  | ||||||
|       image = "ghcr.io/gethomepage/homepage:latest"; |  | ||||||
|       autoStart = true; |  | ||||||
|       hostname = host; |  | ||||||
|       labels = { |  | ||||||
|         "traefik.enable" = "true"; |  | ||||||
|         "traefik.http.routers.homepage.entrypoints" = "websecure"; |  | ||||||
|         "traefik.http.routers.homepage.rule" = "Host(`home.thevoid.cafe`)"; |  | ||||||
|         "traefik.http.services.homepage.loadbalancer.server.port" = "3000"; |  | ||||||
|       }; |  | ||||||
|       volumes = [ |  | ||||||
|         "/var/lib/containers/homepage/config:/app/config:rw" |  | ||||||
|         "/var/lib/containers/homepage/images:/app/public/images:rw" |  | ||||||
|         "/var/run/docker.sock:/var/run/docker.sock:ro" # Optional, used for docker integration. |  | ||||||
|       ]; |  | ||||||
|       extraOptions = ["--network=proxy"]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,109 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   host, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.sharkey; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.services.sharkey = { enable = mkEnableOption "Enable Sharkey, the activitypub-based microblogging service."; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     sops.secrets.sharkey-config = { |  | ||||||
|       sopsFile = lib.snowfall.fs.get-file "secrets/default.sharkey.service.yaml"; |  | ||||||
|       format = "yaml"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     sops.secrets.sharkey-docker-config = { |  | ||||||
|       sopsFile = lib.snowfall.fs.get-file "secrets/docker-env.sharkey.service.env"; |  | ||||||
|       format = "dotenv"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     sops.secrets.sharkey-meilisearch-config = { |  | ||||||
|       sopsFile = lib.snowfall.fs.get-file "secrets/meilisearch.sharkey.service.env"; |  | ||||||
|       format = "dotenv"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     systemd.tmpfiles.rules = [ |  | ||||||
|       "d /var/lib/containers/sharkey 0700 991 991 -" |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     system.activationScripts.sharkey-web = '' |  | ||||||
|       cp ${config.sops.secrets.sharkey-config.path} /var/lib/containers/sharkey/.config/default.yml |  | ||||||
|     ''; |  | ||||||
| 
 |  | ||||||
|     virtualisation.oci-containers.containers.sharkey-web = { |  | ||||||
|       image = "registry.activitypub.software/transfem-org/sharkey:latest"; |  | ||||||
|       autoStart = true; |  | ||||||
|       hostname = host; |  | ||||||
|       dependsOn = [ "sharkey-redis" "sharkey-db" ]; |  | ||||||
|       environment = { |  | ||||||
|         NODE_ENV = "production"; |  | ||||||
|       }; |  | ||||||
|       labels = { |  | ||||||
|         "traefik.enable" = "true"; |  | ||||||
|         "traefik.http.routers.sharkey.entrypoints" = "websecure"; |  | ||||||
|         "traefik.http.routers.sharkey.rule" = "Host(`voxtek.enterprises`)"; |  | ||||||
|         "traefik.http.services.sharkey.loadbalancer.server.port" = "3000"; |  | ||||||
|         # Homepage labels |  | ||||||
|         "homepage.group" = "Entertainment"; |  | ||||||
|         "homepage.name" = "Sharkey"; |  | ||||||
|         "homepage.icon" = "/images/logo.png"; |  | ||||||
|         "homepage.href" = "https://voxtek.enterprises"; |  | ||||||
|         "homepage.description" = "Private VoxTek themed Sharkey instance"; |  | ||||||
|         "homepage.ping" = "https://voxtek.enterprises"; |  | ||||||
|         "homepage.widget.type" = "mastodon"; |  | ||||||
|         "homepage.widget.url" = "https://voxtek.enterprises"; |  | ||||||
|       }; |  | ||||||
|       volumes = [ |  | ||||||
|         "/var/lib/containers/sharkey/files:/sharkey/files:rw" |  | ||||||
|         "/var/lib/containers/sharkey/.config:/sharkey/.config:ro" |  | ||||||
|       ]; |  | ||||||
|       extraOptions = ["--network=proxy --network=sharknet"]; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     virtualisation.oci-containers.containers.sharkey-redis = { |  | ||||||
|       image = "docker.io/redis:7.0-alpine"; |  | ||||||
|       autoStart = true; |  | ||||||
|       hostname = host; |  | ||||||
|       volumes = [ |  | ||||||
|         "/var/lib/containers/sharkey/redis:/data:rw" |  | ||||||
|       ]; |  | ||||||
|       extraOptions = ["--network=sharknet"]; # Todo: implement healthcheck |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     virtualisation.oci-containers.containers.sharkey-meilisearch = { |  | ||||||
|       image = "getmeili/meilisearch:v1.3.4"; |  | ||||||
|       autoStart = true; |  | ||||||
|       hostname = host; |  | ||||||
|       volumes = [ |  | ||||||
|         "/var/lib/containers/sharkey/meili_data:/meili_data:rw" |  | ||||||
|       ]; |  | ||||||
|       environment = { |  | ||||||
|         MEILI_NO_ANALYTICS = "true"; |  | ||||||
|         MEILI_ENV = "production"; |  | ||||||
|       }; |  | ||||||
|       environmentFiles = [ |  | ||||||
|         config.sops.secrets.sharkey-meilisearch.path |  | ||||||
|       ]; |  | ||||||
|       extraOptions = ["--network=sharknet"]; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     virtualisation.oci-containers.containers.sharkey-db = { |  | ||||||
|       image = "docker.io/postgres:16.1-alpine"; |  | ||||||
|       autoStart = true; |  | ||||||
|       hostname = host; |  | ||||||
|       volumes = [ |  | ||||||
|         "/var/lib/containers/sharkey/db:/var/lib/postgresql/data:rw" |  | ||||||
|       ]; |  | ||||||
|       environmentFiles = [ |  | ||||||
|         config.sops.secrets.sharkey-docker-config.path |  | ||||||
|       ]; |  | ||||||
|       extraOptions = ["--network=sharknet"]; # Todo: implement healthcheck |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # W.I.P Todo: finish Sharkey service |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,110 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.traefik; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.services.traefik = { |  | ||||||
|     enable = mkEnableOption "Enable the Traefik service."; |  | ||||||
|     cloudflareEmail = mkOption { |  | ||||||
|       type = types.str; |  | ||||||
|       default = config.${namespace}.admin.email; |  | ||||||
|       example = "system@thevoid.cafe"; |  | ||||||
|       description = "Specify the E-Mail associated with your Cloudflare account for ACME."; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     networking.firewall.allowedTCPPorts = [80 8080 443]; # http, dashboard, https |  | ||||||
| 
 |  | ||||||
|     systemd.services.traefik = { |  | ||||||
|       environment = { |  | ||||||
|         CF_API_EMAIL = cfg.cloudflareEmail; |  | ||||||
|       }; |  | ||||||
|       serviceConfig = { |  | ||||||
|         EnvironmentFile = [config.sops.secrets."services/cloudflare/api_key".path]; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     services.traefik = { |  | ||||||
|       enable = true; |  | ||||||
|       group = "docker"; |  | ||||||
| 
 |  | ||||||
|       staticConfigOptions = { |  | ||||||
|         log = { |  | ||||||
|           level = "INFO"; |  | ||||||
|           filePath = "/var/lib/traefik/traefik.log"; |  | ||||||
|           noColor = false; |  | ||||||
|           maxSize = 100; |  | ||||||
|           compress = true; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         api = { |  | ||||||
|           dashboard = true; |  | ||||||
|           insecure = true; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         providers = { |  | ||||||
|           docker = { |  | ||||||
|             exposedByDefault = false; |  | ||||||
|             network = "proxy"; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         certificatesResolvers = { |  | ||||||
|           letsencrypt = { |  | ||||||
|             acme = { |  | ||||||
|               email = cfg.cloudflareEmail; |  | ||||||
|               storage = "/var/lib/traefik/acme.json"; |  | ||||||
|               #caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"; # Uncomment this when testing stuff! |  | ||||||
|               dnsChallenge = { |  | ||||||
|                 provider = "cloudflare"; |  | ||||||
|               }; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         entryPoints.web = { |  | ||||||
|           address = ":80"; |  | ||||||
|           http.redirections.entryPoint = { |  | ||||||
|             to = "websecure"; |  | ||||||
|             scheme = "https"; |  | ||||||
|             permanent = true; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         entryPoints.websecure = { |  | ||||||
|           address = ":443"; |  | ||||||
|           http.tls = { |  | ||||||
|             certResolver = "letsencrypt"; |  | ||||||
|             domains = [ |  | ||||||
|               { |  | ||||||
|                 main = "voidtales.dev"; |  | ||||||
|                 sans = ["*.voidtales.dev"]; |  | ||||||
|               } |  | ||||||
|               { |  | ||||||
|                 main = "voxtek.enterprises"; |  | ||||||
|                 sans = ["*.voxtek.enterprises"]; |  | ||||||
|               } |  | ||||||
|               { |  | ||||||
|                 main = "thevoid.cafe"; |  | ||||||
|                 sans = ["*.thevoid.cafe"]; |  | ||||||
|               } |  | ||||||
|               { |  | ||||||
|                 main = "reckers.dev"; |  | ||||||
|                 sans = ["*.reckers.dev"]; |  | ||||||
|               } |  | ||||||
|               { |  | ||||||
|                 main = "rhysbot.co.uk"; |  | ||||||
|                 sans = ["*.rhysbot.co.uk"]; |  | ||||||
|               } |  | ||||||
|             ]; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,43 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   host, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.vaultwarden; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.services.vaultwarden = { enable = mkEnableOption "Enable Vaultwarden, a self-hostable password manager."; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     sops.secrets.vaultwarden = { |  | ||||||
|       sopsFile = lib.snowfall.fs.get-file "secrets/vaultwarden.service.env"; |  | ||||||
|       format = "dotenv"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # Ensure directories exists before OCI container is launched. |  | ||||||
|     systemd.tmpfiles.rules = [ |  | ||||||
|       "d /var/lib/containers/vaultwarden/data 0700 root root -" |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     # "Inspired" by BreakingTV @ github.com |  | ||||||
|     virtualisation.oci-containers.containers.vaultwarden = { |  | ||||||
|       image = "vaultwarden/server"; |  | ||||||
|       autoStart = true; |  | ||||||
|       hostname = host; |  | ||||||
|       labels = { |  | ||||||
|         "traefik.enable" = "true"; |  | ||||||
|         "traefik.http.routers.vaultwarden.entrypoints" = "websecure"; |  | ||||||
|         "traefik.http.routers.vaultwarden.rule" = "Host(`vault.thevoid.cafe`)"; |  | ||||||
|       }; |  | ||||||
|       volumes = [ |  | ||||||
|         "/var/lib/containers/vaultwarden/data:/data:rw" |  | ||||||
|       ]; |  | ||||||
|       environmentFiles = [ |  | ||||||
|         config.sops.secrets.vaultwarden.path |  | ||||||
|       ]; |  | ||||||
|       extraOptions = ["--network=proxy"]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,17 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   ...  |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.tools.cachix; |  | ||||||
| in { |  | ||||||
|   options.${namespace}.tools.cachix = { enable = mkEnableOption "Enable the cachix binary cache service on your system."; }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     environment.systemPackages = with pkgs; [ cachix ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
|  | @ -1,30 +0,0 @@ | ||||||
| # name: 'Catppuccin Macchiato' |  | ||||||
| # url: 'https://github.com/catppuccin/fish' |  | ||||||
| # preferred_background: 24273a |  | ||||||
| 
 |  | ||||||
| fish_color_normal cad3f5 |  | ||||||
| fish_color_command 8aadf4 |  | ||||||
| fish_color_param f0c6c6 |  | ||||||
| fish_color_keyword ed8796 |  | ||||||
| fish_color_quote a6da95 |  | ||||||
| fish_color_redirection f5bde6 |  | ||||||
| fish_color_end f5a97f |  | ||||||
| fish_color_comment 8087a2 |  | ||||||
| fish_color_error ed8796 |  | ||||||
| fish_color_gray 6e738d |  | ||||||
| fish_color_selection --background=363a4f |  | ||||||
| fish_color_search_match --background=363a4f |  | ||||||
| fish_color_option a6da95 |  | ||||||
| fish_color_operator f5bde6 |  | ||||||
| fish_color_escape ee99a0 |  | ||||||
| fish_color_autosuggestion 6e738d |  | ||||||
| fish_color_cancel ed8796 |  | ||||||
| fish_color_cwd eed49f |  | ||||||
| fish_color_user 8bd5ca |  | ||||||
| fish_color_host 8aadf4 |  | ||||||
| fish_color_host_remote a6da95 |  | ||||||
| fish_color_status ed8796 |  | ||||||
| fish_pager_color_progress 6e738d |  | ||||||
| fish_pager_color_prefix f5bde6 |  | ||||||
| fish_pager_color_completion cad3f5 |  | ||||||
| fish_pager_color_description 6e738d |  | ||||||
|  | @ -1,30 +0,0 @@ | ||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/en/configs/bookmarks |  | ||||||
| 
 |  | ||||||
| - IT: |  | ||||||
|     - Github: |  | ||||||
|         - abbr: GH |  | ||||||
|           href: https://github.com/ |  | ||||||
|     - Codeberg: |  | ||||||
|         - icon: mdi-image-filter-hdr-outline |  | ||||||
|           href: https://codeberg.org/ |  | ||||||
|     - Stackoverflow: |  | ||||||
|         - abbr: SO |  | ||||||
|           href: https://stackoverflow.com/ |  | ||||||
| 
 |  | ||||||
| - Social: |  | ||||||
|     - Reddit: |  | ||||||
|         - abbr: RE |  | ||||||
|           href: https://reddit.com/ |  | ||||||
|     - Whatsapp: |  | ||||||
|         - icon: mdi-chat-outline |  | ||||||
|           href: https://web.whatsapp.com/ |  | ||||||
| 
 |  | ||||||
| - Fun: |  | ||||||
|     - YouTube: |  | ||||||
|         - icon: mdi-video-vintage |  | ||||||
|           href: https://youtube.com/ |  | ||||||
|     - A-Dark-Room: |  | ||||||
|         - icon: mdi-campfire |  | ||||||
|           href: https://adarkroom.doublespeakgames.com/ |  | ||||||
|  | @ -1,10 +0,0 @@ | ||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/en/configs/docker/ |  | ||||||
| 
 |  | ||||||
| # my-docker: |  | ||||||
| #   host: 127.0.0.1 |  | ||||||
| #   port: 2375 |  | ||||||
| 
 |  | ||||||
| default-docker: |  | ||||||
|   socket: /var/run/docker.sock |  | ||||||
|  | @ -1,14 +0,0 @@ | ||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/en/configs/services |  | ||||||
| 
 |  | ||||||
| - System: |  | ||||||
|     - Fritz!Box: |  | ||||||
|         name: Fritz!Box |  | ||||||
|         icon: avmfritzbox.png |  | ||||||
|         href: http://192.168.178.1 |  | ||||||
|         description: Home router configuration |  | ||||||
|         widget: |  | ||||||
|           type: "fritzbox" |  | ||||||
|           url: http://192.168.178.1 |  | ||||||
|         ping: http://192.168.178.1 |  | ||||||
|  | @ -1,54 +0,0 @@ | ||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/en/configs/settings |  | ||||||
| 
 |  | ||||||
| title: Jo's Home |  | ||||||
| background: |  | ||||||
|   image: /images/blossoms.png |  | ||||||
|   blur: md |  | ||||||
|   opacity: 45 |  | ||||||
| 
 |  | ||||||
| favicon: /images/logo.png |  | ||||||
| 
 |  | ||||||
| theme: dark |  | ||||||
| color: slate |  | ||||||
| iconStyle: theme |  | ||||||
| 
 |  | ||||||
| layout: |  | ||||||
|   Media: |  | ||||||
|     style: row |  | ||||||
|     columns: 1 |  | ||||||
|   Utilities: |  | ||||||
|     style: column |  | ||||||
|     columns: 2 |  | ||||||
|   Entertainment: |  | ||||||
|     style: column |  | ||||||
|     column: 3 |  | ||||||
|   System: |  | ||||||
|     style: column |  | ||||||
|     columns: 3 |  | ||||||
|   Development: |  | ||||||
|     style: row |  | ||||||
|     columns: 2 |  | ||||||
|   Social: |  | ||||||
|     style: column |  | ||||||
|     columns: 3 |  | ||||||
|   IT: |  | ||||||
|     style: column |  | ||||||
|     columns: 3 |  | ||||||
|   Fun: |  | ||||||
|     style: column |  | ||||||
|     columns: 3 |  | ||||||
| 
 |  | ||||||
| headerStyle: clean |  | ||||||
| 
 |  | ||||||
| target: _blank |  | ||||||
| 
 |  | ||||||
| quicklaunch: |  | ||||||
|   searchDescriptions: true |  | ||||||
|   hideInternetSearch: false |  | ||||||
|   hideVisitURL: false |  | ||||||
| 
 |  | ||||||
| hideVersion: true |  | ||||||
| 
 |  | ||||||
| showStats: false |  | ||||||
|  | @ -1,22 +0,0 @@ | ||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/en/configs/widgets |  | ||||||
| 
 |  | ||||||
| - resources: |  | ||||||
|     label: System |  | ||||||
|     cpu: true |  | ||||||
|     memory: true |  | ||||||
|     uptime: true |  | ||||||
|     units: metric |  | ||||||
| 
 |  | ||||||
| - resources: |  | ||||||
|     label: Storage |  | ||||||
|     disk: / |  | ||||||
| 
 |  | ||||||
| - datetime: |  | ||||||
|     text_size: xl |  | ||||||
|     format: |  | ||||||
|       timeStyle: short |  | ||||||
|       dateStyle: long |  | ||||||
|       hourCycle: h23 |  | ||||||
|       locale: de |  | ||||||
| Before Width: | Height: | Size: 5.9 MiB | 
| Before Width: | Height: | Size: 17 KiB | 
| Before Width: | Height: | Size: 178 KiB | 
| Before Width: | Height: | Size: 5.9 MiB | 
| Before Width: | Height: | Size: 188 KiB | 
| Before Width: | Height: | Size: 2.2 MiB | 
| Before Width: | Height: | Size: 1 MiB | 
| Before Width: | Height: | Size: 206 KiB | 
| Before Width: | Height: | Size: 1.1 MiB | 
|  | @ -1,36 +0,0 @@ | ||||||
| #ENC[AES256_GCM,data:ymMgS47dyPaiR+dlsUTo/QFARGsKD8cbdxKlZBq7k0m0kKzyaL+SqEnI,iv:WSs+8MDiq28oWZ/NvwVfkMeTuP8V9SXC1MSDqe6D8HY=,tag:epOEDkItljcgD/JukD4S5A==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:pvDHzvOMTOuNZy/tNaBq5GblwMhio1Wu7W2hg4rzfk1DqXh6lrjhXf7tucutirVrk2bMVVRqLMZf5ZUYaUuOXfOXD0FJ7ts=,iv:na9arv0UPhtjiW4291gR2GJYVcsGM8Hg2uVinmcjF88=,tag:C7FOgkHPB314xXYgJLAFOQ==,type:comment] |  | ||||||
| PDS_HOSTNAME=ENC[AES256_GCM,data:/PJHZzk+KcNAkXSG4TjCLSQ=,iv:a64llfRwXJy38bSbSs163b0PsJ9hWi31WzMQ2rn4iL4=,tag:ZXKUVFXvqust5eFtitm20A==,type:str] |  | ||||||
| PDS_PORT=ENC[AES256_GCM,data:w+OLqg==,iv:HO1/XJdfpKUSiQLIXVLU1XrqqfzajNcclqRcSaNpQWo=,tag:UXOHqHS/S71Rwo7ixYizSw==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:6g/ZfgV8SbqeDyWu6Nu4rQHJEKETTDflSKKr73HAJhovX4RHrkik,iv:2EwvFzAbuxgBeJeTmUDAfcHdzSbzfXFpB8X4XQTS0Bk=,tag:99MvXgGXcDoCBxC0Q21ZhA==,type:comment] |  | ||||||
| PDS_DATA_DIRECTORY=ENC[AES256_GCM,data:sdidZg==,iv:AgJI8rY7A09RQPU9DZU051Civ4eDe4irtyYwSjgxiko=,tag:R66Pys9x14Ef8jdH/Vtwsg==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:jnvmS1bF0F+r1hbsNdLqIijZGEkhV9tKSl7IQiHdt2/b812dgEgIDxC27w2FgeB2qO6zf3vD18A=,iv:DYJ+CWqk/b/ALr9TD7HPBf71Rky5hyi9ChffQD0PfMM=,tag:50MIIyqgHdhMSERgP3UG9g==,type:comment] |  | ||||||
| PDS_BLOBSTORE_DISK_LOCATION=ENC[AES256_GCM,data:kjbRpPC7Xui7qQ==,iv:raibPKnndeK/NACyCqDUVcP1B6jV6knopQbzrKmGY9Q=,tag:xszl7ZhAUdaVZ5iDipR/lA==,type:str] |  | ||||||
| PDS_BLOB_UPLOAD_LIMIT=ENC[AES256_GCM,data:+KoT3/h4ohc=,iv:vouuiEDd45PcwyyNxdbYzWYZDSG4xaSh0j2SjZsXzw8=,tag:dDbLCEcDnd3m5d+w5SzsEQ==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:2Hu8altCHAXazYQAixYKYOS6u2brQR3vcPR+rUSSGOFlrB86+EUsXVud17g+ZTY4Fynzxh+FPojGdu9blBsiKdkg9SH/nqflnq6h,iv:FcIASLSlyBbDVQRPL3ySig5S6vDyoOJyZrR3qmK9Ij8=,tag:dETBU1taXpPoBJJ5g9v8lw==,type:comment] |  | ||||||
| PDS_REPO_SIGNING_KEY_K256_PRIVATE_KEY_HEX=ENC[AES256_GCM,data:O98x9izHHm0pUf0m9TdokgJS8QWJnYt0fAfEfsTaGXLYc5lMlJRZ4S2PeAuYzGR+8hkJ/zKjKAPJRNmkE8qKNQ==,iv:D+w5QVLAw7s+khJ5p3Vzvq9VaPBFO393nJnmla61Fko=,tag:pLQ/VKx74Xp0kXIy63oIzA==,type:str] |  | ||||||
| PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=ENC[AES256_GCM,data:OSuzQBZqo9GhBN1cqLLbaBWYtPkS6Q+8OY5Elrb9tw4H++9Yv5Z8EluPwl+8yPr+Bwo/px38A9fjrmRYUiZn5w==,iv:Nvn7Mb0VwHSs60g+iQnG/FR/hjAntsEiPX085HKksSg=,tag:cICZ2ceEFK683A+VznPLSw==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:jfeJPg58+C1pr7bzvgzB7Chc6HhTmZimTvTxQhbHXQxEuyjO6NHi32IwKOClljBL,iv:LWh3Iu3mKhJxVL0kFykFmUhis2f7ANa8B3yF4IPIZHs=,tag:Bma2uzjI5my41yHnTti6Iw==,type:comment] |  | ||||||
| PDS_JWT_SECRET=ENC[AES256_GCM,data:bXh9dEpV23CXmqnPEAK1wm0eU2SEPk04N3FSJD01Mx4=,iv:Rd52tJGU+V6vGgLlzXBqX5jGidC+KH3C76U1qp2Z5DI=,tag:Fi3j6bYKV9P2xaisRTx13A==,type:str] |  | ||||||
| PDS_ADMIN_PASSWORD=ENC[AES256_GCM,data:bPIy15HEM0Vjy9JN10Hjc4or9+d2Wd11RCuiKhMK8ns=,iv:KGjGK4iuXAnE8pLwHP9d67otZ4+cjjhJWrWR3oV5X+0=,tag:ub9u0x3XJuo6WQqMAXyRrg==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:JiFiCQEIK+rTTTMiYwFqCwLPV88UoSWYN+4rWfROBVj111oVg8EtoXJa,iv:rsMuO5IvC94JZbLSxc5WSS3UuWa6E3vBp0tzeT9xZNU=,tag:KTSyE2EPbD3HUFZXWddJjA==,type:comment] |  | ||||||
| PDS_DID_PLC_URL=ENC[AES256_GCM,data:W4FxI9zuMrr0kMEQ0ugNjpYsSaM5,iv:mlqu2n4Vxja3tLasqmIVzZnvWMOqU4OaYn7lU+agkOM=,tag:cTEIhSv48Rres98kgkuFtg==,type:str] |  | ||||||
| PDS_BSKY_APP_VIEW_URL=ENC[AES256_GCM,data:fwcz+Z95CIWaohp0d4ZEJB7Lc9c=,iv:28VuOI4a4K5s6dSOYz1Gp4YquqcSRA3PYT1fzNg8P6k=,tag:61JYt0UeDIoHUNNzoDHCAg==,type:str] |  | ||||||
| PDS_BSKY_APP_VIEW_DID=ENC[AES256_GCM,data:hxos9yGqdQt1cUdHeh4sC4Lpt/c=,iv:EYPROnOlZ653yOQVgWeO0lbKoM0vTDt3N76Qr71g9ek=,tag:I6JvO9/23V4mbJW4XX6lPw==,type:str] |  | ||||||
| PDS_REPORT_SERVICE_URL=ENC[AES256_GCM,data:+2j/vYlUK/XwDtskOmRpRjKcsK8=,iv:EAnpyCuPoniGNf4hOO8EFOXq2+XlpmbOF0HzpQlHAA0=,tag:sj6XNHUSLsNeYIFa1qP1Mg==,type:str] |  | ||||||
| PDS_REPORT_SERVICE_DID=ENC[AES256_GCM,data:/RLQ6D76MccWR1yE1OTc91JtwvPwoXjH2kEVvwIfkWE=,iv:Fl7e2qaqj0gcH7pPGCzZTuIQgBvIvxx+BEgbW3/8Jj0=,tag:4eavQt0MDWh2oUjvEBK9Jg==,type:str] |  | ||||||
| PDS_CRAWLERS=ENC[AES256_GCM,data:X8Gf3BtpQ204i0/AwQbR+GiZOeY=,iv:vdhToyxzwF2PQcB4otI5BMoUcN9pJWvbP1D6T3z0AE0=,tag:T01tI6MRZXwswoB2BqMEfA==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:p0cLIOdKd+l+dRMiTOWc,iv:NUd8o/h56gtx5oUzawpnh+KvRUcqoflozT4iJKhNVk8=,tag:DqmoDqW2chihKx8dAxgnQw==,type:comment] |  | ||||||
| PDS_OAUTH_PROVIDER_NAME=ENC[AES256_GCM,data:zdEEWeBrp2v/lzGbUrL6fWWK,iv:R6ISKGGePHJJHo/8tam/9LnY6Sdq73nGBKdlp6+/qes=,tag:Mdg0dOBGyenjxRlaZqxOEw==,type:str] |  | ||||||
| PDS_OAUTH_PROVIDER_PRIMARY_COLOR=ENC[AES256_GCM,data:y2kXFLgMfQ==,iv:BcmweofuJbqwxuF1NgE4LDdq8wnlywYIZmSt5+rJzDY=,tag:ZSJaqVM22n1slNhC5hiYjw==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:lXPnReG2UoQ9ZQ==,iv:oVIVFKpbJFFyp+jslT1ZzfXI8lZ62ZNqGJSi148bUek=,tag:kTbWnEDa88X4G7Msgdl2LQ==,type:comment] |  | ||||||
| LOG_ENABLED=ENC[AES256_GCM,data:aSy6rQ==,iv:N9jI4SOkBKWIpZSPYGadxXWksVQPa2OBR/wPqWffNSY=,tag:kaqz/iTAmN5m7Ba7Q4DrRA==,type:str] |  | ||||||
| PDS_INVITE_REQUIRED=ENC[AES256_GCM,data:3A==,iv:fCUgZw9k/TXotvhgu/dNiEWsS81iaUqBEoniKZIGfKQ=,tag:elpjSMFQLDSgrQOrO9Zwpw==,type:str] |  | ||||||
| sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFNE5JNnBlbG5sT2ZES1lj\nbWU2ZlNpZ3YyOHFlWHlISXV2NFpuR0Y5Q2xVCjVNWTlSNy9hS1hhcUY0eHh2b25W\nemdCRWhINzd2WnM5VC9GaHpPUWs5ZXMKLS0tICtNVTJsdmVNOS9GVU5odTd1cS9D\nUmoxTnM1Vm1NUndjaitjaVhTUmQvSE0KRIxuzz43MqcwHe/Lg0bNmLjaIg3XUr0L\nQmvAitUE2yMTqNc+7UK8tyhYYbbm55ZQYExA3036M/JS8DwgbnVVQw==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_0__map_recipient=age1gudgza8lv02nwec0pejqpp5t7zu0tzjsfkmvgvy3ckfscr9f4qrq2sl5dv |  | ||||||
| sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0RHBxSWxRMHdiSGNhS2tz\nNkpaL3lRbHFHWmlBbXV4YSt2MmFGQ2JsYndNCjRSQzBXd25SZ05zR2xXdWwxazgv\nZWVyZ0FkK1hYRW5tQ280Y1Jvc2gvVFUKLS0tIDBjQkh6QzZGVlg2aUUzdHptYjJC\nTlFxc3RjR3RDNWtrRXRCUW1ybitMcEEK1lIlBzdiAH7DJLsX1XxEhykk0a4vOp8F\nK/iEyvAix1MVyt3a0faLfoyqxQY5DBspYkW79A+uvx/44II4O0PBNg==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_1__map_recipient=age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d |  | ||||||
| sops_lastmodified=2024-10-29T03:45:44Z |  | ||||||
| sops_mac=ENC[AES256_GCM,data:8oojVGNNYw+BJn7Dy1o2D4QXGzUesje3162rTS7wkxfK9r4qc5f1T9abP0HmEpSKmLODCAZvRQfeOuRJJhppbFSoHnlShjobM0nWdicSr98BmFlKFJ5ltZy9WDqZMna/p4gI+b0pG06I8e9UnrL+pb3sWAH6rUs2+i3pQLFcS78=,iv:yU6DfWhQ4/hpfgWN25SKyMiOEIzxx5+OSeB8Nil2uoY=,tag:MtvLPZgakbqBwGOcDcY+6g==,type:str] |  | ||||||
| sops_unencrypted_suffix=_unencrypted |  | ||||||
| sops_version=3.9.1 |  | ||||||
|  | @ -1,93 +0,0 @@ | ||||||
| #ENC[AES256_GCM,data:eIiG0Tw4yr/XAwttxD+yBG3JUGnRFF/wID54twOK4ehqgixTZRUDUtSAVGBco6JJ0SBTJYeqFDXtvs1jRkIO6t4RyMFkL2QeiMYFr9dOrOiyAbbOM1+Sp2Yi3qSbLtbI0/NETEUEhwIACUn1tfanfMFgZqcKdG4qHIdz12zlYOiyT3D65HnMapRFGj0nfdf0UKlcDXUOCVxZxRhoa2XAColWQozCAmvZJMLfQk/UyPFnnr4wgJyvVCCFeEhu,iv:aqvfnesYkvZ5m/7evwvK2h16I9pvL8KRW2+Qs066Q1s=,tag:BkaxVW83r3RLDk8YbmO3Mw==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:JQDxHZFRQiBy9fHlGXKo105G7HXngg==,iv:uaziiobAtGu6Zke21DSGBgcFfiJo7KZ+awFEH7si7rk=,tag:K1EPBlWvIoP1jmzcsLIyvw==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:eIiG0Tw4yr/XAwttxD+yBG3JUGnRFF/wID54twOK4ehqgixTZRUDUtSAVGBco6JJ0SBTJYeqFDXtvs1jRkIO6t4RyMFkL2QeiMYFr9dOrOiyAbbOM1+Sp2Yi3qSbLtbI0/NETEUEhwIACUn1tfanfMFgZqcKdG4qHIdz12zlYOiyT3D65HnMapRFGj0nfdf0UKlcDXUOCVxZxRhoa2XAColWQozCAmvZJMLfQk/UyPFnnr4wgJyvVCCFeEhu,iv:aqvfnesYkvZ5m/7evwvK2h16I9pvL8KRW2+Qs066Q1s=,tag:BkaxVW83r3RLDk8YbmO3Mw==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:rDT59Ke45ejmMj3zy27VpswSg12HsZbD,iv:Xg1Z4pgygWRLf7SW7UrJwIQQMWFtMBDbj7ivPVKh3KA=,tag:N3Dcr5uuObped2PJOM618Q==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:4A1iClcwwlmMPT+33glvbYFkI0J4Lvw/11mqRg5Dc1og7dOtGVF57q1wrRU//dgTkOHl8CA2w8fZmFco9/N75U9aJctLd9rkfp7abZ6qphw+SizAWRrpJf82zir0hygdM+ID1DPhCJAz99lWRfYTTyGFg3/RCt2WvfhVjH2Hs1n+0Kq4eni7BAtFHIVQGu5fHlsb944SgodDiMtiI6egAsteVbcC82fpFTU3rDdd0wi3/oQ=,iv:LKkWLNAjzXqrHcrpcCL3oVUkpdtYZbsrK1eqYyR8qpw=,tag:OEWyqmJtw6HSfmy2+tW7fA==,type:comment] |  | ||||||
| url: ENC[AES256_GCM,data:RnuJZKUfGRpM5LcOcVJD6DfTGv1DHC/1qmI=,iv:+CDa3FvZn/6dmql2m+Gbh16ceOriIJtYKZR6WcucRv0=,tag:6WpF67maVqAywT7tXPuP7g==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:Mlf23/juV4DO6iLHE8nkKvcS/F+YqFRC9957Lr++gpwmiRCJDPseGHKMSWXNqBvZFdb9d75O,iv:JVdbkue6gRD/TF6GxoekZ0d45IASh7k2K84/m2FPpIQ=,tag:q/we5yAewp3A2jyybV7VIg==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:6dlFfIjmmOK3wcvH3NvuE4rvJmcxYhd1ww==,iv:Ddd68Y346dV9wzxSnEXbItnFoESrZ+5GZH5f5ToSzhs=,tag:pRagpm0hTyHOHixWJtszXw==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:wbm6H8e7qJ6FGdkBVx/qzbr+sQiG6w/omYvkEd1y5DuFTMnMzmeEjkty49+OTiXZXYHE1DNuukZgZ5UJd2Wafh5ybqd7048Pt4Qaro8m,iv:APWvYGk59JGUBvzCdKLXvkXZskXD1pvMXYz9o9A9ZRA=,tag:YybRbo5rvjyVDogEcdJn3w==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:y1ACTJmNVGBvuK/pFYtChn+nVgnVtwJqTSEXbo7aHM9bpa2bIGKnVprMhoxNj4k9I6udy5DGA9S0vdk6/FyZm7eQWPd4I45Czh53S4x+mAOee49KEdV+F5xgLTwlHdDzI23Ea+ohlzX/17giK9g7OvI3NLK3l6fK+7AgzNmW8xGuaT1mWSqcREmZu0R5xhU=,iv:vhiqqkRWcVuyUD0M37q4iF2McsSjmhb22RS8/ipzlhg=,tag:mwMgq+nxLLA9hBLPnD39Fw==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:ObZX9Wg7KmlaYYDY9l8hL2nl9ABGbdb0E5MDMAO5KFAgXZjG0HEX7BoEYZVgjrlruS8fWg==,iv:/v4JRfwb1mWiOT/RlwzdZd1MahGtPQC0LAMuefzcByc=,tag:tUTKoFHj2ExsFFa4/EXhUg==,type:comment] |  | ||||||
| port: ENC[AES256_GCM,data:4vlNBQ==,iv:Z0cPW5jB93zuYNLzwnFcVQRKtmOWnJ2HIm1YdQ77jXg=,tag:Z4dVFvA/G+LlYKKjlqy5kA==,type:int] |  | ||||||
| #ENC[AES256_GCM,data:FjORD74M8kk6vbRuaCwqJt1cXJCFKv4LuWNJCY8tdXc/atfdt0SadGno4tKU95oABdsVzAzmo/819l3aoxulDhVa11Cc6Bs3SjjAlMvMsUlAFOqlYXM0,iv:MTcRU2cLS2Ow3HOGSJHagBj7mKRlIWZEORFcKYu954o=,tag:uQMc5LvuXfPRqglXtBsF4A==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:Hn2QVKpQwT8ZGJ52LosoqIznRjWpqkWpo7pE1SBmqAtj8USuDO/r5br3BK8KTO2OI0JhIfcsNO161woR1zXgjBP+Ql0Hf0iVz7Y5UbaBJXUoc9W85fcuBgZXd1uJNRWgqHEYTPT500JwQZo/+GvBA1TeTMhinGVaB9k3QvQRieEqqnCcm5YZCdE=,iv:lCyItmFQsd20tiC/F6ss9e98g35lXndZ8+l1HKiUEE4=,tag:HSmkMgS98FuyGcGOFN8cbQ==,type:comment] |  | ||||||
| db: |  | ||||||
|     host: ENC[AES256_GCM,data:9/8dGL4WGftscg==,iv:uiGO3HNX9Mh1OWeX/nT8xpTEaflzBIQSlX4/POGPPFk=,tag:mDjWsVN8JzoxxSDFicd+iw==,type:str] |  | ||||||
|     port: ENC[AES256_GCM,data:F8Gn4g==,iv:7pePNcsQdZ0WncvNt5zBeqEo3IgZM7+a5Z1eb7DafmY=,tag:C3oykAez+kkE7U2GIuR1xg==,type:int] |  | ||||||
|     #ENC[AES256_GCM,data:KD+HO1HEdCVl9vEg62c=,iv:hD/9zpz4DJw+xMRg2LNdr64KCk3J5EMzp/aFYZGS6Is=,tag:oS0kufLrZHBK6hR+tfcvPA==,type:comment] |  | ||||||
|     db: ENC[AES256_GCM,data:3BEcRu/h,iv:il0mOuQAeZ8WscwwlsFpiLdNN9mkmfLhCknTk0L5m2U=,tag:XynG4kPvR1Z7jb+y7TiQag==,type:str] |  | ||||||
|     #ENC[AES256_GCM,data:UDtm9zc=,iv:TzVK4YfaJ9KgOe3olNqfl/vzpRNSiv0q7LYO8wJD7js=,tag:p45PD7U1BhK9GmcnNRc+3A==,type:comment] |  | ||||||
|     user: ENC[AES256_GCM,data:oLQpofJ0,iv:GSk9Ns5HExTc2L4Og7ggTnyoZOo9/wbxYMqrW7NNO6s=,tag:YOEz5lUikEigrimNlM70BA==,type:str] |  | ||||||
|     pass: ENC[AES256_GCM,data:5wbd3sQr9rmtgorG6+6ry9a9UqoHB+8/AjFfpOnaqtYvVy3PrA==,iv:/YTCSbU1kFwSr3w2n13JbzIaCo9hRwtSfF/00P4u470=,tag:XVJ88UR2zz4bjhCkn7erXQ==,type:str] |  | ||||||
| dbReplications: ENC[AES256_GCM,data:6z3JZ6o=,iv:lPqo4/H8xSX7TBJz6VlpLc0lQfoLLnyC/qdOuoX+QOQ=,tag:DvKWTntqWWwbDclgYRAdDw==,type:bool] |  | ||||||
| #ENC[AES256_GCM,data:TXpI1M1csi9FNlsxz5Du+53IhDwPsKyFBPEzwJd1gh1PzSTt4SxJetSSiAH+w/e9H6mBNX5cdmcOEo2LuwtA8zNGZ01wryA3,iv:i3/jvyACkM7eHYOqFrOeOyfzX2h9+oN0IdtZjjGj1SM=,tag:SG/B0pEK9NzTCdlGN1BH6A==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:ySwDMVC57IaXd0nbldBvgIR7Q2mUKjhAjgwDN9kFB6ntqpgRVhx1rXVRQmad5nIuCwFcLXKthPqkZL0bzkWWhBWkOgWKcwQsJnepTWFXJhdWbTvpEfXvIA0vKmRkten6FYuqHuONDm5cQlpYJsSTsRxHSOskHVmIhTiTsEX6Rie0U6f1dfh/2B8drlU9NEZ2YdRV,iv:s195UUADD8v3iysVfKxAhacB+5k4qA40fvGyPA0AZL8=,tag:MjZZsiOJ5Nmp+GqdOwna8w==,type:comment] |  | ||||||
| redis: |  | ||||||
|     host: ENC[AES256_GCM,data:tbN7GWvKIEGzNZnycQ==,iv:BG63xG07/dzXV16dQ/zlAAXctjLpUD2+jVIvRyhwSlw=,tag:HcA39uX5JnM9NoX3dTaVOQ==,type:str] |  | ||||||
|     port: ENC[AES256_GCM,data:HxFo+A==,iv:g60rM9QyHyQagbmTmMjhIEYjUv849VgxuJ1If5aOujE=,tag:xVK2Ga+aNwvh2PgNXZtdqA==,type:int] |  | ||||||
| #ENC[AES256_GCM,data:N/PpMaIlB3Rj4x3b8/kp7YceW7vhbwJHygokJ4AyAc8L3exmcuSLwYsGPrXiMnqsKpFaW1EDJHnsuYmHyy5tZ7ILGvpHvBqjVcwIUT7HGZ2yJo43HsuwvPpT,iv:wpoYY0nYI03IUilylUeW7fubQeDK+1TTdr5OoT9tmCQ=,tag:OSqvIiLcH8rL/RctjxwaIA==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:TsIFxtB/RZjTPRYMxugArUKCoWQXLoTTNftV/Dy3wyx95vUx3a3y4ye8FeEiWXWAZvIaDpGJw0wOBD+/H3cnmGakhnDioMMFP1rNwNKxvaacoR8EmiL6r9jLQgG91amvpxxNZyy1wGuYtPJKimIuOsS8IxLRaE998l3uFQmALWrU,iv:2jA6+wXcrSWY/cLRyQxSeE4W+OSc4hxEPw6ZI1XTdnI=,tag:nuG+IkMnMH21MnOkNoNeQw==,type:comment] |  | ||||||
| meilisearch: |  | ||||||
|     host: ENC[AES256_GCM,data:S6OibpnDXkANiTE++xYWNwekZg==,iv:YbiOIm0BEy1NL4MrDCLkGFrqxAFblI6ypzhsaCh7Ss4=,tag:N3uwjp6DUOiojLRugvMzXA==,type:str] |  | ||||||
|     port: ENC[AES256_GCM,data:M4kIuA==,iv:3JLcXVb/xavEc2g2FXeCOwIBV9ca/trnL2NbqP68NJA=,tag:qIushZTVxsjOar+n09v4jg==,type:int] |  | ||||||
|     apiKey: ENC[AES256_GCM,data:CEuvxht+9kMwXoqNOWKoRMA2APi0x4RE1eiC3D9Fhl89dozjWPO5lIzNHQ==,iv:/ktXT6PJFiHHOrSGz5uP+8NdnW0rym8bgLwYGORZ/Ug=,tag:DUhNQWlErF2c1GCBdps1tQ==,type:str] |  | ||||||
|     ssl: ENC[AES256_GCM,data:W4L/Oc8=,iv:PoU0HtV2O9A73oRTQiEqxjFXD9fRxxDZo+eWg1Qz//M=,tag:EWyDqsDIWsFqJN5PTuGZ+A==,type:bool] |  | ||||||
|     index: "" |  | ||||||
|     scope: ENC[AES256_GCM,data:4Z0F0flz,iv:T7vH+n6ALnPBmqIibbdW9Neb3ZDMiOuTgjYsBO51Gnk=,tag:u2482hOOcAX0DB6UjMRQjQ==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:zA0HEDK78mqOSIFpMFx7jr7SfbnYVvVPLXwH1ncFRbt0cqa4DLIkvxWIzlKBkXmQPzIXrjuy,iv:f6iR4UJEG9OqX3wwDBUrzEVpAGvF3YAKvbFUtPkbBHI=,tag:Aafo8LJ86A0upwnjfmn6Dw==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:xCM0aAZZ1XXpPnv+XSH3yFimvTk3hk/kR7LFOH9zMBknwSO4NnNdG+gi7sRh6XkiQ3tHVIi8qEwuooeR1d392P3JhhftuBvIxWSVkteDxk6iEO1n/i8sxsCvlla3423NQp8xRn2lce5P9SyAdsuW1buWgawtMp6UBXVu1KlNCsTPmoSq9SluCVfdb2XgBmK5apEpAJ4Pij93U+Kvp5dM,iv:Z05DhKcqtcLKWPDEope3W76ubA5IkRaJzHZ5lvv9w6o=,tag:bYu5p79HiFMSXHwFafkG0Q==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:Mlf23/juV4DO6iLHE8nkKvcS/F+YqFRC9957Lr++gpwmiRCJDPseGHKMSWXNqBvZFdb9d75O,iv:JVdbkue6gRD/TF6GxoekZ0d45IASh7k2K84/m2FPpIQ=,tag:q/we5yAewp3A2jyybV7VIg==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:Zfc2c01XMNx5bLtRIb3wnag8fk4vACYP,iv:pNw+yAC6Iv43fFXbD1jE4gFVzj80YyHvyQm7DaPxbgg=,tag:3RqhaUMxjz022IyAHwQXrQ==,type:comment] |  | ||||||
| id: ENC[AES256_GCM,data:SUJPHA==,iv:3UuUuSpqsLhB+lfx9g2b/9ErjzRy67/y6X87BC8efWQ=,tag:uzS5WsuIAWmmvkJn50omtQ==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:TXpI1M1csi9FNlsxz5Du+53IhDwPsKyFBPEzwJd1gh1PzSTt4SxJetSSiAH+w/e9H6mBNX5cdmcOEo2LuwtA8zNGZ01wryA3,iv:i3/jvyACkM7eHYOqFrOeOyfzX2h9+oN0IdtZjjGj1SM=,tag:SG/B0pEK9NzTCdlGN1BH6A==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:0JbVf4fAE7hmWK7RkANGgtZLP1V/LfipKeUIENnsG3vgDwojndX9dkJLChqUVNLLEvnlsNC6Xn6q2/f1m8bDZM5vNWiO8Q10SM4AAbaNXHx2+L42gPw4EgkmyzWSxDMlq7BvrRyJsQzM4W1yH/WS+/EpNbWHwHd80QTnX2O/vyi6Qu0yQOTQeMGKXgUSsjNeLSZP,iv:LSpdsY1p72Dql1yMqdhQUEXuehxp4LZK9/AQp6664Vk=,tag:uSNjFE6rXObxB7vdIa7Kvg==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:BQ7ngzrYTh/RKwSKrKdesmnybMijoV8DES7U,iv:OsH12SZa37BpPHKkPQGRvCS4HIY+RFKE6+1ino3CFi8=,tag:gMiXdpEaHdqMDnn9O2ozzQ==,type:comment] |  | ||||||
| clusterLimit: ENC[AES256_GCM,data:XQ==,iv:AZWCWUGsm6MCwbwLR2DbAQAPaE9sPx1N57I46E0UCMo=,tag:6johJGekQXtambLHNP8VEw==,type:int] |  | ||||||
| #ENC[AES256_GCM,data:6k9z4r5bKKauLB2PLf5fzA8thUgPvNnJQa4qVPA0P7J/n8puU9STc+sL/rX+ARS8X/anBQw00jb8HTgkAfL/NVyNz7DBlB874sZ7Ib076IphwwnPsw==,iv:truPWFH6uJUncvdygoV/nEN0/RvTfky5sUX+6wOKlzA=,tag:Z9Pf3Cmz4WI3HT74u1cxCg==,type:comment] |  | ||||||
| maxNoteLength: ENC[AES256_GCM,data:QDyTHA==,iv:UayYHSk5cnsUH6SfBK3qJ9nDQhkLw7xpq7gWYIPLVGs=,tag:cFE49Hzccy0GfwnxQKOiWQ==,type:int] |  | ||||||
| proxyBypassHosts: |  | ||||||
|     - ENC[AES256_GCM,data:YQBDUjoYfgD9MG6QyQ==,iv:H4cQqMmwQPgBtB7PzC8bRcGP1lV52D5J1hK9VNTp3aA=,tag:3B8S0IlU3R6aj+pJmdjrBA==,type:str] |  | ||||||
|     - ENC[AES256_GCM,data:Jodbs7SDAnLyM0OPEmfahVuc,iv:IK52i2Mg2/C2S3ylAX0XMissIswEvLmZyuCe6cs4jtg=,tag:GQKMe/PsWkWKuqc9k6DiKA==,type:str] |  | ||||||
|     - ENC[AES256_GCM,data:gCxWvKCj2GSPeneYIK9lHMc=,iv:NLmY/Ajc3Vkpicu1ICPuoal1ki+0IECeQNf7qFwMwMU=,tag:2UzcrdiqpvL0AscCDhccNA==,type:str] |  | ||||||
|     - ENC[AES256_GCM,data:MCVnqZP7M85Eg3tY,iv:cAX1ycouIBj89yCDM/XtyQxESj3L2NiRU/2mzWzTKSs=,tag:glZSideoEzODWFAnewrbOA==,type:str] |  | ||||||
|     - ENC[AES256_GCM,data:54K/02Tsyylh+1nTspP1/yk7H0vtr8kQcg==,iv:Ollc3ofaZFBFy2hYxF8/4Z2pb4DtT3ZzEs5t/X1gy+M=,tag:q/XAAeNmz/SNfP91gVLjaA==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:cSrUxckHey1hcFC99sbQNroyz8mTBcdr6fvsQOsljSLt/r4=,iv:f7Tq4X5AyxiTnuyx/2bp84UEPp7TOLncbTAYk1d3hqQ=,tag:o1OlgB6Fn7e4Xt/KfFj9dw==,type:comment] |  | ||||||
| #ENC[AES256_GCM,data:nYcPAsVWNZwUKE6YFTT56OG+ZOIJfUOPd8UzAr9jROgYtBbPxsJKhM5VMs/BWoKUC1zkXm0f2MCStdHXEiHhqfLQrI60NjBJiIw60BtFhj6jxEZUWrMrPQRO0+fA5O0yN2h0LDQUknEMEQ==,iv:i8DCJF2ipE4uEWjO9z1V5Da8yOhcR5DsTIPoUliMumQ=,tag:CJ83eBJX7ASp9xCz+l6lWw==,type:comment] |  | ||||||
| proxyRemoteFiles: ENC[AES256_GCM,data:jOWSAQ==,iv:QEgSLI3qN0Z/9hngcsCitYRD49jFED0vjrPq9AQfm0Y=,tag:b8Ba5aUv9H6q24g8cx6x6A==,type:bool] |  | ||||||
| #ENC[AES256_GCM,data:Dowaa2s7FCZ4wnhPU5+y6ka1ynFyD9w5PvZwKbNmGgxSImBEFzCWlRC+ev4WeOOl,iv:CQckotLMXJ673l+KikmJLMpC/0NArZAjXY2ntuQlIcY=,tag:uhszxHSOQ7y9G1w/7P+zyg==,type:comment] |  | ||||||
| signToActivityPubGet: ENC[AES256_GCM,data:QrHNhg==,iv:bILL+oCm/uBAKM4bdQvkzbo1bmzG1pP7OsqEOOJoUXo=,tag:Ef/yodnDY2xma+pHgQJ09w==,type:bool] |  | ||||||
| #ENC[AES256_GCM,data:n0tU1G/Kp4lURVDfR88KUuM4YEBmRnJrdyGLB/nJ6U36EoF/CYLgjh6TcyM2RE9Iidya2txAT0nqyMwyLAPKKzgJpisI6kFPDZJrhw==,iv:FrinvSFO7wqMy5IhBSxtNTuVtfCh91bHyFQ7bs0QdrY=,tag:UZ+QHzqTlMW6yHDmcTo0MA==,type:comment] |  | ||||||
| checkActivityPubGetSignature: ENC[AES256_GCM,data:IkKIs0I=,iv:AqMLF71latBnesc0SwyMKczBR25dH+4XzW6hEI3+sIE=,tag:eGefa4pW5U8JGJs0yOJF0g==,type:bool] |  | ||||||
| customMOTD: |  | ||||||
|     - ENC[AES256_GCM,data:3KoBK2SGOs/bas/BGdja57nUc/AWl3HB3MpLdYLaVojddwUAgJuZs10=,iv:SWp+txRm85JJ2ZLkqGMuebPZa6FLnLgZ72rzVeEwq5M=,tag:iUiUuabYr+JW7NuGCFCWtw==,type:str] |  | ||||||
|     - ENC[AES256_GCM,data:2PMcGRe5x2hX27RkmQhRnK8=,iv:rENl99Pa9LWLqfubgkdz1iQVfxpbtelcGo1kQbjh480=,tag:z06vAscbyAPtbr0wx79TcQ==,type:str] |  | ||||||
| sops: |  | ||||||
|     kms: [] |  | ||||||
|     gcp_kms: [] |  | ||||||
|     azure_kv: [] |  | ||||||
|     hc_vault: [] |  | ||||||
|     age: |  | ||||||
|         - recipient: age1gudgza8lv02nwec0pejqpp5t7zu0tzjsfkmvgvy3ckfscr9f4qrq2sl5dv |  | ||||||
|           enc: | |  | ||||||
|             -----BEGIN AGE ENCRYPTED FILE----- |  | ||||||
|             YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJZ29ZNEpRa2RpOFkyZm5l |  | ||||||
|             aWwzZ2xMbmVRRk5WUkM2YUVzWFVsQ1llclcwCmFocXBiMEZuRkNOclFsSUYzaVpo |  | ||||||
|             aWtJSCtuNjNLQk8wV09JbVhCTjBuNjQKLS0tIC9CVzdlV09JcnpZQW5nVFJvc1RG |  | ||||||
|             UlZtaGh6eDZTMFk3K2JGWTZRdVNDbEUKgJZH8TwrOPG7k56ZNivYiWaQUaqGOC9f |  | ||||||
|             LNtVWzt14/ykrvFEyPGF72z2hBBxsJZDGiMuE2pxejydhJXHP+Eprw== |  | ||||||
|             -----END AGE ENCRYPTED FILE----- |  | ||||||
|         - recipient: age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d |  | ||||||
|           enc: | |  | ||||||
|             -----BEGIN AGE ENCRYPTED FILE----- |  | ||||||
|             YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZRFB2SHVWWlJwQWlpWHFJ |  | ||||||
|             NkllYy91TFNweEpJdGUrRW9Gd2ZpMS93bVVFCjFKK0NiOGdiWm1VQ2tsd2NIeTVi |  | ||||||
|             UnIxV1B0eU0weUhTQW5rVkczYi9NSFEKLS0tIEFnUlNucUFIQ0FCaG1MNmFPUUlk |  | ||||||
|             Q3lVbzdwVjRZUHdNdmFpR2FYUmV1YWMKkB/gd2WQdzXHVfSA2otZICGDn4V+jVPU |  | ||||||
|             PLXMh4fbQx0bM3xwaEckrU0/MRYWhTjalqPRkxjvGgAkQeW15Yl/9A== |  | ||||||
|             -----END AGE ENCRYPTED FILE----- |  | ||||||
|     lastmodified: "2024-09-25T22:12:05Z" |  | ||||||
|     mac: ENC[AES256_GCM,data:HhOmEo9p4FJpoa0P2ccxYtzVRTa+w145VS2ZB3a/bRmrfbBc34JKE2xRQJhLGSgrmTrY2IoNPqaavMGz76fLY0FgT6+mTRZ0EiGKMUmxgpItEimeOBqaVXwWXjTGml5gDpF/DZDsKNWs4j60CxlJwIqvSzd85BAPa4186T/DUIY=,iv:cXfS1Rt4JQMAR0oJGp4cLGWAXJtBdxHI+2AT2C2wP7E=,tag:GoodJgXcTaeouai9+JqKAw==,type:str] |  | ||||||
|     pgp: [] |  | ||||||
|     unencrypted_suffix: _unencrypted |  | ||||||
|     version: 3.9.0 |  | ||||||
|  | @ -1,35 +0,0 @@ | ||||||
| user: |  | ||||||
|     jo: |  | ||||||
|         password_hash: ENC[AES256_GCM,data:5X6MonLf5AiIpWMSEnmH//7BIh2/qd3a+nVjZiC+yg6Z1LtIaKfMNY8cYFXwkmm84ojcBdmjdtEwPfLrwT+imSy2CFUKV6AuQg==,iv:Hlh5c+EophW3S9dXfNlnzoJ43Z7xd9Ciu6nHtj2/p3s=,tag:dtfGZRjIvElOM6+5ngT75w==,type:str] |  | ||||||
| services: |  | ||||||
|     cloudflare: |  | ||||||
|         api_key: ENC[AES256_GCM,data:y2CdoiszYf0EHcFzlAUjBN5DINM/HA/2JxMoAvvybTCFQPBYyZnTgR/AqFTulqzv,iv:mIFWq9YetAwYIeXSonWtjx0diV02CBySNsKnmB0ZnYo=,tag:MH0rFfN9f1ZVMKnhTbQwww==,type:str] |  | ||||||
| sops: |  | ||||||
|     kms: [] |  | ||||||
|     gcp_kms: [] |  | ||||||
|     azure_kv: [] |  | ||||||
|     hc_vault: [] |  | ||||||
|     age: |  | ||||||
|         - recipient: age1gudgza8lv02nwec0pejqpp5t7zu0tzjsfkmvgvy3ckfscr9f4qrq2sl5dv |  | ||||||
|           enc: | |  | ||||||
|             -----BEGIN AGE ENCRYPTED FILE----- |  | ||||||
|             YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4MGdHQ2V4YzAwSG5ZWXJD |  | ||||||
|             ejhVdVpML2J0Q3Z6NzlIanV4anpsSXpXdWw4CkVvTDlYd3k1RldoaVJVV0lSN3JD |  | ||||||
|             bUw3ZGxpREpjKzVEZFd4U0NIV0htWXMKLS0tIDBkZFRYN3p4YTNEMm50VGgwcUlN |  | ||||||
|             dGRtcmY2VytsbThLdzY1UzByQUZyR00K9bBXCTqpmzo1LNT4pmgGtEwad8cmoxyJ |  | ||||||
|             0y3TkHXFZw8KHuyV53sbrDyUreePCXLbjdBChdTSMXCMAZQxews+TQ== |  | ||||||
|             -----END AGE ENCRYPTED FILE----- |  | ||||||
|         - recipient: age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d |  | ||||||
|           enc: | |  | ||||||
|             -----BEGIN AGE ENCRYPTED FILE----- |  | ||||||
|             YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXanBCY01yTDZiS3N1YUQ2 |  | ||||||
|             SXFkbXVPT1E0M05xeFAyUVY5bUY3dTlTdWpjCjFIU2FVelpJaUJNWFRmbnB5aHg4 |  | ||||||
|             bS9LYnU1WFB2KzRjZlZ2SHZKb3B2ZGMKLS0tIGxDcW9uMjF3ZU1pY0g4NlVPcVNu |  | ||||||
|             dnk2Z3N0YzU0eG5nbkkvZC8yQXJhWlEKKVGY0IyA9MMqzc+YohmHzKqHaf8z8t6Z |  | ||||||
|             ag0TBf2uU2ZDiPfNhhDaUdltGiPrk+AlbHSTmrDwZ8T/+A8hHRyGYA== |  | ||||||
|             -----END AGE ENCRYPTED FILE----- |  | ||||||
|     lastmodified: "2024-09-25T22:28:00Z" |  | ||||||
|     mac: ENC[AES256_GCM,data:EcwH/io8R2dVebnYqnIf75Q+riy4i5tFt5n4d3RivWYJkAl0WZNYJiCuUKXQHfbCYGGbxw7wDCjSRkjkCSkjysPiM6PukTthEuk9MimDkk5ScFQYHnumoysZT2BSWKcKw5Njr/zaHdvSnd4aVqqp4oFACh3Gmszja/4cgwxEqsc=,iv:IbK1WdW+qE31Xu1PM7zWRjxFPVRrOR1S+tZQMOo8T2k=,tag:KvhggX7m9kgJ9HsoMV6Ngw==,type:str] |  | ||||||
|     pgp: [] |  | ||||||
|     unencrypted_suffix: _unencrypted |  | ||||||
|     version: 3.9.0 |  | ||||||
|  | @ -1,12 +0,0 @@ | ||||||
| #ENC[AES256_GCM,data:jv29InPyPUbHfv2s,iv:2IAsI6uZGBD6b0qls3akuC1W++xiAQCJCYVUWQ+pc8I=,tag:Gr8vTMs5Ii7QKfSp5mlmJw==,type:comment] |  | ||||||
| POSTGRES_PASSWORD=ENC[AES256_GCM,data:ITO/XMQEGFKK4W1qduXoarhvmchBB45F7uwYGKRK1ZOziwnQcQ==,iv:dfzGXgrO0q6X8YNerbNALK3QRB6bjSNUJLUNPhsdxpA=,tag:E2VAqsRKHpwkufm6VrinRA==,type:str] |  | ||||||
| POSTGRES_USER=ENC[AES256_GCM,data:3pD3I2SF,iv:d8Q037umNLA+BXHSC1sdY1CSfAQF/3EvFKiiiPSNA1w=,tag:krqu/9vZ58DRxHGSSIio4g==,type:str] |  | ||||||
| POSTGRES_DB=ENC[AES256_GCM,data:rIoMmADJ,iv:f5raAiDKU9gHvBrhSotUQYZOaDaUOk8Wknw8F1cDiLs=,tag:ADiSPBMDDb8tF75sW287Dg==,type:str] |  | ||||||
| sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGblJKU2pYb25vMGVKYWoy\nM3pCd2x6OWpoODlDVXVObjUwZzh6b0tQbTI0ClNqQXNtQ2NQUGp4ZXV5T21qQWJa\nWUVTODBPN2tCVk5tOGtQTjlMbDQ2eTgKLS0tIExUSER4WmYvdUs4YWZDTklVdDNy\nMnhMeGNOcFJOR3dGUWNQUXcvbS92ejgK85ws6RC8PqiAWIFAPl+5dzOuwiHH8+OO\nXMqB+K8L4NhM2OKIrde3TqrQ9PS1PhipBd7DT2uLWavttIWZriykmg==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_0__map_recipient=age1gudgza8lv02nwec0pejqpp5t7zu0tzjsfkmvgvy3ckfscr9f4qrq2sl5dv |  | ||||||
| sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwSVVQUktzZWQzeXh3eGNM\nR1BRZU9LV2t6ZHRta0dPRjlXVTMvNDNKakZzCjF3a0l4cnNmOXNzTWZkSkxRSytW\nSE9Ra2N4RGJFbGlDSVpRaWFReU16c2MKLS0tIGltTmZXVytZZURVODB3ZzBIQWov\nSTlUZzNBQ1B5M0w0N2ExUEVxSFVMSVUKbLxDZB7Xe9ksiN4M+6/127qJMi4oRrNS\nhzq9ely/rr1Gdq2wXNLE9xn6j4v4j978K6ZajrYofzdIdfyNC4x9kQ==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_1__map_recipient=age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d |  | ||||||
| sops_lastmodified=2024-09-25T21:31:27Z |  | ||||||
| sops_mac=ENC[AES256_GCM,data:8B0D8MPrNuH9I2EUEnOXmj5KELY4KvEQCLifF5ktZXoz9y6lxYAAC8NFR0aHO38Gy54Jgs3URf6BiI+9zFVq13CHAwu7b9VRpTdYoWYVVf0FO/J5k4JzVyawxiSGg1Yz6jXODqiKiGBfoJr8w579lKcw3aQAakzCsk5hRcnHdGs=,iv:Iv8QdtUAEUegyRHltFHHyLv5CDSiiqzCfbKc28/nu98=,tag:Oc/wTq9VkM3tEQ/Finiw4g==,type:str] |  | ||||||
| sops_unencrypted_suffix=_unencrypted |  | ||||||
| sops_version=3.9.0 |  | ||||||
|  | @ -1,14 +0,0 @@ | ||||||
| PUID=ENC[AES256_GCM,data:bNWr3Q==,iv:zUEGwd7ZNy/sfGmrT8bHVfkb7Zybe6s7NNPkCCn2dns=,tag:TyyuF28Ln4lk2StiP4tyNA==,type:str] |  | ||||||
| PGID=ENC[AES256_GCM,data:gqFIzA==,iv:Z14/YwAjpS9JUlpXQa2oNGnAGviqQ8Kx+zv/qdyEm8k=,tag:cGjR7py6dpIJSCot4mrwoA==,type:str] |  | ||||||
| TZ=ENC[AES256_GCM,data:k5lFLLVfAb9e9Dx76w==,iv:XPxFw5O8PtfV2YRWdVowvF7kPc8ZLDyppL6V5Ni33vk=,tag:xuHTleOmEpwwK35hlZXBrw==,type:str] |  | ||||||
| SUBDOMAINS=ENC[AES256_GCM,data:/S9njZeMpg5If3DXnAosflsq,iv:+27weaPfYLPo07J+kQiJrmmPYRUjiNKOy0tEhEMx9GA=,tag:kF+eaUveyoAqKwWr/eb7hg==,type:str] |  | ||||||
| TOKEN=ENC[AES256_GCM,data:cVFxL3rtKl9Qr7BoAkd4p2wMRF4uK4lXAq7Z25tbPRzeo25R,iv:IKIh4KTRhPECn35rRVhDoHMMKdKNBOmr2b4K0ZsdLy0=,tag:SkiEoqeWy2/lfg/qtXynCw==,type:str] |  | ||||||
| LOG_FILE=ENC[AES256_GCM,data:QCv6hLM=,iv:vn6dedbExEliAOHx5L8UCTaxzQNCdrBlwSQIpaQIa8k=,tag:SP3ItrArT7fnHPo4aF3mTw==,type:str] |  | ||||||
| sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwM2ozVmZFY0ZIRHhHSS93\nU0FSdGswdU0ydW1uMndJam1rVE9ibXVIQ21nCjZSMjQ4MGJuclJrN3VXNk5POWhE\nRXM3a2FjM3Y3SGozMnUxQ043MWdCZTQKLS0tIDBEQ25WalJpUTVLZ0wvK0FXK1hw\nQXhnTzEzZ2RJTldkdkVWZGJDYy9QMHMKyt6bU1cnoGGeAzo/TNEbI4JyZQW4P5Li\nNDTSEaxweY5g0UieQ8Flff/xae6GN+1yL55hWbaDqOugqvw10CWfPA==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_0__map_recipient=age1gudgza8lv02nwec0pejqpp5t7zu0tzjsfkmvgvy3ckfscr9f4qrq2sl5dv |  | ||||||
| sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKV3RLZmQ4eXg2dzFKeGRz\nQnp5YUthbXlIb1o5RkN1ZlBLdjZlbEljdUJFCjM4T1N6SlpDNzBSd0ZnOXp6MWxW\nZ2RMTTgvNEFYRmtzRnFLSTlWdlNRTm8KLS0tIHdGWC9rZlRuTWUzOHRKaVVNSnFp\nNVQrQ2JQc3BNMlBqRnhtcURBRkxBNkUKmbcK8z+/4rJqHmmWANc3ZsmaeLWBV7v+\nXMspUQKlZaAfqtw4fKrr2ocyPoIgZlFYN9GmD0jR9tK3Nm96KxgXXA==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_1__map_recipient=age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d |  | ||||||
| sops_lastmodified=2024-09-25T21:04:04Z |  | ||||||
| sops_mac=ENC[AES256_GCM,data:sMyMw9qUl6twGdq0J6gHqroRzzBUFK1lHd80IQtatwPp4S5ywsJpqMxEWy3qtL2+Zl1nGCOHoUgke0EBdu8H6Duj9YhDuc8RCIGIkJcDmpVameo/P9hK4pIsCHN8SRB6m2DIgViKaEJNZpFArhCAJjTfJX/8NXX1R5CWakjYCqM=,iv:KfdajXnDyKevtROuTJlswO1Wj3TxaWdASaUHSUMBIgc=,tag:HEBE+NLNm6UavU7GYxkoZA==,type:str] |  | ||||||
| sops_unencrypted_suffix=_unencrypted |  | ||||||
| sops_version=3.9.0 |  | ||||||
|  | @ -1,9 +0,0 @@ | ||||||
| MEILI_MASTER_KEY=ENC[AES256_GCM,data:x6pQcyzetnx5qOtPo2orzpoidwuX5rqDYe0b3yrCmxWybrwvvdFFFakksg==,iv:gNQ7XmtGAKfCfD+HGZGR59o4BRFGZptRNreP/jZHkdA=,tag:W+gKXel187H9DNo5EMjieA==,type:str] |  | ||||||
| sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvWldsZjVhZlVMcFoyNFZN\nSDFmWWRhZzV2VkRBb0pBNkN3T2doNlE5MndrCkZuK2dNNnUrcnVQRjNjTDNXMmhV\nTGxaViszdGV1SFJ4d3hrSUJuTThqR3cKLS0tIFdhcUxObzVLS0MvK0N4bWJROHJP\na2M4clcxeC9LajFLb1Irb1hHT1pRQWsK09rv5ucOcmEUzTswOfcG5uyDkXtFSvNH\nldT7e/JgoA0BjJQRuCrfeHQUuD6bnLxQVORilvQVaLQXxR84kfo4lQ==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_0__map_recipient=age1gudgza8lv02nwec0pejqpp5t7zu0tzjsfkmvgvy3ckfscr9f4qrq2sl5dv |  | ||||||
| sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5akFIYmh1TzZVbFpwbTVM\nMVJDekMvbmVHT3NSaGkyMWhla3hUNXRlUW1jCnl4ZE9BZUFla1hzb0dJMC8yRlJP\nYVNHTEovLzR4SUlkdWRMU3ZjSlA1eEUKLS0tIGZxMlN5aTlZNHVHbHJwNVFyaDRw\nSG5kYVlkYjVDYk95OXNQSHNMZ3lycncKH0AwvzUQBFBj4buwQx9jnndqxglREShg\nlLiPc/PUVwS9DRGiEJufZkjD2HFxJvFQ1T0zF566WT4/ngBQAHoBIQ==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_1__map_recipient=age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d |  | ||||||
| sops_lastmodified=2024-09-25T21:32:09Z |  | ||||||
| sops_mac=ENC[AES256_GCM,data:UkvrlEp84kHeSipyJHpiTCa/jGNBN+hUw6q7QrZCpWGi+8b7k0tksf+L4JSu8xMf3D9OWChGrLEs3qwlSIzkDdiLvY95BnaAPteUGoua/YbEn1P4TSErkPoTjC5m1KkWLhUekTuSD+G3ApNZhWaiL4r2YmH8WMByKBviau//BlQ=,iv:SS4kr1gFMqtzJ4Z9PURxLNUI+e8wsk3tUnopwUQIUFc=,tag:vJ/6xLwYXaATjFw6RNiNVg==,type:str] |  | ||||||
| sops_unencrypted_suffix=_unencrypted |  | ||||||
| sops_version=3.9.0 |  | ||||||
|  | @ -1,10 +0,0 @@ | ||||||
| DOMAIN=ENC[AES256_GCM,data:fgj4eDoC6bV2Ad4FdWnM5CP1Aap8fTr+7wo=,iv:FC3Q4BCF5LtfxvC+eLvTPjgPLQycSGhmDOzempv8Pis=,tag:hjQSBEbTKxfqa7sZfMcfRw==,type:str] |  | ||||||
| SIGNUPS_ALLOWED=ENC[AES256_GCM,data:kxm/EsQ=,iv:DKBcrtaX0DZjD6XmnKc96vXee0e5AyGl7/K/DRACCHc=,tag:z5hgIwt/rnHq4I21/4wP4A==,type:str] |  | ||||||
| sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5elVvTExZd0VNTmk4S2ZC\nLzNwbVNUbCsvRHFycjlMUEk0cTlVSEVldnpBCkpwNkwyZThrTWFjdEQxaHJlUDFY\nc0hDNyswbVZNNjJMRHZIY0FPZHdRcm8KLS0tIE9pWjZiVWFDclpxM1hIcnpZcFdq\nbWdueDUyd2I5Y0ZFWEZuN1Y0aXRHV28KCGJWVGEyr/3/14FM8I8KLMziD00DyGWw\neUcyJb8J/151C11Mbm/llic1mC1LlX4oBhtew+IvLTZk6Pf7yhXPnQ==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_0__map_recipient=age1gudgza8lv02nwec0pejqpp5t7zu0tzjsfkmvgvy3ckfscr9f4qrq2sl5dv |  | ||||||
| sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvNzgwUEI1U0x3Q3A4TSts\nbDVoTEM4cTZ5elJNSUpHeU1lbXNFQW5ZT1R3CjhITWRtcUdSc21oWStqMG9Dd1lE\nZmtOaFZkWW9kL1grVFJHVTJ2S3piOXcKLS0tIEFlU0ZFbU9OTENnU3BDdW1rWVBY\nZTlvZ1oyS3JqWEZ5MW44d2pjOHo4QVEKDWsEI68gTJKDDGnqHULG59bz318sEGlv\nInS+dPk9j2/M+YrGDm4v54t2DvAuFwzGjOnmDD6gQYdGXir6D/FNkA==\n-----END AGE ENCRYPTED FILE-----\n |  | ||||||
| sops_age__list_1__map_recipient=age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d |  | ||||||
| sops_lastmodified=2024-09-23T22:30:20Z |  | ||||||
| sops_mac=ENC[AES256_GCM,data:yBlsJiUnlqLZmHU8xVma8yGC8AzIEqq2X/U+oVwq16eqly4Dd3jJLYz5WLnGnu0i92ge0DcWK3rkiRoz9cg4EsOJ1zR3fzGhNFg6fRoh3qXTo2BP2WywPBUPoe4pdJrp2h6BD/xleI1f5jeP/z4uos4yt0Z5xpBI7um9/A/doNU=,iv:LW1i3ZN6WWtzc6WweqBnXF2uwsYnT/UD5HFmwmmcmQI=,tag:bHL3Dh2j3uT7Ey70crQ5pw==,type:str] |  | ||||||
| sops_unencrypted_suffix=_unencrypted |  | ||||||
| sops_version=3.9.0 |  | ||||||
|  | @ -1,86 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   inputs, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| { |  | ||||||
|   imports = [ |  | ||||||
|     ./hardware-configuration.nix |  | ||||||
|     inputs.hardware.nixosModules.common-pc-laptop |  | ||||||
|     inputs.hardware.nixosModules.common-cpu-intel |  | ||||||
|     inputs.hardware.nixosModules.common-pc-laptop-ssd |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   # Setup Sops |  | ||||||
|   sops.defaultSopsFile = lib.snowfall.fs.get-file "secrets/default.yaml"; |  | ||||||
|   sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; |  | ||||||
|   sops.age.keyFile = "/var/lib/sops-nix/key.txt"; |  | ||||||
|   sops.age.generateKey = true; |  | ||||||
| 
 |  | ||||||
|   # Sops keys |  | ||||||
|   sops.secrets."services/cloudflare/api_key" = {}; |  | ||||||
| 
 |  | ||||||
|   # Set hostname |  | ||||||
|   # Todo: move to common/networking module |  | ||||||
|   networking.hostName = "absolutesolver"; |  | ||||||
| 
 |  | ||||||
|   # Set timezone. |  | ||||||
|   time.timeZone = "Europe/Berlin"; |  | ||||||
| 
 |  | ||||||
|   # Enable docker and set it as the OCI container backend |  | ||||||
|   virtualisation = { |  | ||||||
|     docker.enable = true; |  | ||||||
|     oci-containers.backend = "docker"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Set system configuration |  | ||||||
|   puzzlevision = { |  | ||||||
|     archetypes.server.enable = true; |  | ||||||
| 
 |  | ||||||
|     services = { |  | ||||||
|       traefik = { |  | ||||||
|         enable = true; |  | ||||||
|         cloudflareEmail = "johannesreckers2006@gmail.com"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       vaultwarden.enable = true; |  | ||||||
|       homepage.enable = true; |  | ||||||
|       duckdns.enable = true; |  | ||||||
|       bluesky.pds.enable = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   services.cron = { |  | ||||||
|     enable = true; |  | ||||||
|     systemCronJobs = [ |  | ||||||
|       "*/5 * * * * cyn docker exec -u www-data nextcloud-nextcloud-1 php /var/www/html/cron.php" |  | ||||||
|       "*/15 * * * * cyn docker exec -u www-data nextcloud-nextcloud-1 php /var/www/nextcloud/occ preview:pre-generate" |  | ||||||
|       #"*/30 * * * * cyn /home/jo/tools/FediFetcher/FediFetcher.sh" |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Configure users. |  | ||||||
|   snowfallorg.users.cyn.admin = true; |  | ||||||
|   users.users.cyn.isNormalUser = true; |  | ||||||
|   users.users.cyn.extraGroups = [ "dialout" "docker" ]; |  | ||||||
| 
 |  | ||||||
|   # Configure home-manager |  | ||||||
|   home-manager = { |  | ||||||
|     backupFileExtension = "homeManagerBackup"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Install required system packages |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     ### General |  | ||||||
|     nano |  | ||||||
|     vim |  | ||||||
| 
 |  | ||||||
|     ## Runtimes |  | ||||||
|     nodejs_22 |  | ||||||
|     bun |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   system.stateVersion = "24.05"; |  | ||||||
| } |  | ||||||
|  | @ -1,42 +0,0 @@ | ||||||
| # Do not modify this file!  It was generated by ‘nixos-generate-config’ |  | ||||||
| # and may be overwritten by future invocations.  Please make changes |  | ||||||
| # to /etc/nixos/configuration.nix instead. |  | ||||||
| { config, lib, pkgs, modulesPath, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   imports = |  | ||||||
|     [ (modulesPath + "/installer/scan/not-detected.nix") |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|   boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ]; |  | ||||||
|   boot.initrd.kernelModules = [ ]; |  | ||||||
|   boot.kernelModules = [ "kvm-intel" ]; |  | ||||||
|   boot.extraModulePackages = [ ]; |  | ||||||
| 
 |  | ||||||
|   fileSystems."/" = |  | ||||||
|     { device = "/dev/disk/by-uuid/3e3d6676-2bd6-44df-a8a7-c5e7647c4e95"; |  | ||||||
|       fsType = "btrfs"; |  | ||||||
|       options = [ "subvol=@" ]; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|   fileSystems."/boot" = |  | ||||||
|     { device = "/dev/disk/by-uuid/1C8C-F906"; |  | ||||||
|       fsType = "vfat"; |  | ||||||
|       options = [ "fmask=0077" "dmask=0077" ]; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|   swapDevices = |  | ||||||
|     [ { device = "/dev/disk/by-uuid/b99e9370-10f7-4589-b7a2-59a256d75926"; } |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|   # Enables DHCP on each ethernet and wireless interface. In case of scripted networking |  | ||||||
|   # (the default) this is the recommended approach. When using systemd-networkd it's |  | ||||||
|   # still possible to use this option, but it's recommended to use it in conjunction |  | ||||||
|   # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. |  | ||||||
|   networking.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; |  | ||||||
| 
 |  | ||||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; |  | ||||||
|   hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; |  | ||||||
| } |  | ||||||
|  | @ -1,92 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   inputs, |  | ||||||
|   namespace, |  | ||||||
|   config, |  | ||||||
|   system, |  | ||||||
|   ... |  | ||||||
| }: with lib; with lib.${namespace}; |  | ||||||
| { |  | ||||||
|   imports = [ |  | ||||||
|     ./hardware-configuration.nix |  | ||||||
|     inputs.hardware.nixosModules.common-pc-laptop |  | ||||||
|     inputs.hardware.nixosModules.common-cpu-intel |  | ||||||
|     inputs.hardware.nixosModules.common-pc-laptop-ssd |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   # Configure Sops |  | ||||||
|   sops.defaultSopsFile = lib.snowfall.fs.get-file "secrets/default.yaml"; |  | ||||||
|   sops.age.keyFile = "/var/lib/sops-nix/key.txt"; # The main AGE key is expected in this location, it is only needed for this system. |  | ||||||
| 
 |  | ||||||
|   # Sops keys |  | ||||||
|   sops.secrets."user/jo/password_hash".neededForUsers = true; |  | ||||||
| 
 |  | ||||||
|   # Set hostname |  | ||||||
|   # Todo: move to common/networking module |  | ||||||
|   networking.hostName = "puzzlevision"; |  | ||||||
| 
 |  | ||||||
|   boot = { |  | ||||||
|     # Configure additional kernel modules. |  | ||||||
|     extraModulePackages = [ |  | ||||||
|       pkgs.linuxPackages_latest.rtl8821ce # Use custom network-card driver. |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     blacklistedKernelModules = [ |  | ||||||
|       "rtw88_8821ce" # Block the default network-card driver. |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Set timezone. |  | ||||||
|   time.timeZone = "Europe/Berlin"; |  | ||||||
| 
 |  | ||||||
|   # Enable the power-profiles-daemon service for improved battery management. |  | ||||||
|   services.power-profiles-daemon.enable = true; |  | ||||||
| 
 |  | ||||||
|   # Enable printing. |  | ||||||
|   services.printing.enable = true; |  | ||||||
| 
 |  | ||||||
|   # Enable docker |  | ||||||
|   virtualisation.docker.enable = true; |  | ||||||
| 
 |  | ||||||
|   # Set system configuration |  | ||||||
|   puzzlevision = { |  | ||||||
|     archetypes.workstation.enable = true; |  | ||||||
|     security.yubikey = { |  | ||||||
|       enable = true; |  | ||||||
|       enable-agent = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Enable flatpak support. |  | ||||||
|   services.flatpak.enable = true; |  | ||||||
| 
 |  | ||||||
|   # Set trusted users (Primarily used for cachix) |  | ||||||
|   nix.settings.trusted-users = [ "root" "jo" ]; |  | ||||||
| 
 |  | ||||||
|   # Configure users. |  | ||||||
|   snowfallorg.users.jo.admin = true; |  | ||||||
|   users.users.jo.isNormalUser = true; |  | ||||||
|   users.users.jo.extraGroups = [ "dialout" "docker" ]; |  | ||||||
|   users.users.jo.hashedPasswordFile = config.sops.secrets."user/jo/password_hash".path; |  | ||||||
| 
 |  | ||||||
|   # Configure home-manager |  | ||||||
|   home-manager = { |  | ||||||
|     backupFileExtension = "homeManagerBackup"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Provide users with some sane default packages. |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     ### General |  | ||||||
|     nano |  | ||||||
|     inputs.zen-browser.packages."${system}".default |  | ||||||
|     inputs.ghostty.packages.x86_64-linux.default |  | ||||||
|     vlc |  | ||||||
| 
 |  | ||||||
|     ## Security |  | ||||||
|     pinentry-tty |  | ||||||
|     gnupg |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   system.stateVersion = "23.05"; |  | ||||||
| } |  | ||||||
|  | @ -1,52 +0,0 @@ | ||||||
| # Do not modify this file!  It was generated by ‘nixos-generate-config’ |  | ||||||
| # and may be overwritten by future invocations.  Please make changes |  | ||||||
| # to /etc/nixos/configuration.nix instead. |  | ||||||
| { config, lib, pkgs, modulesPath, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   imports = |  | ||||||
|     [ (modulesPath + "/installer/scan/not-detected.nix") |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|   boot.initrd.availableKernelModules = [ "xhci_pci" "vmd" "nvme" "usbhid" "rtsx_pci_sdmmc" ]; |  | ||||||
|   boot.initrd.kernelModules = [ ]; |  | ||||||
|   boot.kernelModules = [ "kvm-intel" ]; |  | ||||||
|   boot.extraModulePackages = [ ]; |  | ||||||
| 
 |  | ||||||
|   fileSystems."/" = |  | ||||||
|     { device = "/dev/disk/by-uuid/864b1287-89fd-4cc0-98a5-40a3caf804c6"; |  | ||||||
|       fsType = "btrfs"; |  | ||||||
|       options = [ "subvol=@" ]; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|   boot.initrd.luks.devices."luks-5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc".device = "/dev/disk/by-uuid/5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc"; |  | ||||||
| 
 |  | ||||||
|   fileSystems."/boot" = |  | ||||||
|     { device = "/dev/disk/by-uuid/2429-4141"; |  | ||||||
|       fsType = "vfat"; |  | ||||||
|       options = [ "fmask=0022" "dmask=0022" ]; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|   swapDevices = [ ]; |  | ||||||
| 
 |  | ||||||
|   # Enables DHCP on each ethernet and wireless interface. In case of scripted networking |  | ||||||
|   # (the default) this is the recommended approach. When using systemd-networkd it's |  | ||||||
|   # still possible to use this option, but it's recommended to use it in conjunction |  | ||||||
|   # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. |  | ||||||
|   networking.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.br-01571e4eda2f.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.br-20785fae249b.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.br-64a49a5722c1.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.br-71e5fc5962fc.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.br-7df9905783da.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.br-9b746f4e7e2f.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.br-e2f470a56dfe.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.docker0.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.enp0s13f0u4u4.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.veth4e96b46.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.veth96a5ccd.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; |  | ||||||
| 
 |  | ||||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; |  | ||||||
|   hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; |  | ||||||
| } |  | ||||||