Compare commits

..
Author SHA1 Message Date
müde
a695aa408b update hyperhive, move some settings 2026-08-30 20:58:52 +02:00
müde
c5b6c7a809 add on screen keyboard to lpt2 2026-08-30 20:53:42 +02:00
4 changed files with 497 additions and 440 deletions

8
flake.lock generated
View file

@ -373,11 +373,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1788095523, "lastModified": 1788113629,
"narHash": "sha256-UwtknsxJg5tGtEeCBLPkjeQgbREf9FiPrruzz9RxGC4=", "narHash": "sha256-8aJW0wQK4zKA0XmpJQ8wNZNV5yiT1xuNI2ZR8wkdQqc=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "1e4399d49e86fa46a4ccc073af83097dd3e08508", "rev": "f14056996e7317953145814a523b26dd3df6ce1c",
"revCount": 4045, "revCount": 4073,
"type": "git", "type": "git",
"url": "https://forge.darkest.space/hyperhive/hyperhive.git" "url": "https://forge.darkest.space/hyperhive/hyperhive.git"
}, },

View file

@ -2,10 +2,12 @@
pkgs, pkgs,
config, config,
lib, lib,
device,
... ...
}: }:
{ {
config = { config = lib.mkMerge [
{
home.sessionVariables.NIXOS_OZONE_WL = "1"; home.sessionVariables.NIXOS_OZONE_WL = "1";
home.packages = with pkgs; [ home.packages = with pkgs; [
xwayland-satellite xwayland-satellite
@ -433,5 +435,41 @@
}; };
}; };
}; };
}
# lpt2's keyboard is flaky, so give it an on-screen keyboard.
# squeekboard auto-shows on focused text fields via the input-method
# protocol, but that doesn't catch every app, so Mod+K force-toggles it
# over D-Bus (sm.puri.OSK0), which is squeekboard's own control interface.
(
let
squeekboard-toggle = pkgs.writeShellApplication {
name = "squeekboard-toggle";
runtimeInputs = [ pkgs.systemd ];
text = ''
dest=sm.puri.OSK0
path=/sm/puri/OSK0
iface=sm.puri.OSK0
current=$(busctl --user get-property "$dest" "$path" "$iface" Visible | cut -d' ' -f2)
if [ "$current" = "true" ]; then
busctl --user call "$dest" "$path" "$iface" SetVisible b false
else
busctl --user call "$dest" "$path" "$iface" SetVisible b true
fi
'';
}; };
in
lib.mkIf (device == "muede-lpt2") {
home.packages = [ pkgs.squeekboard ];
programs.niri.settings = {
spawn-at-startup = [
{ command = [ (lib.getExe' pkgs.squeekboard "squeekboard") ]; }
];
binds."Mod+K".action.spawn = lib.getExe squeekboard-toggle;
};
}
)
];
} }

View file

@ -1,16 +1,16 @@
{ pkgs, config, lib, ... }: {
pkgs,
config,
lib,
...
}:
{ {
imports = [ imports = [
./containers.nix ./containers.nix
./hardware.nix ./hardware.nix
]; ];
config = config = lib.mkMerge [
let
gw = config.services.hyperhive.gateway;
old = "forge.pr1ma.darkest.space";
new = "forge.constellation.darkest.space";
in
{ {
my = { my = {
# keep-sorted start # keep-sorted start
@ -67,22 +67,46 @@
]; ];
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
}
(
let
old = "forge.pr1ma.darkest.space";
new = "forge.constellation.darkest.space";
in
{
my.constellation-swarm = { my.constellation-swarm = {
enable = true; enable = true;
hiveName = "pr1ma"; hiveName = "pr1ma";
}; };
services.hyperhive.enableAllLocalDefaults = true; services.hyperhive = {
services.nginx.enable = true; deploy = {
singleHostSwarm = true;
forgejo.ci = {
enable = true;
concurrency = 2;
};
};
# DNS: the hive's resolver must still answer for the old name, or # DNS: the hive's resolver must still answer for the old name, or
# nothing ever reaches the redirect. The forge module drops it from # nothing ever reaches the redirect. The forge module drops it from
# this list the moment you change `swarm.forge.domain`. # this list the moment you change `swarm.forge.domain`.
services.hyperhive.gateway.localNames = [ old ]; gateway.localNames = [ old ];
};
services.nginx.enable = true;
services.nginx.virtualHosts.${old} = (gw.lib.tlsFor old) // { services.nginx.virtualHosts.${old} =
let
gw = config.services.hyperhive.gateway;
in
(gw.lib.tlsFor old)
// {
listen = gw.lib.listen; listen = gw.lib.listen;
locations."/".return = "301 https://${new}$request_uri"; locations."/".return = "301 https://${new}$request_uri";
}; };
};
#containers.swarm-authelia.config.services.authelia.instances.swarm.settings.log.level =lib.mkForce "debug";
}
)
];
} }

View file

@ -36,11 +36,6 @@ in
swarm = { swarm = {
name = "constellation"; name = "constellation";
domain = "constellation.darkest.space"; domain = "constellation.darkest.space";
enableRequiredServices = true;
forge.ci = {
enable = true;
concurrency = 2;
};
matrix = { matrix = {
# not default - both still on hive domain # not default - both still on hive domain
gatewayHost = "matrix.pr1ma.darkest.space"; gatewayHost = "matrix.pr1ma.darkest.space";