summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/elfeed.org123
-rw-r--r--config/emacs.org235
-rw-r--r--config/nix.org252
-rw-r--r--config/qutebrowser.org2
4 files changed, 477 insertions, 135 deletions
diff --git a/config/elfeed.org b/config/elfeed.org
index a6ef555..d621922 100644
--- a/config/elfeed.org
+++ b/config/elfeed.org
@@ -7,97 +7,129 @@
* Feed :elfeed:
This is the feed I use for Elfeed, and the elfeed-org package allows me to publish
them here in an automated fashion. This is why Emacs is so great!
-** News :news:
+* News :news:
These are the news articles that I subscribe to. Some of these are politics related
but I mostly just want to inform myself about technology subjects.
-*** [[https://news.ycombinator.com/rss][Hacker News]]
+** [[https://news.ycombinator.com/rss][Hacker News]]
Hacker News!
-*** [[https://www.propublica.org/feeds/propublica/main][Propublica]]
+** [[https://www.propublica.org/feeds/propublica/main][Propublica]]
Free news!
-*** [[https://api.quantamagazine.org/feed/][Quanta Magazine]]
+** [[https://api.quantamagazine.org/feed/][Quanta Magazine]]
Credibility: misreported on ER EPR correspondence
-** Podcasts :podcast:
-*** [[https://notrelated.xyz/rss][Not Related]] :lukesmith:
+** [[https://rss.acm.org/technews/technews.rss][ACM TechNews]] :technology:computer-science:
+Curated technology and computing news summaries for professionals.
+* Podcasts :podcast:
+** [[https://notrelated.xyz/rss][Not Related]] :lukesmith:
This is a podcast by Luke Smith that talks about anything that he wants to.
-** Forums :forum:
-*** [[http://lesserwrong.com/feed.xml][LessWrong]]
+* Forums :forum:
+** [[http://lesserwrong.com/feed.xml][LessWrong]]
The birthplace of bay area rationalism.
-*** [[https://list.nullring.xyz/discussion/new.atom][Nullring Discussion]]
+** [[https://list.nullring.xyz/discussion/new.atom][Nullring Discussion]]
My own mailing list feed.
-** Science Journals :journal:
+* Science Journals :journal:
I like to get new information about recent studies related to technology.
-*** [[http://www.nature.com/nmat/current_issue/rss/][Nature]]
+** [[http://www.nature.com/nmat/current_issue/rss/][Nature]]
Nature is a prestigious journal with a good bit of good content.
-*** NASA :nasa:
+** NASA :nasa:
This is a list of NASA feeds:
-**** [[https://www.nasa.gov/technology/feed/][NASA Tech]]
-**** [[https://www.nasa.gov/aeronautics/feed/][NASA Aeronautics]]
-**** [[https://www.nasa.gov/missions/station/feed/][NASA Station]]
-**** [[https://www.nasa.gov/missions/artemis/feed/][NASA Artemis]]
-** YouTube :youtube:
+*** [[https://www.nasa.gov/technology/feed/][NASA Tech]]
+*** [[https://www.nasa.gov/aeronautics/feed/][NASA Aeronautics]]
+*** [[https://www.nasa.gov/missions/station/feed/][NASA Station]]
+*** [[https://www.nasa.gov/missions/artemis/feed/][NASA Artemis]]
+* YouTube :youtube:
These are YouTube channels that I find interesting enough to keep up with. Note that I keep
up with a variety of thinkers that I may or may not disagree with, but they are nonetheless
the most intellectual version of what their general cohort say:
-*** [[https://youtube.com/feeds/videos.xml?channel_id=UCFQMnBA3CS502aghlcr0_aw][CoffeeZilla]]
+** [[https://youtube.com/feeds/videos.xml?channel_id=UCTsiZiMomJo6FOyiBaFeaIw][IAI]]
+Videos that include many public intellectuals. Some of them are dumb I guess however it's interesting enough to put on this feed.
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCoxcjq-8xIDTYp3uz647V5A][Numberphile]] :math:
+Math-heavy popularization that is usually worth keeping around.
+** [[https://youtube.com/feeds/videos.xml?channel_id=UCFQMnBA3CS502aghlcr0_aw][CoffeeZilla]]
Exposes scams.
-*** [[https://youtube.com/feeds/videos.xml?channel_id=UC28n0tlcNSa1iPe5mettocg][VoidZilla]]
+** [[https://youtube.com/feeds/videos.xml?channel_id=UC28n0tlcNSa1iPe5mettocg][VoidZilla]]
Extras from coffezilla channel.
-*** [[https://youtube.com/feeds/videos.xml?channel_id=UCKGCof63C6pLCFT4R6YPEtQ][Jred]]
-This youtube channel is about existential dread apparently. I don't have such a thing but it's fun to watch anyways.
-*** [[https://youtube.com/feeds/videos.xml?channel_id=UC1qIX2Ya5ErOrU9tv0GVUAw][CyberYamu]]
+** [[https://youtube.com/feeds/videos.xml?channel_id=UC1qIX2Ya5ErOrU9tv0GVUAw][CyberYamu]]
A channel about the daily experience of a schizotypal girl.
-*** [[https://youtube.com/feeds/videos.xml?channel_id=UCwVevVbti5Uuxj6Mkl5NHRA][Lemonade Stand]]
+** [[https://youtube.com/feeds/videos.xml?channel_id=UCwVevVbti5Uuxj6Mkl5NHRA][Lemonade Stand]]
Podcast channel that talks about modern day economics.
-*** [[https://youtube.com/feeds/videos.xml?channel_id=UCSHZKyawb77ixDdsGog4iWA][Lex Fridman]]
+** [[https://youtube.com/feeds/videos.xml?channel_id=UCSHZKyawb77ixDdsGog4iWA][Lex Fridman]]
He has some good guests on sometimes.
-*** [[https://youtube.com/feeds/videos.xml?channel_id=UCXl4i9dYBrFOabk0xGmbkRA][Dwarkesh Patel]]
+** [[https://youtube.com/feeds/videos.xml?channel_id=UCXl4i9dYBrFOabk0xGmbkRA][Dwarkesh Patel]]
Makes podcasts whose guests are usually AI researchers of some kind.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC1yNl2E66ZzKApQdRuTQ4tw][Sabine Hossenfelder]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC1yNl2E66ZzKApQdRuTQ4tw][Sabine Hossenfelder]]
Youtube channel about mostly physics related content (I do not endorse her views on string theory).
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC7_gcs09iThXybpVgjHZ_7g][PBS Space Time]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC7_gcs09iThXybpVgjHZ_7g][PBS Space Time]]
PBS space time is a channel that discusses various (sometimes cutting edge) topics in Physics in an expert manner.
I find that they are highly accurate, and the host is highly educated in Physics.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCWvq4kcdNI1r1jZKFw9TiUA][ScienceClic]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCWvq4kcdNI1r1jZKFw9TiUA][ScienceClic]]
ScienceClic is another YouTube channel that does an especially good job at covering cutting edge ideas in physics.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCMxiv15iK_MFayY_3fU9loQ][UnHerd]] :podcast:
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCMxiv15iK_MFayY_3fU9loQ][UnHerd]] :podcast:
UnHerd is one of the best, most interesting political podcasts, period, in my opinion. Though, do note that learning
about politics is kind of pointless.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC8oZG4c6FzOX4pbdpZBeCPw][Huey Li]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC8oZG4c6FzOX4pbdpZBeCPw][Huey Li]]
He's a comedian and kind of a China hater.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC554eY5jNUfDq3yDOJYirOQ][Destiny]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC554eY5jNUfDq3yDOJYirOQ][Destiny]]
He debates people on various issues.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw][3blue1brown]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw][3blue1brown]]
Makes really good educational videos. I hope to make videos like this one day.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCGSGPehp0RWfca-kENgBJ9Q][Jreg]]
-Makes good videos about basically anything.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA][Luke Smith]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA][Luke Smith]]
Makes good videos about Linux and life stuff.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCSNBahoyPlMUz-3U2e_Czcw][Bridges]] :podcast:
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCSNBahoyPlMUz-3U2e_Czcw][Bridges]] :podcast:
This podcast is run by Destiny, and it features good guests.
-*** [[https://youtube.com/feeds/videos.xml?channel_id=UCgv4dPk_qZNAbUW9WkuLPSA][Atrioc]]
+** [[https://youtube.com/feeds/videos.xml?channel_id=UCgv4dPk_qZNAbUW9WkuLPSA][Atrioc]]
Features some good marketing and economics content. Big A is his secondary channel.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCdBXOyqr8cDshsp7kcKDAkg][Big A]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCdBXOyqr8cDshsp7kcKDAkg][Big A]]
Marketing Monday features good economics content.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCTpmmkp1E4nmZqWPS-dl5bg][Quanta Magazine]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCTpmmkp1E4nmZqWPS-dl5bg][Quanta Magazine]]
See above.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC5PPbhNfajmhPq7RvkMgVmw][Ceadda of Mercia]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC5PPbhNfajmhPq7RvkMgVmw][Ceadda of Mercia]]
Videos about NRx.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA][Mental Outlaw]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA][Mental Outlaw]]
Linux videos.
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCU1oodg2ptN51N5rwevwnng][Unlearning Economics]]
+** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCU1oodg2ptN51N5rwevwnng][Unlearning Economics]]
Videos about economics from a Marxist perspective.
-*** [[https://youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA][Veritasium]]
+** [[https://youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA][Veritasium]]
Makes good educational videos.
+* ActivityPub :activitypub:
+** Mastodon :mastodon:
+*** [[https://mathstodon.xyz/@tao.rss][Terence Tao (Mastodon)]] :tao:math:mastodon:
+His Mastodon features really great public outreach content.
+*** [[https://mathstodon.xyz/@peterwoit.rss][Peter Woit]] :math:mastodon:
+Mathematician and physicist.
** Blogs :blog:
Here are some interesting blogs, many of which are from substack.
+*** [[https://www.interfluidity.com/feed][Interfluidity]]
+A blog focused on economics but from an informed point of view.
*** [[https://ollama.com/blog/rss.xml][Ollama]]
For new updates to new LLM models that I can pull with ollama.
-*** [[https://terrytao.wordpress.com/feed/][Terence Tao]]
+*** [[https://terrytao.wordpress.com/feed/][Terence Tao]] :tao:math:
I like math.
*** [[https://lukesmith.xyz/index.xml][Luke Smith]] :lukesmith:
Luke Smith is quite the interesting person.
+*** [[https://www.worksinprogress.news/feed][Works in Progress Newsletter]] :progress:technology:economics:
+Long-form writing on progress, technology, industrial policy, and history.
+*** [[https://www.slowboring.com/feed][Slow Boring]] :policy:politics:economics:urbanism:
+Pragmatic policy writing with a decent amount of housing, institutions, and state capacity.
+*** [[https://www.astralcodexten.com/feed][Astral Codex Ten]] :rationalism:essay:science:
+Long-form essays on science, philosophy, psychiatry, culture, and rationalist topics.
+*** [[https://asteriskmag.com/feed][Asterisk Magazine]] :science:technology:economics:magazine:
+Progress-oriented magazine covering science, technology, economics, and culture.
+*** [[https://blog.rootsofprogress.org/feed.xml][The Roots of Progress]] :progress:history:technology:
+Jason Crawford on the history of technology and the philosophy of progress.
+*** [[https://www.grumpy-economist.com/feed][The Grumpy Economist]] :economics:markets:
+John Cochrane on macroeconomics, markets, policy, and economic theory.
+*** [[https://feeds.feedburner.com/marginalrevolution][Marginal Revolution]] :economics:policy:links:
+Tyler Cowen and Alex Tabarrok on economics, policy, books, and assorted links.
+*** [[https://scholars-stage.org/feed/][The Scholar's Stage]] :history:geopolitics:strategy:
+Tanner Greer on history, geopolitics, statecraft, and civilizational analysis.
+*** [[https://scottaaronson.blog/?feed=rss2][Shtetl-Optimized]] :math:physics:quantum:compsci:
+Scott Aaronson on quantum computing, theoretical CS, mathematics, and science.
*** Substack :substack:
These are a list of all the substack blogs that exist.
+**** [[https://highcapacity.org/feed][High Capacity]]
+Writing about China's economics.
+**** [[https://www.construction-physics.com/feed][Construction Physics]]
+More writings about economics.
**** [[https://graymirror.substack.com/feed][Gray Mirror]]
Curtis Yarvin is quite the interesting person.
**** [[https://www.richardhanania.com/feed][Richard Hanania]]
@@ -108,3 +140,6 @@ He makes good economics blogs as he used to be a professional economist.
Makes the case for the glorious reign of Futarchy!! (Not what you think it is).
**** [[https://betonit.ai/feed][Bryan Caplan]]
Anarcho Capitalist person.
+
+
+
diff --git a/config/emacs.org b/config/emacs.org
index 8f3de01..06693b8 100644
--- a/config/emacs.org
+++ b/config/emacs.org
@@ -93,8 +93,7 @@ syntax elsewhere. Generally, however, these are all unordered and not dependent
(set-fontset-font t 'han (font-spec :family "Noto Sans CJK SC"))
(set-fontset-font t 'kana (font-spec :family "Noto Sans CJK JP"))
(set-fontset-font t 'symbol (font-spec :family "Noto Color Emoji"))
- (set-fontset-font t 'symbol (font-spec :family "Symbols Nerd Font Mono") nil 'append))
- (set-frame-parameter nil 'alpha-background 70))
+ (set-fontset-font t 'symbol (font-spec :family "Symbols Nerd Font Mono") nil 'append)))
;; imperative
(defun evil-config ()
@@ -125,7 +124,6 @@ syntax elsewhere. Generally, however, these are all unordered and not dependent
;; same as above
(defun remove-annoying-pairing () (remove-hook 'post-self-insert-hook #'yaml-electric-bar-and-angle t))
-
;; taken from blog https://writepermission.com/org-blogging-rss-feed.html
(defun rp/org-rss-publish-to-rss (plist filename pub-dir)
"Publish RSS with PLIST, only when FILENAME is 'rss.org'.
@@ -217,10 +215,10 @@ Emacs is self documenting, after all!
(warning-minimum-level :emergency "Supress emacs warnings")
(confirm-kill-processes nil "Don't ask to quit")
(debug-ignored-errors (cons 'remote-file-error debug-ignored-errors) "Remove annoying error from debug errors")
- (browse-url-generic-program "librewolf" "set browser to librewolf")
+ (browse-url-generic-program "qutebrowser" "set browser to librewolf")
(browse-url-secondary-browser-function 'browse-url-generic "set browser")
(browse-url-browser-function 'browse-url-generic "set browser")
- (default-frame-alist '((alpha-background . 70)
+ (default-frame-alist '((alpha-background . 80)
(vertical-scroll-bars)
(internal-border-width . 24)
(left-fringe . 8)
@@ -267,7 +265,7 @@ This is my org mode configuration, which also configures latex.
#+begin_src emacs-lisp :tangle ../nix/init.el
(use-package org
:demand t
- :after (f s dash nix-mode)
+ :after (f s dash nix-mode scheme-mode)
:hook
((org-mode . remove-annoying-pairing))
:custom
@@ -347,6 +345,7 @@ This is my org mode configuration, which also configures latex.
'((shell . t)
(python . t)
(nix . t)
+ (scheme . t)
(latex . t))))
(use-package org-tempo
@@ -629,6 +628,38 @@ I use org-journal to journal about my life, and it's a part of my website:
(org-journal-enable-agenda-integration t "All org-journal entries are org-agenda entries")
(org-journal-file-header "#+TITLE: Daily Journal\n#+STARTUP: showeverything\n#+DESCRIPTION: My daily journal entry\n#+AUTHOR: Preston Pan\n#+date:\n#+options: broken-links:t" "set header files on new org journal entry"))
#+end_src
+** Org Super Agenda
+This gives richer org agenda views.
+#+begin_src emacs-lisp :tangle ../nix/init.el
+(use-package org-super-agenda
+ :after org
+ :custom
+ (org-super-agenda-groups
+ '((:name "Overdue"
+ :deadline past)
+ (:name "Today"
+ :time-grid t
+ :scheduled today)
+ (:name "Important"
+ :priority "A")
+ (:name "Due soon"
+ :deadline future)
+ (:name "Next"
+ :todo "NEXT")
+ (:name "Waiting"
+ :todo "WAIT")
+ (:name "Projects"
+ :tag "project")))
+
+ :config
+ (org-super-agenda-mode))
+#+end_src
+** Org Ql
+This allows efficient querying of my org mode files.
+#+begin_src emacs-lisp :tangle ../nix/init.el
+(use-package org-ql
+ :after org)
+#+end_src
** Doom Modeline
The default modeline is ugly. I replace it with the doom modeline because it's better.
#+begin_src emacs-lisp :tangle ../nix/init.el
@@ -934,10 +965,180 @@ still. It is kind of like copilot but it works with local LLMs, which is better.
I use really simple syndication (RSS) in order to read news. As a result, I use
elfeed to fetch feeds found on my website:
#+begin_src emacs-lisp :tangle ../nix/init.el
+(defun my/elfeed-export-recent-tsv (outfile days)
+ (interactive "FExport recent Elfeed TSV to file: \nnDays: ")
+ (require 'elfeed)
+ (elfeed-db-load)
+ (let ((cutoff (- (float-time) (* days 86400))))
+ (with-temp-file outfile
+ (insert "date\tfeed-title\tfeed-url\ttitle\turl\ttags\n")
+ (maphash
+ (lambda (_id entry)
+ (when (>= (elfeed-entry-date entry) cutoff)
+ (let* ((feed (elfeed-entry-feed entry))
+ (date (seconds-to-time (elfeed-entry-date entry)))
+ (date-str (format-time-string "%Y-%m-%d %H:%M:%S" date))
+ (feed-title (or (and feed (elfeed-feed-title feed)) ""))
+ (feed-url (or (and feed (elfeed-feed-url feed)) ""))
+ (title (or (elfeed-entry-title entry) ""))
+ (url (or (elfeed-entry-link entry) ""))
+ (tags (mapconcat #'symbol-name (elfeed-entry-tags entry) ",")))
+ (insert
+ (mapconcat
+ #'identity
+ (list date-str feed-title feed-url title url tags)
+ "\t")
+ "\n"))))
+ elfeed-db-entries))))
+
+(defvar elfeed-ai-agent-hype-regex
+ '("\\b\\(?:autonomous\\|multi[-[:space:]]?\\|ai[[:space:]]+\\)agents?\\b"
+ "\\bagentic[[:space:]]+\\(?:workflow\\|framework\\|ai\\|architecture\\)\\b"
+ "\\bagent[[:space:]]+\\(?:swarm\\|orchestration\\|loop\\)\\b"
+ "\\bfor[[:space:]]+agents?\\b"
+ "\\b\\(?:optimizing\\|optimising\\|building\\|designed?\\|designing\\)\\b.*\\bfor[[:space:]]+agents?\\b"))
+
+(defvar elfeed-ai-product-brand-regex
+ '("\\bchatgpt\\b"
+ "\\bclaude\\(?:[[:space:]]?\\(?:3\\|3\\.5\\|3\\.7\\)\\)?\\b"
+ "\\bgrok\\b"
+ "\\bgemini\\(?:[[:space:]]?\\(?:pro\\|flash\\|ultra\\)\\)?\\b"
+ "\\bdall[-[:space:]]?e\\(?:[[:space:]]?[1-9]\\)?\\b"
+ "\\b\\(?:midjourney\\|sora\\|perplexity\\)\\b"
+ "\\b\\(?:llama[-[:space:]]?[1-9]?\\|mistral\\|qwen\\|deepseek\\)\\b"
+ "\\b\\(?:cursor\\|windsurf\\|notebooklm\\|aider\\|cline\\|roo[-[:space:]]?code\\)\\b"
+ "\\b\\(?:v0\\|bolt\\.new\\|lovable\\)\\b"
+ "\\b\\w*claw\\w*\\b"))
+
+(defvar elfeed-ai-model-vendor-regex
+ '("\\bopenai\\b"
+ "\\banthropic\\b"
+ "\\bxai\\b"
+ "\\b\\(?:google[[:space:]]+\\)?deepmind\\b"
+ "\\bhugging[-[:space:]]?face\\b"
+ "\\b\\(?:cohere\\|meta[[:space:]]+ai\\|mistral[[:space:]]+ai\\)\\b"))
+
+(defvar elfeed-ai-model-family-regex
+ '("\\bgpt\\(?:-?[2345]\\|-?4\\.1\\|-?4\\.5\\|[-[:space:]]?o\\(?:1\\|3\\|4\\)\\)\\b"
+ "\\bgenai\\b"
+ "\\b[lvs]lms?\\b"
+ "\\bagi\\b"
+ "\\bgenerative[[:space:]]+ai\\b"
+ "\\b\\(?:foundation\\|diffusion\\|large[[:space:]]+language\\)[[:space:]]+models?\\b"
+ "\\b\\(?:rag\\|lora\\|fine[-[:space:]]?tun\\(?:ing\\|ed\\)\\)\\b"
+ "\\bprompt[[:space:]]+engineering\\b"))
+
+(defvar elfeed-ai-wrapper-marketing-regex
+ '("\\b\\(?:ai\\|llm\\|gpt\\|chatgpt\\|claude\\|grok\\|gemini\\)[-[:space:]]?powered\\b"
+ "\\bai[-[:space:]]?\\(?:driven\\|native\\|first\\|generated\\|assisted\\)\\b"
+ "\\b\\(?:build\\|built\\|building\\)\\b.*\\bwith[[:space:]]+\\(?:ai\\|llms?\\|gpt\\|chatgpt\\|claude\\|grok\\|gemini\\)\\b"
+ "\\bchat[[:space:]]+with[[:space:]]+\\(?:your\\|any\\)[[:space:]]+\\(?:data\\|pdfs?\\|code\\|docs?\\|database\\)\\b"
+ "\\bsupercharg\\(?:ed?\\|ing\\)[[:space:]]+\\(?:your\\|with\\)[[:space:]]+\\(?:ai\\|llms?\\)\\b"
+ "\\b\\w+[-[:space:]]?\\(?:copilot\\|assistant\\|agent\\)\\b"))
+
+(defvar elfeed-ai-rolecast-regex
+ '("\\bturning[[:space:]]+\\(?:an?\\|the\\)?[[:space:]]*\\(?:llm\\|ai\\|model\\|agent\\)[[:space:]]+into[[:space:]]+\\(?:an?\\|the\\)?[[:space:]]*\\w+\\b"
+ "\\b\\(?:your\\|an?\\)[[:space:]]+\\(?:ai\\|llm\\|agent\\)[[:space:]]+\\(?:teammate\\|coworker\\|coder\\|researcher\\|assistant\\|manager\\|judge\\)\\b"
+ "\\b\\(?:replace\\|automate\\)[[:space:]]+your[[:space:]]+\\(?:team\\|developers?\\|engineers?\\|designers?\\)[[:space:]]+with[[:space:]]+ai\\b"
+ "\\bai[[:space:]]+\\(?:software[[:space:]]+\\)?\\(?:engineer\\|developer\\)\\b"))
+
+(defvar elfeed-show-hn-demo-regex
+ '("\\b\\(?:show\\|ask\\|tell\\)\\W+hn"
+ "\\b\\(?:launch\\|launching\\|launched\\)\\W+hn"
+ "\\b\\(?:i\\|we\\)\\W+\\(?:built\\|made\\|created\\)\\W+\\(?:a\\|an\\|this\\)\\b"
+ "\\b\\(?:introducing\\|announcing\\)\\W+"
+ "\\b\\(?:my\\|our\\)\\W+weekend\\W+project\\b"))
+
+(defvar elfeed-anti-capitalist-slop-regex
+ '(;; Targets the specific "reddit-tier" anti-capitalist buzzwords, not actual economics
+ "\\blate[-[:space:]]?stage[[:space:]]+capitalism\\b"
+ "\\btechno[-[:space:]]?feudalism\\b"
+ "\\benshittification\\b" ; Highly correlated with circlejerk tech/capitalism complaining
+ "\\bcorporate[[:space:]]+greed\\b"
+ "\\b(?:eat[[:space:]]+the[[:space:]]+rich|class[[:space:]]+warfare)\\b"
+ "\\bruling[[:space:]]+class\\b"
+ "\\bsilicon[[:space:]]+valley[[:space:]]+elites?\\b"))
+
+(defvar elfeed-anti-immigrant-slop-regex
+ '(;; Targets the sensationalist framing of immigration, not neutral border news
+ "\\b(?:border|migrant)[[:space:]]+crisis\\b"
+ "\\bmass[[:space:]]+(?:im)?migration\\b"
+ "\\billegal[[:space:]]+(?:aliens?|immigrants?)\\b"
+ "\\bgreat[[:space:]]+replacement\\b"
+ "\\bopen[[:space:]]+borders?\\b"))
+
+(defvar elfeed-ai-doomerism-regex
+ '(;; Targets the moral panic/resource whining around AI, not legitimate AI benchmarks or legal updates
+ "\\bplagiarism[[:space:]]+machines?\\b"
+ "\\bstolen[[:space:]]+(?:art|data|content)\\b"
+ "\\b(?:ai|llms?|generative)[[:space:]]+(?:theft|stealing)\\b"
+ "\\bcopyright[[:space:]]+(?:theft|infringement)\\b"
+ "\\b(?:boiling[[:space:]]+the[[:space:]]+oceans?|guzzling[[:space:]]+(?:water|power|electricity))\\b"
+ "\\bunethic(?:al|s)[[:space:]]+(?:ai|tech)\\b"))
+
+(defvar elfeed-anti-tech-circlejerk-regex
+ '(;; Targets the general "tech is ruining society" populist outrage
+ "\\btech[[:space:]]+bros?\\b"
+ "\\bdead[[:space:]]+internet[[:space:]]+theory\\b"
+ "\\bruin(?:ing|ed)?[[:space:]]+the[[:space:]]+internet\\b"
+ "\\btech[[:space:]]+dystopia\\b"
+ "\\btech[[:space:]]+(?:backlash|reckoning)\\b"))
+
+(defvar elfeed-crypto-slop-regex
+ '(;; Targets Web3 buzzwords safely without breaking system design news
+ "\\bdecentrali[zs]ed[[:space:]]+(?:finance|exchange|web|autonomous|apps?|identity)\\b"
+ "\\b(?:defi|dapps?|daos?)\\b"
+ "\\b(?:web3|web[[:space:]]3\\.0)\\b"
+ "\\bcrypto(?:currency|currencies)?\\b"
+ "\\bnfts?\\b"))
+
+(defvar elfeed-general-culture-war-regex
+ '(;; Targets the evergreen vocabulary of online tribalism
+ "\\b\\(?:virtue[[:space:]]+signal\\(?:ing\\)?\\|mind[[:space:]]+virus\\|psyop\\|grifter\\|gaslight\\(?:ing\\)?\\)\\b"
+ "\\bculture[[:space:]]+war\\b"
+ "\\b\\(?:left\\|right\\)[-[:space:]]?wing[[:space:]]+\\(?:mob\\|agenda\\|propaganda\\|bias\\|tears\\)\\b"
+ "\\becho[[:space:]]+chamber\\b"
+ "\\bpolitical[[:space:]]+theater\\b"))
+
+(defvar elfeed-economic-doomerism-regex
+ '(;; Targets the hyper-sensationalized financial collapse crowd
+ "\\bfiat[[:space:]]+\\(?:currency\\|money\\)[[:space:]]+\\(?:collapse\\|ponzi\\)\\b"
+ "\\bhyperinflation[[:space:]]+\\(?:is[[:space:]]+here\\|incoming\\)\\b"
+ "\\b\\(?:great\\|massive\\)[[:space:]]+wealth[[:space:]]+transfer\\b"
+ "\\bcollapse[[:space:]]+of[[:space:]]+\\(?:western\\|civilization\\|society\\)\\b"))
+
+(defvar elfeed-hn-filter-list
+ `(,elfeed-ai-agent-hype-regex
+ ,elfeed-ai-product-brand-regex
+ ,elfeed-ai-model-vendor-regex
+ ,elfeed-ai-model-family-regex
+ ,elfeed-ai-wrapper-marketing-regex
+ ,elfeed-ai-rolecast-regex
+ ,elfeed-anti-tech-circlejerk-regex
+ ,elfeed-ai-doomerism-regex
+ ,elfeed-anti-immigrant-slop-regex
+ ,elfeed-anti-capitalist-slop-regex
+ ,elfeed-crypto-slop-regex
+ ,elfeed-general-culture-war-regex
+ ,elfeed-economic-doomerism-regex
+ ,elfeed-show-hn-demo-regex))
+
+(defun elfeed-list-to-filter (filter-list)
+ (mapconcat #'identity filter-list "\\|"))
+
+(defun elfeed-final-filter (filter-lists)
+ ;; Use standard non-capturing group \(?: ... \)
+ (concat
+ "\\(?:"
+ (mapconcat #'elfeed-list-to-filter filter-lists "\\|")
+ "\\)"))
+
(use-package elfeed
:hook ((elfeed-search-mode . elfeed-update))
- :custom (elfeed-search-filter "@1-month-ago +unread" "Only display unread articles from a month ago")
- :config (run-with-timer 0 (* 60 3) 'elfeed-update))
+ :custom
+ (elfeed-search-filter (format "@1-month-ago +unread !%s" (elfeed-final-filter elfeed-hn-filter-list)) "Only display unread articles from a month ago")
+ (elfeed-curl-max-connections 8 "less max connections for less lag")
+ :config (run-with-timer 0 (* 60 10) 'elfeed-update))
(use-package elfeed-org
:after (elfeed org)
@@ -1011,6 +1212,20 @@ Load Nix mode so our exported website has syntax highlighting for Nix blocks.
:demand t
:mode "\\.nix\\'")
#+end_src
+** Scheme
+#+begin_src emacs-lisp :tangle ../nix/init.el
+(use-package scheme-mode
+ :mode ("\\.sls\\'" "\\.scm\\'"))
+
+(use-package geiser
+ :after scheme)
+
+(use-package geiser-chez
+ :after geiser
+ :custom
+ (geiser-active-implementations '(chez))
+ (geiser-chez-binary "chez"))
+#+end_src
** Org Roam
For all my mathematics and programming notes:
#+begin_src emacs-lisp :tangle ../nix/init.el
@@ -1018,7 +1233,7 @@ For all my mathematics and programming notes:
:after (org)
:custom
(org-roam-db-update-on-save t "Update org-roam db")
- (org-roam-graph-viewer "librewolf" "Use librewolf to view org-roam graph")
+ (org-roam-graph-viewer "qutebrowser" "Use qutebrowser to view org-roam graph")
(org-roam-directory (file-truename "~/monorepo/mindmap") "Set org-roam directory inside monorepo")
(org-roam-capture-templates '(("d" "default" plain "%?"
:target (file+head "${title}.org"
@@ -1033,7 +1248,7 @@ For all my mathematics and programming notes:
(org-roam-ui-sync-theme t "Use emacs theme for org-roam-ui")
(org-roam-ui-follow t "Have cool visual while editing org-roam")
(org-roam-ui-update-on-save t "This option is obvious")
- (org-roam-ui-open-on-start t "Have cool visual open in librewolf when emacs loads")
+ (org-roam-ui-open-on-start t "Have cool visual open in qutebrowser when emacs loads")
:config (org-roam-ui-sync-theme)))
#+end_src
diff --git a/config/nix.org b/config/nix.org
index 6df498b..fd83045 100644
--- a/config/nix.org
+++ b/config/nix.org
@@ -37,6 +37,7 @@ in
"continuity"
"spontaneity"
"installer"
+ "rpi-zero"
];
}
#+end_src
@@ -60,7 +61,6 @@ and now for the main flake:
scripts.url = "github:ret2pop/scripts";
wallpapers.url = "github:ret2pop/wallpapers";
sounds.url = "github:ret2pop/sounds";
- deep-research.url = "github:ret2pop/ollama-deep-researcher";
impermanence.url = "github:nix-community/impermanence";
nix-topology = {
@@ -104,7 +104,6 @@ and now for the main flake:
sops-nix,
nix-topology,
nixos-dns,
- deep-research,
impermanence,
git-hooks,
...
@@ -112,38 +111,25 @@ and now for the main flake:
@attrs:
let
vars = import ./flakevars.nix;
+ generate = nixos-dns.utils.generate nixpkgs.legacyPackages."${system}";
+
+ rpiCheck = hostname: (builtins.match "rpi-.*" hostname) != null;
+ noRpi = builtins.filter (hostname: (! rpiCheck hostname));
+ noInstaller = builtins.filter (hostname: (hostname != "installer"));
+ filterHosts = noInstaller (noRpi vars.hostnames);
system = "x86_64-linux";
+ getSystem = hostname: if rpiCheck hostname
+ then "aarch64-linux"
+ else "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
- generate = nixos-dns.utils.generate nixpkgs.legacyPackages."${system}";
dnsConfig = {
inherit (self) nixosConfigurations;
extraConfig = import ./dns/default.nix;
};
- rpiCheck = hostname: (builtins.match "rpi-.*" hostname) != null;
- noRpi = builtins.filter (hostname: (! rpiCheck hostname));
- noInstaller = builtins.filter (hostname: (hostname != "installer"));
- filterHosts = noInstaller (noRpi vars.hostnames);
-
- mkHostModules = hostname:
- if (hostname == "installer") then ([
- (./. + "/systems/${hostname}/default.nix")
- { networking.hostName = "${hostname}"; }
- nix-topology.nixosModules.default
- ]) else (if (rpiCheck hostname) then [
- (./. + "/systems/${hostname}/default.nix")
- disko.nixosModules.disko
- home-manager.nixosModules.home-manager
- sops-nix.nixosModules.sops
- lanzaboote.nixosModules.lanzaboote
- ] else [
- {
- environment.systemPackages = with nixpkgs.lib; [
- deep-research.packages."${system}".deep-research
- ];
- }
+ commonModules = hostname: [
impermanence.nixosModules.impermanence
nix-topology.nixosModules.default
lanzaboote.nixosModules.lanzaboote
@@ -159,24 +145,32 @@ and now for the main flake:
networking.hostName = "${hostname}";
}
(./. + "/systems/${hostname}/default.nix")
- ]);
+ ];
+
+ mkHostModules = hostname:
+ if (hostname == "installer") then [
+ (./. + "/systems/${hostname}/default.nix")
+ { networking.hostName = "${hostname}"; }
+ nix-topology.nixosModules.default
+ ] else (if (rpiCheck hostname)
+ then (commonModules hostname) ++ [
+ "${nixpkgs}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
+ ]
+ else (commonModules hostname));
# function that generates all systems from hostnames
- mkConfigs = map (hostname:
- let
- hostSystem = if (rpiCheck hostname) then "aarch64-linux" else system;
- in
- {
- name = "${hostname}";
- value = nixpkgs.lib.nixosSystem {
- system = hostSystem;
- specialArgs = attrs // {
- isIntegrationTest = false;
- monorepoSelf = null;
- };
- modules = mkHostModules hostname;
- };
- });
+ mkConfigs = map (hostname: {
+ name = "${hostname}";
+ value = nixpkgs.lib.nixosSystem {
+ system = getSystem hostname;
+ specialArgs = attrs // {
+ system = (getSystem hostname);
+ isIntegrationTest = false;
+ monorepoSelf = null;
+ };
+ modules = mkHostModules hostname;
+ };
+ });
mkDiskoFiles = map (hostname: {
name = "${hostname}";
@@ -284,7 +278,7 @@ and now for the main flake:
}
);
- integrationTests = builtins.listToAttrs (mkIntegrationTests filterHosts);
+ integrationTests = builtins.listToAttrs (mkIntegrationTests (noInstaller vars.hostnames));
pre-commit-check = git-hooks.lib.${system}.run {
src = ./.;
hooks = builtins.listToAttrs (mkBuildChecks filterHosts) // {
@@ -391,6 +385,7 @@ and now for the main flake:
};
}
#+end_src
+
Note that the configurations are automatically generated with he mkConfigs function, and the final disko output is automatically generated
with mkDiskoFiles.
* Sops Configuration
@@ -798,7 +793,7 @@ to relevant places.
dn42 = {
format = "yaml";
};
- } else {
+ } else (if config.monorepo.profiles.server.enable then {
znc = {
format = "yaml";
};
@@ -841,7 +836,7 @@ to relevant places.
format = "yaml";
owner = "nginx";
};
- };
+ } else {});
};
}
#+end_src
@@ -1808,7 +1803,7 @@ let
in
{
services.cgit."my-projects" = {
- enable = lib.mkDefault config.services.gitDaemon.enable;
+ enable = lib.mkDefault config.monorepo.profiles.server.enable;
scanPath = "${config.users.users.git.home}";
settings = {
root-title = "Nullring Git Server";
@@ -2347,11 +2342,15 @@ This is my impermanence profile, which removes all files on reboot except for th
}
#+end_src
** Nixpkgs
+We must put Nixpkgs in another configuration because we don't want to include it if isIntegrationTest is set.
#+begin_src nix :tangle ../nix/modules/nixpkgs-options.nix
-{ lib, config, isIntegrationTest, ... }:
+{ lib, config, isIntegrationTest, system, ... }:
{
nixpkgs = lib.mkIf (! isIntegrationTest) {
- hostPlatform = lib.mkDefault "x86_64-linux";
+ hostPlatform = lib.mkDefault system;
+ buildPlatform = lib.mkIf (system == "aarch64-linux") (lib.mkDefault "x86_64-linux");
+ overlays = [
+ ];
config = {
allowUnfree = true;
cudaSupport = lib.mkDefault config.monorepo.profiles.cuda.enable;
@@ -2367,7 +2366,7 @@ This is my impermanence profile, which removes all files on reboot except for th
This is the backbone of the all the NixOS configurations, with all these options being shared
because they enhance security.
#+begin_src nix :tangle ../nix/modules/configuration.nix
-{ config, pkgs, lib, ... }:
+{ config, pkgs, lib, system, ... }:
let
userGroups = [
"nginx"
@@ -2397,10 +2396,10 @@ in
"d /srv/git 0755 git git -"
];
- zramSwap = lib.mkIf config.monorepo.profiles.desktop.enable {
+ zramSwap = {
enable = true;
algorithm = "zstd";
- memoryPercent = 50;
+ memoryPercent = lib.mkDefault 50;
};
# Shim for testing
@@ -2493,6 +2492,7 @@ in
options rtw89_core disable_ps_mode=y
options rtw89_pci disable_aspm_l1=y disable_aspm_l1ss=y disable_clkreq=y
options iwlwifi 11n_disable=8 uapsd_disable=1 bt_coex_active=0 disable_11ax=1 power_save=0
+ options brcmfmac roamoff=1 feature_disable=0x82000
'';
extraModulePackages = [ ];
@@ -2518,7 +2518,9 @@ in
};
loader = {
- systemd-boot.enable = lib.mkForce ((! config.monorepo.profiles.grub.enable) && (! config.monorepo.profiles.secureBoot.enable));
+ systemd-boot.enable = lib.mkForce
+ (((! config.monorepo.profiles.grub.enable) &&
+ (! config.monorepo.profiles.secureBoot.enable)) && (system != "aarch64-linux"));
efi.canTouchEfiVariables = lib.mkForce (! config.monorepo.profiles.grub.enable);
};
@@ -2709,7 +2711,7 @@ in
hardware = {
wirelessRegulatoryDatabase = true;
enableAllFirmware = true;
- cpu.intel.updateMicrocode = true;
+ cpu.intel.updateMicrocode = lib.mkDefault (system == "x86_64-linux");
graphics.enable = ! config.monorepo.profiles.ttyonly.enable;
bluetooth = {
@@ -2777,7 +2779,7 @@ in
forcePageTableIsolation = true;
tpm2 = {
- enable = true;
+ enable = system != "aarch64-linux";
pkcs11.enable = true;
tctiEnvironment.enable = true;
};
@@ -2806,11 +2808,10 @@ in
environment.extraInit = ''
umask 0022
'';
- environment.systemPackages = with pkgs; [
+ environment.systemPackages = with pkgs; [
restic
sbctl
gitFull
- git-lfs
git-lfs-transfer
vim
curl
@@ -2825,7 +2826,7 @@ in
chown -R git:git "$1"
''
)
- ];
+ ] ++ (if system != "aarch64-linux" then [ git-lfs ] else []);
users.groups = lib.genAttrs userGroups (_: lib.mkDefault {});
@@ -2923,13 +2924,13 @@ with configurable disk.
*** GPT Common
This is all configuration common to any GPT partitioned drive. I dynamically choose the partitioning scheme based on the options set.
#+begin_src nix :tangle ../nix/disko/gpt-common.nix
-{ config, ... }:
+{ config, lib, ... }:
let
matchSd = builtins.match "/dev/mmcblk[0-9]+" config.monorepo.vars.device != null;
+
partitions = if ((builtins.match "/dev/vd[a-z]+" config.monorepo.vars.device) != null) then
(import ./virtual-machine.nix)
- else (if matchSd then
- (import ./sd-card.nix)
+ else (if matchSd then {}
else
(import (./. + "/${config.monorepo.vars.fileSystem}.nix")));
spec = {
@@ -2939,7 +2940,7 @@ let
type = "disk";
device = config.monorepo.vars.device;
content = {
- type = if matchSd then "mbr" else "gpt";
+ type = "gpt";
inherit partitions;
};
};
@@ -2949,10 +2950,11 @@ let
in
{
monorepo.vars.diskoSpec = spec;
- disko.devices = spec.disko.devices;
+ disko.devices = lib.mkIf (! matchSd) spec.disko.devices;
}
#+end_src
*** ESP Boot Partition
+This is a small fragment that can be abstracted away from the EFI boot partition.
#+begin_src nix :tangle ../nix/disko/esp-boot.nix
{
type = "EF00";
@@ -3061,8 +3063,29 @@ This configuration is meant for virtual machines where BIOS is the only option.
*** TODO SD Card
#+begin_src nix :tangle ../nix/disko/sd-card.nix
{
- boot = {};
- root = {};
+ boot = {
+ name = "ESP";
+ start = "16M";
+ end = "516M";
+ bootable = true;
+ content = {
+ type = "filesystem";
+ format = "vfat";
+ mountpoint = "/boot";
+ };
+ };
+
+ root = {
+ name = "root";
+ start = "516M";
+ end = "100%";
+ content = {
+ type = "filesystem";
+ format = "btrfs";
+ mountpoint = "/";
+ mountOptions = [ "compress=zstd" ];
+ };
+ };
}
#+end_src
** Home
@@ -3098,6 +3121,7 @@ in
lang-coq.enable = lib.mkEnableOption "Enables coq language support";
lang-lean.enable = lib.mkEnableOption "Enables lean language support";
lang-haskell.enable = lib.mkEnableOption "Enables haskell language support";
+ lang-scheme.enable = lib.mkEnableOption "Enables scheme language support";
crypto.enable = lib.mkEnableOption "Enables various cryptocurrency wallets";
art.enable = lib.mkEnableOption "Enables various art programs";
music.enable = lib.mkEnableOption "Enables mpd";
@@ -3121,6 +3145,10 @@ in
autotools-language-server
]) else [])
++
+ (if config.monorepo.profiles.lang-scheme.enable then (with pkgs; [
+ chez
+ ]) else [])
+ ++
(if config.monorepo.profiles.workstation.enable then (with pkgs; [
mumble
]) else [])
@@ -3230,7 +3258,7 @@ in
cuda.enable = lib.mkDefault super.monorepo.profiles.cuda.enable;
# Programming
- graphics.enable = lib.mkDefault (! super.monorepo.profiles.ttyonly.enable);
+ graphics.enable = lib.mkDefault ((! super.monorepo.profiles.ttyonly.enable) && config.monorepo.profiles.enable);
hyprland.enable = lib.mkDefault config.monorepo.profiles.graphics.enable;
lang-c.enable = lib.mkDefault config.monorepo.profiles.enable;
lang-rust.enable = lib.mkDefault config.monorepo.profiles.enable;
@@ -3327,6 +3355,25 @@ be straightforward.
};
}
#+end_src
+*** QuteBrowser
+#+begin_src nix :tangle ../nix/modules/home/qutebrowser.nix
+{ lib, config, ... }:
+{
+ programs.qutebrowser = {
+ enable = lib.mkDefault config.monorepo.profiles.graphics.enable;
+ enableDefaultBindings = true;
+ searchEngines = {
+ g = "https://www.google.com/search?hl=en&q={}";
+ w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
+ aw = "https://wiki.archlinux.org/?search={}";
+ nw = "https://wiki.nixos.org/index.php?search={}";
+ };
+ settings = {
+ content.blocking.method = "both";
+ };
+ };
+}
+#+end_src
*** Fcitx
This is a virtual keyboard program for writing in multiple languages. I use this sometimes.
#+begin_src nix :tangle ../nix/modules/home/fcitx.nix
@@ -3413,6 +3460,8 @@ epkgs: [
epkgs.evil-org
epkgs.f
epkgs.flycheck
+ epkgs.geiser
+ epkgs.geiser-chez
epkgs.general
epkgs.git-gutter
epkgs.gptel
@@ -3438,6 +3487,8 @@ epkgs: [
epkgs.ox-rss
epkgs.ob-nix
epkgs.org-contrib
+ epkgs.org-ql
+ epkgs.org-super-agenda
epkgs.org-fragtog
epkgs.org-journal
epkgs.org-modern
@@ -3451,6 +3502,7 @@ epkgs: [
epkgs.projectile
epkgs.rustic
epkgs.s
+ epkgs.scheme-mode
epkgs.solaire-mode
epkgs.scad-mode
epkgs.simple-httpd
@@ -3504,6 +3556,30 @@ the timezone.
};
}
#+end_src
+*** iamb
+My iamb profile. Note that iamb does not support calling (obviously, as it is a terminal app), but the nice thing about it is that I can set it up
+declaratively, so in case element-desktop stops working because of lack of declarative setup, I can still use this.
+#+begin_src nix :tangle ../nix/modules/home/iamb.nix
+{ super, config, ... }:
+{
+ programs.iamb = {
+ enable = lib.mkDefault config.monorepo.profiles.graphics.enable;
+ settings = {
+ default_profile = "personal";
+ profiles.personal = {
+ user_id = "${super.monorepo.vars.internetName}@matrix.${super.monorepo.vars.orgHost}";
+ };
+ image_preview.protocol = {
+ type = "kitty";
+ size = {
+ height = 10;
+ width = 66;
+ };
+ };
+ };
+ };
+}
+#+end_src
*** Git
My git configuration uses information set in the ~vars.nix~ in order to set configuration options.
Make sure those are set correctly. I've set it to sign by default.
@@ -3600,7 +3676,7 @@ to use this component will come soon.
"fcitx5 -d --replace"
"fcitx5-remote -r"
"emacs"
- "librewolf"
+ "qutebrowser"
];
env = [
"LIBVA_DRIVER_NAME,nvidia"
@@ -3635,6 +3711,11 @@ to use this component will come soon.
workspace = 2;
}
{
+ name = "qutebrowser";
+ "match:class" = "qutebrowser";
+ workspace = 2;
+ }
+ {
name = "chromium-browser";
"match:class" = "chromium-browser";
workspace = 2;
@@ -3667,7 +3748,7 @@ to use this component will come soon.
];
bind = [
- "$mod, F, exec, librewolf"
+ "$mod, F, exec, qutebrowser"
"$mod, Return, exec, kitty"
"$mod, E, exec, emacs"
"$mod, B, exec, bitcoin-qt"
@@ -4633,7 +4714,7 @@ for these configurations.
pavucontrol alsa-utils imagemagick ffmpeg helvum
# Net
- curl rsync gitFull iamb ungoogled-chromium
+ curl rsync gitFull ungoogled-chromium
# Tor
torsocks tor-browser
@@ -4659,6 +4740,7 @@ for these configurations.
libnotify
htop
minify
+ python3Packages.adblock
(pkgs.writeShellScriptBin "help"
''
@@ -4743,13 +4825,13 @@ for these configurations.
enable = lib.mkDefault config.monorepo.profiles.graphics.enable;
defaultApplications = {
"x-scheme-handler/mailto" = "emacsclient-mail.desktop";
- "text/html" = "librewolf.desktop";
- "text/xml" = "librewolf.desktop";
- "application/xhtml+xml" = "librewolf.desktop";
- "x-scheme-handler/http" = "librewolf.desktop";
- "x-scheme-handler/https" = "librewolf.desktop";
- "x-scheme-handler/about" = "librewolf.desktop";
- "x-scheme-handler/unknown" = "librewolf.desktop";
+ "text/html" = "qutebrowser.desktop";
+ "text/xml" = "qutebrowser.desktop";
+ "application/xhtml+xml" = "qutebrowser.desktop";
+ "x-scheme-handler/http" = "qutebrowser.desktop";
+ "x-scheme-handler/https" = "qutebrowser.desktop";
+ "x-scheme-handler/about" = "qutebrowser.desktop";
+ "x-scheme-handler/unknown" = "qutebrowser.desktop";
};
};
@@ -4846,6 +4928,7 @@ as several other useful services.
../common.nix
];
config = {
+ boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
monorepo = {
vars.device = "/dev/nvme0n1";
vars.fileSystem = "ext4";
@@ -4874,14 +4957,22 @@ I want cuda in home manager too.
imports = [
../common.nix
];
+
config = {
- zramSwap = {
- enable = true;
- algorithm = "zstd";
- memoryPercent = 100;
+ boot = {
+ loader = {
+ grub.enable = false;
+ generic-extlinux-compatible.enable = true;
+ };
+ initrd.kernelModules = [ "vc4" "bcm2835_dma" "i2c_bcm2835" ];
+ kernelParams = [
+ "console=ttyS1,115200n8"
+ ];
};
- boot.loader.grub.enable = false;
- boot.loader.generic-extlinux-compatible.enable = true;
+
+ zramSwap.memoryPercent = 100;
+ services.gitDaemon.enable = true;
+
monorepo = {
vars.device = "/dev/mmcblk0";
profiles = {
@@ -4891,6 +4982,7 @@ I want cuda in home manager too.
};
}
#+end_src
+In order to separate the nixpkgs options for my integration tests to set their own, we need to include this in a separate file:
*** Home
#+begin_src nix :tangle ../nix/systems/rpi-zero/home.nix
{ ... }:
diff --git a/config/qutebrowser.org b/config/qutebrowser.org
index b243a3e..2a3e180 100644
--- a/config/qutebrowser.org
+++ b/config/qutebrowser.org
@@ -7,7 +7,7 @@
* Configuration
** Imports
We start with imports:
-#+begin_src python :tangle config.py
+#+begin_src python :tangle ../nix/qutebrowser.py
from pathlib import Path
from urllib.parse import urlparse
# import catppuccin