nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

payslips.nix (996B)


      1 { pkgs, ... }:
      2 
      3 let
      4   payslips = pkgs.writeShellScriptBin "payslips" ''
      5     # Default destination directory, or use argument
      6     destination_default="/mnt/paperwork/personal/workplace/wages"
      7     destination_dir="''${1:-$destination_default}"
      8 
      9     # Process matching files
     10     for file in ./*-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9].pdf; do
     11         [[ -e "$file" ]] || continue # Skip if no match
     12         filename=$(basename "$file")
     13         # Extract the date
     14         if [[ "$filename" =~ ([0-9]{2})-([0-9]{2})-([0-9]{4})\.pdf$ ]]; then
     15             day="''${BASH_REMATCH[1]}"
     16             month="''${BASH_REMATCH[2]}"
     17             year="''${BASH_REMATCH[3]}"
     18             new_filename="''${year}-''${month}-''${day}.pdf"
     19             mv "$file" "$destination_dir/$new_filename"
     20             echo "Moved: $file to $destination_dir/$new_filename"
     21         else
     22             echo "Skipped (no valid date in name): $filename"
     23         fi
     24     done
     25   '';
     26 in {
     27   environment.systemPackages = [ payslips ];
     28 }