diff options
| -rw-r--r-- | assets/texmf/tex/latex/scpzine/scpzine.sty | 467 | ||||
| -rw-r--r-- | flake.nix | 4 | ||||
| -rw-r--r-- | home/mun/default.nix | 1 | ||||
| -rw-r--r-- | home/mun/programs/firefox.nix | 411 | ||||
| -rw-r--r-- | home/rices/schrottkatze/home.nix | 1 | ||||
| -rw-r--r-- | pkgs/scpzine-texlive.nix | 38 |
6 files changed, 510 insertions, 412 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 @@ -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 2d229e0..0263f13 100644 --- a/home/mun/default.nix +++ b/home/mun/default.nix @@ -98,6 +98,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/rices/schrottkatze/home.nix b/home/rices/schrottkatze/home.nix index 62d9aeb..4dc6dfb 100644 --- a/home/rices/schrottkatze/home.nix +++ b/home/rices/schrottkatze/home.nix @@ -4,7 +4,6 @@ ./notifications.nix ./fuzzel.nix ./swayidle.nix - ./browser.nix ./niri.nix ./eww.nix # ./layaway.nix 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/" + '' |
