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 }