Auto-create persist directories.
This commit is contained in:
parent
33f45c56bf
commit
c173ea87cf
@ -18,6 +18,7 @@
|
||||
./roles/sm64ex
|
||||
./roles/steam_rom_manager
|
||||
./util/unfree_polyfill
|
||||
./util/persist_symlink
|
||||
];
|
||||
|
||||
home.username = "deck";
|
||||
|
@ -1,4 +1,3 @@
|
||||
# MANUAL: mkdir -p ~/.persist/.local/share/2ship/saves
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
@ -39,14 +38,7 @@ in
|
||||
source = ./files/2ship2harkinian.json;
|
||||
};
|
||||
|
||||
home.persistence."/home/deck/.persist" = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".local/share/2ship/saves";
|
||||
method = "symlink";
|
||||
}
|
||||
];
|
||||
};
|
||||
me.persist.directories = [ ".local/share/2ship/saves" ];
|
||||
home.persistence."/home/deck/.state" = {
|
||||
files = [
|
||||
".local/share/2ship/mm.o2r"
|
||||
|
@ -1,4 +1,3 @@
|
||||
# MANUAL: mkdir -p ~/.persist/.local/share/ares/saves ~/.persist/.local/share/ares/screenshots
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
@ -34,18 +33,10 @@ in
|
||||
steam_ares
|
||||
];
|
||||
|
||||
home.persistence."/home/deck/.persist" = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".local/share/ares/saves";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".local/share/ares/screenshots";
|
||||
method = "symlink";
|
||||
}
|
||||
];
|
||||
};
|
||||
me.persist.directories = [
|
||||
".local/share/ares/saves"
|
||||
".local/share/ares/screenshots"
|
||||
];
|
||||
|
||||
home.file.".local/share/ares/settings.bml" = {
|
||||
source = ./files/settings.bml;
|
||||
|
@ -2,7 +2,6 @@
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
home-manager,
|
||||
...
|
||||
}:
|
||||
|
||||
@ -48,63 +47,18 @@ in
|
||||
source = ./files/GCPadNew.ini;
|
||||
};
|
||||
|
||||
home.persistence."/home/deck/.persist" = {
|
||||
directories = [
|
||||
{
|
||||
# The system memory
|
||||
directory = ".local/share/dolphin-emu/Wii";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
# Memory card(s)
|
||||
directory = ".local/share/dolphin-emu/Load";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
# Gamecube
|
||||
directory = ".local/share/dolphin-emu/GC";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
# Screenshots
|
||||
directory = ".local/share/dolphin-emu/ScreenShots";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
# GameBoy Advanced
|
||||
directory = ".local/share/dolphin-emu/GBA/Saves";
|
||||
method = "symlink";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
home.persistence."/home/deck/.state" = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".cache/dolphin-emu";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".local/share/dolphin-emu/Shaders";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".local/share/dolphin-emu/StateSaves";
|
||||
method = "symlink";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
home.activation = {
|
||||
createDolphinDirectories = home-manager.lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
for dir in '.local/share/dolphin-emu/Wii' '.cache/dolphin-emu' '.local/share/dolphin-emu/Load' '.local/share/dolphin-emu/GC' '.local/share/dolphin-emu/ScreenShots' '.local/share/dolphin-emu/GBA/Saves' '.local/share/dolphin-emu/Shaders' '.local/share/dolphin-emu/StateSaves' ; do
|
||||
echo "checking $dir"
|
||||
if [[ ! -d "$HOME/.persist/$dir" ]]; then
|
||||
$DRY_RUN_CMD mkdir $VERBOSE_ARG -p "$HOME/.persist/$dir"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
};
|
||||
me.persist.directories = [
|
||||
".local/share/dolphin-emu/Wii" # The system memory
|
||||
".local/share/dolphin-emu/Load" # Memory card(s)
|
||||
".local/share/dolphin-emu/GC" # Gamecube
|
||||
".local/share/dolphin-emu/ScreenShots" # Screenshots
|
||||
".local/share/dolphin-emu/GBA/Saves" # GameBoy Advanced
|
||||
];
|
||||
me.state.directories = [
|
||||
".cache/dolphin-emu"
|
||||
".local/share/dolphin-emu/Shaders"
|
||||
".local/share/dolphin-emu/StateSaves"
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(
|
||||
|
@ -1,4 +1,3 @@
|
||||
# MANUAL: mkdir -p ~/.persist/.config/PCSX2/memcards ~/.state/.config/PCSX2/cache ~/.state/.config/PCSX2/sstates ~/.state/.config/PCSX2/snaps ~/.state/.config/PCSX2/covers ~/.state/.config/PCSX2/videos
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
@ -36,38 +35,14 @@ in
|
||||
source = ./files/PCSX2.ini;
|
||||
};
|
||||
|
||||
home.persistence."/home/deck/.persist" = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".config/PCSX2/memcards";
|
||||
method = "symlink";
|
||||
}
|
||||
];
|
||||
};
|
||||
home.persistence."/home/deck/.state" = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".config/PCSX2/cache";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".config/PCSX2/sstates";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".config/PCSX2/snaps";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".config/PCSX2/covers";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".config/PCSX2/videos";
|
||||
method = "symlink";
|
||||
}
|
||||
];
|
||||
};
|
||||
me.persist.directories = [ ".config/PCSX2/memcards" ];
|
||||
me.state.directories = [
|
||||
".config/PCSX2/cache"
|
||||
".config/PCSX2/sstates"
|
||||
".config/PCSX2/snaps"
|
||||
".config/PCSX2/covers"
|
||||
".config/PCSX2/videos"
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(
|
||||
|
@ -1,4 +1,3 @@
|
||||
# MANUAL: mkdir -p ~/.state/.cache/rpcs3 ~/.persist/.config/rpcs3/dev_hdd0 ~/.persist/.config/rpcs3/dev_hdd1 ~/.persist/.config/rpcs3/savestates ~/.persist/.config/rpcs3/dev_usb000 ~/.persist/.config/rpcs3/dev_flash
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
@ -35,39 +34,14 @@ in
|
||||
# .config/rpcs3/config.yml
|
||||
# .config/rpcs3/GuiConfigs/CurrentSettings.ini
|
||||
|
||||
home.persistence."/home/deck/.persist" = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".config/rpcs3/dev_hdd0";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".config/rpcs3/dev_hdd1";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".config/rpcs3/savestates";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
directory = ".config/rpcs3/dev_usb000";
|
||||
method = "symlink";
|
||||
}
|
||||
{
|
||||
# Seems to be where the firmware is installed.
|
||||
directory = ".config/rpcs3/dev_flash";
|
||||
method = "symlink";
|
||||
}
|
||||
];
|
||||
};
|
||||
home.persistence."/home/deck/.state" = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".cache/rpcs3";
|
||||
method = "symlink";
|
||||
}
|
||||
];
|
||||
};
|
||||
me.persist.directories = [
|
||||
".config/rpcs3/dev_hdd0"
|
||||
".config/rpcs3/dev_hdd1"
|
||||
".config/rpcs3/savestates"
|
||||
".config/rpcs3/dev_usb000"
|
||||
".config/rpcs3/dev_flash" # Seems to be where the firmware is installed.
|
||||
];
|
||||
me.state.directories = [ ".cache/rpcs3" ];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(
|
||||
|
@ -1,4 +1,3 @@
|
||||
# MANUAL: mkdir -p ~/.persist/.local/share/soh/Save
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
@ -39,14 +38,7 @@ in
|
||||
source = ./files/shipofharkinian.json;
|
||||
};
|
||||
|
||||
home.persistence."/home/deck/.persist" = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".local/share/soh/Save";
|
||||
method = "symlink";
|
||||
}
|
||||
];
|
||||
};
|
||||
me.persist.directories = [ ".local/share/soh/Save" ];
|
||||
home.persistence."/home/deck/.state" = {
|
||||
files = [
|
||||
".local/share/soh/oot.otr"
|
||||
|
@ -1,4 +1,3 @@
|
||||
# MANUAL: mkdir -p ~/.persist/.config/steam-rom-manager/userData
|
||||
{
|
||||
stdenv,
|
||||
config,
|
||||
@ -29,6 +28,8 @@ in
|
||||
package
|
||||
];
|
||||
|
||||
me.persist.directories = [ ".config/steam-rom-manager/userData" ];
|
||||
|
||||
home.persistence."/home/deck/.persist" = {
|
||||
directories = [
|
||||
{
|
||||
|
@ -0,0 +1,79 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
home-manager,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ ];
|
||||
|
||||
options.me = {
|
||||
persist.directories = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ ".local/share/dolphin-emu/Wii" ];
|
||||
description = "List of folders relative to the home directory to persist.";
|
||||
};
|
||||
state.directories = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ ".local/share/dolphin-emu/Shaders" ];
|
||||
description = "List of folders relative to the home directory to keep as state.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf (config.me.persist.directories != [ ]) {
|
||||
home.persistence."/home/deck/.persist" = {
|
||||
directories = (
|
||||
builtins.map (entry: {
|
||||
directory = entry;
|
||||
method = "symlink";
|
||||
}) config.me.persist.directories
|
||||
);
|
||||
};
|
||||
|
||||
home.activation = {
|
||||
createPersistDirectories = home-manager.lib.hm.dag.entryAfter [ "writeBoundary" ] (
|
||||
let
|
||||
dirlist = lib.strings.escapeShellArgs config.me.persist.directories;
|
||||
in
|
||||
''
|
||||
for dir in ${dirlist} ; do
|
||||
if [[ ! -d "$HOME/.persist/$dir" ]]; then
|
||||
$DRY_RUN_CMD mkdir $VERBOSE_ARG -p "$HOME/.persist/$dir"
|
||||
fi
|
||||
done
|
||||
''
|
||||
);
|
||||
};
|
||||
})
|
||||
(lib.mkIf (config.me.state.directories != [ ]) {
|
||||
home.persistence."/home/deck/.state" = {
|
||||
directories = (
|
||||
builtins.map (entry: {
|
||||
directory = entry;
|
||||
method = "symlink";
|
||||
}) config.me.state.directories
|
||||
);
|
||||
};
|
||||
|
||||
home.activation = {
|
||||
createStateDirectories = home-manager.lib.hm.dag.entryAfter [ "writeBoundary" ] (
|
||||
let
|
||||
dirlist = lib.strings.escapeShellArgs config.me.state.directories;
|
||||
in
|
||||
''
|
||||
for dir in ${dirlist} ; do
|
||||
if [[ ! -d "$HOME/.state/$dir" ]]; then
|
||||
$DRY_RUN_CMD mkdir $VERBOSE_ARG -p "$HOME/.state/$dir"
|
||||
fi
|
||||
done
|
||||
''
|
||||
);
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user