168 lines
4.6 KiB
Nix
168 lines
4.6 KiB
Nix
{ 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 💀
|
|
];
|
|
# }}}
|
|
# {{{ What's app
|
|
satellite.persistence.at.state.apps.whatsapp.directories = [
|
|
"${config.xdg.configHome}/whatsapp-for-linux"
|
|
"${config.xdg.stateHome}/whatsapp-for-linux"
|
|
];
|
|
|
|
satellite.persistence.at.cache.apps.whatsapp.directories = [
|
|
"${config.xdg.cacheHome}/whatsapp-for-linux"
|
|
];
|
|
# }}}
|
|
# {{{ 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 ];
|
|
# }}}
|
|
# }}}
|
|
}
|