diff --git a/deploy.conf b/deploy.conf index ce56953..4695105 100644 --- a/deploy.conf +++ b/deploy.conf @@ -32,4 +32,4 @@ export HOME_SERVER_IP="192.168.1.5" # SERVICES SETTINGS export SELECTED_DNS_SERVICE="pi-hole" # or adguard export SELECTED_SERVICES=( "frigate" "gitea" "home-assistant" "immich" "it-tools" \ -"nextcloud" "passbolt" "pi-hole" "virtualization" ) +"nextcloud" "passbolt" "clamav" "virtualization" ) diff --git a/deploy.sh b/deploy.sh index 4964ce9..eb0ef49 100644 --- a/deploy.sh +++ b/deploy.sh @@ -270,7 +270,7 @@ services_selection() { local AVAILABLE_DNS_SERVICES=( "pi-hole" "adguard" ) local AVAILABLE_SERVICES=( "frigate" "gitea" "home-assistant" "immich" "it-tools" \ - "nextcloud" "passbolt" "virtualization" ) + "nextcloud" "passbolt" "clamav" "virtualization" ) local DNS_SERVICES_DESCRIPTION=( "Pi-Hole : Simple open-source DNS black hole" \ "AdGuard " : Feature rich DNS service ) @@ -282,13 +282,14 @@ services_selection() { "Frigate [Home Assistant required] : Secure your house with security cameras" \ "Gitea : Your own git platform" \ "IT-tools : A set of useful tools when doing IT" \ + "ClamAV : An open-source anti-virus" "Virtualization : Run Virtual Machines (KVM/QEMU) with Libvirt" ) SELECTED_SERVICES=() local SELECTED_SERVICES_DESCRIPTION=$(gum choose --no-limit --header "Homelab services:" "${SERVICES_DESCRIPTION[@]}") SELECTED_DNS_SERVICE="" - local SELECTED_DNS_SERVICE_DESCRIPTION=$(gum choose --no-limit --header "Homelab services:" "${DNS_SERVICES_DESCRIPTION[@]}") + local SELECTED_DNS_SERVICE_DESCRIPTION=$(gum choose --limit 1 --header "Homelab services:" "${DNS_SERVICES_DESCRIPTION[@]}") for i in ${!AVAILABLE_SERVICES[@]}; do if printf '%s' "${SELECTED_SERVICES_DESCRIPTION}" | grep -iq "${AVAILABLE_SERVICES[${i}]}"; then @@ -304,6 +305,16 @@ services_selection() { export SELECTED_SERVICES export SELECTED_DNS_SERVICE + + gum confirm "Do you want to edit the default subdomain of your services ?" || { echo -e "\n\nāœ… Continuing..."; return 0; } + + for service in ${!SELECTED_SERVICES[@]} $SELECTED_DNS_SERVICE; do + local HEADER="Please provide the desired subdomain for ${service}:" + local PLACEHOLDER="${service}" + SELECTED_SERVICES_SUBDOMAIN+=("$(gum input --placeholder "${PLACEHOLDER}" --header "${HEADER}")") + done + + export SELECTED_SERVICES_SUBDOMAIN } disks_selection() { @@ -313,12 +324,12 @@ disks_selection() { !! ALL DATA WILL BE WIPED ON THE DISKS YOU CHOOSE !! Please press CTRL+C to abort. " - gum confirm "Do you understand and wish to proceed?" || { echo -e "\n\n āŒ Aborting as requested."; exit 1; } + gum confirm "Do you understand and wish to proceed?" || { echo -e "\n\nāŒ Aborting as requested."; exit 1; } echo -e "\n\n šŸ”Ž Fetching and analyzing disks from target host... (This may take a moment)" if [[ "${#DISK_NAME[@]}" -eq 0 ]]; then - echo -e "\n āŒ No disks found on the target host. Aborting." + echo -e "\nāŒ No disks found on the target host. Aborting." exit 1 fi @@ -408,9 +419,16 @@ services_config_generation() { echo -e "\n # Services settings" >> ${CONFIGURATION_PATH} echo -e " numbus.services.domain = \"${DOMAIN_NAME}\";" >> ${CONFIGURATION_PATH} + i=0 for service in "${SELECTED_SERVICES[@]}"; do + [[ "${SELECTED_SERVICES_SUBDOMAIN+x:-false}" ]] && echo -e " numbus.services.${service}.enable.subdomain = \"${SELECTED_SERVICES_SUBDOMAIN[${i}]}\";" >> ${CONFIGURATION_PATH} echo -e " numbus.services.${service}.enable = true;" >> ${CONFIGURATION_PATH} + i=((i + 1)) done + + if [[ "${SELECTED_SERVICES_SUBDOMAIN+x:-false}" && -n "$SELECTED_DNS_SERVICE" && -n "${SELECTED_SERVICES_SUBDOMAIN[${i}]}" ]]; then + echo -e " numbus.services.${SELECTED_DNS_SERVICE}.enable.subdomain = \"${SELECTED_SERVICES_SUBDOMAIN[${i}]}\";" >> ${CONFIGURATION_PATH} + fi } mail_config_generation() { @@ -514,7 +532,7 @@ EOF ) gum style --border normal --margin "1" --padding "1 2" --border-foreground 212 "$(gum format <<< "${DISK_RECAP_CONTENT}")" - gum confirm "Proceed with this disk configuration?" || { echo -e "\n\n āŒ Aborting as requested."; exit 1; } + gum confirm "Proceed with this disk configuration?" || { echo -e "\n\nāŒ Aborting as requested."; exit 1; } } cloudflare_dns_setup() { @@ -535,7 +553,7 @@ cloudflare_dns_setup() { if [[ "${CREATION_STATUS}" == "true" ]]; then echo " āœ… Successfully created a DNS record for ${SUBDOMAIN}" else - echo -e " āŒ Failed to create a DNS record for ${SUBDOMAIN}. Check documentation to \n + echo -e "āŒ Failed to create a DNS record for ${SUBDOMAIN}. Check documentation to \n learn how you can create them manually." fi } @@ -568,9 +586,11 @@ cloudflare_dns_setup() { SELECTED_SERVICES_DNS=() for service in "${SELECTED_SERVICES[@]}"; do [[ "${service}" == "virtualization" ]] && continue - SELECTED_SERVICES_DNS+=("${service}.${DOMAIN_NAME}") + [[ "${service}" == "clamav" ]] && continue + [[ "${service}" == "nextcloud" ]] && SELECTED_SERVICES_DNS+=( "onlyoffice.${DOMAIN_NAME}" "whiteboard.${DOMAIN_NAME}" ) + SELECTED_SERVICES_DNS+=( "${service}.${DOMAIN_NAME}" ) done - SELECTED_SERVICES_DNS+=("${SELECTED_DNS_SERVICE}.${DOMAIN_NAME}") + SELECTED_SERVICES_DNS+=( "${SELECTED_DNS_SERVICE}.${DOMAIN_NAME}" ) # Get Zone ID ZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=${DOMAIN_NAME}" \ diff --git a/templates/nix-config/pcie-coral/coral.nix b/templates/nix-config/pcie-coral/coral.nix deleted file mode 100644 index c98c359..0000000 --- a/templates/nix-config/pcie-coral/coral.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, pkgs, ... }: - -let - libedgetpu = pkgs.callPackage ./libedgetpu.nix {}; - gasket = config.boot.kernelPackages.callPackage ./gasket.nix {}; -in - -{ - services.udev.packages = [ libedgetpu ]; - users.groups.plugdev = {}; - boot.extraModulePackages = [ gasket ]; -} \ No newline at end of file diff --git a/templates/nix-config/pcie-coral/gasket.nix b/templates/nix-config/pcie-coral/gasket.nix deleted file mode 100644 index e2af4d5..0000000 --- a/templates/nix-config/pcie-coral/gasket.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ stdenv, lib, fetchFromGitHub, kernel }: - -stdenv.mkDerivation rec { - pname = "gasket"; - version = "1.0-18"; - - src = fetchFromGitHub { - owner = "google"; - repo = "gasket-driver"; - rev = "97aeba584efd18983850c36dcf7384b0185284b3"; - sha256 = "pJwrrI7jVKFts4+bl2xmPIAD01VKFta2SRuElerQnTo="; - }; - - makeFlags = [ - "-C" - "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" - "M=$(PWD)" - ]; - buildFlags = [ "modules" ]; - - installFlags = [ "INSTALL_MOD_PATH=${placeholder "out"}" ]; - installTargets = [ "modules_install" ]; - - sourceRoot = "source/src"; - hardeningDisable = [ "pic" "format" ]; - nativeBuildInputs = kernel.moduleBuildDependencies; - - meta = with lib; { - description = "The Coral Gasket Driver allows usage of the Coral EdgeTPU on Linux systems."; - homepage = "https://github.com/google/gasket-driver"; - license = licenses.gpl2; - maintainers = [ lib.maintainers.kylehendricks ]; - platforms = platforms.linux; - }; -} \ No newline at end of file diff --git a/templates/nix-config/pcie-coral/libedgetpu.nix b/templates/nix-config/pcie-coral/libedgetpu.nix deleted file mode 100644 index daa42dd..0000000 --- a/templates/nix-config/pcie-coral/libedgetpu.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ stdenv, lib, fetchFromGitHub, libusb1, abseil-cpp, flatbuffers, xxd }: - -let - flatbuffers_1_12 = flatbuffers.overrideAttrs (oldAttrs: rec { - version = "1.12.0"; - NIX_CFLAGS_COMPILE = "-Wno-error=class-memaccess -Wno-error=maybe-uninitialized"; - cmakeFlags = (oldAttrs.cmakeFlags or []) ++ ["-DFLATBUFFERS_BUILD_SHAREDLIB=ON"]; - NIX_CXXSTDLIB_COMPILE = "-std=c++17"; - configureFlags = (oldAttrs.configureFlags or []) ++ ["--enable-shared"]; - src = fetchFromGitHub { - owner = "google"; - repo = "flatbuffers"; - rev = "v${version}"; - sha256 = "sha256-L1B5Y/c897Jg9fGwT2J3+vaXsZ+lfXnskp8Gto1p/Tg="; - }; - }); - -in stdenv.mkDerivation rec { - pname = "libedgetpu"; - version = "grouper"; - - src = fetchFromGitHub { - owner = "google-coral"; - repo = pname; - rev = "release-${version}"; - sha256 = "sha256-73hwItimf88Iqnb40lk4ul/PzmCNIfdt6Afi+xjNiBE="; - }; - - makeFlags = ["-f" "makefile_build/Makefile" "libedgetpu" ]; - - buildInputs = [ - libusb1 - abseil-cpp - flatbuffers_1_12 - ]; - - nativeBuildInputs = [ - xxd - ]; - - NIX_CXXSTDLIB_COMPILE = "-std=c++17"; - - TFROOT = "${fetchFromGitHub { - owner = "tensorflow"; - repo = "tensorflow"; - rev = "v2.7.4"; - sha256 = "sha256-liDbUAdaVllB0b74aBeqNxkYNu/zPy7k3CevzRF5dk0="; - }}"; - - enableParallelBuilding = false; - - installPhase = '' - mkdir -p $out/lib - cp out/direct/k8/libedgetpu.so.1.0 $out/lib - ln -s $out/lib/libedgetpu.so.1.0 $out/lib/libedgetpu.so.1 - mkdir -p $out/lib/udev/rules.d - cp debian/edgetpu-accelerator.rules $out/lib/udev/rules.d/99-edgetpu-accelerator.rules - ''; -} \ No newline at end of file