1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 18:21:07 +01:00
Files
niveum/configs/cloud.nix

170 lines
4.4 KiB
Nix
Raw Normal View History

2022-03-10 21:52:12 +01:00
{
config,
lib,
pkgs,
...
2025-12-27 22:22:54 +01:00
}:
{
systemd.user.services.systemd-tmpfiles-clean = {
enable = true;
wantedBy = [ "default.target" ];
startAt = "daily";
script = "systemd-tmpfiles --user --clean";
serviceConfig = {
Type = "oneshot";
};
};
2025-12-27 22:22:54 +01:00
systemd.user.tmpfiles.users.me.rules =
map pkgs.lib.niveum.tmpfilesConfig [
{
type = "d";
mode = "0755";
age = "7d";
path = "${config.users.users.me.home}/sync/Downloads";
}
{
type = "d";
mode = "0755";
age = "7d";
path = "${config.users.users.me.home}/cloud/nextcloud/tmp";
}
]
++
map
(
path:
pkgs.lib.niveum.tmpfilesConfig {
type = "L+";
user = config.users.users.me.name;
group = config.users.users.me.group;
mode = "0755";
argument = "${config.users.users.me.home}/sync/${path}";
path = "${config.users.users.me.home}/${path}";
}
)
[
".ssh"
".gnupg"
".pki"
".local/share/aerc"
];
services.gnome.gnome-keyring.enable = true;
security.pam.services.lightdm.enableGnomeKeyring = true;
2020-10-24 13:26:39 +02:00
home-manager.users.me = {
2022-01-08 10:18:33 +01:00
services.nextcloud-client = {
2023-07-17 08:31:34 +02:00
enable = true;
2022-01-08 10:18:33 +01:00
startInBackground = true;
};
};
systemd.user.services.nextcloud-syncer = {
enable = false;
2025-12-27 22:22:54 +01:00
wants = [ "network-online.target" ];
wantedBy = [ "default.target" ];
startAt = "*:00/10";
2025-12-27 22:22:54 +01:00
script =
let
kieran = {
user = "kieran";
passwordFile = config.age.secrets.nextcloud-password-kieran.path;
endpoint = "https://cloud.kmein.de";
target = "${config.users.users.me.home}/notes";
};
in
''
mkdir -p ${lib.escapeShellArg kieran.target}
${pkgs.nextcloud-client}/bin/nextcloudcmd --non-interactive --user ${kieran.user} --password "$(cat ${kieran.passwordFile})" --path /Notes ${lib.escapeShellArg kieran.target} ${kieran.endpoint}
'';
serviceConfig = {
Type = "oneshot";
Restart = "on-failure";
};
};
environment.systemPackages = [
(pkgs.writers.writeDashBin "book" ''
set -efu
book="$({
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/syncthing/library -type f
2023-07-17 08:31:34 +02:00
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/nextcloud/Books -type f
} | ${pkgs.fzf}/bin/fzf)"
exec ${pkgs.zathura}/bin/zathura "$book"
'')
2025-12-27 22:22:54 +01:00
(
let
kieran = {
user = "kieran.meinhardt@gmail.com";
passwordFile = config.age.secrets.mega-password.path;
};
megatools =
command:
''${pkgs.megatools}/bin/megatools ${command} --username ${lib.escapeShellArg kieran.user} --password "$(cat ${kieran.passwordFile})"'';
in
pkgs.writers.writeDashBin "book-mega" ''
set -efu
selection="$(${megatools "ls"} | ${pkgs.fzf}/bin/fzf)"
test -n "$selection" || exit 1
2025-12-27 07:29:47 +01:00
tmpdir="$(mktemp -p "$XDG_RUNTIME_DIR" -d)"
trap clean EXIT
clean() {
rm -rf "$tmpdir"
}
(
cd "$tmpdir"
${megatools "get"} "$selection"
exec ${pkgs.zathura}/bin/zathura "$(basename "$selection")"
)
2025-12-27 22:22:54 +01:00
''
)
];
age.secrets.mega-password = {
file = ../secrets/mega-password.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
2023-12-06 14:41:49 +01:00
services.syncthing = {
2019-04-19 03:11:51 +02:00
enable = true;
2019-05-29 17:23:38 +02:00
user = "kfm";
2019-04-19 03:11:51 +02:00
openDefaultPorts = true;
2019-05-29 17:23:38 +02:00
configDir = "/home/kfm/.config/syncthing";
dataDir = "/home/kfm/.config/syncthing";
cert = config.age.secrets.syncthing-cert.path;
key = config.age.secrets.syncthing-key.path;
2023-12-06 14:41:49 +01:00
settings = {
devices = pkgs.lib.niveum.syncthingIds;
folders = {
"${config.users.users.me.home}/sync" = {
2025-12-27 22:22:54 +01:00
devices = [
"kabsa"
"manakish"
"fatteh"
];
label = "sync";
versioning.type = "trashcan";
versioning.params.cleanoutDays = 100;
};
"${config.users.users.me.home}/mobile" = {
2025-12-27 22:22:54 +01:00
devices = [
"kabsa"
"manakish"
"fatteh"
"kibbeh"
];
id = "mobile";
label = "mobile";
versioning.type = "trashcan";
versioning.params.cleanoutDays = 100;
2023-12-06 14:41:49 +01:00
};
2021-12-01 17:38:47 +01:00
};
2022-03-10 21:52:12 +01:00
};
2019-04-19 03:11:51 +02:00
};
}