This CL can be used to compare the style of nixpkgs-fmt against other formatters (nixpkgs, alejandra). Change-Id: I87c6abff6bcb546b02ead15ad0405f81e01b6d9e Reviewed-on: https://cl.tvl.fyi/c/depot/+/4397 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: wpcarro <wpcarro@gmail.com> Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: tazjin <tazjin@tvl.su> Reviewed-by: cynthia <cynthia@tvl.fyi> Reviewed-by: edef <edef@edef.eu> Reviewed-by: eta <tvl@eta.st> Reviewed-by: grfn <grfn@gws.fyi>
		
			
				
	
	
		
			82 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { depot, pkgs, lib, ... }:
 | ||
| 
 | ||
| # ytextr is a wrapper arount yt-dlp (previously youtube-dl)
 | ||
| # that extracts a single video according to my preferred settings.
 | ||
| #
 | ||
| # It will be sandboxed to the current directory, since I don’t particularly
 | ||
| # trust the massive codebase of that tool (with hundreds of contributors).
 | ||
| #
 | ||
| # Since the rules for downloading videos is usually against the wishes
 | ||
| # of proprietary vendors, and a video is many megabytes anyway,
 | ||
| # it will be fetched from the most recent nixpkgs unstable channel before running.
 | ||
| 
 | ||
| let
 | ||
|   bins = depot.nix.getBins pkgs.nix [ "nix-build" ]
 | ||
|     // depot.nix.getBins pkgs.bubblewrap [ "bwrap" ];
 | ||
| 
 | ||
|   # Run a command, with the given packages in scope, and `packageNamesAtRuntime` being fetched at the start in the given nix `channel`.
 | ||
|   nix-run-with-channel =
 | ||
|     {
 | ||
|       # The channel to get `packageNamesAtRuntime` from
 | ||
|       channel
 | ||
|     , # executable to run with `packageNamesAtRuntime` in PATH
 | ||
|       # and the argv
 | ||
|       executable
 | ||
|     , # A list of nixpkgs package attribute names that should be put into PATH when running `command`.
 | ||
|       packageNamesAtRuntime
 | ||
|     ,
 | ||
|     }: depot.nix.writeExecline "nix-run-with-channel-${channel}" { } [
 | ||
|       # TODO: prevent race condition by writing a temporary gc root
 | ||
|       "backtick"
 | ||
|       "-iE"
 | ||
|       "storepath"
 | ||
|       [
 | ||
|         bins.nix-build
 | ||
|         "-I"
 | ||
|         "nixpkgs=channel:${channel}"
 | ||
|         "--arg"
 | ||
|         "packageNamesAtRuntimeJsonPath"
 | ||
|         (pkgs.writeText "packageNamesAtRuntime.json" (builtins.toJSON packageNamesAtRuntime))
 | ||
|         ./create-symlink-farm.nix
 | ||
|       ]
 | ||
|       "importas"
 | ||
|       "-ui"
 | ||
|       "PATH"
 | ||
|       "PATH"
 | ||
|       "export"
 | ||
|       "PATH"
 | ||
|       "\${storepath}/bin:\${PATH}"
 | ||
|       executable
 | ||
|       "$@"
 | ||
|     ];
 | ||
| 
 | ||
| in
 | ||
| nix-run-with-channel {
 | ||
|   channel = "nixos-unstable";
 | ||
|   packageNamesAtRuntime = [ "yt-dlp" ];
 | ||
|   executable = depot.nix.writeExecline "ytextr" { readNArgs = 1; } [
 | ||
|     "getcwd"
 | ||
|     "-E"
 | ||
|     "cwd"
 | ||
|     bins.bwrap
 | ||
|     "--ro-bind"
 | ||
|     "/nix/store"
 | ||
|     "/nix/store"
 | ||
|     "--ro-bind"
 | ||
|     "/etc"
 | ||
|     "/etc"
 | ||
|     "--bind"
 | ||
|     "$cwd"
 | ||
|     "$cwd"
 | ||
|     "yt-dlp"
 | ||
|     "--no-playlist"
 | ||
|     "--write-sub"
 | ||
|     "--all-subs"
 | ||
|     "--embed-subs"
 | ||
|     "--merge-output-format"
 | ||
|     "mkv"
 | ||
|     "-f"
 | ||
|     "bestvideo[height<=?1080]+bestaudio/best"
 | ||
|     "$1"
 | ||
|   ];
 | ||
| }
 |