{ lib, config, pkgs, inputs, system, ... }: let inherit (lib) optionals; in { imports = [ ./apps ./browsers ./desktops ./gtk ./neovim ./ssh ./tmux ./zsh ./development.nix ./gaming.nix ./git.nix ./gpg.nix ./starship.nix ]; home.username = config.user; home.homeDirectory = config.homePath; home.stateVersion = config.stateVersion; news.display = "silent"; fonts.fontconfig.enable = true; home.packages = (with pkgs; [ home-manager pfetch-rs yt-dlp ]) ++ [ inputs.talc.packages.${system}.talc ] ++ (with pkgs; optionals config.desktops.enable [ # social gajim thunderbird-latest # programs brightnessctl easyeffects filezilla gimp3 imv mpv pavucontrol vlc zathura # media ffmpeg imagemagick ]) # mirrored from system ++ config.extraPackages; xdg = { enable = true; cacheHome = "${config.homePath}/.cache"; dataHome = "${config.homePath}/.local/share"; stateHome = "${config.homePath}/.local/state"; configHome = "${config.homePath}/.config"; configFile = { "aacs/keydb.cfg" = { source = ../files/keys/bluray.cfg; }; }; dataFile = { fonts = { source = ../files/fonts; recursive = true; }; }; mimeApps = { enable = true; defaultApplications = { # web "text/html" = "firefox.desktop"; "x-scheme-handler/http" = "firefox.desktop"; "x-scheme-handler/https" = "firefox.desktop"; "x-scheme-handler/about" = "firefox.desktop"; "x-scheme-handler/unknown" = "firefox.desktop"; # images "image/png" = "imv.desktop"; "image/jpeg" = "imv.desktop"; "image/webp" = "imv.desktop"; "image/tga" = "imv.desktop"; "image/bmp" = "imv.desktop"; "image/gif" = "imv.desktop"; # audio video "video/mp4" = "mpv.desktop"; "video/x-msvideo" = "mpv.desktop"; "video/mkv" = "mpv.desktop"; "video/webm" = "mpv.desktop"; "audio/mp3" = "mpv.desktop"; "audio/wav" = "mpv.desktop"; # other "application/pdf" = "org.pwmt.zathura.desktop"; "x-scheme-handler/mspa" = "unofficial-homestuck-collection.desktop"; "x-scheme-handler/discord" = "discord.desktop"; "x-scheme-handler/roblox-player" = "org.vinegarhq.Sober.desktop"; }; }; userDirs = { enable = true; createDirectories = false; desktop = "${config.homePath}/desktop"; documents = "${config.homePath}/documents"; download = "${config.homePath}/downloads"; music = "${config.homePath}/music"; pictures = "${config.homePath}/pictures"; publicShare = "${config.homePath}"; templates = "${config.homePath}"; videos = "${config.homePath}/videos"; }; }; # remove crap from home dir home.sessionVariables = { ANDROID_USER_HOME = "${config.xdg.dataHome}/android"; BUNDLE_USER_CONFIG = "${config.xdg.configHome}/bundle"; BUNDLE_USER_CACHE = "${config.xdg.cacheHome}/bundle"; BUNDLE_USER_PLUGIN = "${config.xdg.dataHome}/bundle"; CABAL_DIR = "${config.xdg.configHome}/cabal"; CABAL_CONFIG = "${config.xdg.configHome}/cabal/config"; CARGO_HOME = "${config.xdg.dataHome}/cargo"; DOCKER_CONFIG = "${config.xdg.configHome}/docker"; DOTNET_CLI_HOME = "${config.xdg.dataHome}/dotnet"; EM_CACHE = "${config.xdg.cacheHome}/emscripten"; FCEUX_HOME = "${config.xdg.configHome}/fceux"; GRADLE_USER_HOME = "${config.xdg.dataHome}/gradle"; HISTFILE = "${config.xdg.stateHome}/bash/history"; JULIA_DEPOT_PATH = "${config.xdg.dataHome}/julia"; LEIN_HOME = "${config.xdg.dataHome}/lein"; MIN_HOME = "${config.xdg.dataHome}/mix"; NODE_REPL_HISTORY = "${config.xdg.stateHome}/node_repl_history"; NUGET_PACKAGES = "${config.xdg.cacheHome}/NuGetPackages"; OPAMROOT = "${config.xdg.dataHome}/opam"; PYTHON_HISTORY = "${config.xdg.stateHome}/python_history"; RENPY_PATH_TO_SAVES = "${config.xdg.dataHome}/renpy"; RUSTUP_HOME = "${config.xdg.dataHome}/rustup"; SCREENDIR = "${config.xdg.dataHome}/screen"; SQLITE_HISTORY = "${config.xdg.cacheHome}/sqlite_history"; TEXMFVAR = "${config.xdg.cacheHome}/texlive/texmf-var"; W3M_DIR = "${config.xdg.dataHome}/w3m"; WINEPREFIX = "${config.xdg.dataHome}/wine"; XCOMPOSECACHE = "${config.xdg.cacheHome}/X11/compose"; _JAVA_OPTIONS = "-Djava.util.prefs.userRoot=${config.xdg.configHome}/java"; }; programs.home-manager.enable = true; }