| 
									
										
										
										
											2025-01-04 17:36:30 +00:00
										 |  |  | # Auto-generated using compose2nix v0.3.2-pre. | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   config, | 
					
						
							|  |  |  |   pkgs, | 
					
						
							|  |  |  |   lib, | 
					
						
							|  |  |  |   ... | 
					
						
							|  |  |  | }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							| 
									
										
										
										
											2025-03-05 15:09:06 +00:00
										 |  |  |   cfg = config.nixosModules.beaverhabits; | 
					
						
							| 
									
										
										
										
											2025-01-04 17:36:30 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   port = 8084; | 
					
						
							|  |  |  | in | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-03-05 15:09:06 +00:00
										 |  |  |   options.nixosModules.beaverhabits.enable = mkEnableOption "Enable beaverhabits"; | 
					
						
							| 
									
										
										
										
											2025-01-04 17:36:30 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   config = mkIf cfg.enable { | 
					
						
							|  |  |  |     virtualisation = { | 
					
						
							|  |  |  |       docker = { | 
					
						
							|  |  |  |         enable = true; | 
					
						
							|  |  |  |         autoPrune.enable = true; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       oci-containers = { | 
					
						
							|  |  |  |         backend = "docker"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         containers."beaverhabits" = { | 
					
						
							|  |  |  |           image = "daya0576/beaverhabits:latest"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           environment = { | 
					
						
							|  |  |  |             "HABITS_STORAGE" = "DATABASE"; | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           volumes = [ | 
					
						
							|  |  |  |             "/mnt/media/beaverhabits:/app/.user:rw" | 
					
						
							|  |  |  |           ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           ports = [ | 
					
						
							|  |  |  |             "${toString port}:8080/tcp" | 
					
						
							|  |  |  |           ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           user = "1000:1000"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           log-driver = "journald"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           extraOptions = [ | 
					
						
							|  |  |  |             "--network-alias=beaverhabits" | 
					
						
							|  |  |  |             "--network=beaverhabits_default" | 
					
						
							|  |  |  |           ]; | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     systemd = { | 
					
						
							|  |  |  |       services = { | 
					
						
							|  |  |  |         "docker-beaverhabits" = { | 
					
						
							|  |  |  |           serviceConfig = { | 
					
						
							|  |  |  |             Restart = lib.mkOverride 90 "always"; | 
					
						
							|  |  |  |             RestartMaxDelaySec = lib.mkOverride 90 "1m"; | 
					
						
							|  |  |  |             RestartSec = lib.mkOverride 90 "100ms"; | 
					
						
							|  |  |  |             RestartSteps = lib.mkOverride 90 9; | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           after = [ "docker-network-beaverhabits_default.service" ]; | 
					
						
							|  |  |  |           requires = [ "docker-network-beaverhabits_default.service" ]; | 
					
						
							|  |  |  |           partOf = [ "docker-compose-beaverhabits-root.target" ]; | 
					
						
							|  |  |  |           wantedBy = [ "docker-compose-beaverhabits-root.target" ]; | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         "docker-network-beaverhabits_default" = { | 
					
						
							|  |  |  |           path = [ pkgs.docker ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           serviceConfig = { | 
					
						
							|  |  |  |             Type = "oneshot"; | 
					
						
							|  |  |  |             RemainAfterExit = true; | 
					
						
							|  |  |  |             ExecStop = "docker network rm -f beaverhabits_default"; | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           script = ''
 | 
					
						
							|  |  |  |             docker network inspect beaverhabits_default || docker network create beaverhabits_default | 
					
						
							|  |  |  |           '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           partOf = [ "docker-compose-beaverhabits-root.target" ]; | 
					
						
							|  |  |  |           wantedBy = [ "docker-compose-beaverhabits-root.target" ]; | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       targets."docker-compose-beaverhabits-root" = { | 
					
						
							|  |  |  |         unitConfig.Description = "Root target generated by compose2nix."; | 
					
						
							|  |  |  |         wantedBy = [ "multi-user.target" ]; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-21 00:46:13 +00:00
										 |  |  |     services.caddy.virtualHosts."beaverhabits.oliverdavies.uk" = { | 
					
						
							|  |  |  |       useACMEHost = "oliverdavies.uk"; | 
					
						
							| 
									
										
										
										
											2025-01-04 17:36:30 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |       extraConfig = "reverse_proxy localhost:${toString port}"; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | } |