added stuff
This commit is contained in:
parent
6d31f5b5a1
commit
7d4f626b7d
907 changed files with 70990 additions and 0 deletions
76
nyx/modules/extra/shared/home-manager/transience/default.nix
Normal file
76
nyx/modules/extra/shared/home-manager/transience/default.nix
Normal file
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkOption mkEnableOption types;
|
||||
|
||||
cfg = config.services.transience;
|
||||
in {
|
||||
meta.maintainers = [lib.maintainers.NotAShelf];
|
||||
options.services.transience = {
|
||||
enable = mkEnableOption "transience";
|
||||
|
||||
user = mkOption {
|
||||
type = with types; nullOr string;
|
||||
default = null;
|
||||
description = "The user that the directories will be relative to";
|
||||
};
|
||||
|
||||
days = mkOption {
|
||||
type = types.int;
|
||||
default = 30;
|
||||
description = "Number of days after which files are deleted";
|
||||
};
|
||||
|
||||
directories = mkOption {
|
||||
type = with types; listOf path;
|
||||
default = [];
|
||||
description = ''
|
||||
A list of directories that will be cleaned.
|
||||
|
||||
Must be relative to the user's home directory.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.enable -> cfg.user == null;
|
||||
message = ''
|
||||
You have enabled services.transience, but have not specified your user. You must specify a "main user"
|
||||
for your system for Transience to work properly.
|
||||
'';
|
||||
}
|
||||
{
|
||||
assertion = cfg.directories == [];
|
||||
message = ''
|
||||
You have enabled services.transience, but have not specified any directories to clean up. Please specify
|
||||
at least one folder. This option defaults to an empty list, but you must specify a list of directories for
|
||||
Transience to work properly.
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
systemd.user.services.transience = let
|
||||
dirs =
|
||||
map (
|
||||
x:
|
||||
config.home-manager.users.${cfg.user}.home.homeDirectory + "/" + x
|
||||
)
|
||||
cfg.directories;
|
||||
in {
|
||||
Install.wantedBy = ["default.target"];
|
||||
Service.ExecStart = ''
|
||||
${builtins.concatStringsSep "\n" (map (x: "find ${
|
||||
lib.escapeShellArg x
|
||||
} -mtime +${cfg.days} -exec rm -rv {} + -depth;")
|
||||
dirs)}
|
||||
'';
|
||||
|
||||
Unit.Description = "Clean up transient directories";
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue