snix/users/Profpatsch/shell.nix
Profpatsch 498c8e05f8 feat(users/Profpatsch/whatcd-resolver): serve torrent files
We want to be able to play the files directly from the web
browser (jukebox).

Luckily, transmission does not seem to change the filenames from the
ones given by the torrent file, so we can literally parse the torrent
file and construct a path to the media file, extraordinary.

Adjusts the caddy reverse proxy to serve the given transmission
directory (using my weird sshfs forwarding scheme in the shell.nix
preset lol), then redirect from a handler that maps from
torrentId/fileId to the actual file.

Change-Id: Iab5faf7cc06066f3253031af31e137c0e28f54e3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/13270
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
2025-03-15 19:11:00 +00:00

113 lines
2.4 KiB
Nix

# generic shell.nix that can be used for most of my projects here,
# until I figure out a way to have composable shells.
let root = (import ../../. { }); in
{ pkgs ? root.third_party.nixpkgs, depot ? root, ... }:
pkgs.mkShell {
buildInputs = [
pkgs.sqlite-interactive
pkgs.sqlite-utils
pkgs.haskell-language-server
pkgs.cabal-install
(pkgs.haskellPackages.ghcWithHoogle (h: [
h.async
h.aeson-better-errors
h.blaze-html
h.bencode
h.conduit-extra
h.error
h.monad-logger
h.pa-field-parser
h.pa-label
h.pa-json
h.pa-pretty
h.pa-run-command
h.ihp-hsx
h.optparse-simple
h.PyF
h.foldl
h.unliftio
h.xml-conduit
h.wai
h.wai-extra
h.warp
h.profunctors
h.semigroupoids
h.validation-selective
h.free
h.cryptonite-conduit
h.sqlite-simple
h.hedgehog
h.http-conduit
h.http-conduit
h.wai-conduit
h.nonempty-containers
h.deriving-compat
h.unix
h.tagsoup
h.attoparsec
# h.iCalendar
h.case-insensitive
h.hscolour
h.nicify-lib
h.hspec
h.hspec-expectations-pretty-diff
h.tmp-postgres
h.postgresql-simple
h.resource-pool
h.xmonad-contrib
h.hs-opentelemetry-sdk
h.punycode
]))
pkgs.rustup
pkgs.pkg-config
pkgs.fuse
pkgs.postgresql_14
pkgs.nodejs
pkgs.ninja
pkgs.s6
pkgs.caddy
(depot.nix.binify {
name = "nix-run";
exe = depot.users.Profpatsch.nix-tools.nix-run;
})
];
DEPOT_ROOT = toString ./../..;
PROFPATSCH_ROOT = toString ./.;
WHATCD_RESOLVER_TOOLS = pkgs.linkFarm "whatcd-resolver-tools" [
{
name = "pg_format";
path = "${pkgs.pgformatter}/bin/pg_format";
}
];
WHATCD_RESOLVER_TRANSMISSION_DOWNLOAD_DIRECTORY = "/home/philip/tmp/a/seeding";
# DECLIB_MASTODON_ACCESS_TOKEN read from `pass` in .envrc.
RUSTC_WRAPPER =
let
wrapperArgFile = libs: pkgs.writeText "rustc-wrapper-args"
(pkgs.lib.concatStringsSep
"\n"
(pkgs.lib.concatLists
(map
(lib: [
"-L"
"${pkgs.lib.getLib lib}/lib"
])
libs)));
in
depot.nix.writeExecline "rustc-wrapper" { readNArgs = 1; } [
"$1"
"$@"
"@${wrapperArgFile [
depot.third_party.rust-crates.nom
]}"
];
}