From 12269ba1c6bc7bb1c7cae9e19e19f1ddb3ac3536 Mon Sep 17 00:00:00 2001 From: ulic-youthlic Date: Mon, 19 Jan 2026 19:31:26 +0800 Subject: [PATCH] feat: Improve radicle ux --- .../configurations/Tytonidae/default.nix | 1 + home/david/modules/programs/radicle.nix | 26 +++++++ home/modules/programs/radicle.nix | 69 +++++++++++++++++++ nixos/configurations/Tytonidae/default.nix | 1 + secrets/general.yaml | 6 +- 5 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 home/david/modules/programs/radicle.nix create mode 100644 home/modules/programs/radicle.nix diff --git a/home/david/configurations/Tytonidae/default.nix b/home/david/configurations/Tytonidae/default.nix index fa709d1..cae65ed 100644 --- a/home/david/configurations/Tytonidae/default.nix +++ b/home/david/configurations/Tytonidae/default.nix @@ -56,6 +56,7 @@ helix.enable = true; nvchad.enable = true; # spacemacs.enable = true; + radicle.enable = true; }; }; diff --git a/home/david/modules/programs/radicle.nix b/home/david/modules/programs/radicle.nix new file mode 100644 index 0000000..92f2e7e --- /dev/null +++ b/home/david/modules/programs/radicle.nix @@ -0,0 +1,26 @@ +{ + lib, + config, + ... +}: let + cfg = config.david.programs.radicle; +in { + options = { + david.programs.radicle = { + enable = lib.mkEnableOption "radicle"; + }; + }; + config = lib.mkIf cfg.enable { + youthlic.programs.radicle.enable = true; + programs.radicle.uri = { + rad.browser = { + enable = true; + preferredNode = "iris.radicle.xyz"; + }; + web-rad = { + browser = "zen-twilight.desktop"; + enable = true; + }; + }; + }; +} diff --git a/home/modules/programs/radicle.nix b/home/modules/programs/radicle.nix new file mode 100644 index 0000000..b437c57 --- /dev/null +++ b/home/modules/programs/radicle.nix @@ -0,0 +1,69 @@ +{ + lib, + config, + ... +}: let + cfg = config.youthlic.programs.radicle; +in { + options = { + youthlic.programs.radicle = { + enable = lib.mkEnableOption "radicle"; + }; + }; + config = lib.mkIf cfg.enable { + programs.radicle = { + enable = true; + settings = { + publicExplorer = "https://app.radicle.xyz/nodes/$host/$rid$path"; + preferredSeeds = [ + "z6Mkmqogy2qEM2ummccUthFEaaHvyYmYBYh3dbe9W4ebScxo@rosa.radicle.xyz:8776" + "z6MksmpU5b1dS7oaqF2bHXhQi1DWy2hB7Mh9CuN7y1DN6QSz@seed.radicle.xyz:8776" + "z6MkrLMMsiPWUcNPHcRajuMi9mDfYckSoJyPwwnknocNYPm7@iris.radicle.xyz:8776" + ]; + cli = { + hints = true; + }; + node = { + alias = "youthlic"; + peers = { + type = "dynamic"; + }; + network = "main"; + log = "INFO"; + relay = "auto"; + limits = { + routingMaxSize = 1000; + routingMaxAge = 604800; + gossipMaxAge = 1209600; + fetchConcurrency = 1; + maxOpenFiles = 4096; + rate = { + inbound = { + fillRate = 5; + capacity = 1024; + }; + outbound = { + fillRate = 10; + capacity = 2048; + }; + }; + connection = { + inbound = 128; + outbound = 16; + }; + }; + workers = 8; + seedingPolicy = { + default = "block"; + }; + }; + }; + }; + sops.secrets."radicle/Tytonidae" = {}; + services.radicle.node = { + enable = true; + args = "--log-logger systemd"; + }; + systemd.user.services."radicle-node".Service.EnvironmentFile = [config.sops.secrets."radicle/Tytonidae".path]; + }; +} diff --git a/nixos/configurations/Tytonidae/default.nix b/nixos/configurations/Tytonidae/default.nix index 8fcd108..d34dbc3 100644 --- a/nixos/configurations/Tytonidae/default.nix +++ b/nixos/configurations/Tytonidae/default.nix @@ -67,6 +67,7 @@ environment.systemPackages = with pkgs; [ radicle-node + radicle-desktop nix-output-monitor wget git diff --git a/secrets/general.yaml b/secrets/general.yaml index a205490..25b559d 100644 --- a/secrets/general.yaml +++ b/secrets/general.yaml @@ -1,3 +1,5 @@ +radicle: + Tytonidae: ENC[AES256_GCM,data:3Xe6FCLqV2i4/OpoyaHarF8HxN/uiSpiOSxsY7d0fo8AAQ==,iv:D4PZ/o2SM4pIDHx+K9EAbbN15SWfZjg7XjRzvUcrXqk=,tag:CPO2reXjRLnFzafL0a7aCQ==,type:str] awscli: ENC[AES256_GCM,data:YoeIPrKEMvjMrF/obs08hqnsVIPO1ojBKQpb+XapH20Rzo1Cw1ytIMf+MMcDLuZqvI8SeEqs0EtjBqqzqA0RvDVOGHWurQlC67MInkDdpN/p5xwTbAQgtv/dV6fKYySQgqG2LaKh6hEPKqNeT0TTW7e7Dd5TbA6em5YppPrKtmJK/8KDyTbCrrBo68bUZUV+WBiu055qXTm3ZA==,iv:d5c1imjlZGRWjrxJS1ibNucwZxoW7nHIXFnlEP51aOo=,tag:OQN5cKd7AqXk+lBqJ6eF+g==,type:str] garage: ENC[AES256_GCM,data:KEcOZUNa8aBKpp/m1xUZeNdZ4WABC0FnhN3x9hlof3sI0mj8Hm1NZabUgDpiYZPaCuvFwAN+P1cNXkT6DMtEyLeLDfNjuVpFMENAsPSVrBAiRvGhqpuYWjyPboDV/qHc1EnIPO73z7O6tbDfTGze42dIIlROGUtwlr78DCSWZZIR82dDQkcQkik7lc3soAnsYKdEd/93bs8EJPLlOdmmBfV79binI+8VchT/pYhypnaMqxHCK1FOfIo31Fn7Ym6Oqp9T0w+uA4Lkh03RlhWo0oAUbbY=,iv:NtaAeX3td8tEIDoLybjtB8azsHj6JsTw4WPD5jQHaHs=,tag:XqGDWf5+RkCseExHPiszNw==,type:str] minio: ENC[AES256_GCM,data:rJRE7HAI3t3CFn08mVe3t9slBGJMH2Jzzsrlbs2jkj+5fn3412NqVB8JheVy3+zrTd+09M1uJFZpeWcOkUw=,iv:x+JUOhYkXqLwNOuT5ZZ8JaX+spM/h0zszwun5kF0U3o=,tag:SyscCkZc78PsLAHIyLQ3QQ==,type:str] @@ -56,7 +58,7 @@ sops: a1Y1NU9CK2h1SS83VW42bzBMa01yMXMKI1DBtgNlkNCrxUQvnD6a45mQKNfg5gM4 Zb5buo9Jofj4dn/HFwng3T3gxKTrP2Dh74CAH4L0M5yrF9fzk5TCcQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-10-26T10:48:06Z" - mac: ENC[AES256_GCM,data:tdD/wHe3bY+YakN4hRgCf+TLWVSiKM06jkAZnu0XBMrECwXa6Zsr9aGr2uYTFMpzcKgWarFkCFL+Ok6tDtkN2bcq3h+uV3Jxyb7oMr0sn5eb3bCu3UJ5cZ7sIaqnzHPL1j3bLBvb6WxSAm+OKJ2yIrJ8eCGAikaoExi2iNWSz9E=,iv:L2cFb0LE3erGRl61evj7Y4FgMHCQnGHygdzBCMZVOzs=,tag:OHgf5MWkQkQKJWuEGaZaAg==,type:str] + lastmodified: "2026-01-20T10:48:54Z" + mac: ENC[AES256_GCM,data:V2yELzjqVDmsOynY4esySxqJcvdluwJcimQ/fP+QjoyUp6gE01+uwHZqRfLwVxqtFKkG37dAmfiDQlmmw1Xg4A1navZFwY1wsJtHknH3gJJFrjvSD808nAcIERqmXhkoG/MyuTnFuQjFxe2S+2bGiGTY39nQTz5Ou5YqE7oeiuM=,iv:YSu5iMl5wpDXnWMI9pfAe/4bTtlzWQoiOVmBe+SkkcY=,tag:EoNZG7i/EIE/T7bKogjWAg==,type:str] unencrypted_suffix: _unencrypted version: 3.11.0