tvl-depot/users/Profpatsch/writers/default.nix
Vincent Ambo aa122cbae7 style: format entire depot with nixpkgs-fmt
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>
2022-01-31 16:11:53 +00:00

97 lines
2.2 KiB
Nix

{ depot, pkgs, lib, ... }:
let
bins = depot.nix.getBins pkgs.s6-portable-utils [ "s6-mkdir" "s6-cat" "s6-ln" "s6-ls" "s6-touch" ]
// depot.nix.getBins pkgs.coreutils [ "printf" ];
inherit (depot.nix.yants) defun struct restrict attrs list string drv any;
inherit (depot.nix) drvSeqL;
FlakeError =
restrict
"flake error"
(s: lib.any (prefix: (builtins.substring 0 1 s) == prefix)
[ "E" "W" ])
string;
Libraries = defun [ (attrs any) (list drv) ];
python3 =
{ name
, libraries ? (_: [ ])
, flakeIgnore ? [ ]
}: pkgs.writers.writePython3 name {
libraries = Libraries libraries pkgs.python3Packages;
flakeIgnore =
let
ignoreTheseErrors = [
# whitespace after {
"E201"
# whitespace before }
"E202"
# fuck 4-space indentation
"E121"
"E111"
# who cares about blank lines …
# … at end of files
"W391"
# … between functions
"E302"
"E305"
];
in
list FlakeError (ignoreTheseErrors ++ flakeIgnore);
};
# TODO: add the same flake check as the pyhon3 writer
python3Lib = { name, libraries ? (_: [ ]) }: moduleString:
let
srcTree = depot.nix.runExecline.local name { stdin = moduleString; } [
"importas"
"out"
"out"
"if"
[ bins.s6-mkdir "-p" "\${out}/${name}" ]
"if"
[
"redirfd"
"-w"
"1"
"\${out}/setup.py"
bins.printf
''
from distutils.core import setup
setup(
name='%s',
packages=['%s']
)
''
name
name
]
"if"
[
# redirect stdin to the init py
"redirfd"
"-w"
"1"
"\${out}/${name}/__init__.py"
bins.s6-cat
]
];
in
pkgs.python3Packages.buildPythonPackage {
inherit name;
src = srcTree;
propagatedBuildInputs = libraries pkgs.python3Packages;
doCheck = false;
};
in
{
inherit
python3
python3Lib
;
}