mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 19:46:05 +01:00
fabric: add module
This commit is contained in:
parent
f3ff73a5e1
commit
61c84a3bbf
5 changed files with 176 additions and 0 deletions
72
modules/programs/fabric-ai.nix
Normal file
72
modules/programs/fabric-ai.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkIf
|
||||||
|
mkEnableOption
|
||||||
|
mkPackageOption
|
||||||
|
;
|
||||||
|
|
||||||
|
inherit (lib.hm.shell)
|
||||||
|
mkBashIntegrationOption
|
||||||
|
mkZshIntegrationOption
|
||||||
|
;
|
||||||
|
|
||||||
|
cfg = config.programs.fabric-ai;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ];
|
||||||
|
options.programs.fabric-ai = {
|
||||||
|
enable = mkEnableOption "Fabric AI";
|
||||||
|
package = mkPackageOption pkgs "fabric-ai" { nullable = true; };
|
||||||
|
enablePatternsAliases = mkEnableOption "aliases for all Fabric's patterns";
|
||||||
|
enableYtAlias = mkEnableOption "Fabric's `yt` alias" // {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
enableBashIntegration = mkBashIntegrationOption { inherit config; };
|
||||||
|
enableZshIntegration = mkZshIntegrationOption { inherit config; };
|
||||||
|
};
|
||||||
|
|
||||||
|
config =
|
||||||
|
let
|
||||||
|
posixShellCode = ''
|
||||||
|
${lib.optionalString cfg.enablePatternsAliases ''
|
||||||
|
for pattern_file in $HOME/.config/fabric/patterns/*; do
|
||||||
|
pattern_name="$(basename "$pattern_file")"
|
||||||
|
alias_name="''${FABRIC_ALIAS_PREFIX:-}''${pattern_name}"
|
||||||
|
|
||||||
|
alias_command="alias $alias_name='fabric --pattern $pattern_name'"
|
||||||
|
|
||||||
|
eval "$alias_command"
|
||||||
|
done
|
||||||
|
''}
|
||||||
|
|
||||||
|
${lib.optionalString cfg.enableYtAlias ''
|
||||||
|
yt() {
|
||||||
|
if [ "$#" -eq 0 ] || [ "$#" -gt 2 ]; then
|
||||||
|
echo "Usage: yt [-t | --timestamps] youtube-link"
|
||||||
|
echo "Use the '-t' flag to get the transcript with timestamps."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
transcript_flag="--transcript"
|
||||||
|
if [ "$1" = "-t" ] || [ "$1" = "--timestamps" ]; then
|
||||||
|
transcript_flag="--transcript-with-timestamps"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
local video_link="$1"
|
||||||
|
fabric -y "$video_link" $transcript_flag
|
||||||
|
}
|
||||||
|
''}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
mkIf cfg.enable {
|
||||||
|
home.packages = mkIf (cfg.package != null) [ cfg.package ];
|
||||||
|
programs.bash.initExtra = mkIf cfg.enableBashIntegration posixShellCode;
|
||||||
|
programs.zsh.initContent = mkIf cfg.enableZshIntegration posixShellCode;
|
||||||
|
};
|
||||||
|
}
|
||||||
39
tests/modules/programs/fabric-ai/bashrc
Normal file
39
tests/modules/programs/fabric-ai/bashrc
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
|
||||||
|
|
||||||
|
# Commands that should be applied only for interactive shells.
|
||||||
|
[[ $- == *i* ]] || return
|
||||||
|
|
||||||
|
HISTFILESIZE=100000
|
||||||
|
HISTSIZE=10000
|
||||||
|
|
||||||
|
shopt -s histappend
|
||||||
|
shopt -s checkwinsize
|
||||||
|
shopt -s extglob
|
||||||
|
shopt -s globstar
|
||||||
|
shopt -s checkjobs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if [[ ! -v BASH_COMPLETION_VERSINFO ]]; then
|
||||||
|
. "@bash-completion@/etc/profile.d/bash_completion.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
yt() {
|
||||||
|
if [ "$#" -eq 0 ] || [ "$#" -gt 2 ]; then
|
||||||
|
echo "Usage: yt [-t | --timestamps] youtube-link"
|
||||||
|
echo "Use the '-t' flag to get the transcript with timestamps."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
transcript_flag="--transcript"
|
||||||
|
if [ "$1" = "-t" ] || [ "$1" = "--timestamps" ]; then
|
||||||
|
transcript_flag="--transcript-with-timestamps"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
local video_link="$1"
|
||||||
|
fabric -y "$video_link" $transcript_flag
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
3
tests/modules/programs/fabric-ai/default.nix
Normal file
3
tests/modules/programs/fabric-ai/default.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
fabric-ai-example-config = ./example-config.nix;
|
||||||
|
}
|
||||||
16
tests/modules/programs/fabric-ai/example-config.nix
Normal file
16
tests/modules/programs/fabric-ai/example-config.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
programs.bash.enable = true;
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
programs.fabric-ai = {
|
||||||
|
enable = true;
|
||||||
|
enablePattersAliases = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileExists home-files/.bashrc
|
||||||
|
assertFileExists home-files/.zshrc
|
||||||
|
|
||||||
|
assertFileContent home-files/.bashrc ${./bashrc}
|
||||||
|
assertFileContent home-files/.zshrc ${./zshrc}
|
||||||
|
'';
|
||||||
|
}
|
||||||
46
tests/modules/programs/fabric-ai/zshrc
Normal file
46
tests/modules/programs/fabric-ai/zshrc
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
typeset -U path cdpath fpath manpath
|
||||||
|
for profile in ${(z)NIX_PROFILES}; do
|
||||||
|
fpath+=($profile/share/zsh/site-functions $profile/share/zsh/$ZSH_VERSION/functions $profile/share/zsh/vendor-completions)
|
||||||
|
done
|
||||||
|
|
||||||
|
HELPDIR="@zsh@/share/zsh/$ZSH_VERSION/help"
|
||||||
|
|
||||||
|
autoload -U compinit && compinit
|
||||||
|
# History options should be set in .zshrc and after oh-my-zsh sourcing.
|
||||||
|
# See https://github.com/nix-community/home-manager/issues/177.
|
||||||
|
HISTSIZE="10000"
|
||||||
|
SAVEHIST="10000"
|
||||||
|
|
||||||
|
HISTFILE="/home/hm-user/.zsh_history"
|
||||||
|
mkdir -p "$(dirname "$HISTFILE")"
|
||||||
|
|
||||||
|
setopt HIST_FCNTL_LOCK
|
||||||
|
unsetopt APPEND_HISTORY
|
||||||
|
setopt HIST_IGNORE_DUPS
|
||||||
|
unsetopt HIST_IGNORE_ALL_DUPS
|
||||||
|
unsetopt HIST_SAVE_NO_DUPS
|
||||||
|
unsetopt HIST_FIND_NO_DUPS
|
||||||
|
setopt HIST_IGNORE_SPACE
|
||||||
|
unsetopt HIST_EXPIRE_DUPS_FIRST
|
||||||
|
setopt SHARE_HISTORY
|
||||||
|
unsetopt EXTENDED_HISTORY
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
yt() {
|
||||||
|
if [ "$#" -eq 0 ] || [ "$#" -gt 2 ]; then
|
||||||
|
echo "Usage: yt [-t | --timestamps] youtube-link"
|
||||||
|
echo "Use the '-t' flag to get the transcript with timestamps."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
transcript_flag="--transcript"
|
||||||
|
if [ "$1" = "-t" ] || [ "$1" = "--timestamps" ]; then
|
||||||
|
transcript_flag="--transcript-with-timestamps"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
local video_link="$1"
|
||||||
|
fabric -y "$video_link" $transcript_flag
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue