let modulesPath = ./modules; modules = builtins.foldl' ( emptySet: importedModules: emptySet // importedModules ) {} (map (name: { "${name}" = import (modulesPath + "/${name}"); }) [ "bat" "firefox" "obs-studio" "qbittorrent" "steam" ]) // builtins.foldl' ( emptySet: importedModules: emptySet // importedModules ) {} (map (name: { "${name}" = import (modulesPath + "/${name}.nix"); }) [ "bottom" "brave" "direnv" "freetube" "git" "helix" "home-manager" "lazygit" "mpv" "nextcloud" "nushell" "starship" "vscode" "wezterm" "yazi" "zellij" "zoxide" ]) // builtins.foldl' ( emptySet: importedModules: emptySet // importedModules ) {} (map (name: { "misc-${name}" = import (modulesPath + "/misc/${name}.nix"); }) [ "android" "commandLine" "desktop" "entertainment" "internet" "productionArt" "productionAudio" "productionVideo" "productionWriting" "tracking" "virtualization" ]); in { flake.homeModules = { desktop = { imports = builtins.attrValues { inherit (modules) brave firefox misc-android misc-desktop misc-internet qbittorrent vscode ; }; }; entertainment = { imports = builtins.attrValues { inherit (modules) freetube misc-entertainment mpv steam ; }; }; productionArt = { imports = builtins.attrValues { inherit (modules) misc-productionArt ; }; }; productionAudio = { imports = builtins.attrValues { inherit (modules) misc-productionAudio ; }; }; productionVideo = { imports = builtins.attrValues { inherit (modules) misc-productionVideo obs-studio ; }; }; productionWriting = { imports = builtins.attrValues { inherit (modules) misc-productionWriting ; }; }; shared = { imports = builtins.attrValues { inherit (modules) bat bottom direnv git helix home-manager lazygit misc-commandLine misc-virtualization nushell starship wezterm # yazi zellij zoxide ; }; }; }; }