From bc13c13ed7f7545a9f34010fa8c3febd1a92c58b Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Sun, 11 May 2025 22:33:07 -0500 Subject: [PATCH] news: reorganize news into YYYY/MM directory structure - Update news.nix to recursively search for news entries in subdirectories - Update create-news-entry.sh to place new entries in YYYY/MM/ directories - Move existing 2025 news entries to the new structure This makes the news directory more organized and easier to navigate. --- modules/misc/news.nix | 23 ++++++++++++++++--- .../{ => 2025/03}/2025-03-21_03-19-14.nix | 0 .../{ => 2025/03}/2025-03-22_03-18-58.nix | 0 .../{ => 2025/03}/2025-03-22_03-19-06.nix | 0 .../{ => 2025/04}/2025-04-02_13-01-34.nix | 0 .../04/2025-04-10_08-10-18.nix} | 0 .../04/2025-04-18_08-58-18.nix} | 0 .../04/2025-04-20_05-39-01.nix} | 0 .../04/2025-04-21_01-12-03.nix} | 0 .../04/2025-04-21_01-44-29.nix} | 0 .../04/2025-04-21_03-27-49.nix} | 0 .../{ => 2025/04}/2025-04-26_03-16-59.nix | 0 .../04/2025-04-26_13-26-13.nix} | 0 .../{ => 2025/04}/2025-04-27_03-17-07.nix | 0 .../{ => 2025/04}/2025-04-28_03-17-15.nix | 0 .../{ => 2025/04}/2025-04-28_03-17-23.nix | 0 .../{ => 2025/05}/2025-05-02_03-14-27.nix | 0 .../{ => 2025/05}/2025-05-02_03-14-36.nix | 0 .../{ => 2025/05}/2025-05-03_03-14-19.nix | 0 .../{ => 2025/05}/2025-05-04_03-14-11.nix | 0 .../{ => 2025/05}/2025-05-05_03-14-02.nix | 0 .../{ => 2025/05}/2025-05-08_03-13-52.nix | 0 .../{ => 2025/05}/2025-05-08_17-45-24.nix | 0 .../{ => 2025/05}/2025-05-09_03-13-20.nix | 0 .../05/2025-05-11_01-08-48.nix} | 0 .../{ => 2025/05}/2025-05-11_03-13-09.nix | 0 modules/misc/news/create-news-entry.sh | 11 ++++++--- 27 files changed, 28 insertions(+), 6 deletions(-) rename modules/misc/news/{ => 2025/03}/2025-03-21_03-19-14.nix (100%) rename modules/misc/news/{ => 2025/03}/2025-03-22_03-18-58.nix (100%) rename modules/misc/news/{ => 2025/03}/2025-03-22_03-19-06.nix (100%) rename modules/misc/news/{ => 2025/04}/2025-04-02_13-01-34.nix (100%) rename modules/misc/news/{2025-04-10_10-10-18.nix => 2025/04/2025-04-10_08-10-18.nix} (100%) rename modules/misc/news/{2025-04-18_10-58-18.nix => 2025/04/2025-04-18_08-58-18.nix} (100%) rename modules/misc/news/{2025-04-20_00-39-01.nix => 2025/04/2025-04-20_05-39-01.nix} (100%) rename modules/misc/news/{2025-04-20_20-12-03.nix => 2025/04/2025-04-21_01-12-03.nix} (100%) rename modules/misc/news/{2025-04-20_18-44-29.nix => 2025/04/2025-04-21_01-44-29.nix} (100%) rename modules/misc/news/{2025-04-20_20-27-49.nix => 2025/04/2025-04-21_03-27-49.nix} (100%) rename modules/misc/news/{ => 2025/04}/2025-04-26_03-16-59.nix (100%) rename modules/misc/news/{2025-04-26_18-56-13.nix => 2025/04/2025-04-26_13-26-13.nix} (100%) rename modules/misc/news/{ => 2025/04}/2025-04-27_03-17-07.nix (100%) rename modules/misc/news/{ => 2025/04}/2025-04-28_03-17-15.nix (100%) rename modules/misc/news/{ => 2025/04}/2025-04-28_03-17-23.nix (100%) rename modules/misc/news/{ => 2025/05}/2025-05-02_03-14-27.nix (100%) rename modules/misc/news/{ => 2025/05}/2025-05-02_03-14-36.nix (100%) rename modules/misc/news/{ => 2025/05}/2025-05-03_03-14-19.nix (100%) rename modules/misc/news/{ => 2025/05}/2025-05-04_03-14-11.nix (100%) rename modules/misc/news/{ => 2025/05}/2025-05-05_03-14-02.nix (100%) rename modules/misc/news/{ => 2025/05}/2025-05-08_03-13-52.nix (100%) rename modules/misc/news/{ => 2025/05}/2025-05-08_17-45-24.nix (100%) rename modules/misc/news/{ => 2025/05}/2025-05-09_03-13-20.nix (100%) rename modules/misc/news/{2025-05-10_21-08-48.nix => 2025/05/2025-05-11_01-08-48.nix} (100%) rename modules/misc/news/{ => 2025/05}/2025-05-11_03-13-09.nix (100%) diff --git a/modules/misc/news.nix b/modules/misc/news.nix index c42d2748..e9cf1db3 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -55,12 +55,29 @@ let ); isNixFile = n: v: v == "regular" && lib.hasSuffix ".nix" n; - # builtins.attrNames return the values in alphabetical order - newsFiles = builtins.attrNames (lib.filterAttrs isNixFile (builtins.readDir ./news)); + isDirectory = n: v: v == "directory"; + + # Recursively collect all .nix files from a directory + collectNixFiles = + dir: + let + contents = builtins.readDir dir; + files = lib.filterAttrs isNixFile contents; + fileList = map (file: dir + "/${file}") (builtins.attrNames files); + + # Process subdirectories + subdirs = lib.filterAttrs isDirectory contents; + subdirFiles = lib.concatMap (subdir: collectNixFiles (dir + "/${subdir}")) ( + builtins.attrNames subdirs + ); + in + fileList ++ subdirFiles; + + newsFiles = collectNixFiles ./news; newsEntries = builtins.map ( newsFile: let - imported = import (./news + "/${newsFile}"); + imported = import newsFile; in if builtins.isFunction imported then imported { inherit config lib pkgs; } else imported ) newsFiles; diff --git a/modules/misc/news/2025-03-21_03-19-14.nix b/modules/misc/news/2025/03/2025-03-21_03-19-14.nix similarity index 100% rename from modules/misc/news/2025-03-21_03-19-14.nix rename to modules/misc/news/2025/03/2025-03-21_03-19-14.nix diff --git a/modules/misc/news/2025-03-22_03-18-58.nix b/modules/misc/news/2025/03/2025-03-22_03-18-58.nix similarity index 100% rename from modules/misc/news/2025-03-22_03-18-58.nix rename to modules/misc/news/2025/03/2025-03-22_03-18-58.nix diff --git a/modules/misc/news/2025-03-22_03-19-06.nix b/modules/misc/news/2025/03/2025-03-22_03-19-06.nix similarity index 100% rename from modules/misc/news/2025-03-22_03-19-06.nix rename to modules/misc/news/2025/03/2025-03-22_03-19-06.nix diff --git a/modules/misc/news/2025-04-02_13-01-34.nix b/modules/misc/news/2025/04/2025-04-02_13-01-34.nix similarity index 100% rename from modules/misc/news/2025-04-02_13-01-34.nix rename to modules/misc/news/2025/04/2025-04-02_13-01-34.nix diff --git a/modules/misc/news/2025-04-10_10-10-18.nix b/modules/misc/news/2025/04/2025-04-10_08-10-18.nix similarity index 100% rename from modules/misc/news/2025-04-10_10-10-18.nix rename to modules/misc/news/2025/04/2025-04-10_08-10-18.nix diff --git a/modules/misc/news/2025-04-18_10-58-18.nix b/modules/misc/news/2025/04/2025-04-18_08-58-18.nix similarity index 100% rename from modules/misc/news/2025-04-18_10-58-18.nix rename to modules/misc/news/2025/04/2025-04-18_08-58-18.nix diff --git a/modules/misc/news/2025-04-20_00-39-01.nix b/modules/misc/news/2025/04/2025-04-20_05-39-01.nix similarity index 100% rename from modules/misc/news/2025-04-20_00-39-01.nix rename to modules/misc/news/2025/04/2025-04-20_05-39-01.nix diff --git a/modules/misc/news/2025-04-20_20-12-03.nix b/modules/misc/news/2025/04/2025-04-21_01-12-03.nix similarity index 100% rename from modules/misc/news/2025-04-20_20-12-03.nix rename to modules/misc/news/2025/04/2025-04-21_01-12-03.nix diff --git a/modules/misc/news/2025-04-20_18-44-29.nix b/modules/misc/news/2025/04/2025-04-21_01-44-29.nix similarity index 100% rename from modules/misc/news/2025-04-20_18-44-29.nix rename to modules/misc/news/2025/04/2025-04-21_01-44-29.nix diff --git a/modules/misc/news/2025-04-20_20-27-49.nix b/modules/misc/news/2025/04/2025-04-21_03-27-49.nix similarity index 100% rename from modules/misc/news/2025-04-20_20-27-49.nix rename to modules/misc/news/2025/04/2025-04-21_03-27-49.nix diff --git a/modules/misc/news/2025-04-26_03-16-59.nix b/modules/misc/news/2025/04/2025-04-26_03-16-59.nix similarity index 100% rename from modules/misc/news/2025-04-26_03-16-59.nix rename to modules/misc/news/2025/04/2025-04-26_03-16-59.nix diff --git a/modules/misc/news/2025-04-26_18-56-13.nix b/modules/misc/news/2025/04/2025-04-26_13-26-13.nix similarity index 100% rename from modules/misc/news/2025-04-26_18-56-13.nix rename to modules/misc/news/2025/04/2025-04-26_13-26-13.nix diff --git a/modules/misc/news/2025-04-27_03-17-07.nix b/modules/misc/news/2025/04/2025-04-27_03-17-07.nix similarity index 100% rename from modules/misc/news/2025-04-27_03-17-07.nix rename to modules/misc/news/2025/04/2025-04-27_03-17-07.nix diff --git a/modules/misc/news/2025-04-28_03-17-15.nix b/modules/misc/news/2025/04/2025-04-28_03-17-15.nix similarity index 100% rename from modules/misc/news/2025-04-28_03-17-15.nix rename to modules/misc/news/2025/04/2025-04-28_03-17-15.nix diff --git a/modules/misc/news/2025-04-28_03-17-23.nix b/modules/misc/news/2025/04/2025-04-28_03-17-23.nix similarity index 100% rename from modules/misc/news/2025-04-28_03-17-23.nix rename to modules/misc/news/2025/04/2025-04-28_03-17-23.nix diff --git a/modules/misc/news/2025-05-02_03-14-27.nix b/modules/misc/news/2025/05/2025-05-02_03-14-27.nix similarity index 100% rename from modules/misc/news/2025-05-02_03-14-27.nix rename to modules/misc/news/2025/05/2025-05-02_03-14-27.nix diff --git a/modules/misc/news/2025-05-02_03-14-36.nix b/modules/misc/news/2025/05/2025-05-02_03-14-36.nix similarity index 100% rename from modules/misc/news/2025-05-02_03-14-36.nix rename to modules/misc/news/2025/05/2025-05-02_03-14-36.nix diff --git a/modules/misc/news/2025-05-03_03-14-19.nix b/modules/misc/news/2025/05/2025-05-03_03-14-19.nix similarity index 100% rename from modules/misc/news/2025-05-03_03-14-19.nix rename to modules/misc/news/2025/05/2025-05-03_03-14-19.nix diff --git a/modules/misc/news/2025-05-04_03-14-11.nix b/modules/misc/news/2025/05/2025-05-04_03-14-11.nix similarity index 100% rename from modules/misc/news/2025-05-04_03-14-11.nix rename to modules/misc/news/2025/05/2025-05-04_03-14-11.nix diff --git a/modules/misc/news/2025-05-05_03-14-02.nix b/modules/misc/news/2025/05/2025-05-05_03-14-02.nix similarity index 100% rename from modules/misc/news/2025-05-05_03-14-02.nix rename to modules/misc/news/2025/05/2025-05-05_03-14-02.nix diff --git a/modules/misc/news/2025-05-08_03-13-52.nix b/modules/misc/news/2025/05/2025-05-08_03-13-52.nix similarity index 100% rename from modules/misc/news/2025-05-08_03-13-52.nix rename to modules/misc/news/2025/05/2025-05-08_03-13-52.nix diff --git a/modules/misc/news/2025-05-08_17-45-24.nix b/modules/misc/news/2025/05/2025-05-08_17-45-24.nix similarity index 100% rename from modules/misc/news/2025-05-08_17-45-24.nix rename to modules/misc/news/2025/05/2025-05-08_17-45-24.nix diff --git a/modules/misc/news/2025-05-09_03-13-20.nix b/modules/misc/news/2025/05/2025-05-09_03-13-20.nix similarity index 100% rename from modules/misc/news/2025-05-09_03-13-20.nix rename to modules/misc/news/2025/05/2025-05-09_03-13-20.nix diff --git a/modules/misc/news/2025-05-10_21-08-48.nix b/modules/misc/news/2025/05/2025-05-11_01-08-48.nix similarity index 100% rename from modules/misc/news/2025-05-10_21-08-48.nix rename to modules/misc/news/2025/05/2025-05-11_01-08-48.nix diff --git a/modules/misc/news/2025-05-11_03-13-09.nix b/modules/misc/news/2025/05/2025-05-11_03-13-09.nix similarity index 100% rename from modules/misc/news/2025-05-11_03-13-09.nix rename to modules/misc/news/2025/05/2025-05-11_03-13-09.nix diff --git a/modules/misc/news/create-news-entry.sh b/modules/misc/news/create-news-entry.sh index 04d9d6ec..512b63e6 100755 --- a/modules/misc/news/create-news-entry.sh +++ b/modules/misc/news/create-news-entry.sh @@ -2,15 +2,20 @@ #! nix-shell -I https://github.com/NixOS/nixpkgs/archive/05f0934825c2a0750d4888c4735f9420c906b388.tar.gz -i bash -p coreutils DATE="$(date --iso-8601=second --universal)" -FILENAME="$(date --date="$DATE" +"%Y-%m-%d_%H-%M-%S").nix" +YEAR="$(date --date="$DATE" +"%Y")" +MONTH="$(date --date="$DATE" +"%m")" +FILENAME_BASE="$(date --date="$DATE" +"%Y-%m-%d_%H-%M-%S")" DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")" +# Create year/month directory structure if it doesn't exist +mkdir -p "$DIRNAME/$YEAR/$MONTH" + cd "$DIRNAME" || { >&2 echo "Failed to change to the script directory: $DIRNAME" exit 1 } -cat - << EOF > "$FILENAME" +cat - << EOF > "$YEAR/$MONTH/$FILENAME_BASE.nix" { time = "$DATE"; condition = true; @@ -20,5 +25,5 @@ cat - << EOF > "$FILENAME" } EOF -echo "Successfully created a news file: $DIRNAME/$FILENAME" +echo "Successfully created a news file: $DIRNAME/$YEAR/$MONTH/$FILENAME_BASE.nix" echo "You can open the file above in your text editor and edit now."