{ config, ... }: { # {{{ Set up my custom imperanenceo wrapper satellite.persistence = { enable = true; # Actual data/media (eg: projects, images, videos, etc) at.data.path = "/persist/data"; at.data.prefixDirectories = false; # App state I want to keep at.state.path = "/persist/state"; # App state which I should be able to delete on a whim at.cache.path = "/persist/local/cache"; }; # }}} # {{{ XDG dirs # The lack of "~/Desktop" and "~/Downloads" is intentional! satellite.persistence.at.data.apps.main.directories = [ config.xdg.userDirs.documents config.xdg.userDirs.pictures config.xdg.userDirs.music config.xdg.userDirs.videos config.xdg.userDirs.extraConfig.XDG_PROJECTS_DIR ]; # }}} # {{{ OpenTabletDriver satellite.persistence.at.state.apps.open-tablet-driver.directories = [ "${config.xdg.configHome}/OpenTabletDriver" ]; # }}} # {{{ Programming tooling # {{{ Elm satellite.persistence.at.cache.apps.elm.directories = [ ".elm" ]; # }}} # {{{ Fly.io satellite.persistence.at.state.apps.fly-io.directories = [ ".fly" ]; # }}} # {{{ Haskell satellite.persistence.at.cache.apps.haskell.directories = [ ".ghc" ".stack" ".local/state/cabal" "${config.xdg.cacheHome}/stack" "${config.xdg.cacheHome}/ghcide" "${config.xdg.cacheHome}/cabal" ]; # TODO: should I move this in it's own haskell-specific file? home.file.".stack/config.yaml".text = builtins.toJSON { notify-if-nix-on-path = false; }; # }}} # {{{ Nodejs satellite.persistence.at.cache.apps.nodejs = { files = [ # ".yarnrc" # auto-generated by yarn ".node_repl_history" # ".ts_node_repl_history" ]; directories = [ # Node & npm "${config.xdg.cacheHome}/node-gyp" ".npm" # Yarn "${config.xdg.cacheHome}/yarn" # Pnpm "${config.xdg.cacheHome}/pnpm" "${config.xdg.dataHome}/pnpm" ".local/state/pnpm" ]; }; # }}} # {{{ Purescript satellite.persistence.at.cache.apps.purescript.directories = [ "${config.xdg.dataHome}/purescript" "${config.xdg.cacheHome}/spago" ]; # }}} # {{{ Python satellite.persistence.at.cache.apps.python = { files = [ ".python_history" ]; directories = [ ".ipython" ".jupyter" "${config.xdg.dataHome}/jupyter" "${config.xdg.cacheHome}/pip" ]; }; # }}} # {{{ Rust satellite.persistence.at.cache.apps.rust.directories = [ ".cargo" ".rustup" ]; # }}} # }}} # {{{ Desktop apps # {{{ QBittorrent satellite.persistence.at.state.apps.qbittorrent.directories = [ "${config.xdg.configHome}/qBittorrent" # Config options ]; satellite.persistence.at.cache.apps.qbittorrent.directories = [ "${config.xdg.dataHome}/qBittorrent" # Torrent files, logs, etc ]; # }}} # {{{ Signal satellite.persistence.at.state.apps.signal.directories = [ "${config.xdg.configHome}/Signal" # Why tf does signal store it's state here 💀 ]; # }}} # {{{ Lutris # TODO: there might be more to cache in .cache/lutris satellite.persistence.at.state.apps.lutris.directories = [ "${config.xdg.configHome}/lutris" # General config data "${config.xdg.cacheHome}/lutris/banners" # Game banners "${config.xdg.cacheHome}/lutris/coverart" # Game cover art # Aparently IO intensive stuff like games prefer symlinks? { directory = "media/games/lutris"; method = "symlink"; } # Lutris games ]; # }}} # {{{ Wine satellite.persistence.at.state.apps.wine.directories = [ ".wine" ]; # }}} # {{{ Element satellite.persistence.at.state.apps.element.directories = [ "${config.xdg.configHome}/Element" ]; # }}} # {{{ Bitwarden satellite.persistence.at.state.apps.bitwarden.directories = [ "${config.xdg.configHome}/Bitwarden" ]; # }}} # {{{ Gnome keyring services.gnome-keyring.enable = true; satellite.persistence.at.state.apps.gnome-keyring.directories = [ "${config.xdg.dataHome}/keyrings" ]; # }}} # }}} # {{{ Cli # {{{ Sops satellite.persistence.at.state.apps.sops.directories = [ "${config.xdg.configHome}/sops/age" ]; # }}} # {{{ QMK home.sessionVariables.QMK_HOME = "${config.xdg.dataHome}/qmk"; satellite.persistence.at.state.apps.qmk.directories = [ config.home.sessionVariables.QMK_HOME ]; # }}} # }}} }