aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatasha Moongrave <natasha@256phi.eu>2026-04-28 20:57:57 +0200
committerNatasha Moongrave <natasha@256phi.eu>2026-04-28 20:57:57 +0200
commit4ae6a65545888e6d0fb25b59331b9ba91e37c676 (patch)
tree376ba4328453b6723909bd1c231df24bb3dc114c
parent372a69681523bcfa87d08165f43875b90c3b1f60 (diff)
parentbe64e545d9f78ad23712eae2230711fab2eb9766 (diff)
Merge branch 'main' of 10.0.0.37:/srv/git/NixOS-config
-rw-r--r--assets/texmf/tex/latex/scpzine/scpzine.sty467
-rwxr-xr-xflake.lock54
-rw-r--r--flake.nix4
-rw-r--r--home/mun/default.nix1
-rw-r--r--home/mun/programs/firefox.nix411
-rw-r--r--home/mun/programs/nvim.nix389
-rw-r--r--pkgs/scpzine-texlive.nix38
7 files changed, 745 insertions, 619 deletions
diff --git a/assets/texmf/tex/latex/scpzine/scpzine.sty b/assets/texmf/tex/latex/scpzine/scpzine.sty
new file mode 100644
index 0000000..a46f0e0
--- /dev/null
+++ b/assets/texmf/tex/latex/scpzine/scpzine.sty
@@ -0,0 +1,467 @@
+% ============================================================
+% scpzine.sty — SCP Foundation Zine Package
+% Reusable formatting for SCP personnel briefing zines
+%
+% Usage: \usepackage[options]{scpzine}
+%
+% PRINTING:
+% Compile TWICE (TikZ needs two passes).
+% Print > Booklet > A3 paper > flip on long edge.
+% ============================================================
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{scpzine}[2026/04/23 SCP Foundation Zine Package]
+
+% ── Package options ─────────────────────────────────────────
+\newif\ifscpzine@impose\scpzine@imposefalse
+\DeclareOption{impose}{\scpzine@imposetrue}
+\ProcessOptions\relax
+
+% ── Required packages ──────────────────────────────────────
+\RequirePackage[a5paper,
+ top=9mm, bottom=9mm,
+ left=9mm, right=9mm]{geometry}
+\RequirePackage[T1]{fontenc}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage{lmodern}
+\RequirePackage{courier}
+\renewcommand{\familydefault}{\ttdefault}
+\RequirePackage{microtype}
+\RequirePackage{parskip}
+\setlength{\parskip}{2pt plus 1pt minus 1pt}
+\setlength{\parindent}{0pt}
+\RequirePackage{setspace}
+\RequirePackage{ragged2e}
+\sloppy
+\setlength{\emergencystretch}{3em}
+\RequirePackage{graphicx}
+\RequirePackage{wrapfig}
+\RequirePackage[dvipsnames]{xcolor}
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\RequirePackage{booktabs}
+\RequirePackage{tabularx}
+\RequirePackage{array}
+\RequirePackage{soul}
+\RequirePackage{textcase}
+\RequirePackage{eso-pic}
+\RequirePackage[hidelinks]{hyperref}
+\RequirePackage{fancyhdr}
+\RequirePackage{environ}
+
+% ── Imposition (optional) ──────────────────────────────────
+\ifscpzine@impose
+ \RequirePackage{pgfpages}
+ \pgfpagesuselayout{2 on 1}[a3paper,landscape,border shrink=3mm]
+\fi
+
+% ============================================================
+% COLOUR PALETTE
+% ============================================================
+\definecolor{paperbg}{RGB}{240, 232, 208}
+\definecolor{fadedink}{RGB}{48, 44, 36}
+\definecolor{stampred}{RGB}{158, 26, 26}
+\definecolor{rulercolor}{RGB}{100, 88, 68}
+\definecolor{redactbg}{RGB}{10, 10, 10}
+
+% ============================================================
+% PAGE BACKGROUND — aged paper on every page
+% ============================================================
+\AddToShipoutPictureBG{%
+ \AtPageLowerLeft{%
+ \textcolor{paperbg}{\rule{\paperwidth}{\paperheight}}%
+ }%
+}
+
+% ============================================================
+% DOCUMENT METADATA — set these in your document preamble
+% ============================================================
+\newcommand{\scpnumber}[1]{\def\scp@number{#1}}
+\newcommand{\scpclass}[1]{\def\scp@class{#1}}
+\newcommand{\scpsite}[1]{\def\scp@site{#1}}
+\newcommand{\scpsector}[1]{\def\scp@sector{#1}}
+\newcommand{\scpdocid}[1]{\def\scp@docid{#1}}
+\newcommand{\scpissue}[1]{\def\scp@issue{#1}}
+\newcommand{\scpclearance}[1]{\def\scp@clearance{#1}}
+\newcommand{\scptype}[1]{\def\scp@type{#1}}
+\newcommand{\scpseries}[1]{\def\scp@series{#1}}
+
+% Defaults
+\def\scp@number{SCP-XXX}
+\def\scp@class{Euclid}
+\def\scp@site{Site-19}
+\def\scp@sector{Sector C}
+\def\scp@docid{PB-XXX-X}
+\def\scp@issue{1}
+\def\scp@clearance{LEVEL 2}
+\def\scp@type{HUMANOID}
+\def\scp@series{SECTOR ORIENTATION SERIES}
+
+% ============================================================
+% HEADERS / FOOTERS
+% ============================================================
+\pagestyle{fancy}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}
+
+\fancyhead[L]{%
+ \scriptsize\underline{\texttt{RESTRICTED --- \scp@clearance\ PERSONNEL ONLY}}%
+}
+\fancyhead[R]{%
+ \scriptsize\underline{\texttt{\today}}%
+}
+\fancyfoot[R]{%
+ \scriptsize\textit{\texttt{continue to next page}}%
+}
+\fancyfoot[L]{%
+ \scriptsize\texttt{\scp@docid\ / ISSUE \scp@issue}%
+}
+
+% Last page — no "continue"
+\fancypagestyle{lastpage}{%
+ \fancyfoot[R]{}%
+ \fancyfoot[L]{\scriptsize\texttt{\scp@docid\ / ISSUE \scp@issue}}%
+}
+
+% Cover pages — no header/footer
+\fancypagestyle{coverpage}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{0pt}%
+}
+
+% Blank pages
+\fancypagestyle{blankpage}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{0pt}%
+}
+
+% ============================================================
+% BASIC COMMANDS
+% ============================================================
+
+% Redaction — black box hiding text
+\newcommand{\redact}[1]{%
+ \NoCaseChange{%
+ \mbox{\colorbox{redactbg}{\textcolor{redactbg}{\texttt{#1}}}}%
+ }%
+}
+
+% [DATA EXPUNGED]
+\newcommand{\expunged}{%
+ \NoCaseChange{%
+ \mbox{\colorbox{redactbg}{\textcolor{white}{\texttt{[DATA EXPUNGED]}}}}%
+ }%
+}
+
+% [SEE LEVEL N FILE] — optional argument for clearance level
+\newcommand{\seelevel}[1][3]{%
+ \NoCaseChange{%
+ \mbox{\colorbox{redactbg}%
+ {\textcolor{white}{\texttt{[SEE LEVEL #1 FILE]}}}}%
+ }%
+}
+
+% Field label — bold inline label
+\newcommand{\field}[1]{\textbf{#1}}
+
+% Horizontal rule
+\newcommand{\ruleline}{%
+ \vspace{2pt}%
+ {\color{rulercolor}\hrule height 0.4pt}%
+ \vspace{2pt}%
+}
+
+% Stamp overlay — \stampat[color]{rotation}{x}{y}{text}
+\newcommand{\stampat}[5][stampred]{%
+ \begin{tikzpicture}[overlay, remember picture]
+ \node[
+ rotate=#2,
+ text=#1,
+ font=\fontsize{13}{13}\selectfont\bfseries\ttfamily,
+ draw=#1, line width=1.6pt,
+ inner xsep=5pt, inner ysep=3pt,
+ opacity=0.55, anchor=center
+ ] at ($(current page.center)+(#3,#4)$) {#5};
+ \end{tikzpicture}%
+}
+
+% Photo with fallback placeholder
+% Usage: \photoblock{filename}{caption}
+\newcommand{\photoblock}[2]{%
+ \IfFileExists{#1}{%
+ \includegraphics[width=\linewidth, keepaspectratio]{#1}%
+ }{%
+ \begin{tikzpicture}
+ \draw[fill=black!5, draw=black!25, line width=0.5pt]
+ (0,0) rectangle (3.8cm, 3.2cm);
+ \draw[black!15, line width=0.4pt]
+ (0,0)--(3.8cm,3.2cm);
+ \draw[black!15, line width=0.4pt]
+ (3.8cm,0)--(0,3.2cm);
+ \node[font=\tiny\ttfamily, text=black!35]
+ at (1.9cm,1.7cm) {[PHOTO]};
+ \node[font=\tiny\ttfamily, text=black!25]
+ at (1.9cm,1.3cm) {\texttt{#1}};
+ \end{tikzpicture}%
+ }%
+ \par
+ \vspace{2pt}
+ {\tiny\texttt{#2}}%
+}
+
+% Corner marks (used on covers)
+\newcommand{\cornermarks}{%
+ \begin{tikzpicture}[overlay, remember picture]
+ \foreach \corner/\xd/\yd in {
+ north west/1/-1, north east/-1/-1,
+ south west/1/1, south east/-1/1}{
+ \draw[fadedink, line width=1pt]
+ ($(current page.\corner)+(\xd*0.4cm,\yd*0.4cm)$) --
+ ($(current page.\corner)+(\xd*0.9cm,\yd*0.4cm)$);
+ \draw[fadedink, line width=1pt]
+ ($(current page.\corner)+(\xd*0.4cm,\yd*0.4cm)$) --
+ ($(current page.\corner)+(\xd*0.4cm,\yd*0.9cm)$);
+ }
+ \end{tikzpicture}%
+}
+
+% ============================================================
+% ENVIRONMENTS
+% ============================================================
+
+% ── scpinterview — Interview/Dialog transcript ─────────────
+% Usage:
+% \begin{scpinterview}{Interview title}{Archive ref and notes}
+% \say{Speaker}{Dialog text}
+% \say{Speaker}{\textit{(action)} Dialog text}
+% \end{scpinterview}
+%
+\newenvironment{scpinterview}[2]{%
+ \field{#1}%
+ \par\vspace{1pt}%
+ {\scriptsize\textit{#2}}%
+ \vspace{3pt}%
+ \ruleline%
+ \vspace{3pt}%
+}{%
+ \vspace{3pt}%
+}
+\newcommand{\say}[2]{%
+ \vspace{2pt}%
+ \hspace{8pt}\field{#1:} #2%
+ \par%
+}
+
+% ── scpextract — Interview sub-extract label ───────────────
+% Usage: \scpextract{Extract from Interview 049-INT-B-\redact{XX}:}
+\newcommand{\scpextract}[1]{%
+ \textit{#1}%
+ \vspace{3pt}%
+}
+
+% ── scptimeline — Incident timeline table ──────────────────
+% Usage:
+% \begin{scptimeline}
+% \event{02:14}{Motion sensor alert.}
+% \event{02:19}{Guard fails check-in.}
+% \end{scptimeline}
+%
+\newenvironment{scptimeline}{%
+ \vspace{2pt}%
+ {\scriptsize%
+ \begin{tabular}{@{}p{1.1cm} p{6.1cm}@{}}
+ \toprule
+ \field{TIME} & \field{EVENT} \\
+ \midrule
+}{%
+ \bottomrule
+ \end{tabular}}%
+ \vspace{3pt}%
+}
+\newcommand{\event}[2]{%
+ \texttt{#1} & #2 \\[2pt]%
+}
+
+% ── scpreftable — Reference/documentation table ───────────
+% Usage:
+% \begin{scpreftable}
+% \docref{049-INT-B}{Full interview series. Level 3.}
+% \end{scpreftable}
+%
+\newenvironment{scpreftable}{%
+ \vspace{3pt}%
+ {\scriptsize%
+ \begin{tabular}{@{}p{2.4cm} p{4.8cm}@{}}
+ \toprule
+ \field{REFERENCE} & \field{CONTENTS} \\
+ \midrule
+}{%
+ \bottomrule
+ \end{tabular}}%
+}
+\newcommand{\docref}[2]{%
+ \texttt{#1} & #2 \\[2pt]%
+}
+
+% ── scpincident — Incident summary header ─────────────────
+% Usage:
+% \begin{scpincident}{Breach BR-2012-049-\redact{7}}
+% {Summarised for Level 2 distribution. Full report Level 3.}
+% ... content ...
+% \end{scpincident}
+%
+\newenvironment{scpincident}[2]{%
+ \field{Incident Summary: #1}%
+ \par\vspace{1pt}%
+ {\scriptsize\textit{#2}}%
+ \ruleline%
+}{%
+}
+
+% ── scpfoundnote — Hidden/found note ──────────────────────
+% Usage:
+% \begin{scpfoundnote}{Discovery context text}{Follow-up text}
+% Note body text here...
+% \end{scpfoundnote}
+%
+\NewEnviron{scpfoundnote}[2]{%
+ \begin{center}
+ \begin{minipage}{0.82\linewidth}
+ \setstretch{1.4}
+ {\scriptsize\textit{#1}}%
+ \vspace{8pt}
+ {\color{rulercolor}\hrule height 0.3pt}
+ \vspace{8pt}
+ {\small\itshape\BODY}%
+ \vspace{8pt}
+ {\color{rulercolor}\hrule height 0.3pt}
+ \vspace{5pt}
+ {\scriptsize\texttt{#2}}%
+ \end{minipage}
+ \end{center}%
+}
+
+% ── scpaddendum — Classified addendum block ───────────────
+% Usage:
+% \begin{scpaddendum}{Filed by \redact{XX}, Senior Researcher}
+% \expunged
+% {\scriptsize\textit{[Withheld from Level 2. Level 3 required.]}}
+% \end{scpaddendum}
+%
+\newenvironment{scpaddendum}[1]{%
+ \vspace{3pt}%
+ \ruleline%
+ \field{Addendum --- #1:}%
+ \vspace{2pt}%
+}{%
+}
+
+% ── scpguidance — Personnel guidance numbered items ───────
+% Usage:
+% \begin{scpguidance}{If SCP-049 Addresses You}
+% \guidanceitem{Do not engage.}{Explanation text.}
+% \guidanceitem{Do not argue.}{Explanation text.}
+% \end{scpguidance}
+%
+\newenvironment{scpguidance}[1]{%
+ \field{Personnel Guidance --- #1:}%
+ \par%
+}{%
+}
+\newcommand{\guidanceitem}[2]{%
+ \vspace{2pt}%
+ \field{#1} #2%
+ \par%
+}
+
+% ── scpsidephoto — Wrapped sidebar photo ──────────────────
+% Usage: \scpsidephoto{r}{0.42}{assets/photo.jpg}{Caption text}
+\newcommand{\scpsidephoto}[4]{%
+ \begin{wrapfigure}{#1}{#2\linewidth}
+ \vspace{-4pt}
+ \photoblock{#3}{#4}
+ \vspace{-8pt}
+ \end{wrapfigure}%
+}
+
+% ============================================================
+% COVER PAGE COMMANDS
+% ============================================================
+
+% Classification header (multilingual)
+\newcommand{\classificationheader}[1]{%
+ \noindent
+ \begin{tabular*}{\linewidth}{@{}l@{\extracolsep{\fill}}r@{}}
+ {\scriptsize\texttt{RESTRICTED --- \scp@clearance\ PERSONNEL ONLY}} &
+ {\scriptsize\smash{\raisebox{-50pt}{\includegraphics[scale=0.03]{#1}}}} \\
+ \end{tabular*}%
+ {\scriptsize\texttt{RESTREINT --- PERSONNEL DE NIVEAU 2 UNIQUEMENT}}\\
+ {\scriptsize\texttt{VERTRAULICH --- NUR FUR PERSONAL DER STUFE 2}}\\
+ {\scriptsize\texttt{RESERVADO --- SOLO PERSONAL DE NIVEL 2}}%
+}
+
+% Cover metadata block
+\newcommand{\covermetadata}{%
+ {\scriptsize\texttt{PERSONNEL BRIEFING DOCUMENT}}\\[1pt]
+ {\scriptsize\texttt{\MakeUppercase{\scp@series}}}\\[3pt]
+ {\normalsize\bfseries\texttt{\scp@number}}\\[1pt]
+ {\scriptsize\texttt{\MakeUppercase{\scp@type} / \MakeUppercase{\scp@class} / \MakeUppercase{\scp@sector}}}\\[3pt]
+ {\scriptsize\texttt{DOCUMENT: \scp@docid\quad ISSUE: \scp@issue}}%
+}
+
+% Signature block
+% Usage: \signatureblock{Name or \redact{XX}}{Title}{Location}
+\newcommand{\signatureblock}[3]{%
+ \begin{tabular}{l}
+ {\scriptsize\texttt{Authorised for distribution by:}} \\[2pt]
+ \hline \\[-8pt]
+ {\scriptsize\texttt{#1, #2}} \\
+ {\scriptsize\texttt{#3}} \\
+ \hline \\[-4pt]
+ \end{tabular}%
+}
+
+% Cover disclaimer block
+\newcommand{\coverdisclaimer}[1]{%
+ \begin{minipage}{0.9\linewidth}
+ {\scriptsize\texttt{#1}}%
+ \end{minipage}%
+}
+
+% Back cover info block
+\newcommand{\backcoverbody}{%
+ {\small\bfseries\texttt{\scp@number}}\\[2pt]
+ {\scriptsize\texttt{\MakeUppercase{\scp@sector} PERSONNEL BRIEFING}}\\[1pt]
+ {\scriptsize\texttt{DOCUMENT \scp@docid\ / ISSUE \scp@issue}}\\[1pt]
+ {\scriptsize\texttt{\MakeUppercase{\scp@site} / CONTAINMENT DIVISION}}%
+}
+
+% ============================================================
+% ITEM HEADER — standard SCP description header
+% ============================================================
+% Usage: \scpheader (uses metadata set in preamble)
+\newcommand{\scpheader}{%
+ \field{Item \#:} \scp@number \hfill
+ \field{Object Class:} \scp@class \hfill
+ \field{Site:} \scp@site%
+ \ruleline%
+}
+
+% ============================================================
+% BLANK PAGE with centered message
+% ============================================================
+\newcommand{\blankpagemessage}[1]{%
+ \thispagestyle{blankpage}%
+ \vspace*{\fill}
+ \begin{center}
+ {\small\texttt{#1}}%
+ \end{center}
+ \vfill%
+}
+
+% ============================================================
+% SET DEFAULT TEXT COLOR
+% ============================================================
+\AtBeginDocument{\color{fadedink}}
+
+\endinput
diff --git a/flake.lock b/flake.lock
index b841558..cbed4c2 100755
--- a/flake.lock
+++ b/flake.lock
@@ -70,11 +70,11 @@
},
"crane": {
"locked": {
- "lastModified": 1775839657,
- "narHash": "sha256-SPm9ck7jh3Un9nwPuMGbRU04UroFmOHjLP56T10MOeM=",
+ "lastModified": 1777242778,
+ "narHash": "sha256-VWTeqWeb8Sel/QiWyaPvCa9luAbcGawR+Rw09FJoHz0=",
"owner": "ipetkov",
"repo": "crane",
- "rev": "7cf72d978629469c4bd4206b95c402514c1f6000",
+ "rev": "ad8b31ad0ba8448bd958d7a5d50d811dc5d271c0",
"type": "github"
},
"original": {
@@ -91,11 +91,11 @@
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
- "lastModified": 1776240401,
- "narHash": "sha256-S9m5SrxUT6dNPZrCscuQR2zLD3QIAlUlvlXchPKBnxs=",
+ "lastModified": 1777279247,
+ "narHash": "sha256-xuY2eN11OcD7QOgM2IadfWDR8XIzMbYfbn6gMtF1deE=",
"owner": "nix-community",
"repo": "fenix",
- "rev": "a30830ebacdf957690dd8ea9ade9f12809ae0982",
+ "rev": "6f6f1110eaeafbc9aea16d477c311491d0289977",
"type": "github"
},
"original": {
@@ -237,11 +237,11 @@
"nixpkgs-nixcord": "nixpkgs-nixcord"
},
"locked": {
- "lastModified": 1776301329,
- "narHash": "sha256-choqghSDGpczvOmIQg00goi+nPoZeOEFjzHDoXysqPs=",
+ "lastModified": 1777308297,
+ "narHash": "sha256-VHN+7WdQgqflxHuOqXzjD/zKTusMfywl4/rNxO6SPqk=",
"owner": "FlameFlag",
"repo": "nixcord",
- "rev": "3f10a1597a6bc32525767f19ae831bd87559d4b0",
+ "rev": "8d3f6a5fca55840e9123fee3b11a605742489cac",
"type": "github"
},
"original": {
@@ -252,11 +252,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1775595990,
- "narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
+ "lastModified": 1776734388,
+ "narHash": "sha256-vl3dkhlE5gzsItuHoEMVe+DlonsK+0836LIRDnm6MXQ=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "4e92bbcdb030f3b4782be4751dc08e6b6cb6ccf2",
+ "rev": "10e7ad5bbcb421fe07e3a4ad53a634b0cd57ffac",
"type": "github"
},
"original": {
@@ -283,11 +283,11 @@
},
"nixpkgs-nixcord": {
"locked": {
- "lastModified": 1775595990,
- "narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
+ "lastModified": 1776734388,
+ "narHash": "sha256-vl3dkhlE5gzsItuHoEMVe+DlonsK+0836LIRDnm6MXQ=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "4e92bbcdb030f3b4782be4751dc08e6b6cb6ccf2",
+ "rev": "10e7ad5bbcb421fe07e3a4ad53a634b0cd57ffac",
"type": "github"
},
"original": {
@@ -299,11 +299,11 @@
},
"nixpkgs-unstable": {
"locked": {
- "lastModified": 1776169885,
- "narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
+ "lastModified": 1776877367,
+ "narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9",
+ "rev": "0726a0ecb6d4e08f6adced58726b95db924cef57",
"type": "github"
},
"original": {
@@ -315,11 +315,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1776067740,
- "narHash": "sha256-B35lpsqnSZwn1Lmz06BpwF7atPgFmUgw1l8KAV3zpVQ=",
+ "lastModified": 1777077449,
+ "narHash": "sha256-AIiMJiqvGrN4HyLEbKAoCSRRYn0rnlW5VbKNIMIYqm4=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "7e495b747b51f95ae15e74377c5ce1fe69c1765f",
+ "rev": "a4bf06618f0b5ee50f14ed8f0da77d34ecc19160",
"type": "github"
},
"original": {
@@ -368,11 +368,11 @@
"rust-analyzer-src": {
"flake": false,
"locked": {
- "lastModified": 1776173606,
- "narHash": "sha256-o2ism66hEAnfWZSUMs22KX5zpMZDxS/Bg4N/HcDCkXM=",
+ "lastModified": 1776800521,
+ "narHash": "sha256-f8YJfwAOsLFpIoqZuX3yF69UvMLrkx7iVzMH1pJU7cM=",
"owner": "rust-lang",
"repo": "rust-analyzer",
- "rev": "17d028e9d7161cf6ebf21e21d3c4a1835099e039",
+ "rev": "8954b66d43225e62c92e8bbcc8500191b5cceb1e",
"type": "github"
},
"original": {
@@ -403,11 +403,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
- "lastModified": 1775935110,
- "narHash": "sha256-twTHKUFXjNNsaAvX0KoaIClt+923jXDRbfCd9PC/f0o=",
+ "lastModified": 1776894428,
+ "narHash": "sha256-wuT915MyCtMTfLj+uo9y8wtCwkEgJXiXvcbSleFrlN0=",
"owner": "danth",
"repo": "stylix",
- "rev": "14f248ad1a7668e7858c6d9163608c208b7daf02",
+ "rev": "f34be27ce83efaa1c85ad1e5b1f8b6dea65b147d",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 2d5c56c..f44ea41 100644
--- a/flake.nix
+++ b/flake.nix
@@ -54,6 +54,10 @@
})
# Fenix Rust overlay
fenix.overlays.default
+ # Local TeXLive packages
+ (final: prev: {
+ scpzine-texlive = final.callPackage ./pkgs/scpzine-texlive.nix {};
+ })
];
# Per-host home-manager configuration
diff --git a/home/mun/default.nix b/home/mun/default.nix
index 6193846..354200e 100644
--- a/home/mun/default.nix
+++ b/home/mun/default.nix
@@ -101,6 +101,7 @@
inherit (texlive) scheme-full;
notestex = texlivePackages.notestex;
screenplay = texlivePackages.screenplay;
+ scpzine = pkgs.scpzine-texlive;
})
# RetroArch
diff --git a/home/mun/programs/firefox.nix b/home/mun/programs/firefox.nix
deleted file mode 100644
index be732c1..0000000
--- a/home/mun/programs/firefox.nix
+++ /dev/null
@@ -1,411 +0,0 @@
-{pkgs, ...}: {
- home.file = {
- ".tridactylrc" = {
- text = ''
- set editorcmd alacritty hx %f +%l
- set newtab about:blank
- '';
- };
- };
- programs.firefox = {
- enable = true;
- package = pkgs.librewolf.override {
- nativeMessagingHosts = [
- pkgs.tridactyl-native
- ];
- };
- policies = {
- DefaultDownloadDirectory = "\${home}/Downloads";
- Extensions.Install = map (name: "https://addons.mozilla.org/firefox/downloads/latest/${name}") [
- "bitwarden-password-manager"
- "darkreader"
- "multi-account-containers"
- "privacy-badger17"
- "return-youtube-dislikes"
- "sponsorblock"
- "styl-us"
- "tabby-cat-friend"
- "torproject-snowflake"
- "ublock-origin"
- ];
- Extensions.Uninstall = [
- "ddg@search.mozilla.org"
- "google@search.mozilla.org"
- "bing@search.mozilla.org"
- "amazondotcom@search.mozilla.org"
- "ebay@search.mozilla.org"
- "twitter@search.mozilla.org"
- ];
- "DisableFirefoxStudies" = true;
- "DisableTelemetry" = true;
- "DisableFeedbackCommands" = true;
- "DisablePocket" = true;
- };
- profiles.jade = {
- search = {
- force = true;
- default = "duckduckbleh";
- engines = {
- "duckduckbleh" = {
- urls = [
- {
- template = "https://noai.duckduckgo.com/";
- params = [
- {
- name = "q";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- definedAliases = [
- "duck"
- "d"
- "ddg"
- ];
- };
- "Nix Packages" = {
- urls = [
- {
- template = "https://search.nixos.org/packages";
- params = [
- {
- name = "query";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
- definedAliases = ["pkgs"];
- };
- "Nix Options" = {
- urls = [
- {
- template = "https://search.nixos.org/options";
- params = [
- {
- name = "query";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
- definedAliases = ["opts"];
- };
- "Home manager Options" = {
- urls = [
- {
- template = "https://home-manager-options.extranix.com/";
- params = [
- {
- name = "query";
- value = "{searchTerms}";
- }
- {
- name = "release";
- value = "master";
- }
- ];
- }
- ];
- icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
- definedAliases = ["hm"];
- };
- "NixOS Wiki" = {
- urls = [
- {
- template = "https://nixos.wiki/index.php";
- params = [
- {
- name = "search";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
- definedAliases = ["nxwk"];
- };
- "Noogle" = {
- urls = [
- {
- template = "https://noogle.dev/q";
- params = [
- {
- name = "term";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- definedAliases = ["ngl"];
- };
- "lib.rs" = {
- urls = [
- {
- template = "https://lib.rs/search";
- params = [
- {
- name = "q";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- icon = "https://lib.rs/favicon.png";
- definedAliases = ["libs"];
- };
- "gleam packages" = {
- urls = [
- {
- template = "https://packages.gleam.run/";
- params = [
- {
- name = "search";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- icon = "https://packages.gleam.run/static/packages-icon.svg";
- definedAliases = ["libs"];
- };
- "rust docs" = {
- urls = [
- {
- template = "https://docs.rs/releases/search";
- params = [
- {
- name = "query";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- icon = "https://docs.rs/-/static/favicon.ico";
- definedAliases = ["docs"];
- };
- "gleam docs direct open" = {
- urls = [
- {
- template = "https://hexdocs.pm/{searchTerms}";
- }
- ];
- definedAliases = [
- "gd"
- ];
- };
- "rust docs direct open" = {
- urls = [
- {
- template = "https://docs.rs/{searchTerms}";
- }
- ];
- definedAliases = [
- "rd"
- ];
- };
- "rust std docs" = {
- urls = [
- {
- template = "https://docs.rust-lang.org/std/index.html";
- params = [
- {
- name = "search";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- icon = "https://doc.rust-lang.org/favicon.ico";
- definedAliases = ["std"];
- };
- "MDN" = {
- urls = [
- {
- template = "https://developer.mozilla.org/search";
- params = [
- {
- name = "q";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- };
- "bing".metaData.hidden = true;
- "google".metaData.hidden = true;
- "Amazon.de".metaData.hidden = true;
- };
- };
- settings = {
- "devtools.editor.keymap" = "vim";
- "devtools.toolbox.host" = "right";
- "devtools.theme" = "dark";
- "webgl.disabled" = false;
- "browser.urlbar.decodeURLsOnCopy" = true;
- "browser.urlbar.unitConversion.enabled" = true;
- "browser.urlbar.suggest.calculator" = true;
- "browser.compactmode.show" = true;
- "browser.uidensity" = 1;
- "screenshots.browser.component.enabled" = true;
- "browser.aboutConfig.showWarning" = false;
- "browser.aboutwelcome.showModal" = false;
- "browser.aboutwelcome.enabled" = false;
- "browser.preferences.moreFromMozilla" = false;
- "browser.menu.showViewImageInfo" = true;
- "browser.shopping.experience2023.active" = false;
- "browser.shopping.experience2023.survey.enabled" = false;
-
- "identity.fxaccounts.enabled" = true;
- "browser.tabs.firefox-view" = true;
- "browser.tabs.firefox-view-next" = true;
- "browser.newtabpage.activity-stream.showSponsored" = false;
- "browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
- "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
- "privacy.trackingprotection.emailtracking.enabled" = true;
- "privacy.trackingprotection.enabled" = true;
- "privacy.trackingprotection.socialtracking.enabled" = true;
-
- "browser.ml.chat.enabled" = false;
- "browser.ml.chat.hideLocalhost" = false;
- "browser.ml.chat.prompt.prefix" = "";
- "browser.ml.chat.prompts.0" = "";
- "browser.ml.chat.prompts.1" = "";
- "browser.ml.chat.prompts.2" = "";
- "browser.ml.chat.prompts.3" = "";
- "browser.ml.chat.provider" = "";
- "browser.ml.chat.shortcuts" = false;
- "browser.ml.chat.shortcuts.custom" = false;
- "browser.ml.chat.shortcuts.longPress" = "";
- "browser.ml.chat.sidebar" = false;
-
- "geo.provider.network.logging.enabled" = true;
- "extensions.getAddons.showPane" = false;
- "extensions.htmlaboutaddons.recommendations.enabled" = false;
- "browser.discovery.enabled" = false;
- "browser.shopping.experience2023.enabled" = false;
- "datareporting.policy.dataSubmissionEnabled" = false;
- "datareporting.healthreport.uploadEnabled" = false;
- "toolkit.telemetry.unified" = false;
- "toolkit.telemetry.enabled" = false;
- "toolkit.telemetry.server" = "data:,";
- "toolkit.telemetry.archive.enabled" = false;
- "toolkit.telemetry.newProfilePing.enabled" = false;
- "toolkit.telemetry.shutdownPingSender.enabled" = false;
- "toolkit.telemetry.updatePing.enabled" = false;
- "toolkit.telemetry.bhrPing.enabled" = false;
- "toolkit.telemetry.firstShutdownPing.enabled" = false;
- "toolkit.telemetry.coverage.opt-out" = true;
- "toolkit.coverage.opt-out" = true;
- "toolkit.coverage.endpoint.base" = "";
- "browser.ping-centre.telemetry" = false;
- "browser.newtabpage.activity-stream.feeds.telemetry" = false;
- "browser.newtabpage.activity-stream.telemetry" = false;
- "app.shield.optoutstudies.enabled" = false;
- "app.normandy.enabled" = false;
- "app.normandy.api_url" = "";
- "dom.private-attribution.submission.enabled" = false;
- "browser.newtabpage.activity-stream.feeds.showWeather" = false;
- "browser.newtabpage.activity-stream.feeds.weatherfeed" = false;
-
- "browser.safebrowsing.malware.enabled" = false;
- "browser.safebrowsing.phishing.enabled" = false;
- "browser.safebrowsing.downloads.enabled" = false;
- "browser.safebrowsing.downloads.remote.enabled" = false;
- "browser.safebrowsing.downloads.remote.url" = "";
- "browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false;
- "browser.safebrowsing.downloads.remote.block_uncommon" = false;
- "browser.safebrowsing.allowOverride" = false;
-
- "network.prefetch-next" = false;
- "network.dns.disablePrefetch" = true;
- "network.dns.disablePrefetchFromHTTPS" = true;
- "network.predictor.enabled" = false;
- "network.predictor.enable-prefetch" = false;
- "network.http.speculative-parallel-limit" = 0;
- "browser.places.speculativeConnect.enabled" = false;
- "browser.send_pings" = false;
-
- "browser.urlbar.pocket.featureGate" = false;
- "browser.urlbar.weather.featureGate" = false;
- "browser.urlbar.speculativeConnect.enabled" = false;
- "browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
- "browser.urlbar.suggest.quicksuggest.sponsored" = false;
- "browser.search.suggest.enabled" = false;
- "browser.urlbar.suggest.searches" = false;
- "browser.urlbar.trending.featureGate" = false;
-
- "security.ssl.require_safe_negotiation" = true;
- "security.remote_settings.crlite_filters.enabled" = true;
- "security.pki.crlite_mode" = 2;
-
- "dom.security.https_only_mode" = true;
- "dom.security.https_only_mode_pbm" = true;
- "security.ssl.treat_unsafe_negotiation_as_broken" = true;
- "browser.xul.error_pages.expert_bad_cert" = true;
- "network.http.referer.XOriginTrimmingPolicy" = 2;
-
- "privacy.userContext.enabled" = true;
- "privacy.userContext.ui.enabled" = true;
- "privacy.userContext.newTabContainerOnLeftClick.enabled" = true;
-
- "dom.disable_window_move_resize" = true;
-
- "browser.uitour.enabled" = false;
-
- "browser.uitour.url" = "";
- "permissions.manager.defaultsUrl" = "";
- "webchannel.allowObject.urlWhitelist" = "";
-
- "network.IDN_show_punycode" = true;
- "pdfjs.disabled" = false;
- "pdfjs.enableScripting" = false;
- "browser.tabs.searchclipboardfor.middleclick" = false;
- "browser.download.useDownloadDir" = false;
- "browser.download.alwaysOpenPanel" = false;
-
- "browser.download.manager.addToRecentDocs" = false;
-
- "browser.download.always_ask_before_handling_new_types" = true;
- "privacy.resistFingerprinting" = true;
- "privacy.resistFingerprinting.pbmode" = true;
- "privacy.resistFingerprinting.exemptedDomains" = let
- domains = [
- "bahn.expert"
- "flugzeug.expert"
- "traewelling.de"
- "katzen.cafe"
- "catgirl.cloud"
- "nekover.se"
- "zug.network"
- "girlcock.club"
- "hamburg.ccc.de"
- "codeberg.org"
- ];
- in
- domains ++ (map (domain: "*." + domain) domains);
- "privacy.window.maxInnerWidth" = 1600;
- "privacy.window.maxInnerHeight" = 900;
- "privacy.resistFingerprinting.block_mozAddonManager" = true;
- "privacy.resistFingerprinting.letterboxing" = false;
- "widget.non-native-theme.enabled" = true;
- "browser.link.open_newwindow" = 3;
- "browser.link.open_newwindow.restriction" = 0;
- "signon.rememberSignons" = false;
- "dom.popup_allowed_events" = "click dblclick mousedown pointerdown";
- "browser.pagethumbnails.capturing_disabled" = true;
-
- "geo.enabled" = false;
- "full-screen-api.enabled" = false;
- "permissions.default.geo" = 0;
- "permissions.default.camera" = 0;
- "permissions.default.microphone" = 0;
- "permissions.default.desktop-notification" = 0;
- "permissions.default.xr" = 0;
- };
- };
- };
-}
diff --git a/home/mun/programs/nvim.nix b/home/mun/programs/nvim.nix
index 9677c57..b1a41ce 100644
--- a/home/mun/programs/nvim.nix
+++ b/home/mun/programs/nvim.nix
@@ -77,183 +77,185 @@
];
extraLuaConfig = ''
- -------------------------------------------------
- -- LEADER
- -------------------------------------------------
- vim.g.mapleader = " "
-
- -------------------------------------------------
- -- BASIC OPTIONS
- -------------------------------------------------
- vim.opt.number = true
- vim.opt.relativenumber = true
- vim.opt.clipboard = "unnamedplus"
- vim.opt.showtabline = 2
- vim.o.timeout = true
- vim.o.timeoutlen = 300
-
- -------------------------------------------------
- -- THEME
- -------------------------------------------------
- require("catppuccin").setup({
- flavour = "mocha",
- })
- vim.cmd.colorscheme("catppuccin")
+ -------------------------------------------------
+ -- LEADER
+ -------------------------------------------------
+ vim.g.mapleader = " "
+
+ -------------------------------------------------
+ -- BASIC OPTIONS
+ -------------------------------------------------
+ vim.opt.number = true
+ vim.opt.relativenumber = true
+ vim.opt.clipboard = "unnamedplus"
+ vim.opt.showtabline = 2
+ vim.o.timeout = true
+ vim.o.timeoutlen = 300
+
+ -------------------------------------------------
+ -- THEME
+ -------------------------------------------------
+ require("catppuccin").setup({
+ flavour = "mocha",
+ })
+ vim.cmd.colorscheme("catppuccin")
+
+ -------------------------------------------------
+ -- GITSIGNS
+ -------------------------------------------------
+ require("gitsigns").setup()
+
+ -------------------------------------------------
+ -- TREESITTER
+ -------------------------------------------------
+ require("nvim-treesitter.configs").setup({
+ highlight = { enable = true },
+ indent = { enable = true },
+ })
+
+ vim.opt.foldmethod = "expr"
+ vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
+ vim.opt.foldenable = false
+
+ -------------------------------------------------
+ -- SNIPPETS
+ -------------------------------------------------
+ require("luasnip.loaders.from_vscode").lazy_load()
+
+ -------------------------------------------------
+ -- COMPLETION
+ -------------------------------------------------
+ local cmp = require("cmp")
+ local luasnip = require("luasnip")
+
+ cmp.setup({
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+ ["<C-Space>"] = cmp.mapping.complete(),
+ ["<CR>"] = cmp.mapping.confirm({ select = true }),
+ }),
+ sources = {
+ { name = "nvim_lsp" },
+ { name = "luasnip" },
+ },
+ })
+
+ require("nvim-autopairs").setup({})
+
+ -------------------------------------------------
+ -- LSP
+ -------------------------------------------------
+ local capabilities = require("cmp_nvim_lsp").default_capabilities()
+
+ local servers = {
+ "lua_ls",
+ "nil_ls",
+ "rust_analyzer",
+ "pyright",
+ "bashls",
+ "texlab",
+ }
+
+ for _, server in ipairs(servers) do
+ vim.lsp.config(server, {
+ capabilities = capabilities
+ })
+ vim.lsp.enable(server)
+ end
+
+ -------------------------------------------------
+ -- LSP KEYMAPS
+ -------------------------------------------------
+ vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition)
+ vim.keymap.set("n", "<leader>lD", vim.lsp.buf.declaration)
+ vim.keymap.set("n", "<leader>li", vim.lsp.buf.implementation)
+ vim.keymap.set("n", "<leader>lr", vim.lsp.buf.references)
+ vim.keymap.set("n", "lh", vim.lsp.buf.hover)
+ vim.keymap.set("n", "ln", vim.lsp.buf.rename)
+ vim.keymap.set("n", "la", vim.lsp.buf.code_action)
+ vim.keymap.set("n", "lf", function() vim.lsp.buf.format() end)
+
+ -------------------------------------------------
+ -- DIAGNOSTICS
+ -------------------------------------------------
+ vim.keymap.set("n", "lj", vim.diagnostic.goto_next)
+ vim.keymap.set("n", "lk", vim.diagnostic.goto_prev)
+ vim.keymap.set("n", "le", vim.diagnostic.open_float)
+
+ -------------------------------------------------
+ -- FORMATTER
+ -------------------------------------------------
+ require("conform").setup({
+ format_on_save = {
+ timeout_ms = 500,
+ lsp_format = "fallback",
+ },
+ formatters_by_ft = {
+ lua = { "stylua" },
+ nix = { "alejandra" },
+ rust = { "rustfmt" },
+ python = { "black" },
+ bash = { "shfmt" },
+ },
+ })
+
+ require("Comment").setup()
+
+ -------------------------------------------------
+ -- TELESCOPE
+ -------------------------------------------------
+ local builtin = require("telescope.builtin")
+
+ require("telescope").setup({
+ defaults = {
+ layout_strategy = "horizontal",
+ sorting_strategy = "ascending",
+ file_ignore_patterns = { "node_modules", ".git/" },
+ },
+ })
+
+ vim.keymap.set("n", "<leader><leader>", builtin.find_files)
+ vim.keymap.set("n", "<leader>fg", builtin.live_grep)
+ vim.keymap.set("n", "<leader>fb", builtin.buffers)
+
+ -------------------------------------------------
+ -- WHICH KEY
+ -------------------------------------------------
+ local wk = require("which-key")
+ wk.add({
+ { "<leader>l", desc = "LSP" }
+ { "<leader>o", desc = "Org" }
+ })
+
+ -------------------------------------------------
+ -- NVIM TREE
+ -------------------------------------------------
+ require("nvim-tree").setup({})
+ vim.keymap.set("n", "<leader>e", "<cmd>NvimTreeToggle<CR>")
+
+ -------------------------------------------------
+ -- TERMINAL
+ -------------------------------------------------
+ require("toggleterm").setup({
+ direction = "float",
+ })
+
+ local Terminal = require("toggleterm.terminal").Terminal
+
+ local lazygit = Terminal:new({
+ cmd = "lazygit",
+ hidden = true,
+ direction = "float",
+ })
+
+ vim.keymap.set("n", "<leader>gg", function()
+ lazygit:toggle()
+ end)
- -------------------------------------------------
- -- GITSIGNS
- -------------------------------------------------
- require("gitsigns").setup()
-
- -------------------------------------------------
- -- TREESITTER
- -------------------------------------------------
- require("nvim-treesitter.configs").setup({
- highlight = { enable = true },
- indent = { enable = true },
- })
-
- vim.opt.foldmethod = "expr"
- vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
- vim.opt.foldenable = false
-
- -------------------------------------------------
- -- SNIPPETS
- -------------------------------------------------
- require("luasnip.loaders.from_vscode").lazy_load()
-
- -------------------------------------------------
- -- COMPLETION
- -------------------------------------------------
- local cmp = require("cmp")
- local luasnip = require("luasnip")
-
- cmp.setup({
- snippet = {
- expand = function(args)
- luasnip.lsp_expand(args.body)
- end,
- },
- mapping = cmp.mapping.preset.insert({
- ["<C-Space>"] = cmp.mapping.complete(),
- ["<CR>"] = cmp.mapping.confirm({ select = true }),
- }),
- sources = {
- { name = "nvim_lsp" },
- { name = "luasnip" },
- },
- })
-
- require("nvim-autopairs").setup({})
-
- -------------------------------------------------
- -- LSP
- -------------------------------------------------
- local capabilities = require("cmp_nvim_lsp").default_capabilities()
-
- local servers = {
- "lua_ls",
- "nil_ls",
- "rust_analyzer",
- "pyright",
- "bashls",
- "texlab",
- }
-
- for _, server in ipairs(servers) do
- vim.lsp.config(server, {
- capabilities = capabilities
- })
- vim.lsp.enable(server)
- end
-
- -------------------------------------------------
- -- LSP KEYMAPS
- -------------------------------------------------
- vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition)
- vim.keymap.set("n", "<leader>lD", vim.lsp.buf.declaration)
- vim.keymap.set("n", "<leader>li", vim.lsp.buf.implementation)
- vim.keymap.set("n", "<leader>lr", vim.lsp.buf.references)
- vim.keymap.set("n", "lh", vim.lsp.buf.hover)
- vim.keymap.set("n", "ln", vim.lsp.buf.rename)
- vim.keymap.set("n", "la", vim.lsp.buf.code_action)
- vim.keymap.set("n", "lf", function() vim.lsp.buf.format() end)
-
- -------------------------------------------------
- -- DIAGNOSTICS
- -------------------------------------------------
- vim.keymap.set("n", "lj", vim.diagnostic.goto_next)
- vim.keymap.set("n", "lk", vim.diagnostic.goto_prev)
- vim.keymap.set("n", "le", vim.diagnostic.open_float)
-
- -------------------------------------------------
- -- FORMATTER
- -------------------------------------------------
- require("conform").setup({
- format_on_save = {
- timeout_ms = 500,
- lsp_format = "fallback",
- },
- formatters_by_ft = {
- lua = { "stylua" },
- nix = { "alejandra" },
- rust = { "rustfmt" },
- python = { "black" },
- bash = { "shfmt" },
- },
- })
-
- require("Comment").setup()
-
- -------------------------------------------------
- -- TELESCOPE
- -------------------------------------------------
- local builtin = require("telescope.builtin")
-
- require("telescope").setup({
- defaults = {
- layout_strategy = "horizontal",
- sorting_strategy = "ascending",
- file_ignore_patterns = { "node_modules", ".git/" },
- },
- })
-
- vim.keymap.set("n", "<leader><leader>", builtin.find_files)
- vim.keymap.set("n", "<leader>fg", builtin.live_grep)
- vim.keymap.set("n", "<leader>fb", builtin.buffers)
-
- -------------------------------------------------
- -- WHICH KEY
- -------------------------------------------------
- local wk = require("which-key")
- wk.add({
- { "<leader>l", desc = "LSP" }
- })
-
- -------------------------------------------------
- -- NVIM TREE
- -------------------------------------------------
- require("nvim-tree").setup({})
- vim.keymap.set("n", "<leader>e", "<cmd>NvimTreeToggle<CR>")
-
- -------------------------------------------------
- -- TERMINAL
- -------------------------------------------------
- require("toggleterm").setup({
- direction = "float",
- })
-
- local Terminal = require("toggleterm.terminal").Terminal
-
- local lazygit = Terminal:new({
- cmd = "lazygit",
- hidden = true,
- direction = "float",
- })
-
- vim.keymap.set("n", "<leader>gg", function()
- lazygit:toggle()
- end)
-------------------------------------------------
-- ORGMODE
@@ -267,13 +269,38 @@
require("orgmode").setup({
org_agenda_files = projects,
- org_default_notes_file = "~/INBOX.org"
+ org_default_notes_file = "~/ORG/inbox.org", -- move inbox inside ~/ORG
+
+ org_capture_templates = {
+ t = {
+ description = "Todo",
+ template = "* TODO %?\n SCHEDULED: %t",
+ target = "~/ORG/todos.org",
+ },
+ i = {
+ description = "Idea",
+ template = "* %? :idea:\n %U",
+ target = "~/ORG/ideas.org",
+ },
+ n = {
+ description = "Note",
+ template = "* %?\n %U",
+ target = "~/ORG/inbox.org",
+ },
+ j = {
+ description = "Journal",
+ template = "* %<%Y-%m-%d>\n %?",
+ target = "~/ORG/journal.org",
+ },
+ },
})
- -------------------------------------------------
- -- VIMTEX
- -------------------------------------------------
- vim.g.vimtex_view_method = "zathura"
+ vim.keymap.set("n", "<leader>oc", function() require("orgmode").action("capture.prompt") end, { desc = "Org Capture" })
+ vim.keymap.set("n", "<leader>oa", function() require("orgmode").action("agenda.prompt") end, { desc = "Org Agenda" })
+ -------------------------------------------------
+ -- VIMTEX
+ -------------------------------------------------
+ vim.g.vimtex_view_method = "zathura"
'';
};
}
diff --git a/pkgs/scpzine-texlive.nix b/pkgs/scpzine-texlive.nix
new file mode 100644
index 0000000..b9ce910
--- /dev/null
+++ b/pkgs/scpzine-texlive.nix
@@ -0,0 +1,38 @@
+# Local TeXLive package for scpzine.sty
+# Builds a texlivePackages-compatible derivation from the local .sty file.
+{
+ lib,
+ runCommand,
+ texlive,
+}: let
+ scpzine-src = ../assets/texmf/tex/latex/scpzine;
+in
+ runCommand "texlive-scpzine" {
+ passthru.tlDeps = with texlive; [
+ courier
+ lm
+ microtype
+ parskip
+ setspace
+ ragged2e
+ graphics
+ wrapfig
+ xcolor
+ pgf # tikz
+ booktabs
+ tabularx
+ tools # array
+ soul
+ textcase
+ eso-pic
+ hyperref
+ fancyhdr
+ environ
+ geometry
+ fontenc
+ ];
+ tlType = "run";
+ } ''
+ mkdir -p "$out/tex/latex/scpzine"
+ cp ${scpzine-src}/scpzine.sty "$out/tex/latex/scpzine/"
+ ''