• 1 Post
  • 25 Comments
Joined 6 months ago
cake
Cake day: March 26th, 2024

help-circle





  • Is there a reason you’re not considering running this in a VM?

    I could see a case where you go for a native install on a virtual machine, attach a virtual disk to isolate your library from the rest of the filesystem, and then move that around (or just straight up mount that directory in the container) as needed.

    That way you can back up your library separately from your JF server implementation and go hog wild.








  • My solution is to use Rathole. I rent a wildly cheap (2 core, 4GB memory) VPS and basically just run Traefik there. Then I use Rathole to make some services hosted on my desktop available to Traefik.

    I like this solution better than Wireguard for my application. It reduces attack surface to services you’ve explicitly set up, rather than a full data layer trunk between your machine and a potential malicious actor.





  • Try this, friend

    Tap for spoiler
    { config, pkgs, ... }:
    
      let
        lock-false = {
          Value = false;
          Status = "locked";
        };
        lock-true = {
          Value = true;
          Status = "locked";
        };
      in
    {
      /* 
      ** ffextid
      ** Usage: `ffextid [install_url]`
      ** Description: simple script to find the extension id from an extension's manifest
      **              using the url found by right clicking the install add-on button and 
      **              selecting "copy link"
      */
      home.packages = with pkgs; [
        (pkgs.writeShellScriptBin "ffextid" ''
        #!/usr/bin/env bash 
        $(curl $1 > /tmp/ffext.xpi) 1> /dev/null
        $(unzip /tmp/ffext.xpi -d /tmp/ffext) 1> /dev/null
        
        # If ripgrep exists, use that. Otherwise default to grep
        if ! command -v rg &> /dev/null; 
        then
          rg id /tmp/ffext/manifest.json
        else
          grep id /tmp/ffext/manifest.json
        fi
        
        rm -rf /tmp/ffext*
        '')
      ]; 
      programs = {
        firefox = {
          enable = true;
          package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
            extraPolicies = {
              DisableTelemetry = true;
              # add policies here...
    
              /* ---- EXTENSIONS ---- */
              ExtensionSettings = {
                "*".installation_mode = "blocked"; # blocks all addons except the ones specified below
                /*
                Format: 
                "[Manifest id]" = {
                  installation_mode = "force_installed" # will install the extension for you!
                  install_url = "[url]" # found by right clicking the install button on the add-on page
                };
                */
                # uBlock Origin:
                "uBlock0@raymondhill.net" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
                };
                # Privacy Badger:
                "jid1-MnnxcxisBPnSXQ@jetpack" = {
                  install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
                  installation_mode = "force_installed";
                };
                # Bitwarden
                "{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4225453/bitwarden_password_manager-2024.1.1.xpi";
                };
                # XBrowserSync
                "{019b606a-6f61-4d01-af2a-cea528f606da}" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/3546070/xbs-1.5.2.xpi";
                };
                # Decentraleyes
                "{jid1-BoFifL9Vbdl2zQ@jetpack}" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4158232/decentraleyes-2.0.18.xpi";
                };
                # Clear URLs
                "{74145f27-f039-47ce-a470-a662b129930a}" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4064884/clearurls-1.26.1.xpi";
                };
                #Dark Reader 
                "addon@darkreader.org" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4223104/darkreader-4.9.76.xpi";
                };
                # Cookie AutoDelete
                "CookieAutoDelete@kennydo.com" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4040738/cookie_autodelete-3.8.2.xpi";
                };
                # I don't care about cookies
                "jid1-KKzOGWgsW3Ao4Q@jetpack" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4202634/i_dont_care_about_cookies-3.5.0.xpi";
                };
                # Youtube Sponsor Block
                "sponsorBlocker@ajay.app" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4229442/sponsorblock-5.5.4.xpi";
                };
                # add extensions here...
                /*
                "" = {
                  installation_mode = "force_installed";
                  install_url = "";
                };
                */
              };
      
              /* ---- PREFERENCES ---- */
              # Set preferences shared by all profiles.
              Preferences = {
                "browser.contentblocking.category" = { Value = "strict"; Status = "locked"; };
    
                ### BOOLEANS
                "extensions.pocket.enabled" = lock-false;
                "extensions.screenshots.disabled" = lock-true;
                "privacy.donottrack.heater.enable" = lock-true;
                "browser.compactmode.show" = lock-true;
                # add global preferences here...
              };
            };
          };
    
          /* ---- PROFILES ---- */
          # Switch profiles via about:profiles page.
          # For options that are available in Home-Manager see
          # https://nix-community.github.io/home-manager/options.html#opt-programs.firefox.profiles
          profiles ={
            sunstoned = {                 # choose a profile name; directory is /home/<user>/.mozilla/firefox/profile_0
              id = 0;               # 0 is the default profile; see also option "isDefault"
              name = "sunstoned";         # name as listed in about:profiles
              isDefault = true;     # can be omitted; true if profile ID is 0
              settings = {          # specify profile-specific preferences here; check about:config for options
                "browser.newtabpage.activity-stream.feeds.section.highlights" = false;
                "browser.startup.homepage" = "https://nixos.org";
                "browser.newtabpage.pinned" = [{
                  title = "NixOS";
                  url = "https://nixos.org";
                }];
                # add preferences for profile_0 here...
              };
            };
          # add profiles here...
          };
        };
      };
    }