🎉📝 initialize v2
							
								
								
									
										5
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,2 +1,3 @@ | |||
| ### Jetbrains | ||||
| /.idea | ||||
| ### Buid-VM outputs | ||||
| *.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 | ||||
| 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 | ||||
| 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; | ||||
| } | ||||