diff --git a/bin/actions/auto-start.sh b/bin/actions/auto-start.sh index 7f81d9f..b1a9330 100755 --- a/bin/actions/auto-start.sh +++ b/bin/actions/auto-start.sh @@ -10,6 +10,11 @@ apps=( fcitx5 ) +# check if screen has any dead sessions +if screen -list | grep -q "Dead"; then + screen -wipe +fi + echo "Starting auto-start applications..." for app in "${apps[@]}"; do if [ -x "$(command -v $app)" ]; then @@ -24,7 +29,3 @@ for app in "${apps[@]}"; do fi done -# check if screen has any dead sessions -if screen -list | grep -q "Dead"; then - screen -wipe -fi diff --git a/bin/actions/update.sh b/bin/actions/update.sh index 28514dc..758dc87 100755 --- a/bin/actions/update.sh +++ b/bin/actions/update.sh @@ -93,7 +93,10 @@ symlinks() { } sys_packages_upgrade() { + printfe "%s\n" "cyan" "Running NixOS channel update..." sudo nix-channel --update + + printfe "%s\n" "cyan" "Upgrading NixOS packages..." cd $HOME/dotfiles/config/nixos && sudo nixos-rebuild switch --upgrade --flake .#$DOTF_HOSTNAME --impure } @@ -157,6 +160,8 @@ flatpakpkgs() { } homemanager() { + printfe "%s\n" "cyan" "Running Home Manager update..." + # Due to weirdness delete this file if it exists if [ -f "$HOME/.config/mimeapps.list.backup" ]; then echo "Removing mimeapps.list.backup" diff --git a/config/flatpaks/com.plexamp.Plexamp.flatpakref b/config/flatpaks/com.plexamp.Plexamp.flatpakref new file mode 100644 index 0000000..a1878de --- /dev/null +++ b/config/flatpaks/com.plexamp.Plexamp.flatpakref @@ -0,0 +1,10 @@ +[Flatpak Ref] +Name=com.plexamp.Plexamp +Branch=stable +Title=com.plexamp.Plexamp from flathub +IsRuntime=false +Url=https://dl.flathub.org/repo/ +SuggestRemoteName=flathub +GPGKey=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 +RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo + diff --git a/config/home-manager/packages/workstation/brave-search-engines.sh b/config/home-manager/packages/workstation/brave-search-engines.sh new file mode 100755 index 0000000..cd4d8c9 --- /dev/null +++ b/config/home-manager/packages/workstation/brave-search-engines.sh @@ -0,0 +1,132 @@ +#!/usr/bin/env bash + +BRAVE_DIR="$HOME/.config/BraveSoftware/Brave-Browser/Default" +MAX_ATTEMPTS=30 # Maximum number of seconds to wait + +# Function to kill all Brave processes +kill_brave() { + # Store whether Brave was running + if pgrep -x "brave" > /dev/null; then + echo "Brave was running, will restart after completion" + export BRAVE_WAS_RUNNING=1 + else + export BRAVE_WAS_RUNNING=0 + fi + + echo "Closing all Brave browser instances..." + pkill -x "brave" || true + sleep 2 # Give it a moment to clean up + + # Force kill if any processes remain + if pgrep -x "brave" > /dev/null; then + echo "Force closing remaining Brave processes..." + pkill -9 -x "brave" || true + fi +} + +# Function to check if database is locked +is_db_locked() { + local db_file="$1" + if lsof "$db_file" >/dev/null 2>&1; then + return 0 # true, db is locked + else + return 1 # false, db is not locked + fi +} + +# Check if profile exists +if [ ! -d "$BRAVE_DIR" ]; then + echo "Brave profile directory doesn't exist. Please run Brave at least once." + exit 1 +fi + +# Check if Web Data exists +if [ ! -f "$BRAVE_DIR/Web Data" ]; then + echo "Web Data file doesn't exist. Please run Brave at least once." + exit 1 +fi + +# Kill any running Brave instances +kill_brave + +# Wait for database to be unlocked +attempts=0 +while is_db_locked "$BRAVE_DIR/Web Data" && [ $attempts -lt $MAX_ATTEMPTS ]; do + echo "Database is locked. Waiting... ($attempts/$MAX_ATTEMPTS)" + sleep 1 + attempts=$((attempts + 1)) +done + +if is_db_locked "$BRAVE_DIR/Web Data"; then + echo "Database is still locked after $MAX_ATTEMPTS seconds. Please ensure Brave is completely closed and try again." + exit 1 +fi + +echo "Setting up search engines..." + +# Create temporary file for SQL commands +SQLCOMMANDS=$(mktemp) + +cat > $SQLCOMMANDS << 'ENDSQL' +DELETE FROM keywords WHERE keyword NOT IN ('@bookmarks', '@history'); + +INSERT INTO keywords ( + short_name, keyword, favicon_url, url, safe_for_autoreplace, + date_created, usage_count, input_encodings, suggest_url, prepopulate_id, + sync_guid, alternate_urls, last_visited, is_active +) VALUES +( + 'Brave', ':br', + 'https://cdn.search.brave.com/serp/v2/_app/immutable/assets/favicon.acxxetWH.ico', + 'https://search.brave.com/search?q={searchTerms}&source=desktop', + 1, 0, 0, 'UTF-8', + 'https://search.brave.com/api/suggest?q={searchTerms}&rich=true&source=desktop', + 550, '485bf7d3-0215-45af-87dc-538868000550', '[]', 13376052494948729, 0 +), +( + 'Google', ':g', + 'https://www.google.com/images/branding/product/ico/googleg_alldp.ico', + '{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:language}{google:prefetchSource}{google:searchClient}{google:sourceId}{google:contextualSearchVersion}ie={inputEncoding}', + 1, 0, 0, 'UTF-8', + '{google:baseSuggestURL}search?{google:searchFieldtrialParameter}client={google:suggestClient}&gs_ri={google:suggestRid}&xssi=t&q={searchTerms}&{google:inputType}{google:omniboxFocusType}{google:cursorPosition}{google:currentPageUrl}{google:pageClassification}{google:clientCacheTimeToLive}{google:searchVersion}{google:sessionToken}{google:prefetchQuery}sugkey={google:suggestAPIKeyParameter}', + 1, '485bf7d3-0215-45af-87dc-538868000001', '[]', 0, 0 +), +( + 'DuckDuckGo', ':d', + 'https://duckduckgo.com/favicon.ico', + 'https://duckduckgo.com/?q={searchTerms}&t=brave', + 1, 0, 0, 'UTF-8', + 'https://ac.duckduckgo.com/ac/?q={searchTerms}&type=list', + 501, '485bf7d3-0215-45af-87dc-538868000501', '[]', 0, 0 +), +( + 'NixOS', 'nix', + 'https://search.nixos.org/favicon.png', + 'https://search.nixos.org/packages?query={searchTerms}', + 1, 13376052510404586, 1, '', + '', + 0, 'bea7b4cd-8693-40d8-8bd0-7f59e0f0eb8d', '[]', 13376052522458505, 1 +), +( + 'GoLink', 'go', + 'https://tailscale.com/favicon.ico', + 'http://go/{searchTerms}', + 1, 13376052510404586, 1, '', + '', + 0, 'bef7b3cd-8693-40d8-8bd0-5f59e0f0eb8d', '[]', 13376052522458505, 1 +); +ENDSQL + +# Execute SQL commands +sqlite3 "$BRAVE_DIR/Web Data" < $SQLCOMMANDS + +# Cleanup +rm $SQLCOMMANDS + +echo "Search engines setup completed successfully!" + +# Restart Brave if it was running before +if [ "$BRAVE_WAS_RUNNING" = "1" ]; then + echo "Restarting Brave..." + brave &> /dev/null & +fi diff --git a/config/home-manager/packages/workstation/brave.nix b/config/home-manager/packages/workstation/brave.nix new file mode 100644 index 0000000..af0092d --- /dev/null +++ b/config/home-manager/packages/workstation/brave.nix @@ -0,0 +1,38 @@ +{ + lib, + config, + pkgs, + ... +}: +{ + # Copy search engine configuration script + home.file.".local/bin/brave-search-engines.sh" = { + source = ./brave-search-engines.sh; + executable = true; + }; + + # Run search engine configuration script + home.activation = { + setBraveSearchEngines = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + PATH="${pkgs.procps}/bin:${pkgs.sqlite}/bin:$PATH" $HOME/.local/bin/brave-search-engines.sh + ''; + }; + + programs.chromium = { + enable = true; + package = pkgs.brave; + extensions = [ + { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin + { id = "aeblfdkhhhdcdjpifhhbdiojplfjncoa"; } # 1password + { id = "oldceeleldhonbafppcapldpdifcinji"; } # language tool + { id = "mnjggcdmjocbbbhaepdhchncahnbgone"; } # sponsor block + { id = "gebbhagfogifgggkldgodflihgfeippi"; } # return youtube dislike + { id = "neebplgakaahbhdphmkckjjcegoiijjo"; } # keepa + { id = "dnhpnfgdlenaccegplpojghhmaamnnfp"; } # augmented steam + { id = "fihnjjcciajhdojfnbdddfaoknhalnja"; } # I don't care about cookies + { id = "gphhapmejobijbbhgpjhcjognlahblep"; } # gnome shell integration + { id = "eadndfjplgieldjbigjakmdgkmoaaaoc"; } # xdebug helper + ]; + commandLineArgs = [ ]; + }; +} diff --git a/config/home-manager/packages/workstation/default.nix b/config/home-manager/packages/workstation/default.nix index 2967f5a..e8b7ac8 100644 --- a/config/home-manager/packages/workstation/default.nix +++ b/config/home-manager/packages/workstation/default.nix @@ -1,7 +1,10 @@ { ... }: let - files = builtins.removeAttrs (builtins.readDir ./.) [ "default.nix" ]; + files = builtins.removeAttrs (builtins.readDir ./.) [ + "default.nix" + "brave-search-engines.sh" + ]; # Import all other .nix files as modules moduleFiles = builtins.map (fname: ./. + "/${fname}") (builtins.attrNames files); diff --git a/config/home-manager/packages/workstation/packages.nix b/config/home-manager/packages/workstation/packages.nix index 7121b52..e4aa73b 100644 --- a/config/home-manager/packages/workstation/packages.nix +++ b/config/home-manager/packages/workstation/packages.nix @@ -13,6 +13,7 @@ gnome-frog # OCR tool gnome.gnome-boxes # Virtual machine manager deja-dup # Backup tool + sqlitebrowser # SQLite database manager ## Chat Apps telegram-desktop diff --git a/config/home-manager/workstation/dconf.nix b/config/home-manager/workstation/dconf.nix index dc8eb73..6925fe0 100644 --- a/config/home-manager/workstation/dconf.nix +++ b/config/home-manager/workstation/dconf.nix @@ -40,10 +40,10 @@ }; # Pinned apps - # add more by listing them with `gsettings list-recursively | grep favorite-apps` + # add more by listing them with `gsettings list-recursively | grep favorite-apps | sed "s/,//g; s/'/\"/g"` then copy pasting the output here "org/gnome/shell" = { favorite-apps = [ - "io.github.zen_browser.zen.desktop" + "brave-browser.desktop" "code.desktop" "org.telegram.desktop.desktop" "spotify.desktop" diff --git a/config/home-manager/workstation/default-apps.nix b/config/home-manager/workstation/default-apps.nix index 67cc1f9..faee2b9 100644 --- a/config/home-manager/workstation/default-apps.nix +++ b/config/home-manager/workstation/default-apps.nix @@ -4,11 +4,11 @@ xdg.mimeApps = { enable = true; defaultApplications = { - # Zen Browser - "application/xhtml+xml" = [ "io.github.zen_browser.zen.desktop" ]; - "text/html" = [ "io.github.zen_browser.zen.desktop" ]; - "x-scheme-handler/http" = [ "io.github.zen_browser.zen.desktop" ]; - "x-scheme-handler/https" = [ "io.github.zen_browser.zen.desktop" ]; + # Brave Browser + "application/xhtml+xml" = [ "brave-browser.desktop" ]; + "text/html" = [ "brave-browser.desktop" ]; + "x-scheme-handler/http" = [ "brave-browser.desktop" ]; + "x-scheme-handler/https" = [ "brave-browser.desktop" ]; # Geary "x-scheme-handler/mailto" = [ "org.gnome.Geary.desktop" ]; diff --git a/config/home-manager/workstation/gnome-extensions.nix b/config/home-manager/workstation/gnome-extensions.nix index 3c747cf..58dceb3 100644 --- a/config/home-manager/workstation/gnome-extensions.nix +++ b/config/home-manager/workstation/gnome-extensions.nix @@ -12,6 +12,7 @@ user-themes weather-oclock native-window-placement + kimpanel ] ++ (with pkgs-unstable.gnomeExtensions; [ tiling-shell @@ -55,6 +56,7 @@ "org/gnome/shell" = { disable-user-extensions = false; enabled-extensions = [ + "kimpanel@kde.org" "lilypad@shendrew.github.io" "tilingshell@ferrarodomenico.com" "gsconnect@andyholmes.github.io" @@ -94,6 +96,8 @@ # Configure dash-to-dock "org/gnome/shell/extensions/dash-to-dock" = { + pressure-threshold = 250; + require-pressure-to-show = false; apply-custom-theme = false; apply-glossy-effect = false; autohide-in-fullscreen = true; diff --git a/config/nixos/docker/wireguard/docker-compose.yml b/config/nixos/docker/wireguard/docker-compose.yml index eb3c0c4..2d9a2ee 100644 --- a/config/nixos/docker/wireguard/docker-compose.yml +++ b/config/nixos/docker/wireguard/docker-compose.yml @@ -1,23 +1,23 @@ name: wireguard -services: +services: upnp: image: ghcr.io/vleeuwenmenno/auto-upnp:latest restart: unless-stopped network_mode: host environment: UPNP_DURATION: 86400 # 24 hours in seconds - PORTS: | + PORTS: | [ {"port": 51820, "protocol": "udp"} ] - + server: image: lscr.io/linuxserver/wireguard:latest container_name: wireguard cap_add: - NET_ADMIN environment: - - PEERS=fold6,pc,laptop + - PEERS=s24,pc,laptop volumes: - ./config:/config ports: @@ -25,4 +25,3 @@ services: sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped - \ No newline at end of file diff --git a/config/nixos/packages/common/default.nix b/config/nixos/packages/common/default.nix index b2b3a8c..2ab9eaa 100644 --- a/config/nixos/packages/common/default.nix +++ b/config/nixos/packages/common/default.nix @@ -5,5 +5,6 @@ environment.systemPackages = with pkgs; [ yubikey-manager trash-cli + sqlite # Used for managing SQLite databases (Brave Settings etc.) ]; } diff --git a/config/nixos/users.nix b/config/nixos/users.nix index 95d9d8a..5c766cc 100644 --- a/config/nixos/users.nix +++ b/config/nixos/users.nix @@ -13,6 +13,7 @@ "docker" "video" "render" + "users" ]; }; }