development.nix
# SPDX-License-Identifier: BlueOak-1.0.0
# SPDX-FileCopyrightText: 2025 toastal <toastal@posteo.net>
final: prev: {
factor-wrapped = final.writeTextFile {
name = "factor-scoped";
executable = true;
destination = "/bin/factor";
text =
let
factor-reroot = final.writeTextFile {
name = "rerooted-ui-listener.factor";
destination = "rerooted-ui-listener.factor";
text = # factor
''
USING: environment io.directories namespaces system ;
"FACTOR_PROJECT_ROOT" os-env
[ set-current-directory ] when
"listener" run
'';
};
in
# sh
''
#!${final.lib.getExe final.dash}
exec ${final.factorPackages.factor-lang}/bin/factor "$@"
'';
checkPhase = ''
${final.stdenv.shellDryRun} "$target"
'';
meta.mainProgram = "factor";
};
fello-dev-shell = final.mkShellNoCC {
name = "fello";
inputsFrom = with final; [
fello
];
packages = with final; [
factor-wrapped
nixfmt-3-space
rlwrap # for ``rlwrap factor …``
];
shellHook = ''
export FACTOR_ROOTS="''${FACTOR_ROOTS:+:$FACTOR_ROOTS}:$(pwd)/extra"
export FACTOR_PROJECT_ROOT="$(pwd)"
export FACTOR_IMAGE="$FACTOR_PROJECT_ROOT/factor.image"
'';
};
nixfmt-3-space = final.writeTextFile {
name = "nixfmt-wrapped";
executable = true;
destination = "/bin/nixfmt";
text = # sh
''
#!${final.lib.getExe final.dash}
exec ${final.lib.getExe final.nixfmt-rfc-style} --indent=3 "$@"
'';
checkPhase = ''
${final.stdenv.shellDryRun} "$target"
'';
meta.mainProgram = "nixfmt";
};
}