untested - rclone

lean
htran 2023-07-07 00:40:29 -07:00
parent 187890cc9b
commit e13cd11a68
3 changed files with 77 additions and 6 deletions

View File

@ -2,8 +2,9 @@ let
# user-specific (~/.ssh/id_ed25519.pub)
users = {
"hungtr@bao" = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK+1+gps6phbZboIb9fH51VNPUCkhSSOAbkI3tq3Ou0Z";
"htran@Hungs-MacBook-Pro.local" = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJvOCZ4nyFiiKK7gkwzP4hXJ6NmtgbdUJdWgIzUL0GMA";
};
# System-specific settings (/etc/ssh/ssh_hsot_ed25519_key.pub)
# System-specific settings (/etc/ssh/ssh_host_ed25519_key.pub)
systems = {
"bao" = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIBuAaAE7TiQmMH300VRj/pYCri1qPmHjd+y9aX2J0Fs";
};

View File

@ -0,0 +1,71 @@
{
inputs,
cell,
}: {
rclone-mount = {
config,
lib,
pkgs,
...
}: let
cfg = config.services.rclone;
rcloneCommand = "${pkgs.rclone}/bin/rclone";
inherit (lib) mkEnableOption mkOption types mkIf mapAttrs' nameValuePair;
makeMountService = name: mountCfg: {
Unit = {
Description = "Rclone Mount ${name}";
After = ["network.target"];
};
Service = {
ExecStart = "${rcloneCommand} mount ${mountCfg.remotePath} ${mountCfg.mountPoint}";
Restart = "on-failure";
};
Install = {WantedBy = ["default.target"];};
};
makeLaunchdService = name: mountCfg: {
enable = true;
settings = {
ProgramArguments = ["/bin/sh" "-c" "${rcloneCommand} mount ${mountCfg.remotePath} ${mountCfg.mountPoint}"];
KeepAlive = {
NetworkState = true;
};
};
};
in {
options.services.rclone = {
enable = mkEnableOption "rclone mount service";
mounts = mkOption {
type = types.attrsOf (types.submodule {
options = {
remotePath = mkOption {
type = types.str;
default = "";
description = "The remote path to mount via rclone";
};
mountPoint = mkOption {
type = types.str;
default = "";
description = "The local mount point for the rclone mount";
};
};
});
default = {};
description = "Rclone mounts";
};
};
config = mkIf cfg.enable {
home.packages = [pkgs.rclone];
systemd.user.services = mapAttrs' (n: v: nameValuePair "rclone-mount-${n}" (makeMountService n v)) cfg.mounts;
launchd.user.agents = mapAttrs' (n: v: nameValuePair "rclone-mount-${n}" (makeLaunchdService n v)) cfg.mounts;
};
};
}

View File

@ -176,15 +176,14 @@ in {
vim-dispatch-neovim
vim-fugitive
vim-jack-in
({
{
plugin = sg-nvim;
# Wait, this mean the plugin is only lua only since package.cpath is Lua API
# NOTE: Wait, this mean the plugin is exclusively lua only since package.cpath is Lua API
config = ''
package.cpath = package.cpath .. ";${sg-nvim}/lib/*.so;${sg-nvim}/lib/*.dylib"
'';
type = "lua";
})
}
nui-nvim
];
};