diff --git a/modules/misc/news.nix b/modules/misc/news.nix index c42d27480..e9cf1db37 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 04d9d6ecd..512b63e64 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."