164 lines
6.4 KiB
Nix
164 lines
6.4 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
cfg = config.myOptions.services.syncthing;
|
|
inherit (config.myOptions.other.system) username;
|
|
hmCfg = config.home-manager.users.${username};
|
|
configDir = config.home-manager.users.${username}.xdg.configHome;
|
|
|
|
inherit (lib.modules) mkEnableOption mkIf mkOption;
|
|
inherit (lib.types) attrs;
|
|
in {
|
|
options.myOptions.services.syncthing = {
|
|
enable = mkEnableOption "syncthing";
|
|
extraSettings = mkOption {
|
|
type = attrs;
|
|
description = "extra per host syncthing settings";
|
|
default = {};
|
|
};
|
|
};
|
|
|
|
# https://wes.today/nixos-syncthing/
|
|
config = let
|
|
port = 8384;
|
|
inherit (hmCfg.home) homeDirectory;
|
|
in mkIf cfg.enable {
|
|
services.syncthing = {
|
|
enable = true;
|
|
dataDir = homeDirectory;
|
|
configDir = "${hmCfg.xdg.configHome}/syncthing";
|
|
openDefaultPorts = true;
|
|
user = username;
|
|
group = "users";
|
|
guiAddress = "0.0.0.0:${toString port}";
|
|
overrideDevices = false;
|
|
overrideFolders = false;
|
|
settings = {
|
|
devices = {
|
|
niks.id = "2YJLRJI-PB3OKLI-KJZGMYQ-RH5OVCS-LQAXBUT-IX2Q5TO-K24NBNS-33YQIQL";
|
|
del.id = "NZUKCEW-QYCXDGY-62LOMIH-47JUSD5-VXAVUTF-VG356GJ-ZHQCF3S-2PDIHAX";
|
|
chmura.id = "TJCCHXS-HA5ZXUI-NKXWICR-4ADPHCA-TVRNDBN-54E622Z-TUAAVOM-YIJHWAI";
|
|
};
|
|
folders = {
|
|
Projects = {
|
|
path = "${homeDirectory}/Projects";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
Studia = {
|
|
path = "${homeDirectory}/Studia";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
KeePassXC = {
|
|
path = "${homeDirectory}/KeePassXC";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
Notes = {
|
|
path = "${homeDirectory}/Notes";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
mieszkanie = {
|
|
path = "${homeDirectory}/mieszkanie";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
PrismLauncher = {
|
|
path = "${hmCfg.xdg.dataHome}/PrismLauncher";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
jacekpoz = {
|
|
path = "${homeDirectory}/jacekpoz";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
OsuStable = {
|
|
path = "${homeDirectory}/.osu";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
Cool = {
|
|
path = "${homeDirectory}/Cool";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
RimWorld = {
|
|
path = "${configDir}/unity3d/Ludeon Studios/RimWorld by Ludeon Studios";
|
|
devices = [ "niks" "del" "chmura" ];
|
|
versioning = {
|
|
type = "staggered";
|
|
params = {
|
|
cleanInterval = "3600";
|
|
maxAge = "15552000";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
} // cfg.extraSettings;
|
|
};
|
|
services.caddy = mkIf (username == "chmura") {
|
|
virtualHosts."sync.jacekpoz.pl".extraConfig = ''
|
|
reverse_proxy * localhost:${toString port}
|
|
'';
|
|
};
|
|
};
|
|
}
|