Compare commits

...

27 Commits

Author SHA1 Message Date
f5eaa635a5 flake update: nixpkgs-stable 2023-01-15 -> 2023-01-22
```
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/2f9fd351ec37f5d479556cd48be4ca340da59b8f' (2023-01-15)
  → 'github:nixos/nixpkgs/ab1254087f4cdf4af74b552d7fc95175d9bdbb49' (2023-01-22)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/7c65528c3f8462b902e09d1ccca23bb9034665c2' (2023-01-15)
  → 'github:NixOS/nixpkgs/918b760070bb8f48cb511300fcd7e02e13058a2e' (2023-01-22)
```
2023-01-25 00:19:00 +00:00
47db6f0dd4 unpin nheko 2023-01-25 00:16:37 +00:00
bba7efc535 flake update: nixpkgs 2023-01-19 -> 2023-01-23; mobile-nixos, sops-nix
```
• Updated input 'mobile-nixos':
    'github:nixos/mobile-nixos/5ee45cc1f8e43f4af14ee17ccef9156b0db8cd77' (2022-12-04)
  → 'github:nixos/mobile-nixos/4d2093efa7efa00131d385fd9d11e54ce16bc57a' (2023-01-24)
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/d7705c01ef0a39c8ef532d1033bace8845a07d35' (2023-01-19)
  → 'github:nixos/nixpkgs/1b1f50645af2a70dc93eae18bfd88d330bfbcf7f' (2023-01-23)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/e18eefd2b133a58309475298052c341c08470717' (2023-01-15)
  → 'github:Mic92/sops-nix/b6ab3c61e2ca5e07d1f4eb1b67304e2670ea230c' (2023-01-24)
```
2023-01-25 00:15:55 +00:00
358b673344 moby: bump CMA 256MB -> 384MB 2023-01-23 07:42:51 +00:00
d9c101689d feeds: add lwn.net 2023-01-22 23:48:08 +00:00
ccbb573681 nit: remove dead comment in feeds.nix 2023-01-22 23:47:22 +00:00
f5c270233f feeds: add Tales From The Bridge (podcast) 2023-01-22 23:46:11 +00:00
bf92bb48be feeds: subscribe to project-insanity.org 2023-01-22 23:40:43 +00:00
2037b425d6 feeds: add Seattle Nice podcast 2023-01-21 09:41:20 +00:00
026746a76f flake.nix: document the init-feed "app" 2023-01-21 06:22:18 +00:00
de74c4e7d5 RSS: add Drew Devault 2023-01-21 06:21:34 +00:00
34a5f3f49b flake update: nixpkgs 2023-01-15 -> 2023-01-19
```
• Updated input 'nixpkgs-unpatched':
    'github:nixos/nixpkgs/6dccdc458512abce8d19f74195bb20fdb067df50' (2023-01-15)
  → 'github:nixos/nixpkgs/d7705c01ef0a39c8ef532d1033bace8845a07d35' (2023-01-19)
```
2023-01-21 05:33:15 +00:00
ee93141c07 splatmoji: build from upstream nixpkgs PR 2023-01-21 04:48:57 +00:00
f2d22231a3 freshrss: force sync feeds on every launch. requires to login as user "colin" 2023-01-21 03:50:27 +00:00
d5334e65ad overlays/pins.nix: act as NOOP when isn't available 2023-01-21 03:49:31 +00:00
17cdfff286 phosh: update 0.22.0 -> 0.23.0 2023-01-21 03:17:42 +00:00
8d4ff6d4e6 pkgs: fix infinite recursion around firefox-unwrapped 2023-01-21 01:41:30 +00:00
5d78bc6704 moby: enable wireguard/home VPN 2023-01-20 22:40:58 +00:00
4da19a6d34 servo: remove users.nix; move autologinUser -> default.nix 2023-01-20 22:16:47 +00:00
2f75925678 servo: lift pleroma user def out of toplevel -> pleroma.nix 2023-01-20 22:15:26 +00:00
55a1856e87 servo: lift git user def out of toplevel -> gitea.nix 2023-01-20 22:14:14 +00:00
2ee0f4efe2 servo: navidrome: give non-private dir and fix perms 2023-01-20 22:11:15 +00:00
b0c5a5907f Merge branch 'wip/hosts' 2023-01-20 19:40:49 +00:00
1e67b5c97e sane-mount-servo: fix so we really do prefer lan over wan mounts 2023-01-20 04:58:05 +00:00
e527beb9d0 sane-bt-search: add a --full flag 2023-01-20 02:17:59 +00:00
2e942e2dd4 sane-bt-search: include size and tracker in results 2023-01-20 02:10:07 +00:00
f46e3fdf01 sane-bt-search: fix incomparable datetime objects 2023-01-20 02:05:40 +00:00
24 changed files with 261 additions and 107 deletions

36
flake.lock generated
View File

@@ -39,11 +39,11 @@
"mobile-nixos": {
"flake": false,
"locked": {
"lastModified": 1670131242,
"narHash": "sha256-T/o1/3gffr010fsqgNshs1NJJjsnUYvQnUZgm6hilsY=",
"lastModified": 1674593731,
"narHash": "sha256-RHJOhxqPKLxbLLabbj1IEuUQqO76TOTtmpxYyTtfDmU=",
"owner": "nixos",
"repo": "mobile-nixos",
"rev": "5ee45cc1f8e43f4af14ee17ccef9156b0db8cd77",
"rev": "4d2093efa7efa00131d385fd9d11e54ce16bc57a",
"type": "github"
},
"original": {
@@ -60,22 +60,22 @@
},
"locked": {
"lastModified": 1,
"narHash": "sha256-5zCxdHGOS0OOP7vbgTA1iwv9GVr5JSiths7QmgUsU84=",
"path": "/nix/store/9a5k9pfawxzz1sng17si26sc9af39jr1-source/nixpatches",
"narHash": "sha256-P5BXhRIaKF6ze3am7CY//NFOJ4ihoys9h0ka9S15VV4=",
"path": "/nix/store/41f11k8hk1qjd440mavrybc7xgrcp9gj-source/nixpatches",
"type": "path"
},
"original": {
"path": "/nix/store/9a5k9pfawxzz1sng17si26sc9af39jr1-source/nixpatches",
"path": "/nix/store/41f11k8hk1qjd440mavrybc7xgrcp9gj-source/nixpatches",
"type": "path"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1673800717,
"narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=",
"lastModified": 1674407282,
"narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f",
"rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49",
"type": "github"
},
"original": {
@@ -87,11 +87,11 @@
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1673740915,
"narHash": "sha256-MMH8zONfqahgHly3K8/A++X34800rajA/XgZ2DzNL/M=",
"lastModified": 1674352297,
"narHash": "sha256-OkAnJPrauEcUCrst4/3DKoQfUn2gXKuU6CFvhtMrLgg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7c65528c3f8462b902e09d1ccca23bb9034665c2",
"rev": "918b760070bb8f48cb511300fcd7e02e13058a2e",
"type": "github"
},
"original": {
@@ -103,11 +103,11 @@
},
"nixpkgs-unpatched": {
"locked": {
"lastModified": 1673796341,
"narHash": "sha256-1kZi9OkukpNmOaPY7S5/+SlCDOuYnP3HkXHvNDyLQcc=",
"lastModified": 1674459583,
"narHash": "sha256-L0UZl/u2H3HGsrhN+by42c5kNYeKtdmJiPzIRvEVeiM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "6dccdc458512abce8d19f74195bb20fdb067df50",
"rev": "1b1f50645af2a70dc93eae18bfd88d330bfbcf7f",
"type": "github"
},
"original": {
@@ -136,11 +136,11 @@
"nixpkgs-stable": "nixpkgs-stable_2"
},
"locked": {
"lastModified": 1673752321,
"narHash": "sha256-EFfXY1ZHJq4FNaNQA9x0djtu/jiOhBbT0Xi+BT06cJw=",
"lastModified": 1674546403,
"narHash": "sha256-vkyNv0xzXuEnu9v52TUtRugNmQWIti8c2RhYnbLG71w=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "e18eefd2b133a58309475298052c341c08470717",
"rev": "b6ab3c61e2ca5e07d1f4eb1b67304e2670ea230c",
"type": "github"
},
"original": {

View File

@@ -170,6 +170,7 @@
};
init-feed = {
# use like `nix run '.#init-feed' uninsane.org`
type = "app";
program = "${pkgs.feeds.passthru.initFeedScript}";
};

View File

@@ -7,9 +7,8 @@
];
sane.roles.client = true;
# TODO
# sane.services.wg-home.enable = true;
# sane.services.wg-home.ip = config.sane.hosts.by-name."moby".wg-home.ip;
sane.services.wg-home.enable = true;
sane.services.wg-home.ip = config.sane.hosts.by-name."moby".wg-home.ip;
# cross-compiled documentation is *slow*.
# no obvious way to natively compile docs (2022/09/29).
@@ -59,9 +58,10 @@
# without this some GUI apps fail: `DRM_IOCTL_MODE_CREATE_DUMB failed: Cannot allocate memory`
# this is because they can't allocate enough video ram.
# the default CMA seems to be 32M. we could probably get by with as little as 64M, and safely with 128M.
# 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=256M" ];
boot.kernelParams = [ "cma=384M" ];
# mobile-nixos' /lib/firmware includes:
# rtl_bt (bluetooth)

View File

@@ -4,7 +4,6 @@
imports = [
./fs.nix
./net.nix
./users.nix
./secrets.nix
./services
];
@@ -21,6 +20,10 @@
sane.services.wg-home.ip = config.sane.hosts.by-name."servo".wg-home.ip;
# sane.services.duplicity.enable = true; # TODO: re-enable after HW upgrade
# automatically log in at the virtual consoles.
# using root here makes sure we always have an escape hatch
services.getty.autologinUser = "root";
boot.loader.efi.canTouchEfiVariables = false;
sane.image.extraBootFiles = [ pkgs.bootpart-uefi-x86_64 ];

View File

@@ -41,7 +41,10 @@
description = "import sane RSS feed list";
after = [ "freshrss-config.service" ];
script = ''
${pkgs.freshrss}/cli/import-for-user.php --user admin --filename ${opml}
# easiest way to preserve feeds: delete the user, recreate it, import feeds
${pkgs.freshrss}/cli/delete-user.php --user colin || true
${pkgs.freshrss}/cli/create-user.php --user colin --password "$(cat ${config.services.freshrss.passwordFile})" || true
${pkgs.freshrss}/cli/import-for-user.php --user colin --filename ${opml}
'';
};

View File

@@ -15,6 +15,17 @@
services.gitea.settings.session.COOKIE_SECURE = true;
# services.gitea.disableRegistration = true;
# gitea doesn't create the git user
users.users.git = {
description = "Gitea Service";
home = "/var/lib/gitea";
useDefaultShell = true;
group = "gitea";
isSystemUser = true;
# sendmail access (not 100% sure if this is necessary)
extraGroups = [ "postdrop" ];
};
services.gitea.settings = {
server = {
# options: "home", "explore", "organizations", "login" or URL fragment (or full URL)

View File

@@ -1,11 +1,8 @@
{ ... }:
{ lib, ... }:
{
sane.persist.sys.plaintext = [
# TODO: we don't have a static user allocated for navidrome!
# the chown would happen too early for us to set static perms
"/var/lib/private/navidrome"
# { user = "navidrome"; group = "navidrome"; directory = "/var/lib/private/navidrome"; }
{ user = "navidrome"; group = "navidrome"; directory = "/var/lib/navidrome"; }
];
services.navidrome.enable = true;
services.navidrome.settings = {
@@ -18,6 +15,20 @@
ScanSchedule = "@every 1h";
};
systemd.services.navidrome.serviceConfig = {
# fix to use a normal user so we can configure perms correctly
DynamicUser = lib.mkForce false;
User = "navidrome";
Group = "navidrome";
};
users.groups.navidrome = {};
users.users.navidrome = {
group = "navidrome";
isSystemUser = true;
};
services.nginx.virtualHosts."music.uninsane.org" = {
forceSSL = true;
enableACME = true;

View File

@@ -111,7 +111,7 @@
''
];
systemd.services.pleroma.path = [
systemd.services.pleroma.path = [
# something inside pleroma invokes `sh` w/o specifying it by path, so this is needed to allow pleroma to start
pkgs.bash
# used by Pleroma to strip geo tags from uploads
@@ -135,6 +135,11 @@
# CapabilityBoundingSet = lib.mkForce "~";
# };
# this is required to allow pleroma to send email.
# raw `sendmail` works, but i think pleroma's passing it some funny flags or something, idk.
# hack to fix that.
users.users.pleroma.extraGroups = [ "postdrop" ];
# Pleroma server and web interface
# TODO: enable publog?
services.nginx.virtualHosts."fed.uninsane.org" = {

View File

@@ -1,24 +0,0 @@
{ config, ... }:
# installer docs: https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/installation-device.nix
{
# automatically log in at the virtual consoles.
# using root here makes sure we always have an escape hatch
services.getty.autologinUser = "root";
# gitea doesn't create the git user
users.users.git = {
description = "Gitea Service";
home = "/var/lib/gitea";
useDefaultShell = true;
group = "gitea";
isSystemUser = true;
# sendmail access (not 100% sure if this is necessary)
extraGroups = [ "postdrop" ];
};
# this is required to allow pleroma to send email.
# raw `sendmail` works, but i think pleroma's passing it some funny flags or something, idk.
# hack to fix that.
users.users.pleroma.extraGroups = [ "postdrop" ];
}

View File

@@ -47,7 +47,6 @@ let
podcasts = [
(fromDb "lexfridman.com/podcast" // rat)
# (mkPod "https://lexfridman.com/feed/podcast/" // rat // weekly)
## Astral Codex Ten
(fromDb "sscpodcast.libsyn.com" // rat)
## Econ Talk
@@ -85,10 +84,14 @@ let
(fromDb "feed.podbean.com/matrixlive/feed.xml" // tech)
## Michael Malice - Your Welcome -- also available here: <https://origin.podcastone.com/podcast?categoryID2=2232>
(fromDb "rss.art19.com/your-welcome" // pol)
(fromDb "seattlenice.buzzsprout.com" // pol)
## Sci-Fi? has Peter Watts; author of No Moods, Ads or Cutesy Fucking Icons (rifters.com)
(fromDb "talesfromthebridge.buzzsprout.com" // tech)
];
texts = [
# AGGREGATORS (> 1 post/day)
(fromDb "lwn.net" // tech)
(fromDb "lesswrong.com" // rat)
(fromDb "econlib.org" // pol)
@@ -105,8 +108,11 @@ let
# DEVELOPERS
(fromDb "uninsane.org" // tech)
(fromDb "mg.lol" // tech)
(fromDb "drewdevault.com" // tech)
## Ken Shirriff
(fromDb "righto.com" // tech)
## shared blog by a few NixOS devs, notably onny
(fromDb "project-insanity.org" // tech)
## Vitalik Buterin
(mkText "https://vitalik.ca/feed.xml" // tech // infrequent)
## ian (Sanctuary)

View File

@@ -25,6 +25,8 @@
sane.ids.signald.gid = 2403;
sane.ids.mautrix-signal.uid = 2404;
sane.ids.mautrix-signal.gid = 2404;
sane.ids.navidrome.uid = 2405;
sane.ids.navidrome.gid = 2405;
sane.ids.colin.uid = 1000;
sane.ids.guest.uid = 1100;

View File

@@ -126,8 +126,8 @@ in
services.openssh = {
enable = true;
permitRootLogin = "no";
passwordAuthentication = false;
settings.PermitRootLogin = "no";
settings.PasswordAuthentication = false;
};
};
}

View File

@@ -83,6 +83,8 @@ in
sane.hosts.by-name."moby" = {
ssh.user_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICrR+gePnl0nV/vy7I5BzrGeyVL+9eOuXHU1yNE3uCwU";
ssh.host_pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1N/IT3nQYUD+dBlU1sTEEVMxfOyMkrrDeyHcYgnJvw";
wg-home.pubkey = "I7XIR1hm8bIzAtcAvbhWOwIAabGkuEvbWH/3kyIB1yA=";
wg-home.ip = "10.0.10.48";
lan-ip = "192.168.0.48";
};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,21 @@
{
"bozo": 0,
"content_length": 14068,
"content_type": "application/xml; charset=utf-8",
"description": "LWN.net is a comprehensive source of news and opinions from\n and about the Linux community. This is the main LWN.net feed,\n listing all articles which are posted to the site front page.",
"favicon": "https://static.lwn.net/images/favicon.png",
"favicon_data_uri": "data:image/png;base64,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",
"hubs": [],
"is_podcast": false,
"is_push": false,
"item_count": 15,
"last_updated": "2023-01-22T15:53:01+00:00",
"score": 18,
"self_url": "",
"site_name": "Welcome to LWN.net [LWN.net]",
"site_url": "https://lwn.net",
"title": "LWN.net",
"url": "https://lwn.net/headlines/newrss",
"velocity": 2.78,
"version": "rss10"
}

View File

@@ -0,0 +1,21 @@
{
"bozo": 0,
"content_length": 11426,
"content_type": "application/rss+xml; charset=utf-8",
"description": "Awesome hacking blog",
"favicon": "",
"favicon_data_uri": "",
"hubs": [],
"is_podcast": false,
"is_push": false,
"item_count": 10,
"last_updated": "2023-01-01T22:57:33+00:00",
"score": 12,
"self_url": "https://blog.project-insanity.org/feed/",
"site_name": "project-insanity.org",
"site_url": "https://blog.project-insanity.org",
"title": "project-insanity.org",
"url": "https://blog.project-insanity.org/feed/",
"velocity": 0.026,
"version": "rss20"
}

View File

@@ -0,0 +1,23 @@
{
"bozo": 0,
"content_length": 96380,
"content_type": "text/xml; charset=utf-8",
"description": "It\u2019s getting harder and harder to talk about politics, especially if you disagree. Well, screw that. Seattle Nice aims to be the most opinionated and smartest analysis of what\u2019s really happening in Seattle politics available in any medium. Each episode dives into contentious and sometimes ridiculous topics, exploring perspectives from across Seattle's political spectrum, from city council brawls to the ways the national political conversation filters through our unique political process. Even if you\u2019re not from Seattle, you need to listen to Seattle Nice. Because it\u2019s coming for you. Unlike the sun, politics rises in the West and sets in the East.",
"favicon": "",
"favicon_data_uri": "",
"hubs": [
"https://pubsubhubbub.appspot.com/"
],
"is_podcast": true,
"is_push": true,
"item_count": 43,
"last_updated": "2023-01-20T21:00:00+00:00",
"score": 12,
"self_url": "https://feeds.buzzsprout.com/1897925.rss",
"site_name": "",
"site_url": "",
"title": "Seattle Nice",
"url": "https://feeds.buzzsprout.com/1897925.rss",
"velocity": 0.104,
"version": "rss20"
}

View File

@@ -0,0 +1,23 @@
{
"bozo": 0,
"content_length": 357855,
"content_type": "text/xml; charset=utf-8",
"description": "Tales From the Bridge is a bi-weekly Science Fiction podcast. Join Tristan, Marty, Kevin, and Sam as they sit down with your favorite science fiction authors and filmmakers. We also discuss the best in sci-fi from books and graphic novels - to television and film. We cover cutting-edge concepts on our news segment; Science Fiction-Science Fact and throw in a bit of trivia for fun. Apple Podcasts; https://podcasts.apple.com/us/podcast/tales-from-the-bridge-all-things-sci-fi/id1570902818 Find out more on our website: https://talesfromthebridge.buzzsprout.com/",
"favicon": "",
"favicon_data_uri": "",
"hubs": [
"https://pubsubhubbub.appspot.com/"
],
"is_podcast": true,
"is_push": true,
"item_count": 64,
"last_updated": "2023-01-18T23:00:00+00:00",
"score": 12,
"self_url": "https://feeds.buzzsprout.com/1795352.rss",
"site_name": "",
"site_url": "",
"title": "Tales From The Bridge: All Things Sci-Fi",
"url": "https://feeds.buzzsprout.com/1795352.rss",
"velocity": 0.101,
"version": "rss20"
}

View File

@@ -13,23 +13,11 @@
sha256 = "sha256-t4sG+xLDaxbJ/mV5G18N4ag8EC3IXPgtN5FJGANh1Dc=";
})
# whalebird: 4.6.5 -> 4.7.4
# splatmoji: init at 1.2.0
(fetchpatch {
# url = "https://git.uninsane.org/colin/nixpkgs/compare/master...pr.whalebird-4.7.4.diff";
url = "https://git.uninsane.org/colin/nixpkgs/commit/f5c7c70dde720e990fa7e0748d1dc4764d6e4406.diff";
sha256 = "sha256-L9Ie80loaP6yl5ZFnJ1b5WMDpvO1QFE8tbrW5HBauko=";
})
# nixos/mx-puppet-discord: move to matrix category
(fetchurl {
url = "https://git.uninsane.org/colin/nixpkgs/commit/87c877fff84717478a96d1b0c65bd2febd350dea.diff";
sha256 = "sha256-E5TonCj3f8j7kxApBq/suNT5mB7z8uD00NzI34Qh2SE=";
})
# signaldctl: init at 0.6.1
(fetchurl {
url = "https://git.uninsane.org/colin/nixpkgs/commit/f3c4303231537422267ca32eb97b37f0a9a11d19.diff";
hash = "sha256-9fIAie0x2VxbHDg9iC8/dxaXIrWi8LzHSoDk9cwAZG0=";
# https://github.com/NixOS/nixpkgs/pull/211874
url = "https://git.uninsane.org/colin/nixpkgs/commit/75149039b6eaf57d8a92164e90aab20eb5d89196.diff";
hash = "sha256-IvsIcd2wPdz4b/7FMrDrcVlIZjFecCQ9uiL0Umprbx0=";
})
./2022-12-19-i2p-aarch64.patch

View File

@@ -5,8 +5,11 @@
# - otherwise, search github issues/PRs for knowledge of it before pinning.
# - if nobody's said anything about it yet, probably want to root cause it or hold off on updating.
(next: prev: {
inherit (next.stable)
# TODO(unpin): broken on 2023/01/14 via mtxclient dep, aarch64-only:
# XXX: when invoked outside our flake (e.g. via NIX_PATH) there is no `next.stable`,
# so just forward the unstable packages.
inherit (next.stable or prev)
# broken on 2023/01/14 via mtxclient dep, aarch64-only:
# fixed on 2023/01/24?
# error: builder for '/nix/store/gwidl0c9ksxjgx0dgwnjssix4ikq73v5-mtxclient-0.9.0.drv' failed with exit code 2;
# last 10 log lines:
# > make[2]: *** [CMakeFiles/matrix_client.dir/build.make:370: CMakeFiles/matrix_client.dir/lib/structs/events/encrypted.cpp.o] Error 1
@@ -26,11 +29,8 @@
# error: 1 dependencies of derivation '/nix/store/5qjxzhsw1jvh2d7jypbcam9409ivb472-user-environment.drv' failed to build
# 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
# nheko
# TODO(unpin): broken build on 2023/01/16, all platforms: <https://github.com/NixOS/nixpkgs/pull/208251>
# fix in PR: <https://github.com/NixOS/nixpkgs/pull/211135>
kitty
# TODO(unpin): broken build on 2023/01/16. <https://hydra.nixos.org/build/205551450>
handbrake
;

View File

@@ -33,7 +33,7 @@
# 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
firefox-unwrapped = prev.callPackage ../pkgs/firefox-unwrapped { };
firefox-unwrapped = next.callPackage ../pkgs/firefox-unwrapped { inherit (prev) firefox-unwrapped; };
# patch rpi uboot with something that fixes USB HDD boot
ubootRaspberryPi4_64bit = prev.callPackage ../pkgs/ubootRaspberryPi4_64bit { };
@@ -57,9 +57,9 @@
browserpass-extension = prev.callPackage ../pkgs/browserpass-extension { };
gopass-native-messaging-host = prev.callPackage ../pkgs/gopass-native-messaging-host { };
tokodon = prev.libsForQt5.callPackage ../pkgs/tokodon { };
splatmoji = prev.callPackage ../pkgs/splatmoji { };
# provided by nixpkgs patch or upstream preview
# splatmoji = prev.callPackage ../pkgs/splatmoji { };
# signaldctl = prev.callPackage ../pkgs/signaldctl { };
};
in sane // { inherit sane; }

View File

@@ -23,21 +23,29 @@ ENDPOINTS = dict(
class Torrent:
seeders: int
pub_date: datetime
size: int
tracker: str
title: str
magnet: str
def __str__(self) -> str:
return f"{self.seeders}[S]\t{self.pub_date}\t{self.title}\t{self.magnet}"
return f"{self.seeders}[S]\t{self.pub_date}\t{self.mib}M\t{self.tracker}\t{self.title}\t{self.magnet}"
@property
def mib(self) -> int:
return int(round(self.size / 1024 / 1024))
@staticmethod
def from_dict(d: dict) -> 'Torrent':
seeders = d.get("Seeders")
pub_date = d.get("PublishDate")
size = d.get("Size")
tracker = d.get("Tracker")
title = d.get("Title")
magnet = d.get("MagnetUri")
if seeders is not None and pub_date is not None and title is not None and magnet is not None:
pub_date = datetime.fromisoformat(pub_date)
return Torrent(seeders, pub_date, title, magnet)
pub_date = datetime.fromisoformat(pub_date).astimezone()
return Torrent(seeders, pub_date, size, tracker, title, magnet)
class Client:
def __init__(self):
@@ -64,10 +72,35 @@ class Client:
return sorted(torrents, reverse=True)
q = " ".join(sys.argv[1:])
def parse_args(args: list) -> dict:
options = dict(
full=False,
query="",
)
while args:
arg = args[0]
del args[0]
if arg.startswith('--'):
opt = arg[2:]
if "=" in opt:
name, val = opt.split('=')
else:
name, val = opt, True
options[name] = val
else:
options["query"] = options["query"] + " " + arg if options["query"] else arg
client = Client()
res = client.query(q)
print(f"found {len(res)} result(s)")
for r in res[:5]:
print(r)
return options
def main(args: list):
options = parse_args(args)
query = options["query"]
num_listings = 100 if options["full"] else 5
client = Client()
res = client.query(query)
print(f"found {len(res)} result(s)")
for r in res[:num_listings]:
print(r)
if __name__ == "__main__":
main(sys.argv[1:])

View File

@@ -1,19 +1,21 @@
#!/usr/bin/env bash
set -ex
mnt=/mnt/servo-media-wan
# if lan not mounted, then try to mount it
if ! (test -d /mnt/servo-media-lan/Music)
then
sudo mount /mnt/servo-media-lan && mnt=/mnt/servo-media-lan
sudo mount /mnt/servo-media-lan
fi
# not much reason not to mount the wan while we're here.
if ! (test -d /mnt/servo-media-wan/Music)
then
sudo mount /mnt/servo-media-wan
fi
# if the needed mount isn't mounted, mount it
if ! (test -d $mnt/Music)
then
sudo mount $mnt
fi
mnt=/mnt/servo-media-wan
# if the LAN is accessible, prefer that
test -d /mnt/servo-media-wan/Music && mnt=/mnt/servo-media-lan
# symlink the fastest mount point into place
# uncomment if i see the bug again: sudo unlink /mnt/servo-media # XXX ln gets confused if the destination is a symlink to a stale mount
sudo ln -sf $mnt /mnt/servo-media
sudo ln -sf --no-dereference $mnt /mnt/servo-media

View File

@@ -1,19 +1,21 @@
#!/usr/bin/env bash
set -ex
mnt=/mnt/servo-root-wan
# if lan not mounted, then try to mount it
if ! (test -d /mnt/servo-root-lan/nix)
then
sudo mount /mnt/servo-root-lan && mnt=/mnt/servo-root-lan
sudo mount /mnt/servo-root-lan
fi
# not much reason not to mount the wan while we're here.
if ! (test -d /mnt/servo-root-wan/nix)
then
sudo mount /mnt/servo-root-wan
fi
# if the needed mount isn't mounted, mount it
if ! (test -d $mnt/nix)
then
sudo mount $mnt
fi
mnt=/mnt/servo-root-wan
# if the LAN is accessible, prefer that
test -d /mnt/servo-root-wan/nix && mnt=/mnt/servo-root-lan
# symlink the fastest mount point into place
# uncomment if i see the bug again: sudo unlink /mnt/servo-root # XXX ln gets confused if the destination is a symlink to a stale mount
sudo ln -sf $mnt /mnt/servo-root
sudo ln -sf --no-dereference $mnt /mnt/servo-root