mirror of
				https://github.com/Jokiller230/puzzlevision.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	
		
			Some checks failed
		
		
	
	update-dependencies / update-dependencies (push) Has been cancelled
				
			
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  lib,
 | 
						|
  namespace,
 | 
						|
  config,
 | 
						|
  host,
 | 
						|
  ...
 | 
						|
}:
 | 
						|
let
 | 
						|
  inherit (lib) mkEnableOption mkIf;
 | 
						|
  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.
 | 
						|
      ];
 | 
						|
      environment = {
 | 
						|
        "HOMEPAGE_ALLOWED_HOSTS" = "home.thevoid.cafe";
 | 
						|
      };
 | 
						|
      extraOptions = ["--network=proxy"];
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |