feat: massive refactor

This commit is contained in:
2025-12-20 12:57:47 +08:00
parent f4c1b313ce
commit 454ad5885d
97 changed files with 1023 additions and 960 deletions

83
modules/core/persist.nix Normal file
View File

@@ -0,0 +1,83 @@
{
lib,
config,
username,
...
}:
let
cfg = config.my.persist;
in
{
options.my.persist = {
enable = lib.mkEnableOption "persist";
location = lib.mkOption {
type = lib.types.str;
default = "/nix/persist";
example = lib.literalExpression ''
"/persistent"
'';
description = lib.mdDoc ''
Persistent location
'';
};
homeDirs = lib.mkOption {
default = [ ];
example = lib.literalExpression ''
[
".minecraft"
".cargo"
]
'';
description = lib.mdDoc ''
HomeManager persistent dirs.
'';
};
nixosDirs = lib.mkOption {
default = [ ];
example = lib.literalExpression ''
[
"/root"
"/var"
]
'';
description = lib.mdDoc ''
NixOS persistent dirs.
'';
};
homeFiles = lib.mkOption {
default = [ ];
example = lib.literalExpression ''
[
".hmcl.json"
]
'';
description = lib.mdDoc ''
Persistent files.
'';
};
nixosFiles = lib.mkOption {
default = [ ];
example = lib.literalExpression ''
[
"/etc/machine-id"
]
'';
description = lib.mdDoc ''
Persistent files.
'';
};
};
config = lib.mkIf cfg.enable {
programs.fuse.userAllowOther = true;
environment.persistence.${cfg.location} = {
hideMounts = true;
directories = cfg.nixosDirs;
files = cfg.nixosFiles;
users.${username} = {
files = cfg.homeFiles;
directories = cfg.homeDirs;
};
};
};
}