Compare commits
92 Commits
staging/li
...
wip/sway
Author | SHA1 | Date | |
---|---|---|---|
d84846e293 | |||
b46ccb9bc2 | |||
1958c1f36b | |||
67299ebfd7 | |||
adecfbaea4 | |||
fa4a576703 | |||
abb0a3c94e | |||
32612e6acb | |||
e0a3979b65 | |||
4d84ca0878 | |||
1ae8ab2550 | |||
ed1380ba70 | |||
e1b8d3ccc3 | |||
392ad7c674 | |||
4026334e51 | |||
2269016736 | |||
f2c61d64b7 | |||
840c2feba5 | |||
4603f0fd8e | |||
64704d361b | |||
7df18686e0 | |||
aee928dac0 | |||
76c0c3dc6a | |||
796988bdeb | |||
31d28ccf23 | |||
a298678622 | |||
32eb3b1998 | |||
7a726b8d08 | |||
3edbb1c873 | |||
d94687e8cc | |||
641ffc3452 | |||
fa8016db67 | |||
0c9cc87728 | |||
5236da2383 | |||
aa24eebf40 | |||
3cc0d7ec40 | |||
42c2d93306 | |||
f6f8d0e19d | |||
8ad4d8a4f9 | |||
d419e10f10 | |||
c56734e00e | |||
e095149797 | |||
6006b84f9e | |||
b3b914bc2e | |||
d6f87c7ee7 | |||
028d78437b | |||
0539bb8fd5 | |||
95cc42f057 | |||
b358cbe02a | |||
64cd562824 | |||
749f59a4af | |||
77d5ff623e | |||
6386abb8c6 | |||
28f8434c53 | |||
30fafb4837 | |||
c7205ed668 | |||
c69c6612fe | |||
6951b277ad | |||
1167c9bd0c | |||
8537fe411b | |||
1fb2ddbecc | |||
27608cb8c7 | |||
33ee59e80d | |||
edacc28e4a | |||
99780e30bc | |||
140dd05bd1 | |||
c35bc92ac9 | |||
16b92f98e7 | |||
576b63da9c | |||
e434add20d | |||
d288086aa2 | |||
e9c0f692d8 | |||
5a75d0f56b | |||
a222cf18a3 | |||
45b9ee763b | |||
50a2196495 | |||
e4419ffad4 | |||
ae3ba64fc3 | |||
948b2489d3 | |||
abe491b563 | |||
9911593a63 | |||
798ba7f7e3 | |||
f72e901f57 | |||
2047222233 | |||
5d33cb66d6 | |||
6fded1f256 | |||
1d1c528abc | |||
35fdd2788f | |||
77cb951545 | |||
1909e0fbe8 | |||
33d7819619 | |||
0846abb6bf |
24
flake.lock
generated
24
flake.lock
generated
@@ -39,11 +39,11 @@
|
||||
"mobile-nixos": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1674593731,
|
||||
"narHash": "sha256-RHJOhxqPKLxbLLabbj1IEuUQqO76TOTtmpxYyTtfDmU=",
|
||||
"lastModified": 1674779092,
|
||||
"narHash": "sha256-mFBD0Dvjf8tuxWtJhsCQ+8VYqI4fQeWjd/vfWsZiRRo=",
|
||||
"owner": "nixos",
|
||||
"repo": "mobile-nixos",
|
||||
"rev": "4d2093efa7efa00131d385fd9d11e54ce16bc57a",
|
||||
"rev": "80ece5a61738fbf3b96fdda402ab2dfc74ee5cee",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -60,22 +60,22 @@
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-P5BXhRIaKF6ze3am7CY//NFOJ4ihoys9h0ka9S15VV4=",
|
||||
"path": "/nix/store/41f11k8hk1qjd440mavrybc7xgrcp9gj-source/nixpatches",
|
||||
"narHash": "sha256-5pNu9Ph1LIBj5q9RWLV3r7daANjmd4u5y+MVq8vlfS4=",
|
||||
"path": "/nix/store/bjzsgw8zn4av0dv4sqyj7vxhi43na16y-source/nixpatches",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/41f11k8hk1qjd440mavrybc7xgrcp9gj-source/nixpatches",
|
||||
"path": "/nix/store/bjzsgw8zn4av0dv4sqyj7vxhi43na16y-source/nixpatches",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1674407282,
|
||||
"narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=",
|
||||
"lastModified": 1674692158,
|
||||
"narHash": "sha256-oqGpwVg4D+eMSgF7Th5Ve1ysCiH3H3g85vGJ3nvJsZQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49",
|
||||
"rev": "def9e420d27c951026d57dc96ce0218c3131f412",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -103,11 +103,11 @@
|
||||
},
|
||||
"nixpkgs-unpatched": {
|
||||
"locked": {
|
||||
"lastModified": 1674459583,
|
||||
"narHash": "sha256-L0UZl/u2H3HGsrhN+by42c5kNYeKtdmJiPzIRvEVeiM=",
|
||||
"lastModified": 1674641431,
|
||||
"narHash": "sha256-qfo19qVZBP4qn5M5gXc/h1MDgAtPA5VxJm9s8RUAkVk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1b1f50645af2a70dc93eae18bfd88d330bfbcf7f",
|
||||
"rev": "9b97ad7b4330aacda9b2343396eb3df8a853b4fc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@@ -27,9 +27,16 @@
|
||||
neededForUsers = true;
|
||||
};
|
||||
|
||||
# usability compromises
|
||||
sane.web-browser.persistCache = "private";
|
||||
sane.web-browser.persistData = "private";
|
||||
sane.web-browser = {
|
||||
# compromise impermanence for the sake of usability
|
||||
persistCache = "private";
|
||||
persistData = "private";
|
||||
|
||||
# i don't do crypto stuff on moby
|
||||
addons.ether-metamask.enable = false;
|
||||
# addons.sideberry.enable = false;
|
||||
};
|
||||
|
||||
sane.persist.home.plaintext = [
|
||||
".config/pulse" # persist pulseaudio volume
|
||||
];
|
||||
@@ -61,7 +68,7 @@
|
||||
# the default CMA seems to be 32M.
|
||||
# i was running fine with 256MB from 2022/07-ish through 2022/12-ish, but then the phone quit reliably coming back from sleep: maybe a memory leak?
|
||||
# `cat /proc/meminfo` to see CmaTotal/CmaFree if interested in tuning this.
|
||||
boot.kernelParams = [ "cma=384M" ];
|
||||
boot.kernelParams = [ "cma=512M" ];
|
||||
|
||||
# mobile-nixos' /lib/firmware includes:
|
||||
# rtl_bt (bluetooth)
|
||||
|
@@ -2,6 +2,11 @@
|
||||
# - <https://github.com/mautrix/signal/blob/master/mautrix_signal/example-config.yaml>
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
sane.persist.sys.plaintext = [
|
||||
{ user = "mautrix-signal"; group = "mautrix-signal"; directory = "/var/lib/mautrix-signal"; }
|
||||
{ user = "signald"; group = "signald"; directory = "/var/lib/signald"; }
|
||||
];
|
||||
|
||||
services.signald.enable = true;
|
||||
services.mautrix-signal.enable = true;
|
||||
services.mautrix-signal.environmentFile =
|
||||
@@ -21,10 +26,6 @@
|
||||
ReadWritePaths = [ "/run/signald" ];
|
||||
};
|
||||
|
||||
sane.persist.sys.plaintext = [
|
||||
{ user = "mautrix-signal"; group = "mautrix-signal"; directory = "/var/lib/mautrix-signal"; }
|
||||
];
|
||||
|
||||
sops.secrets."mautrix_signal_env" = {
|
||||
format = "binary";
|
||||
mode = "0440";
|
||||
|
@@ -9,6 +9,7 @@
|
||||
"192.168.0.5"
|
||||
"10.0.1.5"
|
||||
];
|
||||
sane.services.trust-dns.quiet = true;
|
||||
|
||||
sane.services.trust-dns.zones."uninsane.org".TTL = 900;
|
||||
|
||||
|
@@ -5,6 +5,7 @@
|
||||
./feeds.nix
|
||||
./fs.nix
|
||||
./hardware.nix
|
||||
./home
|
||||
./i2p.nix
|
||||
./ids.nix
|
||||
./machine-id.nix
|
||||
@@ -47,7 +48,6 @@
|
||||
"nixpkgs-overlays=${../..}/overlays"
|
||||
];
|
||||
|
||||
# TODO: move this into home-manager?
|
||||
fonts = {
|
||||
enableDefaultFonts = true;
|
||||
fonts = with pkgs; [ font-awesome twitter-color-emoji hack-font ];
|
||||
|
@@ -13,6 +13,7 @@ let
|
||||
uncat = { cat = "uncat"; };
|
||||
|
||||
text = { format = "text"; };
|
||||
img = { format = "image"; };
|
||||
|
||||
mkRss = format: url: { inherit url format; } // uncat // infrequent;
|
||||
# format-specific helpers
|
||||
@@ -29,16 +30,16 @@ let
|
||||
in {
|
||||
url = raw.url;
|
||||
# not sure the exact mapping with velocity here: entries per day?
|
||||
freq = lib.mkDefault (
|
||||
if raw.velocity or 0 > 2 then
|
||||
freq = lib.mkIf (raw.velocity or 0 != 0) (lib.mkDefault (
|
||||
if raw.velocity > 2 then
|
||||
"hourly"
|
||||
else if raw.velocity or 0 > 0.5 then
|
||||
else if raw.velocity > 0.5 then
|
||||
"daily"
|
||||
else if raw.velocity or 0 > 0.1 then
|
||||
else if raw.velocity > 0.1 then
|
||||
"weekly"
|
||||
else
|
||||
"infrequent"
|
||||
);
|
||||
));
|
||||
} // lib.optionalAttrs (raw.is_podcast or false) {
|
||||
format = "podcast";
|
||||
} // lib.optionalAttrs (raw.title or "" != "") {
|
||||
@@ -53,9 +54,11 @@ let
|
||||
(fromDb "feeds.simplecast.com/wgl4xEgL" // rat)
|
||||
## Cory Doctorow -- both podcast & text entries
|
||||
(fromDb "craphound.com" // pol)
|
||||
(mkPod "https://congressionaldish.libsyn.com/rss" // pol // infrequent)
|
||||
(fromDb "congressionaldish.libsyn.com" // pol)
|
||||
## Civboot -- https://anchor.fm/civboot
|
||||
(fromDb "anchor.fm/s/34c7232c/podcast/rss" // tech)
|
||||
## Emerge: making sense of what's next -- <https://www.whatisemerging.com/emergepodcast>
|
||||
(mkPod "https://anchor.fm/s/21bc734/podcast/rss" // pol // infrequent)
|
||||
(fromDb "feeds.feedburner.com/80000HoursPodcast" // rat)
|
||||
(fromDb "allinchamathjason.libsyn.com" // pol)
|
||||
(fromDb "acquired.libsyn.com" // tech)
|
||||
@@ -96,14 +99,16 @@ let
|
||||
(fromDb "econlib.org" // pol)
|
||||
|
||||
# AGGREGATORS (< 1 post/day)
|
||||
(mkText "https://palladiummag.com/feed" // uncat // weekly)
|
||||
(mkText "https://profectusmag.com/feed" // uncat // weekly)
|
||||
(mkText "https://semiaccurate.com/feed" // tech // weekly)
|
||||
(fromDb "palladiummag.com" // uncat)
|
||||
(fromDb "profectusmag.com" // uncat)
|
||||
(fromDb "semiaccurate.com" // tech)
|
||||
(mkText "https://linuxphoneapps.org/blog/atom.xml" // tech // infrequent)
|
||||
(mkText "https://spectrum.ieee.org/rss" // tech // weekly)
|
||||
(fromDb "spectrum.ieee.org" // tech)
|
||||
## n.b.: quality RSS list here: <https://forum.merveilles.town/thread/57/share-your-rss-feeds%21-6/>
|
||||
(mkText "https://forum.merveilles.town/rss.xml" // pol // infrequent)
|
||||
|
||||
## No Moods, Ads or Cutesy Fucking Icons
|
||||
(mkText "https://www.rifters.com/crawl/?feed=rss2" // uncat // weekly)
|
||||
(fromDb "rifters.com/crawl" // uncat)
|
||||
|
||||
# DEVELOPERS
|
||||
(fromDb "uninsane.org" // tech)
|
||||
@@ -114,70 +119,76 @@ let
|
||||
## shared blog by a few NixOS devs, notably onny
|
||||
(fromDb "project-insanity.org" // tech)
|
||||
## Vitalik Buterin
|
||||
(mkText "https://vitalik.ca/feed.xml" // tech // infrequent)
|
||||
(fromDb "vitalik.ca" // tech)
|
||||
## ian (Sanctuary)
|
||||
(mkText "https://sagacioussuricata.com/feed.xml" // tech // infrequent)
|
||||
(fromDb "sagacioussuricata.com" // tech)
|
||||
## Bunnie Juang
|
||||
(mkText "https://www.bunniestudios.com/blog/?feed=rss2" // tech // infrequent)
|
||||
(mkText "https://blog.danieljanus.pl/atom.xml" // tech // infrequent)
|
||||
(mkText "https://ianthehenry.com/feed.xml" // tech // infrequent)
|
||||
(mkText "https://bitbashing.io/feed.xml" // tech // infrequent)
|
||||
(mkText "https://idiomdrottning.org/feed.xml" // uncat // daily)
|
||||
(fromDb "bunniestudios.com" // tech)
|
||||
(fromDb "blog.danieljanus.pl" // tech)
|
||||
(fromDb "ianthehenry.com" // tech)
|
||||
(fromDb "bitbashing.io" // tech)
|
||||
(fromDb "idiomdrottning.org" // uncat)
|
||||
(mkText "https://anish.lakhwara.com/home.html" // tech // weekly)
|
||||
(mkText "https://www.jefftk.com/news.rss" // tech // daily)
|
||||
(mkText "https://pomeroyb.com/feed.xml" // tech // infrequent)
|
||||
(fromDb "jefftk.com" // tech)
|
||||
(fromDb "pomeroyb.com" // tech)
|
||||
|
||||
# (TECH; POL) COMMENTATORS
|
||||
## Matt Webb -- engineering-ish, but dreamy
|
||||
(fromDb "interconnected.org/home/feed" // rat)
|
||||
(fromDb "edwardsnowden.substack.com" // pol // text)
|
||||
## Julia Evans
|
||||
(mkText "https://jvns.ca/atom.xml" // tech // weekly)
|
||||
(mkText "http://benjaminrosshoffman.com/feed" // pol // weekly)
|
||||
## Ben Thompson
|
||||
(mkText "https://www.stratechery.com/rss" // pol // weekly)
|
||||
## Balaji
|
||||
(mkText "https://balajis.com/rss" // pol // weekly)
|
||||
(mkText "https://www.ben-evans.com/benedictevans/rss.xml" // pol // weekly)
|
||||
(mkText "https://www.lynalden.com/feed" // pol // infrequent)
|
||||
(mkText "https://austinvernon.site/rss.xml" // tech // infrequent)
|
||||
(fromDb "balajis.com" // pol)
|
||||
(fromDb "ben-evans.com/benedictevans" // pol)
|
||||
(fromDb "lynalden.com" // pol)
|
||||
(fromDb "austinvernon.site" // tech)
|
||||
(mkSubstack "oversharing" // pol // daily)
|
||||
(mkSubstack "doomberg" // tech // weekly)
|
||||
## David Rosenthal
|
||||
(mkText "https://blog.dshr.org/rss.xml" // pol // weekly)
|
||||
(fromDb "blog.dshr.org" // pol)
|
||||
## Matt Levine
|
||||
(mkText "https://www.bloomberg.com/opinion/authors/ARbTQlRLRjE/matthew-s-levine.rss" // pol // weekly)
|
||||
(mkText "https://stpeter.im/atom.xml" // pol // weekly)
|
||||
(fromDb "stpeter.im/atom.xml" // pol)
|
||||
## Peter Saint-Andre -- side project of stpeter.im
|
||||
(fromDb "philosopher.coach" // rat)
|
||||
|
||||
# RATIONALITY/PHILOSOPHY/ETC
|
||||
(mkSubstack "samkriss" // humor // infrequent)
|
||||
(mkText "https://unintendedconsequenc.es/feed" // rat // infrequent)
|
||||
(mkText "https://applieddivinitystudies.com/atom.xml" // rat // weekly)
|
||||
(mkText "https://slimemoldtimemold.com/feed.xml" // rat // weekly)
|
||||
(mkText "https://www.richardcarrier.info/feed" // rat // weekly)
|
||||
(mkText "https://www.gwern.net/feed.xml" // uncat // infrequent)
|
||||
(fromDb "unintendedconsequenc.es" // rat)
|
||||
(fromDb "applieddivinitystudies.com" // rat)
|
||||
(fromDb "slimemoldtimemold.com" // rat)
|
||||
(fromDb "richardcarrier.info" // rat)
|
||||
(fromDb "gwern.net" // rat)
|
||||
## Jason Crawford
|
||||
(mkText "https://rootsofprogress.org/feed.xml" // rat // weekly)
|
||||
(fromDb "rootsofprogress.org" // rat)
|
||||
## Robin Hanson
|
||||
(mkText "https://www.overcomingbias.com/feed" // rat // daily)
|
||||
(fromDb "overcomingbias.com" // rat)
|
||||
## Scott Alexander
|
||||
(mkSubstack "astralcodexten" // rat // daily)
|
||||
## Paul Christiano
|
||||
(mkText "https://sideways-view.com/feed" // rat // infrequent)
|
||||
(fromDb "sideways-view.com" // rat)
|
||||
## Sean Carroll
|
||||
(mkText "https://www.preposterousuniverse.com/rss" // rat // infrequent)
|
||||
(fromDb "preposterousuniverse.com" // rat)
|
||||
|
||||
## mostly dating topics. not advice, or humor, but looking through a social lens
|
||||
(mkText "https://putanumonit.com/feed" // rat // infrequent)
|
||||
(fromDb "putanumonit.com" // rat)
|
||||
|
||||
# CODE
|
||||
# (mkText "https://github.com/Kaiteki-Fedi/Kaiteki/commits/master.atom" // tech // infrequent)
|
||||
];
|
||||
|
||||
images = [
|
||||
(mkImg "https://www.smbc-comics.com/comic/rss" // humor // daily)
|
||||
(mkImg "https://xkcd.com/atom.xml" // humor // daily)
|
||||
(mkImg "https://pbfcomics.com/feed" // humor // infrequent)
|
||||
(fromDb "smbc-comics.com" // img // humor)
|
||||
(fromDb "xkcd.com" // img // humor)
|
||||
(fromDb "pbfcomics.com" // img // humor)
|
||||
# (mkImg "http://dilbert.com/feed" // humor // daily)
|
||||
|
||||
# ART
|
||||
(mkImg "https://miniature-calendar.com/feed" // art // daily)
|
||||
(fromDb "miniature-calendar.com" // img // art // daily)
|
||||
];
|
||||
in
|
||||
{
|
||||
|
@@ -5,7 +5,7 @@ lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
sops.secrets."aerc_accounts" = {
|
||||
owner = config.users.users.colin.name;
|
||||
sopsFile = ../../secrets/universal/aerc_accounts.conf;
|
||||
sopsFile = ../../../secrets/universal/aerc_accounts.conf;
|
||||
format = "binary";
|
||||
};
|
||||
sane.fs."/home/colin/.config/aerc/accounts.conf" = sane-lib.fs.wantedSymlinkTo config.sops.secrets.aerc_accounts.path;
|
23
hosts/common/home/default.nix
Normal file
23
hosts/common/home/default.nix
Normal file
@@ -0,0 +1,23 @@
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./aerc.nix
|
||||
./firefox.nix
|
||||
./gfeeds.nix
|
||||
./git.nix
|
||||
./gpodder.nix
|
||||
./keyring.nix
|
||||
./kitty.nix
|
||||
./libreoffice.nix
|
||||
./mime.nix
|
||||
./mpv.nix
|
||||
./neovim.nix
|
||||
./newsflash.nix
|
||||
./splatmoji.nix
|
||||
./ssh.nix
|
||||
./sublime-music.nix
|
||||
./vlc.nix
|
||||
./xdg-dirs.nix
|
||||
./zsh
|
||||
];
|
||||
}
|
@@ -32,6 +32,18 @@ let
|
||||
defaultSettings = firefoxSettings;
|
||||
# defaultSettings = librewolfSettings;
|
||||
|
||||
addon = name: extid: hash: pkgs.fetchFirefoxAddon {
|
||||
inherit name hash;
|
||||
url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi";
|
||||
# extid can be found by unar'ing the above xpi, and copying browser_specific_settings.gecko.id field
|
||||
fixedExtid = extid;
|
||||
};
|
||||
localAddon = pkg: pkgs.fetchFirefoxAddon {
|
||||
inherit (pkg) name;
|
||||
src = "${pkg}/share/mozilla/extensions/\\{ec8030f7-c20a-464f-9b0e-13a3a9e97384\\}/${pkg.extid}.xpi";
|
||||
fixedExtid = pkg.extid;
|
||||
};
|
||||
|
||||
package = pkgs.wrapFirefox cfg.browser.browser {
|
||||
# inherit the default librewolf.cfg
|
||||
# it can be further customized via ~/.librewolf/librewolf.overrides.cfg
|
||||
@@ -41,32 +53,7 @@ let
|
||||
extraNativeMessagingHosts = [ pkgs.browserpass ];
|
||||
# extraNativeMessagingHosts = [ pkgs.gopass-native-messaging-host ];
|
||||
|
||||
nixExtensions = let
|
||||
addon = name: extid: hash: pkgs.fetchFirefoxAddon {
|
||||
inherit name hash;
|
||||
url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi";
|
||||
# extid can be found by unar'ing the above xpi, and copying browser_specific_settings.gecko.id field
|
||||
fixedExtid = extid;
|
||||
};
|
||||
localAddon = pkg: pkgs.fetchFirefoxAddon {
|
||||
inherit (pkg) name;
|
||||
src = "${pkg}/share/mozilla/extensions/\\{ec8030f7-c20a-464f-9b0e-13a3a9e97384\\}/${pkg.extid}.xpi";
|
||||
fixedExtid = pkg.extid;
|
||||
};
|
||||
in [
|
||||
# get names from:
|
||||
# - ~/ref/nix-community/nur-combined/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
|
||||
# `wget ...xpi`; `unar ...xpi`; `cat */manifest.json | jq '.browser_specific_settings.gecko.id'`
|
||||
(addon "ublock-origin" "uBlock0@raymondhill.net" "sha256-a/ivUmY1P6teq9x0dt4CbgHt+3kBsEMMXlOfZ5Hx7cg=")
|
||||
(addon "sponsorblock" "sponsorBlocker@ajay.app" "sha256-d2K3ufvurWnYVzqLbyR//MgejybkY9exitAf9RdLNRo=")
|
||||
(addon "bypass-paywalls-clean" "{d133e097-46d9-4ecc-9903-fa6a722a6e0e}" "sha256-JOj5P7c2JTTReHCRZXm4BscaGr3i+9Y4Ey/y621x8PI=")
|
||||
(addon "sidebery" "{3c078156-979c-498b-8990-85f7987dd929}" "sha256-YONfK/rIjlsrTgRHIt3km07Q7KnpIW89Z9r92ZSCc6w=")
|
||||
(addon "ether-metamask" "webextension@metamask.io" "sha256-G+MwJDOcsaxYSUXjahHJmkWnjLeQ0Wven8DU/lGeMzA=")
|
||||
(addon "ublacklist" "@ublacklist" "sha256-RqY5iHzbL2qizth7aguyOKWPyINXmrwOlf/OsfqAS48=")
|
||||
(addon "i2p-in-private-browsing" "i2ppb@eyedeekay.github.io" "sha256-dJcJ3jxeAeAkRvhODeIVrCflvX+S4E0wT/PyYzQBQWs=")
|
||||
# (addon "browserpass-ce" "browserpass@maximbaz.com" "sha256-sXgUBbRvMnRpeIW1MTkmTcoqtW/8RDXAkxAq1evFkpc=")
|
||||
(localAddon pkgs.browserpass-extension)
|
||||
];
|
||||
nixExtensions = concatMap (ext: optional ext.enable ext.package) (attrValues cfg.addons);
|
||||
|
||||
extraPolicies = {
|
||||
NoDefaultBookmarks = true;
|
||||
@@ -102,6 +89,17 @@ let
|
||||
# NewTabPage = true;
|
||||
};
|
||||
};
|
||||
|
||||
addonOpts = types.submodule {
|
||||
options = {
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
};
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
options = {
|
||||
@@ -119,6 +117,32 @@ in
|
||||
type = types.nullOr types.str;
|
||||
default = "cryptClearOnBoot";
|
||||
};
|
||||
sane.web-browser.addons = mkOption {
|
||||
type = types.attrsOf addonOpts;
|
||||
default = {
|
||||
# get names from:
|
||||
# - ~/ref/nix-community/nur-combined/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
|
||||
# `wget ...xpi`; `unar ...xpi`; `cat */manifest.json | jq '.browser_specific_settings.gecko.id'`
|
||||
# browserpass-ce.package = addon "browserpass-ce" "browserpass@maximbaz.com" "sha256-sXgUBbRvMnRpeIW1MTkmTcoqtW/8RDXAkxAq1evFkpc=";
|
||||
browserpass-extension.package = localAddon pkgs.browserpass-extension;
|
||||
bypass-paywalls-clean.package = addon "bypass-paywalls-clean" "{d133e097-46d9-4ecc-9903-fa6a722a6e0e}" "sha256-JOj5P7c2JTTReHCRZXm4BscaGr3i+9Y4Ey/y621x8PI=";
|
||||
ether-metamask.package = addon "ether-metamask" "webextension@metamask.io" "sha256-G+MwJDOcsaxYSUXjahHJmkWnjLeQ0Wven8DU/lGeMzA=";
|
||||
i2p-in-private-browsing.package = addon "i2p-in-private-browsing" "i2ppb@eyedeekay.github.io" "sha256-dJcJ3jxeAeAkRvhODeIVrCflvX+S4E0wT/PyYzQBQWs=";
|
||||
sidebery.package = addon "sidebery" "{3c078156-979c-498b-8990-85f7987dd929}" "sha256-YONfK/rIjlsrTgRHIt3km07Q7KnpIW89Z9r92ZSCc6w=";
|
||||
sponsorblock.package = addon "sponsorblock" "sponsorBlocker@ajay.app" "sha256-d2K3ufvurWnYVzqLbyR//MgejybkY9exitAf9RdLNRo=";
|
||||
ublacklist.package = addon "ublacklist" "@ublacklist" "sha256-RqY5iHzbL2qizth7aguyOKWPyINXmrwOlf/OsfqAS48=";
|
||||
ublock-origin.package = addon "ublock-origin" "uBlock0@raymondhill.net" "sha256-a/ivUmY1P6teq9x0dt4CbgHt+3kBsEMMXlOfZ5Hx7cg=";
|
||||
|
||||
browserpass-extension.enable = lib.mkDefault true;
|
||||
bypass-paywalls-clean.enable = lib.mkDefault true;
|
||||
ether-metamask.enable = lib.mkDefault true;
|
||||
i2p-in-private-browsing.enable = lib.mkDefault config.services.i2p.enable;
|
||||
sidebery.enable = lib.mkDefault true;
|
||||
sponsorblock.enable = lib.mkDefault true;
|
||||
ublacklist.enable = lib.mkDefault true;
|
||||
ublock-origin.enable = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.sane.home-manager.enable {
|
||||
@@ -149,13 +173,27 @@ in
|
||||
'';
|
||||
|
||||
sane.packages.extraGuiPkgs = [ package ];
|
||||
# flood the cache to disk to avoid it taking up too much tmp
|
||||
# flush the cache to disk to avoid it taking up too much tmp
|
||||
sane.persist.home.byPath."${cfg.browser.cacheDir}" = lib.mkIf (cfg.persistCache != null) {
|
||||
store = cfg.persistCache;
|
||||
};
|
||||
|
||||
sane.persist.home.byPath."${cfg.browser.dotDir}" = lib.mkIf (cfg.persistData != null) {
|
||||
sane.persist.home.byPath."${cfg.browser.dotDir}/default" = lib.mkIf (cfg.persistData != null) {
|
||||
store = cfg.persistData;
|
||||
};
|
||||
sane.fs."/home/colin/${cfg.browser.dotDir}/default" = sane-lib.fs.wantedDir;
|
||||
# instruct Firefox to put the profile in a predictable directory (so we can do things like persist just it).
|
||||
# XXX: the directory *must* exist, even if empty; Firefox will not create the directory itself.
|
||||
sane.fs."/home/colin/${cfg.browser.dotDir}/profiles.ini" = sane-lib.fs.wantedText ''
|
||||
[Profile0]
|
||||
Name=default
|
||||
IsRelative=1
|
||||
Path=default
|
||||
Default=1
|
||||
|
||||
[General]
|
||||
StartWithLastProfile=1
|
||||
'';
|
||||
|
||||
};
|
||||
}
|
19
hosts/common/home/git.nix
Normal file
19
hosts/common/home/git.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ config, lib, pkgs, sane-lib, ... }:
|
||||
|
||||
let
|
||||
mkCfg = lib.generators.toINI { };
|
||||
in
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
sane.fs."/home/colin/.config/git/config" = sane-lib.fs.wantedText (mkCfg {
|
||||
user.name = "Colin";
|
||||
user.email = "colin@uninsane.org";
|
||||
alias.co = "checkout";
|
||||
# difftastic docs:
|
||||
# - <https://difftastic.wilfred.me.uk/git.html>
|
||||
diff.tool = "difftastic";
|
||||
difftool.prompt = false;
|
||||
"difftool \"difftastic\"".cmd = ''${pkgs.difftastic}/bin/difft "$LOCAL" "$REMOTE"'';
|
||||
# now run `git difftool` to use difftastic git
|
||||
});
|
||||
}
|
@@ -5,7 +5,7 @@ lib.mkIf config.sane.home-manager.enable
|
||||
sane.persist.home.private = [ ".local/share/keyrings" ];
|
||||
|
||||
sane.fs."/home/colin/private/.local/share/keyrings/default" = {
|
||||
generated.script.script = builtins.readFile ../../scripts/init-keyring;
|
||||
generated.script.script = builtins.readFile ../../../scripts/init-keyring;
|
||||
wantedBy = [ config.sane.fs."/home/colin/private".unit ];
|
||||
};
|
||||
}
|
69
hosts/common/home/kitty.nix
Normal file
69
hosts/common/home/kitty.nix
Normal file
@@ -0,0 +1,69 @@
|
||||
{ config, lib, pkgs, sane-lib, ... }:
|
||||
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
sane.fs."/home/colin/.config/kitty/kitty.conf" = sane-lib.fs.wantedText ''
|
||||
# docs: https://sw.kovidgoyal.net/kitty/conf/
|
||||
# disable terminal bell (when e.g. you backspace too many times)
|
||||
enable_audio_bell no
|
||||
|
||||
map ctrl+n new_os_window_with_cwd
|
||||
|
||||
include ${pkgs.kitty-themes}/themes/PaperColor_dark.conf
|
||||
'';
|
||||
# THEME CHOICES:
|
||||
# docs: https://github.com/kovidgoyal/kitty-themes
|
||||
# theme = "1984 Light"; # dislike: awful, harsh blues/teals
|
||||
# theme = "Adventure Time"; # dislike: harsh (dark)
|
||||
# theme = "Atom One Light"; # GOOD: light theme. all color combos readable. not a huge fan of the blue.
|
||||
# theme = "Belafonte Day"; # dislike: too low contrast for text colors
|
||||
# theme = "Belafonte Night"; # better: dark theme that's easy on the eyes. all combos readable. low contrast.
|
||||
# theme = "Catppuccin"; # dislike: a bit pale/low-contrast (dark)
|
||||
# theme = "Desert"; # mediocre: colors are harsh
|
||||
# theme = "Earthsong"; # BEST: dark theme. readable, good contrast. unique, but decent colors.
|
||||
# theme = "Espresso Libre"; # better: dark theme. readable, but meh colors
|
||||
# theme = "Forest Night"; # decent: very pastel. it's workable, but unconventional and muted/flat.
|
||||
# theme = "Gruvbox Material Light Hard"; # mediocre light theme.
|
||||
# theme = "kanagawabones"; # better: dark theme. colors are too background-y
|
||||
# theme = "Kaolin Dark"; # dislike: too dark
|
||||
# theme = "Kaolin Breeze"; # mediocre: not-too-harsh light theme, but some parts are poor contrast
|
||||
# theme = "Later This Evening"; # mediocre: not-too-harsh dark theme, but cursor is poor contrast
|
||||
# theme = "Material"; # decent: light theme, few colors.
|
||||
# theme = "Mayukai"; # decent: not-too-harsh dark theme. the teal is a bit straining
|
||||
# theme = "Nord"; # mediocre: pale background, low contrast
|
||||
# theme = "One Half Light"; # better: not-too-harsh light theme. contrast could be better
|
||||
# theme = "PaperColor Dark"; # BEST: dark theme, very readable still the colors are background-y
|
||||
# theme = "Parasio Dark"; # dislike: too low contrast
|
||||
# theme = "Pencil Light"; # better: not-too-harsh light theme. decent contrast.
|
||||
# theme = "Pnevma"; # dislike: too low contrast
|
||||
# theme = "Piatto Light"; # better: readable light theme. pleasing colors. powerline prompt is hard to read.
|
||||
# theme = "Rosé Pine Dawn"; # GOOD: light theme. all color combinations are readable. it is very mild -- may need to manually tweak contrast. tasteful colors
|
||||
# theme = "Rosé Pine Moon"; # GOOD: dark theme. tasteful colors. but background is a bit intense
|
||||
# theme = "Sea Shells"; # mediocre. not all color combos are readable
|
||||
# theme = "Solarized Light"; # mediocre: not-too-harsh light theme; GREAT background; but some colors are low contrast
|
||||
# theme = "Solarized Dark Higher Contrast"; # better: dark theme, decent colors
|
||||
# theme = "Sourcerer"; # mediocre: ugly colors
|
||||
# theme = "Space Gray"; # mediocre: too muted
|
||||
# theme = "Space Gray Eighties"; # better: all readable, decent colors
|
||||
# theme = "Spacemacs"; # mediocre: too muted
|
||||
# theme = "Spring"; # mediocre: readable light theme, but the teal is ugly.
|
||||
# theme = "Srcery"; # better: highly readable. colors are ehhh
|
||||
# theme = "Substrata"; # decent: nice colors, but a bit flat.
|
||||
# theme = "Sundried"; # mediocre: the solar text makes me squint
|
||||
# theme = "Symfonic"; # mediocre: the dark purple has low contrast to the black bg.
|
||||
# theme = "Tango Light"; # dislike: teal is too grating
|
||||
# theme = "Tokyo Night Day"; # medicore: too muted
|
||||
# theme = "Tokyo Night"; # better: tasteful. a bit flat
|
||||
# theme = "Tomorrow"; # GOOD: all color combinations are readable. contrast is slightly better than Rose. on the blander side
|
||||
# theme = "Treehouse"; # dislike: the orange is harsh on my eyes.
|
||||
# theme = "Urple"; # dislike: weird palette
|
||||
# theme = "Warm Neon"; # decent: not-too-harsh dark theme. the green is a bit unattractive
|
||||
# theme = "Wild Cherry"; # GOOD: dark theme: nice colors. a bit flat
|
||||
# theme = "Xcodedark"; # dislike: bad palette
|
||||
# theme = "citylights"; # decent: dark theme. some parts have just a bit low contrast
|
||||
# theme = "neobones_light"; # better light theme. the background is maybe too muted
|
||||
# theme = "vimbones";
|
||||
# theme = "zenbones_dark"; # mediocre: readable, but meh colors
|
||||
# theme = "zenbones_light"; # decent: light theme. all colors are readable. contrast is passable but not excellent. highlight color is BAD
|
||||
# theme = "zenwritten_dark"; # mediocre: looks same as zenbones_dark
|
||||
}
|
15
hosts/common/home/libreoffice.nix
Normal file
15
hosts/common/home/libreoffice.nix
Normal file
@@ -0,0 +1,15 @@
|
||||
{ config, lib, sane-lib, ... }:
|
||||
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
# libreoffice: disable first-run stuff
|
||||
sane.fs."/home/colin/.config/libreoffice/4/user/registrymodifications.xcu" = sane-lib.fs.wantedText ''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="FirstRun" oor:op="fuse"><value>false</value></prop></item>
|
||||
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="ShowTipOfTheDay" oor:op="fuse"><value>false</value></prop></item>
|
||||
</oor:items>
|
||||
'';
|
||||
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeDonateShown" oor:op="fuse"><value>1667693880</value></prop></item>
|
||||
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeGetInvolvedShown" oor:op="fuse"><value>1667693880</value></prop></item>
|
||||
}
|
43
hosts/common/home/mime.nix
Normal file
43
hosts/common/home/mime.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
{ config, lib, sane-lib, ...}:
|
||||
|
||||
let
|
||||
www = config.sane.web-browser.browser.desktop;
|
||||
pdf = "org.gnome.Evince.desktop";
|
||||
md = "obsidian.desktop";
|
||||
thumb = "org.gnome.gThumb.desktop";
|
||||
video = "vlc.desktop";
|
||||
# audio = "mpv.desktop";
|
||||
audio = "vlc.desktop";
|
||||
in
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
|
||||
# the xdg mime type for a file can be found with:
|
||||
# - `xdg-mime query filetype path/to/thing.ext`
|
||||
# we can have single associations or a list of associations.
|
||||
# there's also options to *remove* [non-default] associations from specific apps
|
||||
xdg.mime.enable = true;
|
||||
xdg.mime.defaultApplications = {
|
||||
# AUDIO
|
||||
"audio/flac" = audio;
|
||||
"audio/mpeg" = audio;
|
||||
"audio/x-vorbis+ogg" = audio;
|
||||
# IMAGES
|
||||
"image/heif" = thumb; # apple codec
|
||||
"image/png" = thumb;
|
||||
"image/jpeg" = thumb;
|
||||
# VIDEO
|
||||
"video/mp4" = video;
|
||||
"video/quicktime" = video;
|
||||
"video/x-matroska" = video;
|
||||
# HTML
|
||||
"text/html" = www;
|
||||
"x-scheme-handler/http" = www;
|
||||
"x-scheme-handler/https" = www;
|
||||
"x-scheme-handler/about" = www;
|
||||
"x-scheme-handler/unknown" = www;
|
||||
# RICH-TEXT DOCUMENTS
|
||||
"application/pdf" = pdf;
|
||||
"text/markdown" = md;
|
||||
};
|
||||
}
|
11
hosts/common/home/mpv.nix
Normal file
11
hosts/common/home/mpv.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ config, lib, sane-lib, ... }:
|
||||
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
# format is <key>=%<length>%<value>
|
||||
sane.fs."/home/colin/.config/mpv/mpv.conf" = sane-lib.fs.wantedText ''
|
||||
save-position-on-quit=%3%yes
|
||||
keep-open=%3%yes
|
||||
'';
|
||||
}
|
||||
|
130
hosts/common/home/neovim.nix
Normal file
130
hosts/common/home/neovim.nix
Normal file
@@ -0,0 +1,130 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (builtins) map;
|
||||
inherit (lib) concatMapStrings optionalString;
|
||||
# this structure roughly mirrors home-manager's `programs.neovim.plugins` option
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# docs: surround-nvim: https://github.com/ur4ltz/surround.nvim/
|
||||
# docs: vim-surround: https://github.com/tpope/vim-surround
|
||||
{ plugin = vim-surround; }
|
||||
# docs: fzf-vim (fuzzy finder): https://github.com/junegunn/fzf.vim
|
||||
{ plugin = fzf-vim; }
|
||||
({
|
||||
# docs: tex-conceal-vim: https://github.com/KeitaNakamura/tex-conceal.vim/
|
||||
plugin = tex-conceal-vim;
|
||||
type = "viml";
|
||||
config = ''
|
||||
" present prettier fractions
|
||||
let g:tex_conceal_frac=1
|
||||
'';
|
||||
})
|
||||
({
|
||||
plugin = vim-SyntaxRange;
|
||||
type = "viml";
|
||||
config = ''
|
||||
" enable markdown-style codeblock highlighting for tex code
|
||||
autocmd BufEnter * call SyntaxRange#Include('```tex', '```', 'tex', 'NonText')
|
||||
" autocmd Syntax tex set conceallevel=2
|
||||
'';
|
||||
})
|
||||
({
|
||||
# treesitter syntax highlighting: https://nixos.wiki/wiki/Tree_sitters
|
||||
# docs: https://github.com/nvim-treesitter/nvim-treesitter
|
||||
# config taken from: https://github.com/i077/system/blob/master/modules/home/neovim/default.nix
|
||||
# this is required for tree-sitter to even highlight
|
||||
plugin = nvim-treesitter.withAllGrammars;
|
||||
type = "lua";
|
||||
config = ''
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
highlight = {
|
||||
enable = true,
|
||||
-- disable treesitter on Rust so that we can use SyntaxRange
|
||||
-- and leverage TeX rendering in rust projects
|
||||
disable = { "rust", "tex", "latex" },
|
||||
-- disable = { "tex", "latex" },
|
||||
-- true to also use builtin vim syntax highlighting when treesitter fails
|
||||
additional_vim_regex_highlighting = false
|
||||
},
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "gnn",
|
||||
node_incremental = "grn",
|
||||
mcope_incremental = "grc",
|
||||
node_decremental = "grm"
|
||||
}
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
disable = {}
|
||||
}
|
||||
}
|
||||
|
||||
vim.o.foldmethod = 'expr'
|
||||
vim.o.foldexpr = 'nvim_treesitter#foldexpr()'
|
||||
'';
|
||||
})
|
||||
];
|
||||
plugin-packages = map (p: p.plugin) plugins;
|
||||
plugin-config-tex = concatMapStrings (p: optionalString (p.type or "" == "viml") p.config) plugins;
|
||||
plugin-config-lua = concatMapStrings (p: optionalString (p.type or "" == "lua") p.config) plugins;
|
||||
in
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
# private because there could be sensitive things in the swap
|
||||
sane.persist.home.private = [ ".cache/vim-swap" ];
|
||||
|
||||
programs.neovim = {
|
||||
# neovim: https://github.com/neovim/neovim
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
configure = {
|
||||
packages.myVimPackage = {
|
||||
start = plugin-packages;
|
||||
};
|
||||
customRC = ''
|
||||
" let the terminal handle mouse events, that way i get OS-level ctrl+shift+c/etc
|
||||
" this used to be default, until <https://github.com/neovim/neovim/pull/19290>
|
||||
set mouse=
|
||||
|
||||
" copy/paste to system clipboard
|
||||
set clipboard=unnamedplus
|
||||
|
||||
" screw tabs; always expand them into spaces
|
||||
set expandtab
|
||||
|
||||
" at least don't open files with sections folded by default
|
||||
set nofoldenable
|
||||
|
||||
" allow text substitutions for certain glyphs.
|
||||
" higher number = more aggressive substitution (0, 1, 2, 3)
|
||||
" i only make use of this for tex, but it's unclear how to
|
||||
" apply that *just* to tex and retain the SyntaxRange stuff.
|
||||
set conceallevel=2
|
||||
|
||||
" horizontal rule under the active line
|
||||
" set cursorline
|
||||
|
||||
" highlight trailing space & related syntax errors (doesn't seem to work??)
|
||||
" let c_space_errors=1
|
||||
" let python_space_errors=1
|
||||
|
||||
" enable highlighting of leading/trailing spaces,
|
||||
" and especially tabs
|
||||
" source: https://www.reddit.com/r/neovim/comments/chlmfk/highlight_trailing_whitespaces_in_neovim/
|
||||
set list
|
||||
set listchars=tab:▷\·,trail:·,extends:◣,precedes:◢,nbsp:○
|
||||
|
||||
""""" PLUGIN CONFIG (tex)
|
||||
${plugin-config-tex}
|
||||
|
||||
""""" PLUGIN CONFIG (lua)
|
||||
lua <<EOF
|
||||
${plugin-config-lua}
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
@@ -5,7 +5,7 @@ lib.mkIf config.sane.home-manager.enable
|
||||
# TODO: this should only be shipped on gui platforms
|
||||
sops.secrets."sublime_music_config" = {
|
||||
owner = config.users.users.colin.name;
|
||||
sopsFile = ../../secrets/universal/sublime_music_config.json.bin;
|
||||
sopsFile = ../../../secrets/universal/sublime_music_config.json.bin;
|
||||
format = "binary";
|
||||
};
|
||||
sane.fs."/home/colin/.config/sublime-music/config.json" = sane-lib.fs.wantedSymlinkTo config.sops.secrets.sublime_music_config.path;
|
21
hosts/common/home/xdg-dirs.nix
Normal file
21
hosts/common/home/xdg-dirs.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{ config, lib, sane-lib, ...}:
|
||||
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
# XDG defines things like ~/Desktop, ~/Downloads, etc.
|
||||
# these clutter the home, so i mostly don't use them.
|
||||
sane.fs."/home/colin/.config/user-dirs.dirs" = sane-lib.fs.wantedText ''
|
||||
XDG_DESKTOP_DIR="$HOME/.xdg/Desktop"
|
||||
XDG_DOCUMENTS_DIR="$HOME/dev"
|
||||
XDG_DOWNLOAD_DIR="$HOME/tmp"
|
||||
XDG_MUSIC_DIR="$HOME/Music"
|
||||
XDG_PICTURES_DIR="$HOME/Pictures"
|
||||
XDG_PUBLICSHARE_DIR="$HOME/.xdg/Public"
|
||||
XDG_TEMPLATES_DIR="$HOME/.xdg/Templates"
|
||||
XDG_VIDEOS_DIR="$HOME/Videos"
|
||||
'';
|
||||
|
||||
# prevent `xdg-user-dirs-update` from overriding/updating our config
|
||||
# see <https://manpages.ubuntu.com/manpages/bionic/man5/user-dirs.conf.5.html>
|
||||
sane.fs."/home/colin/.config/user-dirs.conf" = sane-lib.fs.wantedText "enabled=False";
|
||||
}
|
141
hosts/common/home/zsh/default.nix
Normal file
141
hosts/common/home/zsh/default.nix
Normal file
@@ -0,0 +1,141 @@
|
||||
{ config, lib, pkgs, sane-lib, ... }:
|
||||
|
||||
let
|
||||
# powerlevel10k prompt config
|
||||
# p10k.zsh is the auto-generated config, and i overwrite those defaults here, below.
|
||||
p10k-overrides = ''
|
||||
# powerlevel10k launches a gitstatusd daemon to accelerate git prompt queries.
|
||||
# this keeps open file handles for any git repo i touch for 60 minutes (by default).
|
||||
# that prevents unmounting whatever device the git repo is on -- particularly problematic for ~/private.
|
||||
# i can disable gitstatusd and get slower fallback git queries:
|
||||
# - either universally
|
||||
# - or selectively by path
|
||||
# see: <https://github.com/romkatv/powerlevel10k/issues/246>
|
||||
typeset -g POWERLEVEL9K_VCS_DISABLED_DIR_PATTERN='(/home/colin/private/*|/home/colin/knowledge/*)'
|
||||
# typeset -g POWERLEVEL9K_DISABLE_GITSTATUS=true
|
||||
|
||||
# show user@host also when logged into the current machine.
|
||||
# default behavior is to show it only over ssh.
|
||||
typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION='$P9K_CONTENT'
|
||||
'';
|
||||
|
||||
prezto-init = ''
|
||||
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||
source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
source ${pkgs.zsh-prezto}/share/zsh-prezto/init.zsh
|
||||
'';
|
||||
in
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
sane.persist.home.plaintext = [
|
||||
# we don't need to full zsh dir -- just the history file --
|
||||
# but zsh will sometimes backup the history file and we get fewer errors if we do proper mounts instead of symlinks.
|
||||
# TODO: should be private?
|
||||
".local/share/zsh"
|
||||
# cache gitstatus otherwise p10k fetched it from the net EVERY BOOT
|
||||
".cache/gitstatus"
|
||||
];
|
||||
|
||||
# zsh/prezto complains if zshrc doesn't exist; but it does allow an "empty" file.
|
||||
sane.fs."/home/colin/.config/zsh/.zshrc" = sane-lib.fs.wantedText "# ";
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
histFile = "$HOME/.local/share/zsh/history";
|
||||
shellAliases = {
|
||||
":q" = "exit";
|
||||
# common typos
|
||||
"cd.." = "cd ..";
|
||||
"cd../" = "cd ../";
|
||||
};
|
||||
setOptions = [
|
||||
# defaults:
|
||||
"HIST_IGNORE_DUPS"
|
||||
"SHARE_HISTORY"
|
||||
"HIST_FCNTL_LOCK"
|
||||
# disable `rm *` confirmations
|
||||
"rmstarsilent"
|
||||
];
|
||||
|
||||
# .zshenv config:
|
||||
shellInit = ''
|
||||
ZDOTDIR=$HOME/.config/zsh
|
||||
'';
|
||||
|
||||
# .zshrc config:
|
||||
interactiveShellInit =
|
||||
(builtins.readFile ./p10k.zsh)
|
||||
+ p10k-overrides
|
||||
+ prezto-init
|
||||
+ ''
|
||||
# zmv is a way to do rich moves/renames, with pattern matching/substitution.
|
||||
# see for an example: <https://filipe.kiss.ink/zmv-zsh-rename/>
|
||||
autoload -Uz zmv
|
||||
|
||||
HISTORY_IGNORE='(sane-shutdown *|sane-reboot *|rm *)'
|
||||
|
||||
# extra aliases
|
||||
# TODO: move to `shellAliases` config?
|
||||
function nd() {
|
||||
mkdir -p "$1";
|
||||
pushd "$1";
|
||||
}
|
||||
|
||||
# auto-cd into any of these dirs by typing them and pressing 'enter':
|
||||
hash -d 3rd="/home/colin/dev/3rd"
|
||||
hash -d dev="/home/colin/dev"
|
||||
hash -d knowledge="/home/colin/knowledge"
|
||||
hash -d nixos="/home/colin/nixos"
|
||||
hash -d nixpkgs="/home/colin/dev/3rd/nixpkgs"
|
||||
hash -d ref="/home/colin/ref"
|
||||
hash -d secrets="/home/colin/knowledge/secrets"
|
||||
hash -d tmp="/home/colin/tmp"
|
||||
hash -d uninsane="/home/colin/dev/uninsane"
|
||||
hash -d Videos="/home/colin/Videos"
|
||||
'';
|
||||
|
||||
syntaxHighlighting.enable = true;
|
||||
vteIntegration = true;
|
||||
};
|
||||
|
||||
# enable a command-not-found hook to show nix packages that might provide the binary typed.
|
||||
programs.nix-index.enable = true;
|
||||
programs.command-not-found.enable = false; #< mutually exclusive with nix-index
|
||||
|
||||
# prezto = oh-my-zsh fork; controls prompt, auto-completion, etc.
|
||||
# see: https://github.com/sorin-ionescu/prezto
|
||||
# i believe this file is auto-sourced by the prezto init.zsh script.
|
||||
sane.fs."/home/colin/.config/zsh/.zpreztorc" = sane-lib.fs.wantedText ''
|
||||
zstyle ':prezto:*:*' color 'yes'
|
||||
|
||||
# modules (they ship with prezto):
|
||||
# ENVIRONMENT: configures jobs to persist after shell exit; other basic niceties
|
||||
# TERMINAL: auto-titles terminal (e.g. based on cwd)
|
||||
# EDITOR: configures shortcuts like Ctrl+U=undo, Ctrl+L=clear
|
||||
# HISTORY: `history-stat` alias, setopts for good history defaults
|
||||
# DIRECTORY: sets AUTO_CD, adds `d` alias to list directory stack, and `1`-`9` to cd that far back the stack
|
||||
# SPECTRUM: helpers for term colors and styling. used by prompts? might be unnecessary
|
||||
# UTILITY: configures aliases like `ll`, `la`, disables globbing for things like rsync
|
||||
# adds aliases like `get` to fetch a file. also adds `http-serve` alias??
|
||||
# COMPLETION: tab completion. requires `utility` module prior to loading
|
||||
# TODO: enable AUTO_PARAM_SLASH
|
||||
zstyle ':prezto:load' pmodule \
|
||||
'environment' \
|
||||
'terminal' \
|
||||
'editor' \
|
||||
'history' \
|
||||
'directory' \
|
||||
'spectrum' \
|
||||
'utility' \
|
||||
'completion' \
|
||||
'prompt'
|
||||
|
||||
# default keymap. try also `vicmd` (vim normal mode, AKA "cmd mode") or `vi`.
|
||||
zstyle ':prezto:module:editor' key-bindings 'emacs'
|
||||
|
||||
zstyle ':prezto:module:prompt' theme 'powerlevel10k'
|
||||
|
||||
# disable `mv` confirmation (and `rm`, too, unfortunately)
|
||||
zstyle ':prezto:module:utility' safe-ops 'no'
|
||||
'';
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
{ ... }:
|
||||
{
|
||||
services.i2p.enable = true;
|
||||
# services.i2p.enable = true;
|
||||
}
|
||||
|
@@ -87,6 +87,7 @@ in
|
||||
"Videos"
|
||||
|
||||
".cache/nix"
|
||||
".cache/nix-index"
|
||||
".cargo"
|
||||
".rustup"
|
||||
];
|
||||
|
@@ -1,11 +1,21 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
{
|
||||
# if using router's DNS, these mappings will already exist.
|
||||
# if using a different DNS provider (which servo does), then we need to explicity provide them.
|
||||
# ugly hack. would be better to get servo to somehow use the router's DNS
|
||||
networking.hosts = lib.mapAttrs' (host: cfg: {
|
||||
name = cfg.lan-ip;
|
||||
value = [ host ];
|
||||
}) config.sane.hosts.by-name;
|
||||
# give each host a shortname that all the other hosts know, to allow easy comms.
|
||||
networking.hosts = lib.mkMerge [
|
||||
(lib.mapAttrs' (host: cfg: {
|
||||
# bare-name for LAN addresses
|
||||
# if using router's DNS, these mappings will already exist.
|
||||
# if using a different DNS provider (which servo does), then we need to explicity provide them.
|
||||
# ugly hack. would be better to get servo to somehow use the router's DNS
|
||||
name = cfg.lan-ip;
|
||||
value = [ host ];
|
||||
}) config.sane.hosts.by-name)
|
||||
(lib.mapAttrs' (host: cfg: {
|
||||
# -hn suffixed name for communication over my wg-home VPN.
|
||||
# hn = "home network"
|
||||
name = cfg.wg-home.ip;
|
||||
value = [ "${host}-hn" ];
|
||||
}) config.sane.hosts.by-name)
|
||||
];
|
||||
}
|
||||
|
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 208377,
|
||||
"content_type": "application/xml; charset=utf-8",
|
||||
"description": "applieddivinitystudies@gmail.com",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 20,
|
||||
"last_updated": "2022-12-20T01:23:44.546000+00:00",
|
||||
"score": 26,
|
||||
"self_url": "https://applieddivinitystudies.com/atom.xml",
|
||||
"site_name": "Applied Divinity Studies",
|
||||
"site_url": "https://applieddivinitystudies.com",
|
||||
"title": "Applied Divinity Studies",
|
||||
"url": "https://applieddivinitystudies.com/atom.xml",
|
||||
"velocity": 0.079,
|
||||
"version": "atom10"
|
||||
}
|
21
modules/data/feeds/sources/austinvernon.site/default.json
Normal file
21
modules/data/feeds/sources/austinvernon.site/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 19245,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": "Austin Vernon's Blog",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 42,
|
||||
"last_updated": "2023-01-05T00:00:00+00:00",
|
||||
"score": 24,
|
||||
"self_url": "",
|
||||
"site_name": "Austin Vernon - Austin Vernon's Blog",
|
||||
"site_url": "https://austinvernon.site",
|
||||
"title": "Austin Vernon",
|
||||
"url": "https://austinvernon.site/rss.xml",
|
||||
"velocity": 0.063,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/balajis.com/default.json
Normal file
21
modules/data/feeds/sources/balajis.com/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 453506,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": "Balaji Srinivasan's personal blog. Formerly CTO of Coinbase and General Partner at a16z, @balajis is an investor and founder.",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 15,
|
||||
"last_updated": "2022-04-28T18:22:11+00:00",
|
||||
"score": 16,
|
||||
"self_url": "https://balajis.com/rss/",
|
||||
"site_name": "Balaji Srinivasan",
|
||||
"site_url": "https://balajis.com",
|
||||
"title": "Balaji Srinivasan",
|
||||
"url": "https://balajis.com/rss/",
|
||||
"velocity": 0.01,
|
||||
"version": "rss20"
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 213052,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "",
|
||||
"favicon": "https://images.squarespace-cdn.com/content/v1/50363cf324ac8e905e7df861/ebdb4645-db93-4967-881d-db698ee59c2c/favicon.ico?format=100w",
|
||||
"favicon_data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAB4FBMVEUAAADmRjIBAADmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjLmRjL///8mIgRMAAAAnnRSTlMAAAA6W1pZTTESpvnryogzAeaCFKwboQv38vP6X449P0FPe8b8vw5mhe02aAif/VhCZx/h4PVD1xwEmQVt3i1uBwwWPpv0Ybu8vtLx7m/JSf5IniT28DWLOTxAUX3EzSgXaXJxc0URa+elCjSdnKLWGewykUv4VSB87zgmHs8iKbZlCbFXhLfHGOpKY9VTjaOuUDAG2tvLGidGL+iWJUyE2tMAAAJwSURBVHja7df5U1JRGMZxnxItw6Q0FdTCoowyWiSJMLXQrMAyU9ojWxQFc8+MijYL23db+VsbTsCZC9xkbu9JnTnfH58Z+MywvAN5MplMJpPJFjuoRoqszNelVVC4ajUpAxTFMlqjL15bYgAEIbx160sBUQivbAMgCuGVVwCkSKUxmakq9dZUEyM1GzclMtdu3mKJsbZuo0XqAF7p9ko2WnfQIjvBJ6B+FxttuwUgfNxjYuteeoSHfQ1srRaL2OPj/kaBCGA2xkfHAXEI4DzIxhoDNQKeq4m974eaQYu0tFYkOnzE3dYen0xHqW+Xo+NYouMnPGzxdjqFH8iTpwzCT31Xx+lWiD/1pu4zAEiRnt5UqVtf7Esh+Fs5I2fPnU924eKly3+cK/7kM+Bq37XrWbtxE9pOPfoHAmwdHEoiQW9MpRA0fuMBnYcdr0IggVjVkGFNCFtdt9hc7hSA8LnAEp9HRjlC9XLxYGbna2xcgdh6rel5JjQjwORUfDa6FcjY7fFgWr7pf0DusHnmrgIJhJGZVgS4d5/N9gdKJAK6Xyvo746xHg5RIo8A3mP3ExtbbX2gREJPdYny62afJT+vz6NkiGpzL5ghFLG+NAhHXr1mhkik4U0YzFAgfmSWC/K2q0rZVLve8a4lYmCPVyI9ZW3DikIT0zkhJe9rlU02fhj9CE5wJEseXy5ItriwIGINIk97SwmZ8ZEjFvsnZZ+/NJMjc+7ovLKoixwJfEVGlIj6N14iEllGSBhZIkY8swNN6XV+o0TUKlrxH5DBZYZ4xb9c+D7yI5A9/U8ypP6XX6XIPAWw8P94mUwmk8lki95vmJ/g9Xmlv3QAAAAASUVORK5CYII=",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 20,
|
||||
"last_updated": "2022-12-14T09:43:49+00:00",
|
||||
"score": 8,
|
||||
"self_url": "",
|
||||
"site_name": "Benedict Evans",
|
||||
"site_url": "https://www.ben-evans.com",
|
||||
"title": "Essays - Benedict Evans",
|
||||
"url": "https://www.ben-evans.com/benedictevans?format=rss",
|
||||
"velocity": 0.033,
|
||||
"version": "rss20"
|
||||
}
|
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 12669,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "The territory is a map of the map.",
|
||||
"favicon": "http://benjaminrosshoffman.com/favicon.ico",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 10,
|
||||
"last_seen": "2023-01-11T12:32:52.176940+00:00",
|
||||
"last_updated": "2023-01-09T04:33:31+00:00",
|
||||
"score": -15,
|
||||
"self_url": "http://benjaminrosshoffman.com/comments/feed/",
|
||||
"site_name": "Compass Rose",
|
||||
"site_url": "http://benjaminrosshoffman.com",
|
||||
"title": "Comments for Compass Rose",
|
||||
"url": "http://benjaminrosshoffman.com/comments/feed/",
|
||||
"velocity": 0.312,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/bitbashing.io/default.json
Normal file
21
modules/data/feeds/sources/bitbashing.io/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 339384,
|
||||
"content_type": "application/xml; charset=utf-8",
|
||||
"description": "Yet another programming blog. Thoughts on software and related misadventures.",
|
||||
"favicon": "https://bitbashing.io/favicon.ico",
|
||||
"favicon_data_uri": "data:image/png;base64,AAABAAEAEBACAAEAAQCwAAAAFgAAACgAAAAQAAAAIAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFBQAAAAAAP//AAD//wAA7/8AAO//AADv/wAA7/8AAO//AADvAwAA7/8AAO8DAADv/wAA7/8AAO//AADv/wAA//8AAP//AAD//wAA//8AAO//AADv/wAA7/8AAO//AADv/wAA7wMAAO//AADvAwAA7/8AAO//AADv/wAA7/8AAP//AAD//wAA",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 10,
|
||||
"last_updated": "2022-11-22T00:00:00+00:00",
|
||||
"score": 20,
|
||||
"self_url": "https://bitbashing.io/feed.xml",
|
||||
"site_name": "Bit Bashing",
|
||||
"site_url": "https://bitbashing.io",
|
||||
"title": "Bit Bashing",
|
||||
"url": "https://bitbashing.io/feed.xml",
|
||||
"velocity": 0.003,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/blog.danieljanus.pl/default.json
Normal file
21
modules/data/feeds/sources/blog.danieljanus.pl/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 1,
|
||||
"content_length": 343256,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": null,
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 60,
|
||||
"last_updated": "2022-11-07T00:00:00+00:00",
|
||||
"score": -4,
|
||||
"self_url": "",
|
||||
"site_name": "Daniel Janus \u2013 blog",
|
||||
"site_url": "https://blog.danieljanus.pl",
|
||||
"title": "code \u00b7 words \u00b7 emotions: Daniel Janus\u2019s blog",
|
||||
"url": "https://blog.danieljanus.pl/atom.xml",
|
||||
"velocity": 0.011,
|
||||
"version": "atom10"
|
||||
}
|
23
modules/data/feeds/sources/blog.dshr.org/default.json
Normal file
23
modules/data/feeds/sources/blog.dshr.org/default.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 623592,
|
||||
"content_type": "application/atom+xml; charset=utf-8",
|
||||
"description": "I'm David Rosenthal, and this is a place to discuss the work I'm doing in Digital Preservation.",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [
|
||||
"http://pubsubhubbub.appspot.com/"
|
||||
],
|
||||
"is_podcast": false,
|
||||
"is_push": true,
|
||||
"item_count": 25,
|
||||
"last_updated": "2023-01-10T17:59:42.157000+00:00",
|
||||
"score": 20,
|
||||
"self_url": "https://www.blogger.com/feeds/4503292949532760618/posts/default",
|
||||
"site_name": "DSHR's Blog",
|
||||
"site_url": "https://blog.dshr.org",
|
||||
"title": "DSHR's Blog",
|
||||
"url": "https://blog.dshr.org/feeds/posts/default",
|
||||
"velocity": 0.35,
|
||||
"version": "atom10"
|
||||
}
|
21
modules/data/feeds/sources/bunniestudios.com/default.json
Normal file
21
modules/data/feeds/sources/bunniestudios.com/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 45559,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "bunnie's blog",
|
||||
"favicon": "https://www.bunniestudios.com/favicon.ico",
|
||||
"favicon_data_uri": "data:image/png;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAFBQUADU1NQBdXV0AoKCgACYmJgBpaWkATk5OAIODgwAKCgoAfHx8ALi4uACxsbEAAgICAKOjowA+Pj4AAQEBAERERADy8vIABwcHABsbGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAASAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAALAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAABQAACgAAAAAPAAAAAAAAAAkAAAAAAAAOAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCQAAAAAAAAAAAAAAAAAAABANAAAAAAAAAAAAAAAAAP//AADAfQAAwTgAAMeZAADPnwAAz88AAM/PAADPzwAAz58AAMefAADDHwAAyD8AAM//AADP/wAAD/8AAA//AAA=",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 5,
|
||||
"last_updated": "2023-01-04T15:49:57+00:00",
|
||||
"score": 20,
|
||||
"self_url": "https://www.bunniestudios.com/blog/?feed=rss2",
|
||||
"site_name": " bunnie's blog",
|
||||
"site_url": "https://www.bunniestudios.com",
|
||||
"title": "bunnie's blog",
|
||||
"url": "https://www.bunniestudios.com/blog/?feed=rss2",
|
||||
"velocity": 0.114,
|
||||
"version": "rss20"
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 15076852,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "Congressional Dish is a twice-monthly podcast that aims to draw attention to where the American people truly have power: Congress. From the perspective of a fed up taxpayer with no allegiance to any political party, Jennifer Briney will fill you in on the must-know information about what our representatives do AFTER the elections and how their actions can and will affect our day to day lives. \nHosted by @JenBriney. \n\nLinks to information sources available at www.congressionaldish.com",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": true,
|
||||
"is_push": false,
|
||||
"item_count": 269,
|
||||
"last_updated": "2023-01-06T18:13:57+00:00",
|
||||
"score": 0,
|
||||
"self_url": "https://feeds.libsyn.com/39908/rss",
|
||||
"site_name": "",
|
||||
"site_url": "",
|
||||
"title": "Congressional Dish",
|
||||
"url": "https://feeds.libsyn.com/39908/rss",
|
||||
"velocity": 0.071,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/gwern.net/default.json
Normal file
21
modules/data/feeds/sources/gwern.net/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 140827,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "Latest gwern.net updates, interesting links, and reviews",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 14,
|
||||
"last_updated": "2021-06-11T14:16:22+00:00",
|
||||
"score": -6,
|
||||
"self_url": "https://gwern.substack.com/feed",
|
||||
"site_name": "",
|
||||
"site_url": "",
|
||||
"title": "Gwern.net Newsletter",
|
||||
"url": "https://gwern.substack.com/feed",
|
||||
"velocity": 0.032,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/ianthehenry.com/default.json
Normal file
21
modules/data/feeds/sources/ianthehenry.com/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 359714,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": "Ian Henry's blog.",
|
||||
"favicon": "https://ianthehenry.com/favicon.ico",
|
||||
"favicon_data_uri": "data:image/png;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAHH1uIDShg/xEsZv8GFk3/CSJb/wgZT/8IGU//CBlP/wkiW/8HGE7/CBlP/wkiW/8HIFX/BxhO/wcgVf8OK2t7JDhz/wcfW/8NNn7/CSpq/wkjYf8MJGP/DCJg/w02ef9SqdX/TKHJ/1my2f9Moc3/UqzV/1Cr1v9Pocf/Ditr/xk2cf8KJGL/CjR8/wwva/8RK2r/Cido/w8qa/8LLW//TqjT/1Gnz/9bsNf/Sp/K/1Wt2f9Wrtj/UKjQ/w8xc/8gPHj/Di5w/xk4ef8TL27/Dy5u/xU3fv8QLGv/Ditr/1qy3f9dttv/Yrje/0ecx/9Knsz/U6fQ/1m13f8YN3n/JjZx/wszdv8YOXz/Eilm/xc3e/8dSZT/GDJz/xk/hv9hu+P/WbHZ/1mv1v9Kn8z/WLHd/1212v9ds9n/Eipr/xcqYv8SOX3/GzRz/xQrZ/8aM3D/HEuU/xc0df8fPYD/Yrre/1603P9dt9z/VKvY/1iz4v9etNr/Y73m/xk5fP8cMm3/JEWK/xc0dP8eO3v/Hjd4/ydRnP8WM3P/Gjd3/2bA5/9dtd//Ybng/2K95v9ct+P/Ybnf/2K95/8oS5L/GChg/xxBh/8lSIz/GC5s/yM5ev8hRoz/HTp7/yE6e/9Zsdz/YLzn/2jF7v9ryfL/YLzn/1qu1f9htdz/GDyD/y0/ev9qx/X/acDn/1235v9euun/Yb3r/1665v9owu7/GUOL/yhGh/8nUJL/MkmI/yBFiP8jOHb/MVag/yM+gv8VMGv/acXx/27G7/9szv3/bMb1/2zD6/9vy/X/edf5/yBHjv8yS47/JEuO/zVLiv8nS5D/LkOB/yRXpP8lQoT/H0WI/3fS+P910Pf/b8/8/2bB7/991Pn/eNb+/3nT+P8pS5L/O1GS/ytUnP86UJH/NF2k/zNLjP8sXKv/JkCB/x4+ff+B2/3/etT9/4He//922f//fNf//3TT//991/7/NU6N/zZSkP86Zav/PlWR/zFepv88ZKb/MF2n/yQ/gf8bNXH/fd3//3/b//+K6P//ft///3vV//993f//gdz//0hWlf9FZKX/RmOj/0JXlv9IeMP/QXKz/0Jsuf8eO3z/Hjt2/3vd//+C3v//ju3//3zg//+H4v//guL//4nj//9HXp3/UGur/ztgqf9JYqP/S3G4/05ur/9EbLT/Hjt7/zNJhf+G4///heT//4rq//+E5///iOT//4jr//+G4///UXO0/09iov9EX6H/SWWn/1V5wP9Kaa7/RGSp/ydLj/8NKGCfDShg/x8+d/8RLGb/CBlP/wYWTf8GFEj/CBNH/wooZP8JIlv/CCJd/woWSf8HGE7/ByBV/wwgU/8fO3mfAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 10,
|
||||
"last_updated": "2022-07-11T00:00:00+00:00",
|
||||
"score": 20,
|
||||
"self_url": "https://ianthehenry.com/feed.xml",
|
||||
"site_name": "Ian Henry",
|
||||
"site_url": "https://ianthehenry.com",
|
||||
"title": "Ian Henry",
|
||||
"url": "https://ianthehenry.com/feed.xml",
|
||||
"velocity": 0.027,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/idiomdrottning.org/default.json
Normal file
21
modules/data/feeds/sources/idiomdrottning.org/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 88585,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": "<p>The most unruly and least considered, most shameful among various Idiomdrottning components and libraries can be found here.</p>\n <p>To contact me, <a href=\"mailto:sandra.snan@idiomdrottning.org\">send mail to sandra.snan@idiomdrottning.org</a></p>",
|
||||
"favicon": "https://idiomdrottning.org/favicon.png",
|
||||
"favicon_data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kKHQ8EITJ/4sMAAAUJSURBVFjD7ZZ5bFRVGMV/983W6d5KoS21gFKWqpWEQkqCoCxqRHCBKEhcE8SYGsRgSEREoyaEJZgQETFBggpxRSBUlrBoF8rSlrZpQUqhsRVIO53SbabzZt69/jF06NBOW8ofxIT710vefe+ce853vvsJpZTiDi6NO7zuErhL4P9NoDPB0qsz0DTfFgEhBABV328OPIciGYrgbVvgaWqkeuc3PYIopRBCcHbL+pAEtb5llr2+d9dfobWmmst/7u8GIoSgsfQUjpLCgVvQ4aincvPakDIaHS7M9nDK1q5ESRl0er3lGrmL5xKRnDpwAvaERJqrKih492W8Lde6EfG5XSAEerMTj9OBUiogfeWXqwGIHD5y4ASUUmQs/YSGk3nsn5VJ2z8XEULcKC7DACGQus7V3IMIIRBC0FxVwYUdXwMQO/rBbkWptzSjlOpfEUakDCN2VDrS6+HIghlczT8S8NtksYJSIAQ1v+/wx9IwOP1hNuaIKITJRHji0ACwEIILO7ZQvmEVQohgAm21l0JGLeuL7wCBkgZ5b83l38P7/BJabf59ECg2R1EBrZeq/GpoJmxxgxBCoDc3kZ89n7J1Kxm3fHV3C1qr/2bXhGTy336RuoN78Lna/RIDtth4hj37EkopLJHRFC57nabKUky2sIACmtmCs7yIguwFoGkoKYkenoYlKhpnRQn7pqXTcCqf1FnzMIWF+Yl3DiSdhdNYdorcRc+jpIHJFkZ4cipDpz/N2MXLMLw6u7NS0SxWv/y2MB7dnsOB2ROxREQhvV6GTHqM+pN/ITQNX4ebR776GUdJIVXbN6GUQnq9zMmrxhRm9yvUdSLqJNF84SzHl75CR/1VhKYhvTrCbOGBd1ZgCY+gdM2KQI+IHZNBU+UZNJM56B8AZnsEKU8+R/WPWzFZrSilyPx0Iykzn7lhcaiRzPB0cHTh47TVXkJoN5wSZjNCCAxdD9ndekyTlETdN4rpOw8H11hfM+H5bRspW7cSc2R0UPx6Be/8Y5ct9iHJzPglF81s7p2A3tyEz9WOr8OF8hmYrDYaio9Tvv4jpM/bK7AKxgxYYrKFMXXbPqKGj+zern1ul7p8LIe6A3toPHMCZRgoKf13gOpyFCWD/L0VEjN/yyc8KSVEJ9Q0rDHxRKaOwBafgKfJgc/djjJ8fgJKwfULqRNchdBcoQLgSkqscfcw/adjIcEDFnQ9mbetlZrdP3D5cA7u+it421owXO2dXQmEQABKCIS6DirEdXARAI9Lf5gpW/f2WS89xjCQBN2D4Xbha2/l2rlynOXF1B3ajaexIajYpJBoaH4NpCRj2WeMmPdqv1LSZwo8Tgd1h/bgKCqgoagAX1urX4WAHQoUSN1DQuZknBXFzMmtDopuvwl0KqCUwtPYQPmGVdTm/IpmsyGE1uOopZkt2BOTmfD5JmJHP8TRhU9gT0oma923Pap68zLffPEooPC912g4nYfUdUxh9qAPpM+H1D2EJ6Uw6o0lJE6eQUTyvYH3LRfP0VJzHr25CUtUTJ9KBBVh7f5dFH28JHABKWmgDANLZBThyalEjUgjPiOTwROnEJM2tpsiTRUlWGPiKV3zAW01VYx5832GzX6hfxbkZ8/HUVyI0EyEJ6UQlz6OQeOzGDxpGvaEIYQq1J4GGMPdzt6paUzbeZTo+0f30TWVUobXqzqcDuV1u1RPS0qpbmX5PB3qj6fGqxPLF/W59z/I3vExRaQkUAAAAABJRU5ErkJggg==",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 20,
|
||||
"last_updated": "2023-01-25T13:06:38+00:00",
|
||||
"score": 10,
|
||||
"self_url": "https://idiomdrottning.org/blog",
|
||||
"site_name": "Idiomdrottning",
|
||||
"site_url": "https://idiomdrottning.org",
|
||||
"title": "Idiomdrottning",
|
||||
"url": "https://idiomdrottning.org/blog",
|
||||
"velocity": 0.441,
|
||||
"version": "atom10"
|
||||
}
|
@@ -0,0 +1 @@
|
||||
{}
|
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 80033,
|
||||
"content_type": "application/xml; charset=utf-8",
|
||||
"description": "A blog by Matt Webb. My notebook and space for thinking out loud since February 2000.",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 8,
|
||||
"last_updated": "2023-01-24T20:48:00+00:00",
|
||||
"score": 22,
|
||||
"self_url": "",
|
||||
"site_name": "Matt Webb",
|
||||
"site_url": "https://interconnected.org",
|
||||
"title": "Interconnected",
|
||||
"url": "https://interconnected.org/home/feed",
|
||||
"velocity": 0.279,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/jefftk.com/default.json
Normal file
21
modules/data/feeds/sources/jefftk.com/default.json
Normal file
File diff suppressed because one or more lines are too long
21
modules/data/feeds/sources/lynalden.com/default.json
Normal file
21
modules/data/feeds/sources/lynalden.com/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 10608,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "Investment Strategy",
|
||||
"favicon": "https://www.lynalden.com/wp-content/plugins/genesis-favicon-uploader/favicons/favicon.ico",
|
||||
"favicon_data_uri": "data:image/png;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA6KIAAFc9AAAfFgAAHRQHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQRERERETAABBERERERMAAEEREREREwAAQRESIiIgAABBERAAAAAAAEEREAAAAAAAQREQAAAAAABBERAAAAAAAEEREAAAAAAAQREQAAAAAABBERAAAAAAAEEREAAAAAAAQREQAAAAAABBERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 10,
|
||||
"last_updated": "2022-12-10T19:36:37+00:00",
|
||||
"score": 12,
|
||||
"self_url": "https://www.lynalden.com/feed/",
|
||||
"site_name": "Lyn Alden",
|
||||
"site_url": "https://www.lynalden.com",
|
||||
"title": "Lyn Alden",
|
||||
"url": "https://www.lynalden.com/feed/",
|
||||
"velocity": 0.031,
|
||||
"version": "rss20"
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 1990,
|
||||
"content_type": "application/atom+xml; charset=utf-8",
|
||||
"description": "\u65e5\u7528\u54c1\u3092\u5225\u306e\u3082\u306e\u306b\u898b\u7acb\u3066\u305f\u3001\u30df\u30cb\u30c1\u30e5\u30a2\u30a2\u30fc\u30c8\u3092\u6bce\u65e5\u66f4\u65b0\u4e2d",
|
||||
"favicon": "https://www.miniature-calendar.com/images/favicon.ico",
|
||||
"favicon_data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABPlBMVEXdzb3ezbng0b7f0r/h0L7h0r/h0MDi0sLn18fg0MDh0cHk08Pm1cXn18jl2MfezbvdzLjf0L3f0Lvj08Tfzr7i08Dm1sbf0cTcz7w+Ny3k1MTe0sLl1cbczLU/OS1AOi7g0bzby7TayrPbyrjezb3fzrzcy7fZyLTbyrY+Oi7dzLxAOizczbrdy7XdzbbbzLnez7zdzLrezr7WxLDZx7NBOjBAOS/ezLbczbjaxbDYxrDZx7HcyrTayLLcy7s/OzBBOy/Ww7LZybI/OzLYybY+Oi/czLzXxbHYyLFAOTHZxLPZx6/aybXazLLayLDcyLDcyrbczLPbybPXxLVCOzHbybXXxLPayLTZxrfaya/bxbDZybDVw63axK3axK/cx7LayrHYx7PezLTUwq7UwqzXwq/Vw6/Xw6vWx7DbxbcPDeShAAABAUlEQVQYlT2IizfCUByAf27LVGRXC8Pt2pY9PDLVHTbZKsxjIqYxyavC//8P4DjHd853znc+gAmU4tKTPD+VyeamZ/IwK2A0hzMFMZsr8vP5BQBhEUsYSxyW0oWl5RUgpPQPRUX+Z9Df/HMVpUFWqEzU8ppWTnEUIQy6YSpUM7XS+sYmFRECZcvUiVIh25YAdKdahVqd6bZmy0ylu2zPAth3bNeVDxqHtuczlVjQdJjjtdoG9Y6OTwwRIDg9O78ILztXfvs6NEgXbm4jFkU+i9ida3SJCkHQi+8fGklceQxjRTGgX+slfSd5Gjy/uB3t9Q3eh8PBaDwefTTrn+FXGHwDcrgsthZvWMkAAAAASUVORK5CYII=",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 1,
|
||||
"last_updated": "2023-01-25T22:00:38+00:00",
|
||||
"score": 20,
|
||||
"self_url": "https://miniature-calendar.com/feed/atom/",
|
||||
"site_name": "MINIATURE CALENDAR",
|
||||
"site_url": "https://miniature-calendar.com",
|
||||
"title": "MINIATURE CALENDAR",
|
||||
"url": "https://miniature-calendar.com/feed/atom/",
|
||||
"velocity": 0,
|
||||
"version": "atom10"
|
||||
}
|
21
modules/data/feeds/sources/overcomingbias.com/default.json
Normal file
21
modules/data/feeds/sources/overcomingbias.com/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 26528028,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "This is a blog on why we believe and do what we do, why we pretend otherwise, how we might do better, and what our descendants might do, if they don't all die.",
|
||||
"favicon": "https://www.overcomingbias.com/favicon.ico",
|
||||
"favicon_data_uri": "data:image/png;base64,AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAABMLAAATCwAAAAEAAAAAAAAAAAAALgAAAC0mFQAAEysAFCozACoqKgBMMysAWVUiABI0RgACRk4AEk5uAABrcgBKSkwAbUZEAG5sTwBxcXEAkXJQAKuMbQDSklcAFXCPABWWnwAAq9cAAO7zAI6QkQCusLAAzq6XAPO0jwD7y5gAzM3NAOnS0gD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eDwUcHh4eHh4eHh4eHh4eHhcHBQ8eHh4eHh4eHh4eHh4MEhsRHh4eHh4eHhgXHh4YBRsbGx4eHh4eHh4XBAQFABEbGxseHh4eHhwdDxUWFgkNGxsbHh4eHh4FCQsWFhYWABEOBx4eHh4dBBYWFhYWFggFBwceHh4eDwkWFhYWFhYIEhsbBQ8XDAAUFhYWFhYVABsbGxENDREQABUWFhYWBAARGxsbGxEGBhAACRMKAw4SAA4bDQACERsbBg4HBwIbGxkBBgAQGxsbEQIbGxsAEhsbGgIbGxsbGwUQGxsbBgcbGxsbGxsbGxECGhsbGxEAGxsbGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 4476,
|
||||
"last_updated": "2023-01-24T19:20:26+00:00",
|
||||
"score": 14,
|
||||
"self_url": "https://www.overcomingbias.com/feed",
|
||||
"site_name": "Overcoming Bias",
|
||||
"site_url": "https://www.overcomingbias.com",
|
||||
"title": "Overcoming Bias",
|
||||
"url": "https://www.overcomingbias.com/feed",
|
||||
"velocity": 0.757,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/palladiummag.com/default.json
Normal file
21
modules/data/feeds/sources/palladiummag.com/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 1,
|
||||
"content_length": 617003,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": "Governance Futurism",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 18,
|
||||
"last_updated": "2023-01-20T19:45:09+00:00",
|
||||
"score": 28,
|
||||
"self_url": "https://www.palladiummag.com/feed/",
|
||||
"site_name": "Palladium Magazine",
|
||||
"site_url": "https://www.palladiummag.com",
|
||||
"title": "Palladium",
|
||||
"url": "https://www.palladiummag.com/feed/index.xml",
|
||||
"velocity": 0.167,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/pbfcomics.com/default.json
Normal file
21
modules/data/feeds/sources/pbfcomics.com/default.json
Normal file
File diff suppressed because one or more lines are too long
23
modules/data/feeds/sources/philosopher.coach/default.json
Normal file
23
modules/data/feeds/sources/philosopher.coach/default.json
Normal file
File diff suppressed because one or more lines are too long
21
modules/data/feeds/sources/pomeroyb.com/default.json
Normal file
21
modules/data/feeds/sources/pomeroyb.com/default.json
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 997224,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "Preposterous Universe",
|
||||
"favicon": "https://www.preposterousuniverse.com/wp-content/uploads/cropped-prepu-32x32.png",
|
||||
"favicon_data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADqklEQVRYhe2WT2hcVRjFf+e+STqTaP5RG/FPYzCKQgoBi6LWahdFUEGI1aXQhdSN7kXX4t6NCIpFsHSjIkWz6lItQslCKmGqaWsT2mhNk0kaM/PeOy7mzczLdGqSVTa5cHhc7ve+c+6957v3CjA72MJOku8K2BUAUPj/YTW/AkwXLc0pkAApwrlS2l5RqfMfAnoJeh70LPZjwChoGOjKYm6Bq4hrmKtI0+BzmPPgyrYEOQ8x4KAPHXTdqGqoGZI2pBka/bgep5qlJStMOegdS48a5HaONuTINeGgC1nCPNFW0C4ytlRxCF856EmjaDMB/ZZmcuSdZrxdIXEduuUofGHpvk4rgkGWXs0t93bI4k1EZzGqWZp10DMbRISWDfZRd3jD+VuzTm+0yNgDZYqla0hVUNxmLeo5HbBHMN8gPdHMUmgGsIxYwvRvSYSUcBeLnGaSw6u/8O+Lw1wZ38fsyAiXK/u5ePFhyuUxyuVR5ubuIU6K4AL2ICF8CT6IWW2UYUC8gfUC+HhLV0chKQB9usFpTXI0/bFVy4K4KxA/1QUvR+illD2Pm7W1Pv64dC+Xfh/lt5kxyuVHOHv2U2ZnzzfWqtviuOGExSnD2h28UN/PPi34+3DIMXIKtyFBjpGrIfLKWNEr75ZcmSo5Xik5ToKTJPiD9/vzJhw0vGVxwvC24ROLhQ7lWHNJN/119IpjcNKBvCWiNR6DY8krQwVXjvV4+WSvjxzuq5d+XcAQ4hiNg9EEYC9wBDgI9IBMiVVO6k0m0zMoM9hmbnFbP5U4U+ji9TghdtLYvojAJGYQmid7AIrAXsQBihrl8/Aer6U/EDntbMzNyIFrocBzMpeSBGi6LSHlHOgocpQlM+YWMIdZ5ACfUU2n+BkYlhhE3G1nN4M3XKvOfRNgHVgFbgIfSVxOk2Zs7jb8E/knzNNAQ4SABLHMg/zKjFPmMT1ACdML9AN9EqVsvSIaJ4BJDDXqWAOmo4hTSbzh7swJMOYCYgk4lJ0H9ZUoqMaQ5vnLpgKUgJ4MN4A9NkXq92QhQ6M044x8IQQ+Tk21bWNuew+YeeBbxDgwjulmP/MoXSfNkq0DlYywO5t5d4aI1oshzmb/twLfAVc6eOcO74FGKxF4iIlojYn0StN8ZqPhlJHmyQ2sKzCDmCZl2Z1pNhHQCIGizP0KDBv6MXuAHlQ3YZalBiwB/wDXEVdJqG4h+yYhtwcr12t3f74CtpNzx9qOv4p3Bey4gMLAwMCOCvgPU/1XrXUZXDwAAAAASUVORK5CYII=",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 10,
|
||||
"last_updated": "2023-01-23T12:26:31+00:00",
|
||||
"score": 12,
|
||||
"self_url": "https://www.preposterousuniverse.com/feed/",
|
||||
"site_name": "Sean Carroll \u2013 Preposterous Universe",
|
||||
"site_url": "https://www.preposterousuniverse.com",
|
||||
"title": "Sean Carroll",
|
||||
"url": "https://www.preposterousuniverse.com/feed/",
|
||||
"velocity": 0.129,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/profectusmag.com/default.json
Normal file
21
modules/data/feeds/sources/profectusmag.com/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 196719,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "By Archbridge Institute",
|
||||
"favicon": "https://profectusmag.com/wp-content/uploads/2021/08/icologo.png",
|
||||
"favicon_data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACgCAAAAADLScqOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMC1jMDAwIDc5LmRhYmFjYmIsIDIwMjEvMDQvMTQtMDA6Mzk6NDQgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY3RTExMkQ0MDQ3MjExRUM4RDE3OUYxNjg3QTgxNkE2IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY3RTExMkQzMDQ3MjExRUM4RDE3OUYxNjg3QTgxNkE2IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMi40IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkYzOTJDMDg3RjY0MjExRUJCMDlCQkZEMENDODc2MjlDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkYzOTJDMDg4RjY0MjExRUJCMDlCQkZEMENDODc2MjlDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+c+eNBwAABrRJREFUeNrtnMmT2lYQh5829oFhR4JhBAweO7Gd3alU5ZRL8jfnkmuSU8qxU3GZRRoQCAECCUagPYqXlB00G5aEXPV+B6oQQvqq1a9ft15LAEBBQUFBQUGFWMjOlhqRjSO2b+czpPlSu3E3fGcLimIYavlFhQAMQcAeWJ+nviB9tJb6/Le/1D2wHuR+uucj1jY7YcQ9sJKpfMRHZyaOY9jNe6E7W1R17ecY0xXd2gfLtiw/sUzrNg6ChjNuhRQLv8bcumHbAPHiLDbAcBzzBksZzbaWN1gmmioUMqgnWMunzxcm4gmWgVYePUx5gyU9+4XzyFoW0sQpivAESxV6nHfRfbqxvRmJtmUGHa5ug4USMe/CR4xAPcKC4RRiQSyIBbEgFsSCWBALYkEsiAWxIBbEglgQC2KFHgsPD0kSUVVghQkLRfBcJa+xozBhpQrlUpEsZIY/8yG5iCiGRfKNxr02XYlhf754CtQwYBXLjkqVCkUVnG9NKgPkQ2HZpu58IjiOJ0ut9lnrNBd5sx4Ur1TB4FBYlqYAECFJskyWHEOVk//9QpRp8OuhsIgMSSToVrvdqKUxDHtn8SZSv38wl0dyj46xfLVUKhX+f26i8WnQWOrbFWq08uRJLp9G0d01LguLB42lGW8WfbDicSThust2zHQDxYrEomfU0evpF026QW+3qsz1u70gsXK1k5P7X59cvZwoXgwGHD8TF1IwWFg8Hk8UqFarSZMxtx3MzWZzORt1ux1mogaVQcSoer1eIbOOjlxXcTdj9uJizC/FxWIVSGITSySTR9RJs9Gicq5E20vlUh4Pur3eSAws3yrUT09pspjOZI7dXWo6YFiWF+SlJOlBpIFoylGebDToZsWVyFqv15fzIdvv9wU1qOw0QTZP6TqZSR+lU+7RieszDDtZrFbyOpCkOe6gZEpUk6ZPMu5EsrySpsN+n2XloHJ5pFKnm3S1lDxKpVwvnj0ZdhlmKKxX67UeRImBOo6dyVZrztUrux7PlqSlLHIcw16MjaAqn2S10Wo0y7l4Muk+2W2GTK/L8HPFiQmBFGTxnBMpi2T99KSedE8cRHGxnHLDC3Yo3+XAH4IVKdbOzmi6mHSmGFd3MhZst9Nlp6utstFBAFhoLp/P5slKvV4l3fdYzOeLmTAasMPR/9pYcNv0BQtB0jXasROVi8ViUTcXB/KY6XSZC3HrZCzvUqHxBGGsb+4CujNWolAo5gsUVauRV8TL+WwqCuPxcDhevv/LcTFfqsVmL7obT62FoGgkRzfbZ41iiohGdpvqbMs2RLbfecnwsqZpxnv/TVbr7Vb7HP1d42wvsYpOVeCUUBRVLV/hToIwnTp2GnH8jvekmw8eVh0bp8HwNl1v12LZb8oCxCmc0uXm2VnjNEc4cknnTFMReh1n2M23hq7vmiP7zY/fpgkCA/bG+MCR+JYqVSqTBacmJ8mSuzupwoQXJsJkPOalK44VLdLVtyWQ/UFYDhWK4ASRP22023XyCMPxXfObhqEvRo6d+gPZMIyrG3xNVfemN9AwiXKBqpVK5WK5UnBvXRT50VjgBUHgp/oNdx4Mj7Ditc8ip+3zei6CYi6tz5qub6dM92VnICiml22EN2BVfngczZXK7tOvwY24ES/MpoIgA+91DVYxbyOIy2DWNVWTJh1nthtIhu1Pu/g1WIh7E/KCG3Kj8Xw6m8104JfuEuUtZ4ZTZlzPme3GG98ei7grljYeDFmeF8W5KPl9f+B2WJqyUdaji16vw80tEIBuhbV0SnKWny6Xi4UGQAiw7MtLRRFHvW6/O9kGeM/weqztxKnpBvxCkiQZgINiYfirhFNdXa5W/KjXZy7mIHDhLjP0v07tFL9sf8yv5NVKBWHAUgh2u55zQ4Zl+C04kHaxuIVlDgZzZXW5tkF4sF4QHZmbgcNqF6uDAE0FocNagxDoI1urRstZW1purTBhIWi69gm9efZcDY+1srhTeBVImuSW3RBdxGbiuy/b+WSUiKQQOzxY55nvn7yq5hNYmFy+lmu9vsdg2mEKEPHEmxIsXFhO+RvGcGpZVhixQiGIBbEgFsTaB8s2De8Cq2F69QAz8ObB+L2Odc09CCyaSHj2KoFEFPMIK06dZwxvLKZjdCWBeoOVeZyQTMSTMaFhxXsFj94Hkf3qgWF79YaDSDKBe4MVjcK49fFiIX6e8HZDexcLw3xtNSMwFNkHy7IMP7F0c79lTiW6EFHTr0uIrWXV2geLk/+Y436tCqAR+e+pug+WoW0Vwi8sxNiohyyLoaCgoKCgoKAC1z8J6rnVnnQOqwAAAABJRU5ErkJggg==",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 10,
|
||||
"last_updated": "2023-01-24T16:36:00+00:00",
|
||||
"score": 12,
|
||||
"self_url": "https://profectusmag.com/feed/",
|
||||
"site_name": "Profectus Magazine",
|
||||
"site_url": "https://profectusmag.com",
|
||||
"title": "Profectus Magazine",
|
||||
"url": "https://profectusmag.com/feed/",
|
||||
"velocity": 0.085,
|
||||
"version": "rss20"
|
||||
}
|
23
modules/data/feeds/sources/putanumonit.com/default.json
Normal file
23
modules/data/feeds/sources/putanumonit.com/default.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 33691,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "Upon a globe of math, a blog of math and puns",
|
||||
"favicon": "https://putanumonit.files.wordpress.com/2017/04/putanumonit-logo-square1.png?w=32",
|
||||
"favicon_data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAGj0lEQVRIx61WW29cVxVe61znzNXjscdzcXy348w4aWI3jUuapIqtVogqqlAFFMQbD32hUp+rPlXiBwAPCKGChIQqHmhASCBU0iqkKaRJ09hNPLHH1xnP3XO/nOtefRjf45gKuh+Ozt7n7O/be61vf3vhq29HYV9DQgQiQARgSPB/N+FQn5AIAIC+AWwAAODHL/sBYPrUTH9gtFTLG4b27Qs/+FZkFoDy5QyHSEAyL1tkHYOCAHjMDhAAERC5V57/0R8/+nW3N5zMLU+OXY4MPgsAg8HxL1fv/OWT3x9DMBqOel3+O7GPntw3BwBnhqcjfVMXJ15OFxPEzGwx8XjjwR8+/LlNUvwdofmVO7fm/nYMeofT98rFH2eKSUWyHx2iQiWdLib+efeD9XQMgBizErm4SdZSci5VSBQqqa1K1mTmoZhwBISAhE6b0yJ2dfLVTClRrOYOR++QivbJaXv+5bPfGQqOb+SWc6WkTbLXmhW/NzQ5dmkodGqrkhnpPbOWfvzLD97OljaPTMR2kg+trqcj/L2rb6ykFjRTffcn77kcntmp73qcPp/b73P7zwxf6HT5Vb0RHTyfLqyN9k58Fvs4V04duVDuiDFCvzccGTgf7OwDIN3UfvXnd1WjJYv2yMD5F89d8zh9FjMXkw8KpdT1W79tqFW74v4vMj20g2I1myqspoobqtb0OH0rm48A8Pq/fqPI9oX1+xxyN+5fjycflmr51VRMNZp3Yx83tToATI5cTBcTXysH/1vzd4QD3rDA8ffjnxIetQOf2//DmZ/qems6MqNI9lwp2e0JWKbhsneoRmt3WW0JcXQ4r81WLTowVVNriFBXa0cQRPufBWKSZKs0tgKdJxaT8/2Bsddn36zWi+niBgL0dY+Mec4HuWjYNtrXO2CAXlcrezwI9VbFqbgHAyfX0jFAPOxF9xZv9veMrGeXALDHGwYAIiuRi6+mFhCo3xOpfAb/+fzvuqEjoE2xXZq5ovmb5foW7VDkK5lI/7lqq+xUPDW1ekSSy41i+6WuVgGgUMnG1u6pRgsBs7coPr/IGGujmaaZWE2cGj5bE/MW2zOrPv/wvce3TvafzRSTh2Ua8IafNGmG4FI8b730RsipqJq+/5NhaPM3Y7aDJqHqKiLOLX0KQNw+2hEEGglP7MZTFiQAQgK/vevayUsDevMX77z2zHgvHfTyaqXCM2G/yiVJMU29fZ0cIAACgr3Jvf6QJAiyqHQ5fBd7AnZBRoa9IZ+mG7Dvt+BAt0oN3BkhgC8WP7F2urvMyJgFgMQIdsS3nt64NnX1nO5NxuOJhbi3y5vJF2t11aGI1brK8+hx2V+cPvXSMwEUlRuN1Fz5YRurodWevNEIEQkBOY7nhbZ3WsxKLWVv/vVP3W6vw2tziYrdbrsy5rkwEN3aqlQqdeA4vpZ573d3NNMcnHkOHSCgaIK5P4Z7sWPMEnjxi/jtvsDoSmoBADhO3LibtwfFqlZdX8iaWls8BHDEZd3Kl4W12mtS8HTXYHZ46H3jfraWPZCDR2v3psZeaKi1NjoA9PoGVh7GNIsxhqbG2tgER5cCmbnF4IY+bbS6ZK6nUP0+i/CABwgqrXKhnNkvhqDY2RFC3iHmsk2Ox+NdCBGff/lCos9j2ZJ1vtnqcrczeeCgleqFfT6Ojc9bsrPVG3UZFtQaplozBQ45BIT2scU9cABGUBj0rXSmZwcLN0IT7y992FYa97QVSaJtZPJ0ZU0Ojrt9vfatpFpTWa5mbjXMqkoNnVSDaQZTDdbSrXLLytdNpe6WOZRE0S1Ku4WP8DQC1Wjd1W8Ov37a7xur+xOBMGVTSSIwLDAsBkB2t+vE0Kiz2807BL5DEH1KRttcLePP6lPZTOzr3gccAQBxyAe7BnxOP6lgWRYCcjauyRqpwmpLrRMAPT1BgizY7LKj2ixbZCIhAMqCjEiqqSJxdpujqTcsxrKlzXw5qRm6KMkIpBs6ENptTkSOiEmChAC6qQFxkigbhsoQFFExmClYzBoOT5zoGTGM1uPEA0V2nht5odrc4jlxfuXfoc7+5c3Yc5Eryfy6JEnFao6RNRo+7VQ6Hizf7nIHllOPpqOzG5m4xQyXo9Nld69sPhoKRS1mVlul21/+ox0ikgTZMHRCQABZklVd21FJu3oBJGTY9hACQFmQdFOH7TKZgHDXnXheIGIWMSQkpHaSUTf1HTxoo8P2DNwe3z5e20/N1HY9huDA0d4t0QiPlek31b4Cx9JJjxBDkt0AAAAASUVORK5CYII=",
|
||||
"hubs": [
|
||||
"https://putanumonit.com/?pushpress=hub"
|
||||
],
|
||||
"is_podcast": false,
|
||||
"is_push": true,
|
||||
"item_count": 20,
|
||||
"last_updated": "2023-01-04T19:22:18+00:00",
|
||||
"score": 22,
|
||||
"self_url": "https://putanumonit.com/feed/",
|
||||
"site_name": "Put A Number On It!",
|
||||
"site_url": "https://putanumonit.com",
|
||||
"title": "Put A Number On It!",
|
||||
"url": "https://putanumonit.com/feed/",
|
||||
"velocity": 0.03,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/richardcarrier.info/default.json
Normal file
21
modules/data/feeds/sources/richardcarrier.info/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 17074,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": "Announcing appearances, publications, and analysis of questions historical, philosophical, and political by author, philosopher, and historian Richard Carrier.",
|
||||
"favicon": "https://www.richardcarrier.info/favicon.ico",
|
||||
"favicon_data_uri": "data:image/png;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAACrwL0AAAAAAC1jjAACAQMAHREOAC1JWgAZFRoACQQDACY4QwA1VFcAc9nlAChXcgA7QmkA+8eSAAUQHgBGlq8AIigvAIz9/wCyx6YAMjELADhXhAClZD0ACQMBAE6LfQAIJzYAzsORAFerpgAICRMA/rucAIvs+gAnNlAAGRo8AAgLGQA+U1UAFgsHAB4dRQAZDAoAJiQtAEU7KQCHkJQAVKLuADFAUwABAAIAAAEFABIcFgAjKTwAAAQFAA0WMQANGC4AHjZIAD5ZiwAIBgsAHhciAEhKRAA4TmIAHR8oAHRyaQAICxoAEwgIANy8mAAoUY8AV0g1AERqkQA1N0IARZS9AEhMZQCXgYMAEi5MAPm2fQAkTloACxsmAAMDAwBEeKAAWYe6AAEDDAC/tLcAXLnRACMxQwAUFywAHBgdABgYJgAtTnUAEhpHAGS24wA2cZ4ACy5EAINRIwAaKSwANThGABkvNQD/8coAuMWRABQSFQAAAAQAFTlBABkTGAAtZpAAGRUeAGfT8gAKBgQAZaXnAAkHBwAmL1AAEAUBAAoJDQDyzJwACyZIABgnMAAFMU4ANXiZAAoQGQAKCiIAireoAAYVKAAZDgoA5f/1AElQYQAVK04AJC0wAAICAgBfcWkASVJwAERAOwAhFhkALlFlAB8YHwA6NxgAXbXrAERrcwADCCYACg0RADI+LQAHDRoAj/H7AIqhwQBBPx4AakgdABEwTAA0STwAJi0oAAYgJgBaTUcAFxQUAGjU5QDxvZUAGxkRAAsgLwCkgokAFRksAEdCSwAeGCkAfrSqABwcLAABDyEA/PC4ACQZIwANCQ8AGR47AAURHgBOjaMA6LKQAEA5KAA3VXIATDAoAGZabgAQGBgABBgzAAgWLQAAAQEAHQ4MAAUaMAABAQEAlZR4ABwvQQAAAwcAeta2ACArRwAoJzsAm/38ADmDswBfvNUAgmBTABs8VgCouZ4AaVNIACIyXADF8tsAcVRLADY8OwAoIycAY15pAC9ZiAA3g5kAFRMTADk2VgBQgdEAVk5VAGdffgBybmMADAYIAAIRIABLsNcAFAsOAAoQHQAbIkkAJCQ0ACxGUQA+OTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAROhJj2IVhWuKqtdggMBAQF+eo24u7Wjk5Sodys5AQEBhzW8iyyRvT+GRy6CGwEBAYMIkkZXdnmkZRZuzYEBAQGKIVlNdEGQRGhjB5UAAQEBzoCMrSc7oBzCb8ulCQEBAQUxfHBbGWkNsVIvhGsBAQEQPMkPHYW6WkLFzEtYAQEBLVECYEARshe3OMQMvgEBATewtolqbEwaXniaxs8BAQFPmE6ecapVC0WvcxKsAQEBXCMfSg6ZyBjAtI8KlwEBAY6WnDMgp6ZDs2RTYp8BAQElymfHwVAwdW1JKH+iAQEBBn0EIiSbnblUPsNINgEBAWFfOnKpezRmvxQyHikBAYADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAAA=",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 10,
|
||||
"last_updated": "2023-01-24T17:28:06+00:00",
|
||||
"score": 14,
|
||||
"self_url": "https://www.richardcarrier.info/feed",
|
||||
"site_name": "Richard Carrier",
|
||||
"site_url": "https://www.richardcarrier.info",
|
||||
"title": "Richard Carrier",
|
||||
"url": "https://www.richardcarrier.info/feed",
|
||||
"velocity": 0.158,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/rifters.com/crawl/default.json
Normal file
21
modules/data/feeds/sources/rifters.com/crawl/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 213356,
|
||||
"content_type": "application/atom+xml; charset=utf-8",
|
||||
"description": "In love with the moment. Scared shitless of the future.",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 20,
|
||||
"last_updated": "2022-12-23T18:02:25+00:00",
|
||||
"score": 22,
|
||||
"self_url": "https://www.rifters.com/crawl/?feed=atom",
|
||||
"site_name": "Echopraxia",
|
||||
"site_url": "https://rifters.com",
|
||||
"title": "No Moods, Ads or Cutesy Fucking Icons",
|
||||
"url": "https://www.rifters.com/crawl/?feed=atom",
|
||||
"velocity": 0.068,
|
||||
"version": "atom10"
|
||||
}
|
21
modules/data/feeds/sources/rootsofprogress.org/default.json
Normal file
21
modules/data/feeds/sources/rootsofprogress.org/default.json
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 115494,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": "Embedded Linux, Electronics, and more.",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 3,
|
||||
"last_updated": "2021-06-02T00:00:00+00:00",
|
||||
"score": 20,
|
||||
"self_url": "https://sagacioussuricata.com/feed.xml",
|
||||
"site_name": "Sagacious Suricata",
|
||||
"site_url": "https://sagacioussuricata.com",
|
||||
"title": "Sagacious Suricata",
|
||||
"url": "https://sagacioussuricata.com/feed.xml",
|
||||
"velocity": 0.018,
|
||||
"version": "atom10"
|
||||
}
|
21
modules/data/feeds/sources/semiaccurate.com/default.json
Normal file
21
modules/data/feeds/sources/semiaccurate.com/default.json
Normal file
File diff suppressed because one or more lines are too long
23
modules/data/feeds/sources/sideways-view.com/default.json
Normal file
23
modules/data/feeds/sources/sideways-view.com/default.json
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 288864,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "Mad Science Blogging",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [
|
||||
"https://slimemoldtimemold.com/?pushpress=hub"
|
||||
],
|
||||
"is_podcast": false,
|
||||
"is_push": true,
|
||||
"item_count": 10,
|
||||
"last_updated": "2023-01-19T16:42:16+00:00",
|
||||
"score": 22,
|
||||
"self_url": "https://slimemoldtimemold.com/feed/",
|
||||
"site_name": "SLIME MOLD TIME MOLD",
|
||||
"site_url": "https://slimemoldtimemold.com",
|
||||
"title": "SLIME MOLD TIME MOLD",
|
||||
"url": "https://slimemoldtimemold.com/feed/",
|
||||
"velocity": 0.1,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/smbc-comics.com/default.json
Normal file
21
modules/data/feeds/sources/smbc-comics.com/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 16750,
|
||||
"content_type": "application/xml; charset=utf-8",
|
||||
"description": "Latest Saturday Morning Breakfast Cereal comics and news",
|
||||
"favicon": "https://www.smbc-comics.com/favicon.ico",
|
||||
"favicon_data_uri": "data:image/png;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAgI/wCChokAIDSDAI/u1QBNUCsATU7uAKqsvgAAALUARW+OAGu2xAAAAHQAHCssANLTyQBjZLsAISLJACxGVgA0VrUAov//AFdYaQCkpZQAU4qvAG25mwAREZYAf9a7AOrr5wAAANoAf4StAEVGngA4OTUAenxsABspZgANExMAFiGuADVYjABRiJIANDTOAMDBwwCR+O0AERHTABQU7QAAAJEAHzGeAGasrQBxcq0AdsWsADc5qgA0VEcAkZKTABERugAtL24AAQDuACpFPABQUZMAGCKSAEt9pQCOj4AADROpAA4QAgABAMkAAACkACtFqwDk59gAIjU3ABsodgAAABAAb7q1AENErQC1tr4AJCUhABwevQDGzL4Aiu3qAAkKsgCV//0ACAqbABka0AAGBr4ABwfmAKWnoAAVGJ8AAAD6ABESxwAkN24AoP/0AAcH1QABAIYA8PLiAAAA5AAHBvMAERoYAAYGqgAsRjMAnqCZABcYwgBSUzIABwfMAJj/8AAAAL8AExQHAHZ4qwAHB90AAACsAAUFlACztbcAdcezABobkwCP79wABQX6AAQFuAAHB+0AAwD1AAsL1gADAekADhWYAICCjACO89YAAQH/AA4O0ACR+fIAjvTsAAAAzgAAAIwAAACWAAYGsgAYJ5IABAPyAKP/9wAEBP8AAwPkAAABuQAOFMUAFyGyAAAA3gAAAKgABwb3ABIUuAAuRqkAAADzAAUE6QAAAOoABAHsAA4P0wD///wABwfwAAcH6gACAMEAn//2AAECAAACAPkAAQDxAAcG+gAFBfIAAgDlAAMC5gAAALsAAAD8AAAA+AAEBP0AAADsAAcH6AAAAJQAAAD/AAcH/wAFBPsAAADwAAcH9gAFBPEABwjsAAAAygAGB9YABgfLAAEA/wAAAPEACAj+AAYG9wAHB+wABwfrAAcH5wAAAM0ABwfcABARlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBWBwHj0ctSAEBAQABAQE/ZYmqECUohnwDkAEAAQFpUY1uFBUfOTOLh3QBAAEIg1KCQmSVHkY7XIGiDgAaSp5ttgZeMSZQYAwCoDYAD6ZwrRgvU3esTWsqlqMyAHFZhTdMoKWZmZ20ilRBCQA8OGxdLgSbb386Q1UwGSMAK4BJIXhqZ4iXIJRLDXkLACIFJ1tiLGNamFcXEzV1EgCafiRAFoSokm+McwoRPjQAKZ6caD2OqbKSkXJ7kxsCAF+fq05Ws7Kysm9mfU+1sAAdrqGyb7GysrKysbGxp2EARXqkAq+vr6+vr68CAnZEAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAP//AAA=",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 20,
|
||||
"last_updated": "2023-01-25T17:51:00+00:00",
|
||||
"score": 16,
|
||||
"self_url": "https://www.smbc-comics.com/comic/rss",
|
||||
"site_name": "Saturday Morning Breakfast Cereal - Intro",
|
||||
"site_url": "https://www.smbc-comics.com",
|
||||
"title": "Saturday Morning Breakfast Cereal",
|
||||
"url": "https://www.smbc-comics.com/comic/rss",
|
||||
"velocity": 0.997,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/spectrum.ieee.org/default.json
Normal file
21
modules/data/feeds/sources/spectrum.ieee.org/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 419093,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "IEEE Spectrum",
|
||||
"favicon": "https://assets.rebelmouse.io/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpbWFnZSI6Imh0dHBzOi8vYXNzZXRzLnJibC5tcy8yNjU5NjY0OS9vcmlnaW4ucG5nIiwiZXhwaXJlc19hdCI6MTcyMjY3NDUwNn0.E9lMSNv23A_GyW60aP_Rh5AzMMAKAHMpGrotgTDO5_Q/img.png?width=32&height=32",
|
||||
"favicon_data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAADWUlEQVRYhe2WW4hOURTH93HP7UHkjfIg5cntgRqMy4xvzpkbMzVm5sV1JjRDbkVERCFMrhNSUh4Z5ToueRsNuaTcIsUkIYWMMZef1rf2cc6Y7+hgyoPZtTv7nL3PWv+9/v+19jZ4hn/ZTRcAuijw/kA8bmic3Q1yekCu7TLO6Q6e03Ftp4jQtU9xkjAw3cAUA2m2y3iagVkWnABx4wJwI8bhb9kOZBlIN1A4ANZPh4NL4MR6OLkBqithswvFgxVIwgJx4wLIdizyVIAcNZjTTZ29byCyfXwPZ6ugcCBkRoMwP4z7DjJsWCNBGKirCRy1tnR0Hv727A4UDbKUdKTDBC/W+ZLRsG22hi8MQjifauDwMjXc3AQtzTpueAK1x+HSUXh+V7/JXONnHV8+1n5TkRQkDDyq0592FKnDpKJD8/ev6fy3Jn3Wn4f83jDTaJc1p3d3jMr84ZYKJwJAtqNhWjcNvn7Rn3YWKwhJLxFeXi94+dAC+KrPIytgnG/YRrGgP9Sfg3vX4PZFuFMLFWMU4E9RMO24lUlJo1WToKkxAJFu56Q/qQ9CnAz/U9iQASVDYE5frQOzQikpEckK+YjWgNFJ2a04XDVReU6CKNFvwmPNXhuBRmhtDULc+AnevYKnt3T3NVWajuI8QoCpC5EPQkS4fDx8/qAO9i1SOuYNa59+Eonmb9AWAhNuQkPp0DhZYH4NoGqBikgMlY+Cu1egrS21U0lDAeXTJBpIxC1EuakosGKU+UzLrbwvHAG7SuH4GjizB26cgsd1ISCtQU1YPQlm/I0IPUfVXTkWVkzQXjZS53xAmbZvL9R/JUJ+FPaX6bpwWnux07CnptfikZp+sjPhXIwLHZJe+X10nYhO1r55oTaECmlSwJIAevxJIXKCaujXgRZr+OZZKOinIGbYTNnkBhniR2BLruoqMgJejFIs4T60NFSKLYi3L+H6SbhQDbfOB7v2i9W7Bj05k0J0/vIwShi4eqK94n9uwn04Q7bmxTwL3BjHcZYFUV0Br5+nTkOfogc3YG1aoH63My4kntWD0CGH0NrJcKDcXkg2wrGVsGOuilNEHXYeqxJ6v3Ely7IOwleyyRZcRii1Y1/JvN8EkepSmryYdg+O3U6/lHqd200XAP53Cr4DHOtbq3CQHqsAAAAASUVORK5CYII=",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 30,
|
||||
"last_updated": "2023-01-25T16:00:04+00:00",
|
||||
"score": 20,
|
||||
"self_url": "https://spectrum.ieee.org/feeds/feed.rss",
|
||||
"site_name": "IEEE Spectrum",
|
||||
"site_url": "https://spectrum.ieee.org",
|
||||
"title": "IEEE Spectrum",
|
||||
"url": "https://spectrum.ieee.org/feeds/feed.rss",
|
||||
"velocity": 0.082,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/stpeter.im/atom.xml/default.json
Normal file
21
modules/data/feeds/sources/stpeter.im/atom.xml/default.json
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 14271,
|
||||
"content_type": "application/rss+xml; charset=utf-8",
|
||||
"description": "systems | complexity | second-order effects",
|
||||
"favicon": "https://cdn-dlcpd.nitrocdn.com/AXTCkwJcRLSJOItDRESOskxEnohxciAV/assets/images/optimized/wp-content/uploads/2018/04/Unintended-Consequences-1-100x100.png",
|
||||
"favicon_data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkBAMAAACCzIhnAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAkUExURSA4ZP///+Xo7fX2+C1DbT9UelRmiM7T3ZmkuGt7mIORqbS8y5bZow4AAAKMSURBVFjD7ZbLTxNBGMDnUJvCbXcOi/RUGsXoqd2EiKc9yEsuDWkF46UpESOeeCUIF7SQQLkUG/F1gUQbwVOVIPx3zvOb2dlZAok35zvNtzO/me813yzybizIIQ5xiEMc8u+QcKhYugmCh1uHtaev9pdTERwS0fTyXhVRyYx9WlHIEJGiXJJfINIDwv+OQMabEvFf1Gq1WUAiMtmBM3eQJjMSGaDaPGxbJxps8CayIreppcqUI6JOinFQR1bkDlFuFQA5I2qfGK8hO7JK10DcvbtEzRZshyhkiyg5FVVm5xLQNgS3iTKtkAFwDR+JpZlnp7snHyJAWIhmFBLQIB1DvCnxlWatvF6XSFCJIz5deEBHo+KQ59xR/OC9RCIDqchcnnEiuySnSgLJ088NA2GZbXPkZaL488hyyrwcQPSuRKShAfd+qpRAWIlNGxGjhg5yuyY8+ym5eF6YYSJgjRQkq04fkcgIR45TEM1HFtqOKFc7wr1sxO4LS6VA3iYRHsuctGwQtk5HWFmiTFPc3G0kyzLdMFb8CD3hV2QjAteE+wcWZJVPzZGegzd4xlkAR9UlMRF5kaZOW11R7v2QIGsq5ZQuE54qmL5kwfALE5eOp5Vlz9LGt0yCJxaL4p+1IGZXkLYkrlgZkLxpmdhXXuTXwpt7X1Tn3zbs6mntmeofi/TN2Kv0K+RRrPNCe9Wa0u5Ft8pjLxD8LXZIU2+cumiI91D3Zg4SYTZYHfHO1fes1h7WrkB8eHrG3mlJCNrpiOefP2Z+jP+KJe5+lI54ePPkcOHzzxXjtb2MjFDGX+QwLCUf6EuITGbx9/XefbzZrUb0DV/8U7j230U4fNH6sb9ccv9jDnGIQxzyfyJ/AYXxdx48GBSRAAAAAElFTkSuQmCC",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 10,
|
||||
"last_updated": "2022-09-27T19:12:34+00:00",
|
||||
"score": 12,
|
||||
"self_url": "https://unintendedconsequenc.es/feed/",
|
||||
"site_name": "Unintended Consequences",
|
||||
"site_url": "https://unintendedconsequenc.es",
|
||||
"title": "Unintended Consequences",
|
||||
"url": "https://unintendedconsequenc.es/feed/",
|
||||
"velocity": 0.019,
|
||||
"version": "rss20"
|
||||
}
|
21
modules/data/feeds/sources/vitalik.ca/default.json
Normal file
21
modules/data/feeds/sources/vitalik.ca/default.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"bozo": 1,
|
||||
"content_length": 29010,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": "Vitalik Buterin's website",
|
||||
"favicon": "",
|
||||
"favicon_data_uri": "",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 101,
|
||||
"last_updated": "2023-01-20T00:00:00+00:00",
|
||||
"score": 0,
|
||||
"self_url": "",
|
||||
"site_name": " Vitalik Buterin's website ",
|
||||
"site_url": "https://vitalik.ca",
|
||||
"title": "Vitalik Buterin's website",
|
||||
"url": "https://vitalik.ca/feed.xml",
|
||||
"velocity": 0.011,
|
||||
"version": "rss20"
|
||||
}
|
@@ -1,21 +1,21 @@
|
||||
{
|
||||
"bozo": 0,
|
||||
"content_length": 2302,
|
||||
"content_length": 1913,
|
||||
"content_type": "text/xml; charset=utf-8",
|
||||
"description": null,
|
||||
"description": "xkcd.com: A webcomic of romance and math humor.",
|
||||
"favicon": "https://xkcd.com/s/919f27.ico",
|
||||
"favicon_data_uri": "data:image/png;base64,AAABAAIAEBAAAAAAAABoBQAAJgAAACAgEAAAAAAA6AIAAI4FAAAoAAAAEAAAACAAAAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAJycnABGRkYAenp6AIODgwAkJCQA6+vrAIyMjAAdHR0A29vbAHx8fAAvLy8Ajo6OADg4OAD///8AFhYWAEpKSgB+fn4AsrKyACgoKAAGBgYA+Pj4AKKiogDW1tYAd3d3AICAgAAqKioAiYmJAOjo6AC9vb0AXl5eAPHx8QBnZ2cA+vr6AHBwcADh4eEAgoKCAIuLiwBgYGAA8/PzAJ2dnQBHR0cAe3t7AOPj4wAlJSUAn5+fANPT0wB0dHQAsbGxAFtbWwCPj48AMDAwADk5OQChoaEAdnZ2AH9/fwApKSkAiIiIAJqamgBvb28AeHh4ANfX1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0zADc7NwAzMwAEBAATNzM8DgAODg4ADg4ADg4ADg48Ig4aKg4DGg4OKTASDQ4OIiIOKggOOAMODi00NDUODiIZIA4AKAAOHgkOAAAOLh08OQ8bDgAOGwUAFQwMFQAjGBgfAA4ADgAcIQACAgAnDiIiDiQsACwkDgEQAAAQAQ4iIg4OFgAWDg4CAAAAAAIOIiIOJAAAACQOLxEODjsvDiIYKxQXDhcUKzYlDg4OJg4iGTs9Dg4OPTsyAAcOIjsOIhkYPA4ODjw2BwAAAAAKDiIYBgALMgsACQ4xAAAxDg4iPA46AAAAOg4ODg4ODg4OPDMYEQwyDBE7Ozs7Ozs7GDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAEAAAAAAAAAgAAAAAAAAAAAAAQAAAAAAAAAAAAAADPz88A39/fACAgIAD///8AcHBwAICAgACQkJAAoKCgANfX1wAoKCgAf39/AIiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAREREAARAAEREAAREQAREAERERABERABERABEREAERABEREQAREQAVEUARERABEQwNERDA0REYHRHDEREQAREQAREQAREREAEQAFEREAEREAJREAERERABmAERERABERDCkQwNERETAiAxEREQARERABEAEREREEAABREREAEAEQwAANEADREMANEQwRABAA0QwA0QwADREAERDA0QARABEQAREAEMDRABEMDREAEQwNEAEQwNEMDQAQwNERABEQwNABDA0REMAAAA0REQAREQAQAQAREREAAAAREREAEREMAAAA0RFAAAAAABURABEREMAADRERQAAAAAAVEQAREREQAREREQAAAAAAEREAEREQwAANEREADREQwBERABEQwAAAAA0RAJEREQgREQAREAAREQABEQEREREQEREAEQwRERERANEADREREBERABEAEREREQARAADREQwREQARAREREREQEQAAERCAEREAEQARERERABEAAAAAABERABEAEREREQARDAAAAADREQARDAAREQAA0RDAAAANEREAERAAAAAAARERLAAC0RERABEQwAAAAA0REREREREREQARERDAAA0REREREREREREAERERERERERERERERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"hubs": [],
|
||||
"is_podcast": false,
|
||||
"is_push": false,
|
||||
"item_count": 4,
|
||||
"last_seen": "2023-01-11T10:29:36.530001+00:00",
|
||||
"last_updated": "2023-01-09T00:00:00+00:00",
|
||||
"score": 16,
|
||||
"self_url": null,
|
||||
"last_updated": "2023-01-25T05:00:00+00:00",
|
||||
"score": 24,
|
||||
"self_url": "",
|
||||
"site_name": "xkcd",
|
||||
"site_url": "https://xkcd.com",
|
||||
"title": "xkcd.com",
|
||||
"url": "https://xkcd.com/atom.xml",
|
||||
"url": "https://xkcd.com/rss.xml",
|
||||
"velocity": 0.429,
|
||||
"version": "atom10"
|
||||
}
|
||||
"version": "rss20"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@@ -13,24 +13,6 @@ let
|
||||
pkg-list = pkgspec: builtins.map (e: e.pkg) pkgspec;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./aerc.nix
|
||||
./firefox.nix
|
||||
./gfeeds.nix
|
||||
./git.nix
|
||||
./gpodder.nix
|
||||
./keyring.nix
|
||||
./kitty.nix
|
||||
./mpv.nix
|
||||
./neovim.nix
|
||||
./newsflash.nix
|
||||
./splatmoji.nix
|
||||
./ssh.nix
|
||||
./sublime-music.nix
|
||||
./vlc.nix
|
||||
./zsh
|
||||
];
|
||||
|
||||
options = {
|
||||
sane.home-manager.enable = mkOption {
|
||||
default = false;
|
||||
@@ -41,106 +23,30 @@ in
|
||||
default = {};
|
||||
type = types.attrs;
|
||||
};
|
||||
|
||||
# extra attributes to include in home-manager's `programs` option
|
||||
sane.home-manager.programs = mkOption {
|
||||
default = {};
|
||||
type = types.attrs;
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
|
||||
# XXX this weird rename + closure is to get home-manager's `config.lib.file` to exist.
|
||||
# see: https://github.com/nix-community/home-manager/issues/589#issuecomment-950474105
|
||||
home-manager.users.colin = let sysconfig = config; in { config, ... }: {
|
||||
home-manager.users.colin = {
|
||||
|
||||
# run `home-manager-help` to access manpages
|
||||
# or `man home-configuration.nix`
|
||||
manual.html.enable = false; # TODO: set to true later (build failure)
|
||||
manual.manpages.enable = false; # TODO: enable after https://github.com/nix-community/home-manager/issues/3344
|
||||
|
||||
home.packages = pkg-list sysconfig.sane.packages.enabledUserPkgs;
|
||||
home.packages = pkg-list config.sane.packages.enabledUserPkgs;
|
||||
wayland.windowManager = cfg.windowManager;
|
||||
|
||||
home.stateVersion = "21.11";
|
||||
home.username = "colin";
|
||||
home.homeDirectory = "/home/colin";
|
||||
|
||||
# XDG defines things like ~/Desktop, ~/Downloads, etc.
|
||||
# these clutter the home, so i mostly don't use them.
|
||||
xdg.userDirs = {
|
||||
enable = true;
|
||||
createDirectories = false; # on headless systems, most xdg dirs are noise
|
||||
desktop = "$HOME/.xdg/Desktop";
|
||||
documents = "$HOME/dev";
|
||||
download = "$HOME/tmp";
|
||||
music = "$HOME/Music";
|
||||
pictures = "$HOME/Pictures";
|
||||
publicShare = "$HOME/.xdg/Public";
|
||||
templates = "$HOME/.xdg/Templates";
|
||||
videos = "$HOME/Videos";
|
||||
programs = {
|
||||
# XXX: unsure what this does?
|
||||
home-manager.enable = true;
|
||||
};
|
||||
|
||||
# the xdg mime type for a file can be found with:
|
||||
# - `xdg-mime query filetype path/to/thing.ext`
|
||||
xdg.mimeApps.enable = true;
|
||||
xdg.mimeApps.defaultApplications = let
|
||||
www = sysconfig.sane.web-browser.browser.desktop;
|
||||
pdf = "org.gnome.Evince.desktop";
|
||||
md = "obsidian.desktop";
|
||||
thumb = "org.gnome.gThumb.desktop";
|
||||
video = "vlc.desktop";
|
||||
# audio = "mpv.desktop";
|
||||
audio = "vlc.desktop";
|
||||
in {
|
||||
# HTML
|
||||
"text/html" = [ www ];
|
||||
"x-scheme-handler/http" = [ www ];
|
||||
"x-scheme-handler/https" = [ www ];
|
||||
"x-scheme-handler/about" = [ www ];
|
||||
"x-scheme-handler/unknown" = [ www ];
|
||||
# RICH-TEXT DOCUMENTS
|
||||
"application/pdf" = [ pdf ];
|
||||
"text/markdown" = [ md ];
|
||||
# IMAGES
|
||||
"image/heif" = [ thumb ]; # apple codec
|
||||
"image/png" = [ thumb ];
|
||||
"image/jpeg" = [ thumb ];
|
||||
# VIDEO
|
||||
"video/mp4" = [ video ];
|
||||
"video/quicktime" = [ video ];
|
||||
"video/x-matroska" = [ video ];
|
||||
# AUDIO
|
||||
"audio/flac" = [ audio ];
|
||||
"audio/mpeg" = [ audio ];
|
||||
"audio/x-vorbis+ogg" = [ audio ];
|
||||
};
|
||||
|
||||
# libreoffice: disable first-run stuff
|
||||
xdg.configFile."libreoffice/4/user/registrymodifications.xcu".text = ''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="FirstRun" oor:op="fuse"><value>false</value></prop></item>
|
||||
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="ShowTipOfTheDay" oor:op="fuse"><value>false</value></prop></item>
|
||||
</oor:items>
|
||||
'';
|
||||
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeDonateShown" oor:op="fuse"><value>1667693880</value></prop></item>
|
||||
# <item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeGetInvolvedShown" oor:op="fuse"><value>1667693880</value></prop></item>
|
||||
|
||||
|
||||
programs = lib.mkMerge [
|
||||
{
|
||||
home-manager.enable = true; # this lets home-manager manage dot-files in user dirs, i think
|
||||
# "command not found" will cause the command to be searched in nixpkgs
|
||||
nix-index.enable = true;
|
||||
}
|
||||
cfg.programs
|
||||
];
|
||||
};
|
||||
|
||||
sane.persist.home.plaintext = [ ".cache/nix-index" ];
|
||||
};
|
||||
}
|
||||
|
@@ -1,20 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
home-manager.users.colin.programs.git = {
|
||||
enable = true;
|
||||
userName = "colin";
|
||||
userEmail = "colin@uninsane.org";
|
||||
|
||||
aliases = { co = "checkout"; };
|
||||
extraConfig = {
|
||||
# difftastic docs:
|
||||
# - <https://difftastic.wilfred.me.uk/git.html>
|
||||
diff.tool = "difftastic";
|
||||
difftool.prompt = false;
|
||||
"difftool \"difftastic\"".cmd = ''${pkgs.difftastic}/bin/difft "$LOCAL" "$REMOTE"'';
|
||||
# now run `git difftool` to use difftastic git
|
||||
};
|
||||
};
|
||||
}
|
@@ -1,71 +0,0 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
home-manager.users.colin.programs.kitty = {
|
||||
enable = true;
|
||||
# docs: https://sw.kovidgoyal.net/kitty/conf/
|
||||
settings = {
|
||||
# disable terminal bell (when e.g. you backspace too many times)
|
||||
enable_audio_bell = false;
|
||||
};
|
||||
keybindings = {
|
||||
"ctrl+n" = "new_os_window_with_cwd";
|
||||
};
|
||||
# docs: https://github.com/kovidgoyal/kitty-themes
|
||||
# theme = "1984 Light"; # dislike: awful, harsh blues/teals
|
||||
# theme = "Adventure Time"; # dislike: harsh (dark)
|
||||
# theme = "Atom One Light"; # GOOD: light theme. all color combos readable. not a huge fan of the blue.
|
||||
# theme = "Belafonte Day"; # dislike: too low contrast for text colors
|
||||
# theme = "Belafonte Night"; # better: dark theme that's easy on the eyes. all combos readable. low contrast.
|
||||
# theme = "Catppuccin"; # dislike: a bit pale/low-contrast (dark)
|
||||
# theme = "Desert"; # mediocre: colors are harsh
|
||||
# theme = "Earthsong"; # BEST: dark theme. readable, good contrast. unique, but decent colors.
|
||||
# theme = "Espresso Libre"; # better: dark theme. readable, but meh colors
|
||||
# theme = "Forest Night"; # decent: very pastel. it's workable, but unconventional and muted/flat.
|
||||
# theme = "Gruvbox Material Light Hard"; # mediocre light theme.
|
||||
# theme = "kanagawabones"; # better: dark theme. colors are too background-y
|
||||
# theme = "Kaolin Dark"; # dislike: too dark
|
||||
# theme = "Kaolin Breeze"; # mediocre: not-too-harsh light theme, but some parts are poor contrast
|
||||
# theme = "Later This Evening"; # mediocre: not-too-harsh dark theme, but cursor is poor contrast
|
||||
# theme = "Material"; # decent: light theme, few colors.
|
||||
# theme = "Mayukai"; # decent: not-too-harsh dark theme. the teal is a bit straining
|
||||
# theme = "Nord"; # mediocre: pale background, low contrast
|
||||
# theme = "One Half Light"; # better: not-too-harsh light theme. contrast could be better
|
||||
theme = "PaperColor Dark"; # BEST: dark theme, very readable still the colors are background-y
|
||||
# theme = "Parasio Dark"; # dislike: too low contrast
|
||||
# theme = "Pencil Light"; # better: not-too-harsh light theme. decent contrast.
|
||||
# theme = "Pnevma"; # dislike: too low contrast
|
||||
# theme = "Piatto Light"; # better: readable light theme. pleasing colors. powerline prompt is hard to read.
|
||||
# theme = "Rosé Pine Dawn"; # GOOD: light theme. all color combinations are readable. it is very mild -- may need to manually tweak contrast. tasteful colors
|
||||
# theme = "Rosé Pine Moon"; # GOOD: dark theme. tasteful colors. but background is a bit intense
|
||||
# theme = "Sea Shells"; # mediocre. not all color combos are readable
|
||||
# theme = "Solarized Light"; # mediocre: not-too-harsh light theme; GREAT background; but some colors are low contrast
|
||||
# theme = "Solarized Dark Higher Contrast"; # better: dark theme, decent colors
|
||||
# theme = "Sourcerer"; # mediocre: ugly colors
|
||||
# theme = "Space Gray"; # mediocre: too muted
|
||||
# theme = "Space Gray Eighties"; # better: all readable, decent colors
|
||||
# theme = "Spacemacs"; # mediocre: too muted
|
||||
# theme = "Spring"; # mediocre: readable light theme, but the teal is ugly.
|
||||
# theme = "Srcery"; # better: highly readable. colors are ehhh
|
||||
# theme = "Substrata"; # decent: nice colors, but a bit flat.
|
||||
# theme = "Sundried"; # mediocre: the solar text makes me squint
|
||||
# theme = "Symfonic"; # mediocre: the dark purple has low contrast to the black bg.
|
||||
# theme = "Tango Light"; # dislike: teal is too grating
|
||||
# theme = "Tokyo Night Day"; # medicore: too muted
|
||||
# theme = "Tokyo Night"; # better: tasteful. a bit flat
|
||||
# theme = "Tomorrow"; # GOOD: all color combinations are readable. contrast is slightly better than Rose. on the blander side
|
||||
# theme = "Treehouse"; # dislike: the orange is harsh on my eyes.
|
||||
# theme = "Urple"; # dislike: weird palette
|
||||
# theme = "Warm Neon"; # decent: not-too-harsh dark theme. the green is a bit unattractive
|
||||
# theme = "Wild Cherry"; # GOOD: dark theme: nice colors. a bit flat
|
||||
# theme = "Xcodedark"; # dislike: bad palette
|
||||
# theme = "citylights"; # decent: dark theme. some parts have just a bit low contrast
|
||||
# theme = "neobones_light"; # better light theme. the background is maybe too muted
|
||||
# theme = "vimbones";
|
||||
# theme = "zenbones_dark"; # mediocre: readable, but meh colors
|
||||
# theme = "zenbones_light"; # decent: light theme. all colors are readable. contrast is passable but not excellent. highlight color is BAD
|
||||
# theme = "zenwritten_dark"; # mediocre: looks same as zenbones_dark
|
||||
# extraConfig = "";
|
||||
};
|
||||
}
|
@@ -1,13 +0,0 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
home-manager.users.colin.programs.mpv = {
|
||||
enable = true;
|
||||
config = {
|
||||
save-position-on-quit = true;
|
||||
keep-open = "yes";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@@ -1,109 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
# private because there could be sensitive things in the swap
|
||||
sane.persist.home.private = [ ".cache/vim-swap" ];
|
||||
|
||||
home-manager.users.colin.programs.neovim = {
|
||||
# neovim: https://github.com/neovim/neovim
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# docs: surround-nvim: https://github.com/ur4ltz/surround.nvim/
|
||||
# docs: vim-surround: https://github.com/tpope/vim-surround
|
||||
vim-surround
|
||||
# docs: fzf-vim (fuzzy finder): https://github.com/junegunn/fzf.vim
|
||||
fzf-vim
|
||||
# docs: https://github.com/KeitaNakamura/tex-conceal.vim/
|
||||
({
|
||||
plugin = tex-conceal-vim;
|
||||
type = "viml";
|
||||
config = ''
|
||||
" present prettier fractions
|
||||
let g:tex_conceal_frac=1
|
||||
'';
|
||||
})
|
||||
({
|
||||
plugin = vim-SyntaxRange;
|
||||
type = "viml";
|
||||
config = ''
|
||||
" enable markdown-style codeblock highlighting for tex code
|
||||
autocmd BufEnter * call SyntaxRange#Include('```tex', '```', 'tex', 'NonText')
|
||||
" autocmd Syntax tex set conceallevel=2
|
||||
'';
|
||||
})
|
||||
# treesitter syntax highlighting: https://nixos.wiki/wiki/Tree_sitters
|
||||
# docs: https://github.com/nvim-treesitter/nvim-treesitter
|
||||
# config taken from: https://github.com/i077/system/blob/master/modules/home/neovim/default.nix
|
||||
# this is required for tree-sitter to even highlight
|
||||
({
|
||||
plugin = nvim-treesitter.withAllGrammars;
|
||||
type = "lua";
|
||||
config = ''
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
highlight = {
|
||||
enable = true,
|
||||
-- disable treesitter on Rust so that we can use SyntaxRange
|
||||
-- and leverage TeX rendering in rust projects
|
||||
disable = { "rust", "tex", "latex" },
|
||||
-- disable = { "tex", "latex" },
|
||||
-- true to also use builtin vim syntax highlighting when treesitter fails
|
||||
additional_vim_regex_highlighting = false
|
||||
},
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "gnn",
|
||||
node_incremental = "grn",
|
||||
mcope_incremental = "grc",
|
||||
node_decremental = "grm"
|
||||
}
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
disable = {}
|
||||
}
|
||||
}
|
||||
|
||||
vim.o.foldmethod = 'expr'
|
||||
vim.o.foldexpr = 'nvim_treesitter#foldexpr()'
|
||||
'';
|
||||
})
|
||||
];
|
||||
extraConfig = ''
|
||||
" let the terminal handle mouse events, that way i get OS-level ctrl+shift+c/etc
|
||||
" this used to be default, until <https://github.com/neovim/neovim/pull/19290>
|
||||
set mouse=
|
||||
|
||||
" copy/paste to system clipboard
|
||||
set clipboard=unnamedplus
|
||||
|
||||
" screw tabs; always expand them into spaces
|
||||
set expandtab
|
||||
|
||||
" at least don't open files with sections folded by default
|
||||
set nofoldenable
|
||||
|
||||
" allow text substitutions for certain glyphs.
|
||||
" higher number = more aggressive substitution (0, 1, 2, 3)
|
||||
" i only make use of this for tex, but it's unclear how to
|
||||
" apply that *just* to tex and retain the SyntaxRange stuff.
|
||||
set conceallevel=2
|
||||
|
||||
" horizontal rule under the active line
|
||||
" set cursorline
|
||||
|
||||
" highlight trailing space & related syntax errors (doesn't seem to work??)
|
||||
" let c_space_errors=1
|
||||
" let python_space_errors=1
|
||||
|
||||
" enable highlighting of leading/trailing spaces,
|
||||
" and especially tabs
|
||||
" source: https://www.reddit.com/r/neovim/comments/chlmfk/highlight_trailing_whitespaces_in_neovim/
|
||||
set list
|
||||
set listchars=tab:▷\·,trail:·,extends:◣,precedes:◢,nbsp:○
|
||||
'';
|
||||
};
|
||||
}
|
@@ -1,108 +0,0 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
lib.mkIf config.sane.home-manager.enable
|
||||
{
|
||||
sane.persist.home.plaintext = [
|
||||
# we don't need to full zsh dir -- just the history file --
|
||||
# but zsh will sometimes backup the history file and we get fewer errors if we do proper mounts instead of symlinks.
|
||||
# TODO: should be private?
|
||||
".local/share/zsh"
|
||||
# cache gitstatus otherwise p10k fetched it from the net EVERY BOOT
|
||||
".cache/gitstatus"
|
||||
];
|
||||
|
||||
home-manager.users.colin.programs.zsh = {
|
||||
enable = true;
|
||||
enableSyntaxHighlighting = true;
|
||||
enableVteIntegration = true;
|
||||
history.ignorePatterns = [ "rm *" ];
|
||||
dotDir = ".config/zsh";
|
||||
history.path = "/home/colin/.local/share/zsh/history";
|
||||
|
||||
# defaultKeymap = "vicmd"; # vim normal mode (cmd mode)
|
||||
|
||||
# powerlevel10k prompt config
|
||||
# p10k.zsh is the auto-generated config, and i overwrite those defaults here, below.
|
||||
initExtraBeforeCompInit = (builtins.readFile ./p10k.zsh) + ''
|
||||
# powerlevel10k launches a gitstatusd daemon to accelerate git prompt queries.
|
||||
# this keeps open file handles for any git repo i touch for 60 minutes (by default).
|
||||
# that prevents unmounting whatever device the git repo is on -- particularly problematic for ~/private.
|
||||
# i can disable gitstatusd and get slower fallback git queries:
|
||||
# - either universally
|
||||
# - or selectively by path
|
||||
# see: <https://github.com/romkatv/powerlevel10k/issues/246>
|
||||
typeset -g POWERLEVEL9K_VCS_DISABLED_DIR_PATTERN='(/home/colin/private/*|/home/colin/knowledge/*)'
|
||||
# typeset -g POWERLEVEL9K_DISABLE_GITSTATUS=true
|
||||
|
||||
# show user@host also when logged into the current machine.
|
||||
# default behavior is to show it only over ssh.
|
||||
typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION='$P9K_CONTENT'
|
||||
'';
|
||||
|
||||
initExtra = ''
|
||||
# zmv is a way to do rich moves/renames, with pattern matching/substitution.
|
||||
# see for an example: <https://filipe.kiss.ink/zmv-zsh-rename/>
|
||||
autoload -Uz zmv
|
||||
|
||||
# disable `rm *` confirmations
|
||||
setopt rmstarsilent
|
||||
|
||||
function nd() {
|
||||
mkdir -p "$1";
|
||||
pushd "$1";
|
||||
}
|
||||
'';
|
||||
|
||||
# prezto = oh-my-zsh fork; controls prompt, auto-completion, etc.
|
||||
# see: https://github.com/sorin-ionescu/prezto
|
||||
prezto = {
|
||||
enable = true;
|
||||
pmodules = [
|
||||
# configures jobs to persist after shell exit; other basic niceties
|
||||
"environment"
|
||||
# auto-titles terminal (e.g. based on cwd)
|
||||
"terminal"
|
||||
# configures shortcuts like Ctrl+U=undo, Ctrl+L=clear
|
||||
"editor"
|
||||
# adds `history-stat` alias, setopts for good history defaults
|
||||
"history"
|
||||
# sets AUTO_CD, adds `d` alias to list directory stack, and `1`-`9` to cd that far back the stack
|
||||
"directory"
|
||||
# helpers for term colors and styling. used by prompts? might be unnecessary
|
||||
"spectrum"
|
||||
# configures aliases like `ll`, `la`, disables globbing for things like rsync
|
||||
# adds aliases like `get` to fetch a file. also adds `http-serve` alias??
|
||||
"utility"
|
||||
# tab completion. requires `utility` module prior to loading
|
||||
# TODO: enable AUTO_PARAM_SLASH
|
||||
"completion"
|
||||
"prompt"
|
||||
# TODO: enable syntax-highlighting ?
|
||||
];
|
||||
prompt.theme = "powerlevel10k";
|
||||
utility.safeOps = false; # disable `mv` confirmation (and supposedly `rm`, too)
|
||||
# editor.keymap = "vi";
|
||||
};
|
||||
|
||||
dirHashes = {
|
||||
# convenient `cd`-isms
|
||||
"3rd" = "/home/colin/dev/3rd";
|
||||
"dev" = "/home/colin/dev";
|
||||
"knowledge" = "/home/colin/knowledge";
|
||||
"nixos" = "/home/colin/nixos";
|
||||
"nixpkgs" = "/home/colin/dev/3rd/nixpkgs";
|
||||
"ref" = "/home/colin/ref";
|
||||
"secrets" = "/home/colin/knowledge/secrets";
|
||||
"tmp" = "/home/colin/tmp";
|
||||
"uninsane" = "/home/colin/dev/uninsane";
|
||||
"Videos" = "/home/colin/Videos";
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users.colin.home.shellAliases = {
|
||||
":q" = "exit";
|
||||
# common typos
|
||||
"cd.." = "cd ..";
|
||||
"cd../" = "cd ../";
|
||||
};
|
||||
}
|
@@ -2,6 +2,7 @@
|
||||
|
||||
rec {
|
||||
wanted = lib.attrsets.unionOfDisjoint { wantedBeforeBy = [ "multi-user.target" ]; };
|
||||
wantedDir = wanted { dir = {}; };
|
||||
wantedSymlink = symlink: wanted { inherit symlink; };
|
||||
wantedSymlinkTo = target: wantedSymlink { inherit target; };
|
||||
wantedText = text: wantedSymlink { inherit text; };
|
||||
|
@@ -112,6 +112,7 @@ let
|
||||
|
||||
kdenlive
|
||||
kid3 # audio tagging
|
||||
kitty
|
||||
krita
|
||||
libreoffice-fresh # XXX colin: maybe don't want this on mobile
|
||||
lollypop
|
||||
@@ -205,6 +206,7 @@ let
|
||||
fd
|
||||
file
|
||||
gawk
|
||||
git
|
||||
gptfdisk
|
||||
hdparm
|
||||
htop
|
||||
|
@@ -160,7 +160,9 @@ let
|
||||
store-names;
|
||||
in {
|
||||
byPath = lib.mkMerge (concatLists [
|
||||
# convert the list-style per-store entries into attrsOf entries
|
||||
(applyToAllStores (store: dirToAttrs))
|
||||
# add the `store` attr to everything we ingested
|
||||
(applyToAllStores annotateWithStore)
|
||||
]);
|
||||
};
|
||||
|
@@ -72,6 +72,10 @@ in
|
||||
default = [];
|
||||
description = "array of ipv4 addresses on which to listen for DNS queries";
|
||||
};
|
||||
quiet = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
};
|
||||
# reference <nixpkgs:nixos/modules/services/web-servers/nginx/vhost-options.nix>
|
||||
zones = mkOption {
|
||||
type = types.attrsOf (types.submodule {
|
||||
@@ -160,11 +164,14 @@ in
|
||||
systemd.services.trust-dns = {
|
||||
description = "trust-dns DNS server";
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.trust-dns}/bin/named \
|
||||
--config ${configFile} \
|
||||
--zonedir /
|
||||
'';
|
||||
ExecStart =
|
||||
let
|
||||
flags = lib.optionalString cfg.quiet "-q";
|
||||
in ''
|
||||
${pkgs.trust-dns}/bin/named \
|
||||
--config ${configFile} \
|
||||
--zonedir / ${flags}
|
||||
'';
|
||||
Type = "simple";
|
||||
Restart = "on-failure";
|
||||
RestartSec = "10s";
|
||||
|
78
nixpatches/2023-01-25-signald-update.patch
Normal file
78
nixpatches/2023-01-25-signald-update.patch
Normal file
@@ -0,0 +1,78 @@
|
||||
diff --git a/pkgs/applications/networking/instant-messengers/signald/0001-Fetch-buildconfig-during-gradle-build-inside-Nix-FOD.patch b/pkgs/applications/networking/instant-messengers/signald/0001-Fetch-buildconfig-during-gradle-build-inside-Nix-FOD.patch
|
||||
index 1d9ca8d838d..d2cf9dd4315 100644
|
||||
--- a/pkgs/applications/networking/instant-messengers/signald/0001-Fetch-buildconfig-during-gradle-build-inside-Nix-FOD.patch
|
||||
+++ b/pkgs/applications/networking/instant-messengers/signald/0001-Fetch-buildconfig-during-gradle-build-inside-Nix-FOD.patch
|
||||
@@ -11,25 +11,15 @@ diff --git a/build.gradle b/build.gradle
|
||||
index 799e782..caceaac 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
-@@ -83,6 +83,9 @@ static String getVersion() {
|
||||
-
|
||||
- repositories {
|
||||
- maven {url "https://gitlab.com/api/v4/groups/6853927/-/packages/maven"} // https://gitlab.com/groups/signald/-/packages
|
||||
-+ maven {
|
||||
-+ url "https://plugins.gradle.org/m2/"
|
||||
-+ }
|
||||
- mavenCentral()
|
||||
- }
|
||||
-
|
||||
-@@ -104,6 +107,8 @@ dependencies {
|
||||
- implementation 'io.prometheus:simpleclient_httpserver:0.16.0'
|
||||
- implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
|
||||
- implementation 'io.sentry:sentry:6.4.0'
|
||||
-+ implementation 'com.github.gmazzo.buildconfig:com.github.gmazzo.buildconfig.gradle.plugin:3.1.0'
|
||||
-+ implementation 'org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.10'
|
||||
- testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
|
||||
+@@ -87,7 +86,7 @@ repositories {
|
||||
}
|
||||
|
||||
+ dependencies {
|
||||
+- implementation 'org.signald:signal-service-java-' + getTarget() + ':2.15.3_unofficial_50_signald_1'
|
||||
++ implementation 'org.signald:signal-service-java-' + getTarget() + ':2.15.3_unofficial_50_signald_2'
|
||||
+ implementation 'org.bouncycastle:bcprov-jdk15on:1.70'
|
||||
+ implementation 'com.kohlschutter.junixsocket:junixsocket-common:2.6.1'
|
||||
+ implementation 'com.kohlschutter.junixsocket:junixsocket-native-common:2.6.1'
|
||||
@@ -171,4 +176,4 @@ allprojects {
|
||||
runtime {
|
||||
options = ['--strip-java-debug-attributes', '--compress', '2', '--no-header-files', '--no-man-pages']
|
||||
diff --git a/pkgs/applications/networking/instant-messengers/signald/0002-buildconfig-local-deps-fixes.patch b/pkgs/applications/networking/instant-messengers/signald/0002-buildconfig-local-deps-fixes.patch
|
||||
index 96a7d6d2ef3..2f0f6e73159 100644
|
||||
--- a/pkgs/applications/networking/instant-messengers/signald/0002-buildconfig-local-deps-fixes.patch
|
||||
+++ b/pkgs/applications/networking/instant-messengers/signald/0002-buildconfig-local-deps-fixes.patch
|
||||
@@ -47,15 +47,15 @@ index 799e782..6ecef3e 100644
|
||||
}
|
||||
|
||||
dependencies {
|
||||
-@@ -104,6 +117,8 @@ dependencies {
|
||||
- implementation 'io.prometheus:simpleclient_httpserver:0.16.0'
|
||||
- implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
|
||||
- implementation 'io.sentry:sentry:6.4.0'
|
||||
-+ implementation 'com.github.gmazzo.buildconfig:com.github.gmazzo.buildconfig.gradle.plugin:3.1.0'
|
||||
-+ implementation 'org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.10'
|
||||
- testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
|
||||
+@@ -87,7 +86,7 @@ repositories {
|
||||
}
|
||||
|
||||
+ dependencies {
|
||||
+- implementation 'org.signald:signal-service-java-' + getTarget() + ':2.15.3_unofficial_50_signald_1'
|
||||
++ implementation 'org.signald:signal-service-java-' + getTarget() + ':2.15.3_unofficial_50_signald_2'
|
||||
+ implementation 'org.bouncycastle:bcprov-jdk15on:1.70'
|
||||
+ implementation 'com.kohlschutter.junixsocket:junixsocket-common:2.6.1'
|
||||
+ implementation 'com.kohlschutter.junixsocket:junixsocket-native-common:2.6.1'
|
||||
@@ -167,8 +182,3 @@ allprojects {
|
||||
}
|
||||
}
|
||||
diff --git a/pkgs/applications/networking/instant-messengers/signald/default.nix b/pkgs/applications/networking/instant-messengers/signald/default.nix
|
||||
index a9e023cdf63..8847707e137 100644
|
||||
--- a/pkgs/applications/networking/instant-messengers/signald/default.nix
|
||||
+++ b/pkgs/applications/networking/instant-messengers/signald/default.nix
|
||||
@@ -54,8 +54,8 @@ let
|
||||
outputHashMode = "recursive";
|
||||
# Downloaded jars differ by platform
|
||||
outputHash = {
|
||||
- x86_64-linux = "sha256-ANiNDdTuCuDEH5zUPsrVF6Uegdq3zVsMv+uMtYRX0jE=";
|
||||
- aarch64-linux = "sha256-V9zn4v/ZeLELAwFJ5y7OVAeJwZp4DmHm4KWxE6KpwGs=";
|
||||
+ x86_64-linux = "sha256-B2T8bM8xdob5507oS1CVO+sszEg9VWL8QKUEanIlXvk=";
|
||||
+ aarch64-linux = "sha256-I314eLUQP8HPbwc+10ZDKzcn9WsqLGuBtfoiCEYZRck=";
|
||||
}.${stdenv.system} or (throw "Unsupported platform");
|
||||
};
|
@@ -6,13 +6,6 @@
|
||||
sha256 = "sha256-Ne4hyHQDwBHUlWo8Z3QyRdmEv1rYGOjFGxSfOAcLUvQ=";
|
||||
})
|
||||
|
||||
# trust-dns: init at 0.22.0
|
||||
(fetchpatch {
|
||||
# https://git.uninsane.org/colin/nixpkgs/compare/master...pr-trust-dns.diff
|
||||
url = "https://git.uninsane.org/colin/nixpkgs/commit/feee7e0357a74ab0510b2d113a3bdede1d509759.diff";
|
||||
sha256 = "sha256-t4sG+xLDaxbJ/mV5G18N4ag8EC3IXPgtN5FJGANh1Dc=";
|
||||
})
|
||||
|
||||
# splatmoji: init at 1.2.0
|
||||
(fetchpatch {
|
||||
# https://github.com/NixOS/nixpkgs/pull/211874
|
||||
@@ -20,15 +13,27 @@
|
||||
hash = "sha256-IvsIcd2wPdz4b/7FMrDrcVlIZjFecCQ9uiL0Umprbx0=";
|
||||
})
|
||||
|
||||
# matrix-synapse,mautrix-facebook: fix runtime inclusion of python3 systemd #212391
|
||||
# merged 2023/01/24
|
||||
# fix libreoffice build by: Revert "mdds: 2.0.3 -> 2.1.0"
|
||||
# merged 2023/01/25
|
||||
(fetchpatch {
|
||||
url = "https://github.com/NixOS/nixpkgs/pull/212391.diff";
|
||||
hash = "sha256-N9lzQLi8NN9cbd+d04yx2v5mI9tVnlSKVbl0+QGE1YQ=";
|
||||
url = "https://github.com/NixOS/nixpkgs/pull/212583.diff";
|
||||
hash = "sha256-nkXgwQUtxYkJT2OzG6Jc72snizW5wHvR1nmh2KDnaPc=";
|
||||
})
|
||||
|
||||
# fix handbrake build by: handbrake: 1.5.1 -> 1.6.1
|
||||
# PR opened 2023/01/23
|
||||
(fetchpatch {
|
||||
# see alternate fix: <https://github.com/NixOS/nixpkgs/pull/211834>
|
||||
url = "https://github.com/NixOS/nixpkgs/pull/212306.diff";
|
||||
hash = "sha256-iQX2NaZaCzZVRlCM0pgXt0gecNwhXGeh3kXEiY38ZIM=";
|
||||
})
|
||||
|
||||
./2022-12-19-i2p-aarch64.patch
|
||||
|
||||
# fix for <https://gitlab.com/signald/signald/-/issues/345>
|
||||
# allows to actually run signald
|
||||
./2023-01-25-signald-update.patch
|
||||
|
||||
# # kaiteki: init at 2022-09-03
|
||||
# vendorHash changes too frequently (might not be reproducible).
|
||||
# using local package defn until stabilized
|
||||
|
@@ -30,8 +30,5 @@
|
||||
# error: 1 dependencies of derivation '/nix/store/hrb3qpdbisqh0lzlyz1g9g4164khmqwn-etc.drv' failed to build
|
||||
# error: 1 dependencies of derivation '/nix/store/ny21xyicbgim5wy7ksg2hibd9gn7i01b-nixos-system-moby-23.05pre-git.drv' failed to build
|
||||
# nheko
|
||||
|
||||
# TODO(unpin): broken build on 2023/01/16. <https://hydra.nixos.org/build/205551450>
|
||||
handbrake
|
||||
;
|
||||
})
|
||||
|
@@ -28,8 +28,6 @@
|
||||
#### customized packages
|
||||
fluffychat-moby = prev.callPackage ../pkgs/fluffychat-moby { };
|
||||
gpodder-configured = prev.callPackage ../pkgs/gpodder-configured { };
|
||||
# nixos-unstable pleroma is too far out-of-date for our db
|
||||
# pleroma = prev.callPackage ../pkgs/pleroma { };
|
||||
# jackett doesn't allow customization of the bind address: this will probably always be here.
|
||||
jackett = prev.callPackage ../pkgs/jackett { inherit (prev) jackett; };
|
||||
# mozilla keeps nerfing itself and removing configuration options
|
||||
@@ -60,7 +58,6 @@
|
||||
|
||||
# provided by nixpkgs patch or upstream preview
|
||||
# splatmoji = prev.callPackage ../pkgs/splatmoji { };
|
||||
# signaldctl = prev.callPackage ../pkgs/signaldctl { };
|
||||
};
|
||||
in sane // { inherit sane; }
|
||||
)
|
||||
|
@@ -5,11 +5,16 @@ from feedsearch_crawler import search, sort_urls
|
||||
from feedsearch_crawler.crawler import coerce_url
|
||||
|
||||
import json
|
||||
import logging
|
||||
import sys
|
||||
url, jsonPath = sys.argv[1:]
|
||||
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
logging.getLogger().addHandler(logging.StreamHandler(sys.stdout))
|
||||
logging.getLogger(__name__).debug("logging enabled")
|
||||
|
||||
url = coerce_url(url, default_scheme="https")
|
||||
items = search(url)
|
||||
items = search(url, total_timeout=180, request_timeout=90, max_content_length=100*1024*1024)
|
||||
items = sort_urls(items)
|
||||
|
||||
# print all results
|
||||
|
13
pkgs/feedsearch-crawler/0001-response-chunk-size.patch
Normal file
13
pkgs/feedsearch-crawler/0001-response-chunk-size.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/feedsearch_crawler/crawler/request.py b/feedsearch_crawler/crawler/request.py
|
||||
index 70f3d5a..00668ad 100644
|
||||
--- a/feedsearch_crawler/crawler/request.py
|
||||
+++ b/feedsearch_crawler/crawler/request.py
|
||||
@@ -277,7 +277,7 @@ class Request(Queueable):
|
||||
"""
|
||||
body: bytes = b""
|
||||
try:
|
||||
- async for chunk in resp.content.iter_chunked(1024):
|
||||
+ async for chunk in resp.content.iter_chunked(64 * 1024):
|
||||
if not chunk:
|
||||
break
|
||||
body += chunk
|
@@ -28,6 +28,12 @@ buildPythonPackage rec {
|
||||
hash = "sha256-pzvyeXzqdi8pRjk2+QjKhJfgtxbgVT6C08K9fhVFVmY=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# fix for <https://github.com/aio-libs/aiohttp/issues/4581>
|
||||
# where large feeds would timeout in an unrecoverable way
|
||||
./0001-response-chunk-size.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
poetry-core
|
||||
];
|
||||
|
@@ -1,260 +0,0 @@
|
||||
{ lib, beamPackages
|
||||
, fetchFromGitHub, fetchFromGitLab
|
||||
, file, cmake, bash
|
||||
, libxcrypt
|
||||
, nixosTests, writeText
|
||||
, cookieFile ? "/var/lib/pleroma/.cookie"
|
||||
, ...
|
||||
}:
|
||||
|
||||
beamPackages.mixRelease rec {
|
||||
pname = "pleroma";
|
||||
version = "2.4.52";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "git.pleroma.social";
|
||||
owner = "pleroma";
|
||||
repo = "pleroma";
|
||||
rev = "7a519b6a6607bc1dd22e6a3450aebf0f1ff11fb8";
|
||||
# to update: uncomment the null hash, run nixos-rebuild and
|
||||
# compute the new hash with `nix to-sri sha256:<output from failed nix build>`
|
||||
sha256 = "sha256-6NglBcEGEvRlYMnVNB8kr4i/fccrzO6mnyp3X+O0m74=";
|
||||
};
|
||||
|
||||
preFixup = if (cookieFile != null) then ''
|
||||
# There's no way to use a subprocess to cat the content of the
|
||||
# file cookie using wrapProgram: it gets escaped (by design) with
|
||||
# a pair of backticks :(
|
||||
# We have to come up with our own custom wrapper to do this.
|
||||
function wrapWithCookie () {
|
||||
local hidden
|
||||
hidden="$(dirname "$1")/.$(basename "$1")"-wrapped
|
||||
while [ -e "$hidden" ]; do
|
||||
hidden="''${hidden}_"
|
||||
done
|
||||
mv "$1" "''${hidden}"
|
||||
|
||||
cat > "$1" << EOF
|
||||
#!${bash}/bin/bash
|
||||
export RELEASE_COOKIE="\$(cat "${cookieFile}")"
|
||||
exec -a "\$0" "''${hidden}" "\$@"
|
||||
EOF
|
||||
chmod +x "$1"
|
||||
}
|
||||
|
||||
for f in "$out"/bin/*; do
|
||||
if [[ -x "$f" ]]; then
|
||||
wrapWithCookie "$f"
|
||||
fi
|
||||
done
|
||||
'' else "";
|
||||
|
||||
stripDebug = false;
|
||||
|
||||
mixNixDeps = import ./mix.nix {
|
||||
inherit beamPackages lib;
|
||||
overrides = (final: prev: {
|
||||
# mix2nix does not support git dependencies yet,
|
||||
# so we need to add them manually. these are grabbed from git/pleroma/`mix.exs`
|
||||
gettext = beamPackages.buildMix rec {
|
||||
name = "gettext";
|
||||
version = "0.19.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tusooa";
|
||||
repo = "gettext";
|
||||
rev = "72fb2496b6c5280ed911bdc3756890e7f38a4808";
|
||||
sha256 = "V0qmE+LcAbVoWsJmWE4fwrduYFIZ5BzK/sGzgLY3eH0=";
|
||||
};
|
||||
beamDeps = with final; [ ];
|
||||
};
|
||||
crypt = beamPackages.buildRebar3 rec {
|
||||
name = "crypt";
|
||||
version = "0.4.3";
|
||||
|
||||
# src = fetchFromGitHub {
|
||||
# owner = "msantos";
|
||||
# repo = "crypt";
|
||||
# rev = "f75cd55325e33cbea198fb41fe41871392f8fb76";
|
||||
# sha256 = "sha256-ZYhZTe7cTITkl8DZ4z2IOlxTX5gnbJImu/lVJ2ZjR1o=";
|
||||
# };
|
||||
|
||||
# this is the old crypt, from before 2021/09/21.
|
||||
# nixpkgs still uses this as of 2022-10-24 and it works.
|
||||
src = fetchFromGitLab {
|
||||
domain = "git.pleroma.social";
|
||||
group = "pleroma";
|
||||
owner = "elixir-libraries";
|
||||
repo = "crypt";
|
||||
rev = "cf2aa3f11632e8b0634810a15b3e612c7526f6a3";
|
||||
sha256 = "sha256-48QIsgyEaDzvnihdsFy7pYURLFcb9G8DXIrf5Luk3zo=";
|
||||
};
|
||||
|
||||
postInstall = "mv $out/lib/erlang/lib/crypt-${version}/priv/{source,crypt}.so";
|
||||
|
||||
beamDeps = with final; [ elixir_make ];
|
||||
buildInputs = [ libxcrypt ];
|
||||
};
|
||||
prometheus_ex = beamPackages.buildMix rec {
|
||||
name = "prometheus_ex";
|
||||
version = "3.0.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lanodan";
|
||||
repo = "prometheus.ex";
|
||||
# branch = "fix/elixir-1.14";
|
||||
rev = "31f7fbe4b71b79ba27efc2a5085746c4011ceb8f";
|
||||
sha256 = "sha256-2PZP+YnwnHt69HtIAQvjMBqBbfdbkRSoMzb1AL2Zsyc=";
|
||||
};
|
||||
|
||||
# src = fetchFromGitLab {
|
||||
# domain = "git.pleroma.social";
|
||||
# group = "pleroma";
|
||||
# owner = "elixir-libraries";
|
||||
# repo = "prometheus.ex";
|
||||
# rev = "a4e9beb3c1c479d14b352fd9d6dd7b1f6d7deee5";
|
||||
# sha256 = "1v0q4bi7sb253i8q016l7gwlv5562wk5zy3l2sa446csvsacnpjk";
|
||||
# };
|
||||
beamDeps = with final; [ prometheus ];
|
||||
};
|
||||
prometheus_phx = beamPackages.buildMix rec {
|
||||
name = "prometheus_phx";
|
||||
version = "0.1.1";
|
||||
|
||||
preBuild = ''
|
||||
touch config/prod.exs
|
||||
'';
|
||||
src = fetchFromGitLab {
|
||||
domain = "git.pleroma.social";
|
||||
group = "pleroma";
|
||||
owner = "elixir-libraries";
|
||||
repo = "prometheus-phx";
|
||||
rev = "0c950ac2d145b1ee3fc8ee5c3290ccb9ef2331e9";
|
||||
sha256 = "sha256-HjN0ku1q5aNtrhHopch0wpp4Z+dMCGj5GxHroiz5u/w=";
|
||||
};
|
||||
beamDeps = with final; [ prometheus_ex ];
|
||||
};
|
||||
remote_ip = beamPackages.buildMix rec {
|
||||
name = "remote_ip";
|
||||
version = "0.1.5";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "git.pleroma.social";
|
||||
group = "pleroma";
|
||||
owner = "elixir-libraries";
|
||||
repo = "remote_ip";
|
||||
rev = "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8";
|
||||
sha256 = "0c7vmakcxlcs3j040018i7bfd6z0yq6fjfig02g5fgakx398s0x6";
|
||||
};
|
||||
beamDeps = with final; [ combine plug inet_cidr ];
|
||||
};
|
||||
captcha = beamPackages.buildMix rec {
|
||||
name = "captcha";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "git.pleroma.social";
|
||||
group = "pleroma";
|
||||
owner = "elixir-libraries";
|
||||
repo = "elixir-captcha";
|
||||
rev = "e0f16822d578866e186a0974d65ad58cddc1e2ab";
|
||||
sha256 = "0qbf86l59kmpf1nd82v4141ba9ba75xwmnqzpgbm23fa1hh8pi9c";
|
||||
};
|
||||
beamDeps = with final; [ ];
|
||||
};
|
||||
|
||||
# majic needs a patch to build
|
||||
majic = beamPackages.buildMix rec {
|
||||
name = "majic";
|
||||
version = "1.0.0";
|
||||
|
||||
src = beamPackages.fetchHex {
|
||||
pkg = "${name}";
|
||||
version = "${version}";
|
||||
sha256 = "17hab8kmqc6gsiqicfgsaik0rvmakb6mbshlbxllj3b5fs7qa1br";
|
||||
};
|
||||
|
||||
# src = fetchFromGitLab {
|
||||
# domain = "git.pleroma.social";
|
||||
# group = "pleroma";
|
||||
# owner = "elixir-libraries";
|
||||
# repo = "majic";
|
||||
# rev = "289cda1b6d0d70ccb2ba508a2b0bd24638db2880";
|
||||
# sha256 = "15605lsdd74bmsp5z96f76ihn7m2g3p1hjbhs2x7v7309n1k108n";
|
||||
# };
|
||||
# patchPhase = ''
|
||||
# substituteInPlace lib/majic/server.ex --replace "erlang.now" "erlang.time"
|
||||
# '';
|
||||
buildInputs = [ file ];
|
||||
|
||||
beamDeps = with final; [ nimble_pool mime plug elixir_make ];
|
||||
};
|
||||
|
||||
|
||||
# Some additional build inputs and build fixes
|
||||
http_signatures = prev.http_signatures.override {
|
||||
patchPhase = ''
|
||||
substituteInPlace mix.exs --replace ":logger" ":logger, :public_key"
|
||||
'';
|
||||
};
|
||||
fast_html = prev.fast_html.override {
|
||||
nativeBuildInputs = [ cmake ];
|
||||
dontUseCmakeConfigure = true;
|
||||
};
|
||||
syslog = prev.syslog.override {
|
||||
buildPlugins = with beamPackages; [ pc ];
|
||||
};
|
||||
|
||||
# This needs a different version (1.0.14 -> 1.0.18) to build properly with
|
||||
# our Erlang/OTP version.
|
||||
eimp = beamPackages.buildRebar3 rec {
|
||||
name = "eimp";
|
||||
version = "1.0.18";
|
||||
|
||||
src = beamPackages.fetchHex {
|
||||
pkg = name;
|
||||
inherit version;
|
||||
sha256 = "0fnx2pm1n2m0zs2skivv43s42hrgpq9i143p9mngw9f3swjqpxvx";
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
echo '{plugins, [pc]}.' >> rebar.config
|
||||
'';
|
||||
buildPlugins = with beamPackages; [ pc ];
|
||||
|
||||
beamDeps = with final; [ p1_utils ];
|
||||
};
|
||||
|
||||
mime = prev.mime.override {
|
||||
patchPhase = let
|
||||
cfgFile = writeText "config.exs" ''
|
||||
use Mix.Config
|
||||
config :mime, :types, %{
|
||||
"application/activity+json" => ["activity+json"],
|
||||
"application/jrd+json" => ["jrd+json"],
|
||||
"application/ld+json" => ["activity+json"],
|
||||
"application/xml" => ["xml"],
|
||||
"application/xrd+xml" => ["xrd+xml"]
|
||||
}
|
||||
'';
|
||||
in ''
|
||||
mkdir config
|
||||
cp ${cfgFile} config/config.exs
|
||||
'';
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
passthru = {
|
||||
tests.pleroma = nixosTests.pleroma;
|
||||
inherit mixNixDeps;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ActivityPub microblogging server";
|
||||
homepage = "https://git.pleroma.social/pleroma/pleroma";
|
||||
license = licenses.agpl3;
|
||||
maintainers = with maintainers; [ petabyteboy ninjatrappeur yuka kloenk ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
1663
pkgs/pleroma/mix.nix
1663
pkgs/pleroma/mix.nix
File diff suppressed because it is too large
Load Diff
@@ -1,16 +0,0 @@
|
||||
in pleroma checkout:
|
||||
- grab version: `rg 'version: ' mix.exs`
|
||||
|
||||
in default.nix:
|
||||
- update `rev` and recompute sha256.
|
||||
|
||||
in pleroma checkout:
|
||||
- `mix2nix > mix.nix`
|
||||
|
||||
in nix repo:
|
||||
- cp the new mix.nix here.
|
||||
- move majic from mix.nix -> default.nix and add:
|
||||
- buildInputs = [ file ];
|
||||
- update `mixNixDeps` in default.nix:
|
||||
- grab the version from pleroma/mix.exs or mix.lock
|
||||
- redundant?: inside mix.nix, change base64url to use buildRebar3 instead of buildMix
|
@@ -1,24 +0,0 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitLab }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "signaldctl";
|
||||
version = "0.6.1";
|
||||
src = fetchFromGitLab {
|
||||
owner = "signald";
|
||||
repo = "signald-go";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-lMJyr4BPZ8V2f//CUkr7CVQ6o8nRyeLBHMDEyLcHSgQ=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-LGIWAVhDJCg6Ox7U4ZK15K8trjsvSZm4/0jNpIDmG7I=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A golang library for communicating with signald";
|
||||
homepage = "https://signald.org/signaldctl/";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ colinsane ];
|
||||
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user