added syncthing
This commit is contained in:
parent
21eea779db
commit
905c4e73b2
|
@ -10,6 +10,8 @@
|
||||||
| `emergent` | Desktop Computer | Eve | Desktop |
|
| `emergent` | Desktop Computer | Eve | Desktop |
|
||||||
| `threshold` | Laptop | Eve | Laptop |
|
| `threshold` | Laptop | Eve | Laptop |
|
||||||
| `wolfram` | Steam Deck | House | Handheld |
|
| `wolfram` | Steam Deck | House | Handheld |
|
||||||
|
| `ceder` | A5 Tablet (not using nix) | Leyla | Tablet |
|
||||||
|
| `skate` | A4 Tablet (not using nix) | Leyla | Tablet |
|
||||||
|
|
||||||
# Tooling
|
# Tooling
|
||||||
## Rebuilding
|
## Rebuilding
|
||||||
|
@ -58,4 +60,3 @@
|
||||||
- wake on LAN
|
- wake on LAN
|
||||||
- ISO target that contains authorized keys for nixos-anywhere https://github.com/diegofariasm/yggdrasil/blob/4acc43ebc7bcbf2e41376d14268e382007e94d78/hosts/bootstrap/default.nix
|
- ISO target that contains authorized keys for nixos-anywhere https://github.com/diegofariasm/yggdrasil/blob/4acc43ebc7bcbf2e41376d14268e382007e94d78/hosts/bootstrap/default.nix
|
||||||
- Immich
|
- Immich
|
||||||
- Syncthing declarative set up for devices https://nixos.wiki/wiki/Syncthing
|
|
|
@ -19,6 +19,16 @@
|
||||||
ester.isDesktopUser = true;
|
ester.isDesktopUser = true;
|
||||||
eve.isDesktopUser = true;
|
eve.isDesktopUser = true;
|
||||||
};
|
};
|
||||||
|
sync = {
|
||||||
|
enable = true;
|
||||||
|
folders = {
|
||||||
|
leyla = {
|
||||||
|
documents.enable = true;
|
||||||
|
calendar.enable = true;
|
||||||
|
notes.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
./desktop.nix
|
./desktop.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./i18n.nix
|
./i18n.nix
|
||||||
|
./sync.nix
|
||||||
./impermanence.nix
|
./impermanence.nix
|
||||||
./disko.nix
|
./disko.nix
|
||||||
./server
|
./server
|
||||||
|
|
87
modules/nixos-modules/sync.nix
Normal file
87
modules/nixos-modules/sync.nix
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
mountDir = "/mnt/sync";
|
||||||
|
in {
|
||||||
|
options.host.sync = {
|
||||||
|
enable = lib.mkEnableOption "should sync thing be enabled on this device";
|
||||||
|
folders = {
|
||||||
|
leyla = {
|
||||||
|
documents = {
|
||||||
|
enable = lib.mkEnableOption "should the documents folder be synced";
|
||||||
|
};
|
||||||
|
calendar = {
|
||||||
|
enable = lib.mkEnableOption "should the calendar folder be synced";
|
||||||
|
};
|
||||||
|
notes = {
|
||||||
|
enable = lib.mkEnableOption "should the notes folder by synced";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraFolders = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf (lib.types.submodule ({...}: {
|
||||||
|
options = {
|
||||||
|
path = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
};
|
||||||
|
devices = lib.mkOption {
|
||||||
|
type = lib.types.listof lib.types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
systemd = lib.mkIf config.services.syncthing.enable {
|
||||||
|
tmpfiles.rules = [
|
||||||
|
"d ${mountDir} 755 syncthing syncthing -"
|
||||||
|
"d ${config.services.syncthing.dataDir} 755 syncthing syncthing -"
|
||||||
|
"d ${config.services.syncthing.configDir} 755 syncthing syncthing -"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.syncthing = {
|
||||||
|
enable = config.host.sync.enable;
|
||||||
|
user = "syncthing";
|
||||||
|
group = "syncthing";
|
||||||
|
dataDir = "${mountDir}/default";
|
||||||
|
configDir = "/etc/syncthing";
|
||||||
|
overrideDevices = true;
|
||||||
|
overrideFolders = true;
|
||||||
|
settings = {
|
||||||
|
devices = {
|
||||||
|
ceder = {
|
||||||
|
id = "MGXUJBS-7AENXHB-7YQRNWG-QILKEJD-5462U2E-WAQW4R4-I2TVK5H-SMK6LAA";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
folders = lib.mkMerge [
|
||||||
|
config.host.sync.folders.extraFolders
|
||||||
|
(lib.mkIf config.host.sync.folders.leyla.documents.enable {
|
||||||
|
"documents" = {
|
||||||
|
id = "hvrj0-9bm1p";
|
||||||
|
path = "/mnt/sync/leyla/documents";
|
||||||
|
devices = ["ceder"];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(lib.mkIf config.host.sync.folders.leyla.calendar.enable {
|
||||||
|
"calendar" = {
|
||||||
|
id = "8oatl-1rv6w";
|
||||||
|
path = "/mnt/sync/leyla/calendar";
|
||||||
|
devices = ["ceder"];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(lib.mkIf config.host.sync.folders.leyla.notes.enable {
|
||||||
|
"notes" = {
|
||||||
|
id = "dwbuv-zffnf";
|
||||||
|
path = "/mnt/sync/leyla/notes";
|
||||||
|
devices = ["ceder"];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -22,6 +22,7 @@
|
||||||
hass = 2004;
|
hass = 2004;
|
||||||
headscale = 2005;
|
headscale = 2005;
|
||||||
nextcloud = 2006;
|
nextcloud = 2006;
|
||||||
|
syncthing = 2007;
|
||||||
};
|
};
|
||||||
|
|
||||||
gids = {
|
gids = {
|
||||||
|
@ -36,6 +37,7 @@
|
||||||
hass = 2004;
|
hass = 2004;
|
||||||
headscale = 2005;
|
headscale = 2005;
|
||||||
nextcloud = 2006;
|
nextcloud = 2006;
|
||||||
|
syncthing = 2007;
|
||||||
};
|
};
|
||||||
|
|
||||||
users = config.users.users;
|
users = config.users.users;
|
||||||
|
@ -160,6 +162,12 @@ in {
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
group = config.users.users.nextcloud.name;
|
group = config.users.users.nextcloud.name;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
syncthing = {
|
||||||
|
uid = lib.mkForce uids.syncthing;
|
||||||
|
isSystemUser = true;
|
||||||
|
group = config.users.users.syncthing.name;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
groups = {
|
groups = {
|
||||||
|
@ -250,6 +258,16 @@ in {
|
||||||
# leyla
|
# leyla
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
syncthing = {
|
||||||
|
gid = lib.mkForce gids.syncthing;
|
||||||
|
members = [
|
||||||
|
users.syncthing.name
|
||||||
|
leyla
|
||||||
|
ester
|
||||||
|
eve
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue