nushell, helium + pwas, niri session management

This commit is contained in:
atagen 2026-03-03 00:26:21 +11:00
parent cb72b47661
commit 3b3bfb6b39
21 changed files with 816 additions and 464 deletions

View file

@ -57,10 +57,10 @@ spawn-at-startup "systemctl" "--user" "start" "startup-sound.service"
window-rule {
match app-id="Bitwarden"
open-floating true
default-column-width { proportion 0.16667; }
default-column-width { proportion 0.2; }
}
window-rule {
match app-id="feishin"
match app-id="chrome-listen.lobotomise.me__-Default"
open-floating true
default-column-width { proportion 0.16667; }
default-column-width { proportion 0.2; }
}

View file

@ -17,14 +17,58 @@ in
inherit (pkgs) wl-clipboard quickshell;
};
imports = [ inputs.stasis.nixosModules.default ];
services.stasis.enable = true;
imports = [
inputs.stasis.nixosModules.default
inputs.stash.nixosModules.default
];
services.stasis = {
enable = true;
extraPathPackages = [ (config.programs.niri.package) ];
extraConfig = ''
default:
dpms_off:
timeout 300
command "niri msg action power-off-monitors"
end
suspend:
timeout 600
command "systemctl suspend"
end
end
'';
};
services.stash-clipboard = {
enable = true;
excludedApps = [ "Bitwarden" ];
};
quick.services = {
noti = "${getExe pkgs.swaynotificationcenter}";
shell = "${getExe pkgs.quickshell}";
pwManager = "${getExe config.apps.passwordManager}";
music = "${getExe config.apps.streamPlayer}";
# music = "${getExe config.apps.streamPlayer}";
};
user.systemd.services.music = {
environment.PATH = lib.mkForce "/run/current-system/sw/bin:/run/current-system/sw/sbin:/etc/profiles/per-user/${mainUser}/bin:/etc/profiles/per-user/${mainUser}/sbin";
unitConfig = {
Description = "airdrome";
Requires = [
"graphical-session.target"
];
After = [
"graphical-session.target"
"niri.target"
];
PartOf = [ "graphical-session.target" ];
};
serviceConfig = {
ExecStart = "${getExe config.apps.streamPlayer}";
Type = "forking";
};
wantedBy = [ "graphical-session.target" ];
};
environment.files."/home/${mainUser}/.config/quickshell" = {

View file

@ -3,6 +3,7 @@
inputs,
getFlakePkg',
lib,
pkgs,
config,
...
}:
@ -61,7 +62,15 @@ in
settings =
let
session = {
command = "niri-session";
command =
let
niri-session-direct = pkgs.writeShellScript "niri-session-direct" ''
systemctl --user import-environment
dbus-update-activation-environment --all
exec ${lib.getExe niri} --session
'';
in
"${niri-session-direct}";
user = "${mainUser}";
};
in
@ -78,13 +87,18 @@ in
services.niri-tag = {
enable = true;
prepopulate = 10;
strict = true;
scratchpads = {
# TODO FIXME these could use the getExe ?
"feishin" = 99;
"chrome-listen.lobotomise.me__-Default" = 99;
"Bitwarden" = 101;
};
};
services.niri-s76-bridge.enable = true;
# niri runs directly from greetd (session-1.scope), not as a user service
systemd.user.services.niri.wantedBy = lib.mkForce [ ];
systemd.user.services.niri.enable = lib.mkForce false;
}