From 40fa22edec7f68432187a3b7e009558078248e26 Mon Sep 17 00:00:00 2001 From: Preston Pan Date: Thu, 19 Mar 2026 03:13:53 -0700 Subject: working on limits file --- config/elfeed.org | 123 +++++++++++++++--------- config/emacs.org | 235 +++++++++++++++++++++++++++++++++++++++++++-- config/nix.org | 252 +++++++++++++++++++++++++++++++++---------------- config/qutebrowser.org | 2 +- 4 files changed, 477 insertions(+), 135 deletions(-) (limited to 'config') 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" @@ -3634,6 +3710,11 @@ to use this component will come soon. "match:class" = "librewolf"; workspace = 2; } + { + name = "qutebrowser"; + "match:class" = "qutebrowser"; + workspace = 2; + } { name = "chromium-browser"; "match:class" = "chromium-browser"; @@ -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 -- cgit v1.3