nixos: enable keepbook sync
This commit is contained in:
@@ -23,6 +23,7 @@
|
|||||||
./k3s.nix
|
./k3s.nix
|
||||||
./k3s-single-node.nix
|
./k3s-single-node.nix
|
||||||
./kat.nix
|
./kat.nix
|
||||||
|
./keepbook-sync.nix
|
||||||
./keybase.nix
|
./keybase.nix
|
||||||
./kubelet.nix
|
./kubelet.nix
|
||||||
./laptop.nix
|
./laptop.nix
|
||||||
@@ -69,6 +70,7 @@
|
|||||||
myModules.electron.enable = true;
|
myModules.electron.enable = true;
|
||||||
myModules.code.enable = true;
|
myModules.code.enable = true;
|
||||||
myModules.games.enable = false;
|
myModules.games.enable = false;
|
||||||
|
myModules."keepbook-sync".enable = true;
|
||||||
myModules.syncthing.enable = true;
|
myModules.syncthing.enable = true;
|
||||||
myModules.fonts.enable = true;
|
myModules.fonts.enable = true;
|
||||||
})
|
})
|
||||||
|
|||||||
61
nixos/flake.lock
generated
61
nixos/flake.lock
generated
@@ -238,6 +238,28 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"fenix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"keepbook",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1769842381,
|
||||||
|
"narHash": "sha256-0dPzo1ElvAIZ0RwEwx5FfqAUiFj22K9QJOU9stiMCrw=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "fenix",
|
||||||
|
"rev": "b2344f384a82db1410ab09769eb8c4a820de667f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "fenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -1145,6 +1167,27 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"keepbook": {
|
||||||
|
"inputs": {
|
||||||
|
"fenix": "fenix",
|
||||||
|
"flake-utils": [
|
||||||
|
"flake-utils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770888240,
|
||||||
|
"narHash": "sha256-uDc/CQVg9dUigJtUpO21rE2JIdes7bRo6XYaWSa0asY=",
|
||||||
|
"path": "/home/imalison/Projects/keepbook",
|
||||||
|
"type": "path"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"path": "/home/imalison/Projects/keepbook",
|
||||||
|
"type": "path"
|
||||||
|
}
|
||||||
|
},
|
||||||
"mova": {
|
"mova": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -1655,6 +1698,7 @@
|
|||||||
"hyprscratch": "hyprscratch",
|
"hyprscratch": "hyprscratch",
|
||||||
"imalison-taffybar": "imalison-taffybar",
|
"imalison-taffybar": "imalison-taffybar",
|
||||||
"kanshi-sni": "kanshi-sni",
|
"kanshi-sni": "kanshi-sni",
|
||||||
|
"keepbook": "keepbook",
|
||||||
"nix": "nix",
|
"nix": "nix",
|
||||||
"nixified-ai": "nixified-ai",
|
"nixified-ai": "nixified-ai",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
@@ -1672,6 +1716,23 @@
|
|||||||
"xmonad-contrib": "xmonad-contrib"
|
"xmonad-contrib": "xmonad-contrib"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"rust-analyzer-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1769786006,
|
||||||
|
"narHash": "sha256-ax6cH54Nc20QuxlHNC8RMt1P8quMECY4gaACFAdd5ec=",
|
||||||
|
"owner": "rust-lang",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
|
"rev": "eb0588812b041ebbf2645555f2a4df3bcd853c6d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rust-lang",
|
||||||
|
"ref": "nightly",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|||||||
@@ -45,6 +45,14 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
keepbook = {
|
||||||
|
url = "path:/home/imalison/Projects/keepbook";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
flake-utils.follows = "flake-utils";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
org-agenda-api = {
|
org-agenda-api = {
|
||||||
url = "github:colonelpanic8/org-agenda-api";
|
url = "github:colonelpanic8/org-agenda-api";
|
||||||
inputs = {
|
inputs = {
|
||||||
|
|||||||
114
nixos/keepbook-sync.nix
Normal file
114
nixos/keepbook-sync.nix
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
{ config, lib, pkgs, inputs, makeEnable, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.myModules."keepbook-sync";
|
||||||
|
keepbookTray = inputs.keepbook.packages.${pkgs.stdenv.hostPlatform.system}.keepbook-tray;
|
||||||
|
|
||||||
|
daemonArgs = [
|
||||||
|
"--config" cfg.configPath
|
||||||
|
"--interval" cfg.interval
|
||||||
|
"--jitter" cfg.jitter
|
||||||
|
"--history-points" (toString cfg.historyPoints)
|
||||||
|
"--tray-icon" cfg.trayIcon
|
||||||
|
]
|
||||||
|
++ lib.optionals (!cfg.syncOnStart) [ "--no-sync-on-start" ]
|
||||||
|
++ lib.optionals (!cfg.syncPrices) [ "--no-sync-prices" ]
|
||||||
|
++ lib.optionals (!cfg.syncSymlinks) [ "--no-sync-symlinks" ]
|
||||||
|
++ lib.optionals (cfg.balanceStaleness != null) [ "--balance-staleness" cfg.balanceStaleness ]
|
||||||
|
++ lib.optionals (cfg.priceStaleness != null) [ "--price-staleness" cfg.priceStaleness ];
|
||||||
|
|
||||||
|
daemonExec = lib.escapeShellArgs ([ "${keepbookTray}/bin/keepbook-sync-daemon" ] ++ daemonArgs);
|
||||||
|
|
||||||
|
enabledModule = makeEnable config "myModules.keepbook-sync" false {
|
||||||
|
home-manager.users.${cfg.user} = {
|
||||||
|
systemd.user.services.keepbook-sync-daemon = {
|
||||||
|
Unit = {
|
||||||
|
Description = "keepbook sync daemon";
|
||||||
|
After = [ "graphical-session.target" "tray.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
Requires = [ "tray.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = daemonExec;
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 5;
|
||||||
|
Environment = [ "RUST_LOG=info" ];
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
enabledModule // {
|
||||||
|
# Merge our extra options with the enable option produced by makeEnable.
|
||||||
|
options = lib.recursiveUpdate enabledModule.options {
|
||||||
|
myModules."keepbook-sync" = {
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "imalison";
|
||||||
|
description = "User account to run the keepbook sync daemon.";
|
||||||
|
};
|
||||||
|
|
||||||
|
configPath = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "/home/imalison/.local/share/keepbook/keepbook.toml";
|
||||||
|
description = "Path to keepbook.toml used by the daemon.";
|
||||||
|
};
|
||||||
|
|
||||||
|
interval = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "30m";
|
||||||
|
description = "Base sync interval for keepbook-sync-daemon (e.g. 30m, 1h).";
|
||||||
|
};
|
||||||
|
|
||||||
|
jitter = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "5m";
|
||||||
|
description = "Random jitter applied around each scheduled interval.";
|
||||||
|
};
|
||||||
|
|
||||||
|
balanceStaleness = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
default = null;
|
||||||
|
description = "Optional override for balance staleness threshold.";
|
||||||
|
};
|
||||||
|
|
||||||
|
priceStaleness = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
default = null;
|
||||||
|
description = "Optional override for price staleness threshold.";
|
||||||
|
};
|
||||||
|
|
||||||
|
syncOnStart = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Run a sync cycle immediately when the daemon starts.";
|
||||||
|
};
|
||||||
|
|
||||||
|
syncPrices = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable periodic price refresh during sync cycles.";
|
||||||
|
};
|
||||||
|
|
||||||
|
syncSymlinks = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Enable periodic symlink rebuild during sync cycles.";
|
||||||
|
};
|
||||||
|
|
||||||
|
historyPoints = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
default = 8;
|
||||||
|
description = "Recent portfolio history rows shown in tray menu.";
|
||||||
|
};
|
||||||
|
|
||||||
|
trayIcon = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "wallet";
|
||||||
|
description = "Freedesktop icon name for idle keepbook tray state.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -60,6 +60,7 @@
|
|||||||
myModules.gitea-runner.enable = true;
|
myModules.gitea-runner.enable = true;
|
||||||
# Disable the old multi-node railbird k3s setup
|
# Disable the old multi-node railbird k3s setup
|
||||||
myModules.railbird-k3s.enable = false;
|
myModules.railbird-k3s.enable = false;
|
||||||
|
myModules."keepbook-sync".enable = true;
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" =
|
||||||
{ device = "/dev/disk/by-uuid/a317d456-6f84-41ee-a149-8e466e414aae";
|
{ device = "/dev/disk/by-uuid/a317d456-6f84-41ee-a149-8e466e414aae";
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
myModules.quickshell.enable = true;
|
myModules.quickshell.enable = true;
|
||||||
myModules.wyoming.enable = false;
|
myModules.wyoming.enable = false;
|
||||||
myModules.tts.enable = false;
|
myModules.tts.enable = false;
|
||||||
|
myModules."keepbook-sync".enable = true;
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user