GrapheneOS! I’ve been using it for a few years. Never going back.
GrapheneOS! I’ve been using it for a few years. Never going back.
Is this some Network Allowed
problem that I’m too Network Not Allowed
to understand?
I’m a big fan of buying power tools twice. I happen to go Ryobi for the first round but Harbor Freight / Northern Tool are probably similar.
If you can stand the fuss, buy corded tools and skip the brand loyalty that comes with batteries.
The biggest killer of cheaper power tools is generally heat. There are plastic components in the drive train. They hold up great to short jobs, but heat is their kryptonite. If you let a Ryobi tool cool down whenever you notice it getting warm to the touch it’ll last a long time. If you need to run a tool for hours at a time then skip the fuss and go straight to a more brand with a good reputation like DeWalt, Makita, Bosch, or Milwaukee.
Red boxes fit all brands :)
assuming you mean *can’t
if cordless: batteries
else: brand cuckery
Well that’s odd!
Here you go:
Amazing! I’ve used that before but just to look for packages offline. I’ll definitely check that out.
Love the example here!
I’m still learning about available references (ex config.services.navidrome.settings.Port
). What resources did you find to be the best for learning that kind of thing?
I’ll accept RTFM if that’s applicable :)
Wild how you happened to have this totally original idea days after this exact diagram structure was in a video posted by a channel with 3M subscribers :) crazy coincidence
My favorite line in the fireship video this is from goes something like “FreeBSD is the real answer but I like being able to Google things”
I was going to say Guix but I’ve always been a little Gentoo curious
There’s something to practicing with the operating system family that most big commercial outfits use. Plus SELinux is neat, and there’s no Canonical ads.
I use Fedora with home-manager, btw. After using Arch and Debian for years I really think Fedora (or adjacent like Nobara) is on its way to being the de facto starter distro.
Wrong™ in 100 seconds
A rich person runs NixOS (for the military contracts apparently)
Try this, friend
{ 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...
};
};
};
}
In my head they’re different use cases. Nix is amazing for a living build. Ansible is more pigeon-holed to production systems where you don’t want (or need) that history baked into every system
nix develop
is going to change your workflow. Don’t fear the flake my friend :)
Idk flatpak and docker are pretty easy to set up. If anything gets too complicated it’s easy to go back to old reliable.
If you want a device to do NFC payments you’ll need to look somewhere other than GrapheneOS. (Believe me, I’ve tried everything)
https://discuss.grapheneos.org/d/475-wallet-google-pay