syncthing: init

This commit is contained in:
ooks-io 2025-01-28 19:58:23 +11:00
parent 84849d5b2d
commit 8e84af98ac
9 changed files with 91 additions and 6 deletions

View file

@ -10,6 +10,7 @@
ooknet = {
host = {
syncthing.enable = true;
admin = {
name = "ooks";
shell = "fish";

View file

@ -10,6 +10,7 @@
ooknet = {
host = {
syncthing.enable = true;
admin = {
name = "ooks";
shell = "fish";

View file

@ -9,6 +9,7 @@
./kdeconnect.nix
./ookbrightness.nix
./zellijMenu.nix
./syncthing-applet.nix
./nemo.nix
./qtscrcpy.nix
];

View file

@ -0,0 +1,15 @@
{
osConfig,
pkgs,
lib,
ook,
...
}: let
inherit (lib) mkIf;
inherit (ook.lib.services) mkTrayService;
inherit (osConfig.ooknet.host) syncthing;
in {
config = mkIf syncthing.enable {
systemd.user.services."syncthing-applet" = mkTrayService "${pkgs.syncthingtray-minimal}/bin/syncthingtray --wait";
};
}

View file

@ -11,5 +11,6 @@
./tailscale.nix
./networking.nix
./security
./syncthing.nix
];
}

View file

@ -12,9 +12,9 @@
flakeInputs = filterAttrs (_: v: isType "flake" v) inputs;
paths = {
FLAKE = "/home/${admin.name}/.config/ooknet";
FLAKE = "/home/${admin.name}/Summit/ooknet";
WEBSITE = "${paths.FLAKE}/outputs/pkgs/website";
KUNZEN = "/home/${admin.name}/.config/kunzen";
KUNZEN = "/home/${admin.name}/Summit/kunzen";
};
in {
environment = {
@ -76,7 +76,5 @@ in {
# nix rebuild utililty
programs.nh = mkIf (role == "workstation") {
enable = true;
# sets an environment variable FLAKE that nh will refer to by default
flake = mkIf admin.homeManager "/home/${admin.name}/.config/ooknet";
};
}

View file

@ -3,7 +3,7 @@
pkgs,
...
}: let
inherit (lib) mkOption;
inherit (lib) mkEnableOption mkOption;
inherit (lib.types) str enum bool package;
in {
options.ooknet.host = {
@ -18,6 +18,10 @@ in {
type = enum ["workstation" "server"];
};
syncthing = {
enable = mkEnableOption "Enable syncthing";
};
boot = {
loader = mkOption {
type = enum ["systemd" "grub"];

View file

@ -0,0 +1,52 @@
{
config,
lib,
...
}: let
inherit (lib) mkIf;
inherit (config.networking) hostName;
inherit (config.ooknet.host) admin syncthing;
inherit (config.ooknet.secrets) devices;
key = config.age.secrets."${hostName}-syncthing-key";
cert = config.age.secrets."${hostName}-syncthing-cert";
in {
config = mkIf syncthing.enable {
services.syncthing = {
enable = true;
user = admin.name;
group = "users";
openDefaultPorts = true;
configDir = "/home/${admin.name}/.config/syncthing";
# host credentials
key = key.path;
cert = cert.path;
settings = {
# obfuscating device ids is not necessary, but i do it anyway
devices = {
"ooksdesk" = {
inherit (devices.ooksdesk) id addresses;
};
"ooksmedia" = {
inherit (devices.ooksmedia) id addresses;
};
};
folders = {
"Summit" = {
path = "/home/${admin.name}/Summit";
devices = [
"ooksdesk"
"ooksmedia"
];
ignorePerms = false;
};
};
};
};
# Dont create default ~/Sync folder
# https://wiki.nixos.org/wiki/Syncthing
systemd.services.syncthing.environment.STNODEFAULTFOLDER = "true";
};
}

View file

@ -7,6 +7,18 @@
};
Install.WantedBy = ["graphical-session.target"];
};
mkTrayService = exec: {
Unit = {
Requires = ["tray.target"];
After = ["graphical-session-pre.target" "tray.target"];
PartOf = ["graphical-session.target"];
};
Service = {
ExecStart = exec;
};
Install = {WantedBy = ["graphical-session.target"];};
};
in {
inherit mkGraphicalService;
inherit mkGraphicalService mkTrayService;
}