nix-configs

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

blog-music.nix (2178B)


      1 {
      2   pkgs,
      3   domain,
      4   ...
      5 }: let
      6   blog-music = pkgs.writeShellScriptBin "blog-music" ''
      7     # variables
      8 	post="$HOME/vault/src/blog.${domain}/content/music.md"
      9 	header="$(grep -v \| "$post")"
     10 	# functions
     11     function lastmod {
     12       echo -n "Amending lastmod value... "
     13       mod_timestamp="$(date +%FT%H:%M:00)"
     14       sed -i "s/lastmod: .*/lastmod: $mod_timestamp/g" "$1"
     15       echo -e "$i \e[32mdone\e[39m"
     16     }
     17 	echo -n "Checking for $(basename "$post")..."
     18 	if test -f "$post"; then
     19 		echo -e "$i \e[32mexists\e[39m"
     20 	else
     21 		echo -e "$i \e[31mdoes not exist\e[39m. Exiting"
     22 		exit 1
     23 	fi
     24 	source=liked.csv
     25 	echo -n "Checking for $source..."
     26 	if test -f "$source"; then
     27 		echo -e "$i \e[32mexists\e[39m"
     28 	else
     29 		echo -e "$i \e[31mdoes not exist\e[39m. Exiting"
     30 		exit 1
     31 	fi
     32 	echo -n "Processing $source... "
     33 	tail -n +2 <"$source" |
     34 		awk -F'\",\"' '{print $4}' |
     35 		sed 's/\\\,/,/g' >temp.artists.log
     36 	tail -n +2 <"$source" |
     37 		awk -F'\",\"' '{print $2}' |
     38 		sed 's/ - .... - Remaster$//g' |
     39 		sed 's/ - .... Remaster$//g' |
     40 		sed 's/ - .... Remastered Edition$//g' |
     41 		sed 's/ - .... re-mastered version$//g' |
     42 		sed 's/ - .... Remastered Version$//g' |
     43 		sed 's/ - feat.*$//g' |
     44 		sed 's/ - Live$//g' |
     45 		sed 's/ - Original Mix$//g' |
     46 		sed 's/ - Remaster$//g' |
     47 		sed 's/ - Remastered ....$//g' |
     48 		sed 's/ - Remastered$//g' |
     49 		sed 's/ - Remastered Version$//g' |
     50 		sed 's/ (.... Remaster)$//g' |
     51 		sed 's/ (feat.*)$//g' |
     52 		sed 's/ (Live)//g' |
     53 		sed 's/\[[^][]*\]//g' |
     54 		awk '{print "["$0"]"}' >temp.tracks.log
     55 	tail -n +2 <"$source" |
     56 		awk -F'\"' '{print $2}' |
     57 		awk '{print "("$0")"}' >temp.links.log
     58 	echo -e "\e[32mdone\e[39m"
     59 	# write page
     60 	echo -n "Writing page... "
     61 	{
     62 		printf "%s\n\n" "$header"
     63 		printf "%s" "$(paste temp.artists.log temp.tracks.log temp.links.log | sed 's/\t/ \| /g' | sed 's/^/\| /g' | sed 's/$/ \|/g' | sed 's/\] | (/\](/g')" | sort | uniq -i | sed -e '1i\| ------ \| ----- \|' | sed -e '1i\| Artist \| Title \|'
     64 	} >"$post"
     65 	echo -e "\e[32mdone\e[39m"
     66 	lastmod "$post"
     67 	echo -n "Deleting temporary files... "
     68 	rm temp.{artists,tracks,links}.log
     69 	echo -e "\e[32mdone\e[39m"
     70 	
     71   '';
     72 in {
     73   environment.systemPackages = [blog-music];
     74 }