From 9349553d3e24d34dc47a82cdf49b98bc7fd6adf4 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Mon, 5 May 2025 21:01:09 +0200 Subject: [PATCH] home/downloads-sorter: sort more stuff --- home/config/downloads-sorter.nix | 102 +++++++++++++++++++++++++++++-- 1 file changed, 97 insertions(+), 5 deletions(-) diff --git a/home/config/downloads-sorter.nix b/home/config/downloads-sorter.nix index f00977b..d1dcf9a 100644 --- a/home/config/downloads-sorter.nix +++ b/home/config/downloads-sorter.nix @@ -1,13 +1,105 @@ -{ ... }: +{ config, lib, ... }: +let + cfg = config.services.downloads-sorter; +in { services.downloads-sorter = { enable = true; mappings = { - "pictures" = [ - "*.jpg" - "*.png" - "*.gif" + "archives" = [ + "*.rar" + "*.tar.*" + "*.tgz" + "*.zip" + "*.gz" + "*.xz" + "*.bz2" + ]; + + "pictures" = { + createDirIfNotExists = false; + globs = [ + "*.gif" + "*.jpeg" + "*.jpg" + "*.png" + "*.svg" + "*.webp" + ]; + }; + + "docs" = { + createDirIfNotExists = false; + globs = [ + "*.md" + + "*.pdf" + "*.PDF" # why do people do this + + "*.docx" + "*.doc" + + "*.xlsx" + "*.xls" + + "*.ppt" + "*.pptx" + + "*.odt" + "*.ods" + "*.odp" + "*.odg" + "*.odf" + ]; + }; + + "books" = { + createDirIfNotExists = false; + globs = [ "*.epub" ]; + }; + + "videos" = { + createDirIfNotExists = false; + globs = [ + "*.mp4" + "*.webm" + "*.mov" + ]; + }; + + "isos" = [ + "*.iso" + "*.img" + ]; + "jars" = [ "*.jar" ]; + "txt" = [ "*.txt" ]; + "patches" = [ + "*.patch" + "*.diff" ]; }; }; + + systemd.user.tmpfiles.settings."10-downloads-sorter-service" = let + inherit (cfg) downloadsDirectory; + inherit (config.xdg) userDirs; + + symlink = link: target: { + "${link}".L = { + user = config.home.username; + mode = "0770"; + argument = "${target}"; + }; + + "${target}".d = { + user = config.home.username; + mode = "0770"; + }; + }; + in lib.mkMerge [ + (symlink "${downloadsDirectory}/books" "${userDirs.documents}/books/downloads") + (symlink "${downloadsDirectory}/docs" "${userDirs.documents}/downloads") + (symlink "${downloadsDirectory}/pictures" "${userDirs.pictures}/downloads") + (symlink "${downloadsDirectory}/videos" "${userDirs.videos}/downloads") + ]; }