about summary refs log blame commit diff stats
path: root/modules/home/conf/lf/commands/default.nix
blob: 933769ac23326902e0725d56d659f31135b1bf42 (plain) (tree)
1
2
3
4
5
6
7
8
9

         
                

                  
         
                 
                       
       
                             
                                 
                      
                                                                                            
                                 
     
                     
 
           
         
                 
                              

         
                                                                     

                         
         
                 
                              

       
                                                                     

                                           
         
                 
                              

       
                                                                     

                                          
         
                 
                              

       
                                                                     


                                               
                     










                                        
                        



                                        
                   

                       
                         







                                        
                     







                                        
                    






                                        
                               






                                        
                         





                                        


                      


                                   
                    
                      


                                        
                 
                    

                      
                     
                      
                            
                              
                      
                
                   
                      
                          
                            
                                          

                                                                          
    
                       
                         
                                          



                                                                                      

                                                              
    
                                     
                             
                      
                         
                           







                                        
                            

                      
                        

                      
                   








                                        
                       



                                        



             
{
  pkgs,
  sysLib,
  shell_library,
  system,
  ...
}: let
  functionCall = {
    name,
    dependencies,
    replacementStrings,
    ...
  }:
    sysLib.writeShellScript {
      inherit name;
      src = ./scripts/${name}.sh;
      keepPath = true;
      dependencies = dependencies ++ (builtins.attrValues {inherit (pkgs) dash coreutils;});
      inherit replacementStrings;
    }
    + "/bin/${name}";

  shell = {
    name,
    dependencies,
    replacementStrings ? null,
    ...
  }: ''
    ''${{
      ${functionCall {inherit name dependencies replacementStrings;}}
    }}
  ''; # closes the lf tui
  pipe = {
    name,
    dependencies,
    replacementStrings ? null,
    ...
  }: ''
    %{{
      ${functionCall {inherit name dependencies replacementStrings;}}
    }}
  ''; # runs the command in the ui/term bar
  async = {
    name,
    dependencies,
    replacementStrings ? null,
    ...
  }: ''
    &{{
      ${functionCall {inherit name dependencies replacementStrings;}}
    }}
  ''; # runs the command in the background
  wait = {
    name,
    dependencies,
    replacementStrings ? null,
    ...
  }: ''
    !{{
      ${functionCall {inherit name dependencies replacementStrings;}}
    }}
  ''; # adds a prompt after the command has run
in {
  archive = shell {
    name = "archive";
    dependencies = builtins.attrValues {
      inherit
        (pkgs)
        fzf
        gnutar
        xz
        p7zip
        zip
        ;
    };
  };
  broot_jump = shell {
    name = "broot_jump";
    dependencies = builtins.attrValues {
      inherit (pkgs) broot;
    };
  };
  chmod = pipe {
    name = "chmod";
    dependencies = [];
  };
  clear_trash = shell {
    name = "clear_trash";
    dependencies = builtins.attrValues {
      inherit
        (pkgs)
        fzf
        trashy
        ;
    };
  };
  dl_file = pipe {
    name = "dl_file";
    dependencies = builtins.attrValues {
      inherit
        (pkgs)
        xdragon
        curl
        ;
    };
  };
  dragon = pipe {
    name = "dragon";
    dependencies = builtins.attrValues {
      inherit
        (pkgs)
        xdragon
        ;
    };
  };
  dragon_individual = pipe {
    name = "dragon_individual";
    dependencies = builtins.attrValues {
      inherit
        (pkgs)
        xdragon
        ;
    };
  };
  dragon_stay = pipe {
    name = "dragon_stay";
    dependencies = builtins.attrValues {
      inherit
        (pkgs)
        xdragon
        ;
    };
  };
  execute = shell {
    name = "execute";
    dependencies = [];
  };
  follow_link = pipe {
    name = "follow_link";
    dependencies = with pkgs; [lf];
  };
  fzf_jump = shell {
    name = "fzf_jump";
    dependencies = builtins.attrValues {
      inherit (pkgs) fzf lf gnused;
    };
  };
  mk_dir = pipe {
    name = "mk_dir";
    dependencies = [];
  };
  mk_file = shell {
    name = "mk_file";
    dependencies = [];
  };
  mk_file_and_edit = shell {
    name = "mk_file_and_edit";
    dependencies = [];
  };
  mk_ln = pipe {
    name = "mk_ln";
    dependencies = [];
  };
  mk_scr_default = shell {
    name = "mk_scr_default";
    dependencies = builtins.attrValues {};
    replacementStrings = {
      SHELL_LIBRARY_TEMPLATE = "${shell_library.rawTemplate."${system}"}";
    };
  };
  mk_scr_temp = shell {
    name = "mk_scr_temp";
    dependencies = builtins.attrValues {};
    replacementStrings = {
      SHELL_LIBRARY_TEMPLATE = "${shell_library.rawTemplate."${system}"}";
      TO_BE_SHELL_LIBRARY_PATH = "%SHELL_LIBRARY_PATH"; # replacement is not recursive
    };
  };
  view_file = async {
    name = "view_file";
    dependencies = builtins.attrValues {inherit (pkgs) file;};
  };
  go_project_base_directory = async {
    name = "go_project_root";
    dependencies = [];
  };
  restore_trash = shell {
    name = "restore_trash";
    dependencies = builtins.attrValues {
      inherit
        (pkgs)
        fzf
        trashy
        ;
    };
  };
  set_wall_paper = pipe {
    name = "set_wall_paper";
    dependencies = [];
  };
  stripspace = pipe {
    name = "stripspace";
    dependencies = [];
  };
  trash = pipe {
    name = "trash";
    dependencies = builtins.attrValues {
      inherit
        (pkgs)
        trashy
        trash-cli
        findutils
        ;
    };
  };
  unarchive = pipe {
    name = "unarchive";
    dependencies = builtins.attrValues {
      inherit
        (pkgs)
        gnutar
        unzip
        p7zip
        ;
    };
  };
}