refactor: small changes
parent
749e2cf67d
commit
372ee5985a
|
@ -34,42 +34,54 @@ let
|
|||
|
||||
which-nix = pkgs.writeFishApplication {
|
||||
name = "which-nix";
|
||||
runtimeInputs = with pkgs; [ which coreutils-full ];
|
||||
runtimeInputs = with pkgs; [ which coreutils-full procps ];
|
||||
text = /* fish */ ''
|
||||
readlink -f (which $argv)
|
||||
function recurse -a path;
|
||||
if not test -f "$path"
|
||||
return
|
||||
end
|
||||
|
||||
echo $path
|
||||
if test -L $path
|
||||
recurse (readlink $path)
|
||||
end
|
||||
end
|
||||
|
||||
for arg in $argv
|
||||
recurse (which $arg)
|
||||
end
|
||||
'';
|
||||
completions = /* fish */ ''
|
||||
complete -c which-nix -fa '(__fish_complete_command)'
|
||||
'';
|
||||
};
|
||||
|
||||
gi = pkgs.writeFishApplication
|
||||
{
|
||||
name = "gi";
|
||||
runtimeInputs = with pkgs; [ fzf gum curl ];
|
||||
text = /* fish */ ''
|
||||
set url https://www.gitignore.io/api
|
||||
gi = pkgs.writeFishApplication {
|
||||
name = "gi";
|
||||
runtimeInputs = with pkgs; [ fzf gum curl ];
|
||||
text = /* fish */ ''
|
||||
set url https://www.gitignore.io/api
|
||||
|
||||
if test (count $argv) -eq 0
|
||||
set choice ( curl -sL $url/list \
|
||||
| string split "," \
|
||||
| fzf -m \
|
||||
| string join "," )
|
||||
else
|
||||
set choice (string join "," $argv[1..])
|
||||
end
|
||||
if test (count $argv) -eq 0
|
||||
set choice ( curl -sL $url/list \
|
||||
| string split "," \
|
||||
| fzf -m \
|
||||
| string join "," )
|
||||
else
|
||||
set choice (string join "," $argv[1..])
|
||||
end
|
||||
|
||||
if gum confirm "Overwrite current .gitignore?"
|
||||
curl -sL $url/$choice > .gitignore
|
||||
else
|
||||
curl -sL $url/$choice >> .gitignore
|
||||
end
|
||||
'';
|
||||
completions = /* fish */ ''
|
||||
set args (curl -sL https://www.gitignore.io/api/list | string split ",")
|
||||
complete -c gi -fa "$args"
|
||||
'';
|
||||
};
|
||||
if gum confirm "Overwrite current .gitignore?"
|
||||
curl -sL $url/$choice > .gitignore
|
||||
else
|
||||
curl -sL $url/$choice >> .gitignore
|
||||
end
|
||||
'';
|
||||
completions = /* fish */ ''
|
||||
set args (curl -sL https://www.gitignore.io/api/list | string split ",")
|
||||
complete -c gi -fa "$args"
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
users.users.moritz = {
|
||||
|
|
|
@ -8,9 +8,12 @@ with lib;
|
|||
let
|
||||
cfg = config.my.programs.fish;
|
||||
shellConfig = config.my.shell;
|
||||
exportVariables =
|
||||
lib.mapAttrsToList (n: v: ''set -x ${n} "${v}"'') shellConfig.variables;
|
||||
exportedVariables = lib.concatStringsSep "\n" exportVariables;
|
||||
exportedVariables =
|
||||
let
|
||||
exportVariables =
|
||||
lib.mapAttrsToList (n: v: ''set -x ${n} "${v}"'') shellConfig.variables;
|
||||
in
|
||||
lib.concatStringsSep "\n" exportVariables;
|
||||
in
|
||||
{
|
||||
options.my.programs.fish.enable = mkEnableOption "fish";
|
||||
|
|
|
@ -17,7 +17,7 @@ in
|
|||
gateway = "vpn.uni-leipzig.de";
|
||||
protocol = "anyconnect";
|
||||
user = "mb18cele@uni-leipzig.de";
|
||||
# NOTE file content as follows:
|
||||
# NOTE: file content as follows:
|
||||
# <my_password>
|
||||
# "1-Standard-Uni" or "2-Spezial-Alles"
|
||||
# Explanation:
|
||||
|
|
|
@ -2,7 +2,33 @@ _:
|
|||
|
||||
final: _:
|
||||
with final.lib;
|
||||
{
|
||||
rec {
|
||||
fishFile =
|
||||
{ name
|
||||
, destination
|
||||
, content
|
||||
, checkPhase ? null
|
||||
}:
|
||||
final.writeTextFile {
|
||||
inherit name destination;
|
||||
executable = true;
|
||||
allowSubstitutes = true;
|
||||
preferLocalBuild = false;
|
||||
text = ''
|
||||
#!${getExe final.fish}
|
||||
|
||||
${content}
|
||||
'';
|
||||
|
||||
checkPhase =
|
||||
if checkPhase == null then ''
|
||||
runHook preCheck
|
||||
${getExe final.fish} -n "$target"
|
||||
runHook postCheck
|
||||
''
|
||||
else checkPhase;
|
||||
};
|
||||
|
||||
writeFishApplication =
|
||||
{ name
|
||||
, text
|
||||
|
@ -11,30 +37,21 @@ with final.lib;
|
|||
, checkPhase ? null
|
||||
}:
|
||||
let
|
||||
fishFile = destination: content: final.writeTextFile {
|
||||
inherit name destination;
|
||||
executable = true;
|
||||
allowSubstitutes = true;
|
||||
preferLocalBuild = false;
|
||||
text = ''
|
||||
#!${getExe final.fish}
|
||||
runtimeHeader = optionalString (runtimeInputs != [ ])
|
||||
''export PATH="${makeBinPath runtimeInputs}:$PATH"'';
|
||||
|
||||
${optionalString (runtimeInputs != [ ]) ''export PATH="${makeBinPath runtimeInputs}:$PATH"''}
|
||||
|
||||
${content}
|
||||
'';
|
||||
|
||||
checkPhase =
|
||||
if checkPhase == null then ''
|
||||
runHook preCheck
|
||||
${getExe final.fish} -n "$target"
|
||||
runHook postCheck
|
||||
''
|
||||
else checkPhase;
|
||||
script = fishFile {
|
||||
inherit checkPhase;
|
||||
name = "${name}_script";
|
||||
destination = "/bin/${name}";
|
||||
content = concatLines [ runtimeHeader text ];
|
||||
};
|
||||
completions_file = fishFile {
|
||||
inherit checkPhase;
|
||||
name = "${name}_completions";
|
||||
destination = "/share/fish/vendor_completions.d/${name}.fish";
|
||||
content = concatLines [ runtimeHeader completions ];
|
||||
};
|
||||
|
||||
script = fishFile "/bin/${name}" text;
|
||||
completions_file = fishFile "/share/fish/vendor_completions.d/${name}.fish" completions;
|
||||
in
|
||||
final.symlinkJoin {
|
||||
inherit name;
|
||||
|
|
Loading…
Reference in New Issue