This repository has no description
3.0 kB
78 lines
1{
2 self,
3 config,
4 pkgs,
5 lib,
6 ...
7}:
8{
9 imports = [
10 ../../configs
11 ../../configs/desktops/sway/default.nix
12 ../../configs/pipewire.nix
13 ../../configs/network-manager.nix
14 self.wrapperModules.workspace-manager
15 ];
16
17 system.stateVersion = "25.05";
18
19 lass.workspace-manager.enable = true;
20
21 nix.settings.trusted-users = [
22 "root"
23 "lass"
24 ];
25
26 # Autostart straight into sway: greetd logs the main user in on boot with no
27 # prompt and execs sway (a login shell so the wrapped sway + session env from
28 # programs.sway are on PATH). default_session with a real user means every
29 # (re)start goes directly into the session — there is no greeter.
30 services.greetd = {
31 enable = true;
32 settings.default_session = {
33 command = "${lib.getExe pkgs.bash} --login -c sway";
34 user = config.users.users.mainUser.name;
35 };
36 };
37
38 # Stateless box: no password/credential is baked into the image, so a screen
39 # lock could never be unlocked (swaylock PAM has nothing to accept). Disable
40 # the desktop's idle auto-lock (swayidle: lock after 120s, suspend-then-
41 # hibernate after 300s) and the lock service itself. The $mod+l / $mod+F11
42 # lock keybinds then start an empty lock.target and harmlessly do nothing.
43 systemd.user.services.swayidle.enable = lib.mkForce false;
44 systemd.user.services.swaylock.enable = lib.mkForce false;
45
46 # Noctalia pops a one-time "Privacy Update" telemetry wizard whenever its
47 # cache (~/.cache/noctalia/shell-state.json) has an empty
48 # changelogState.lastSeenVersion (UpdateService.shouldShowTelemetryWizard,
49 # gated only on that cache — not on any setting). This box is stateless, so
50 # the cache is wiped every boot and the wizard returned on every start.
51 # Seed the cache before noctalia launches with the current version, so it
52 # treats the changelog/telemetry notice as already seen (and, since
53 # lastSeen == currentVersion, the changelog stays closed too).
54 systemd.user.services.noctalia-seed-state = {
55 description = "Seed noctalia changelog cache (suppress telemetry wizard on stateless boots)";
56 partOf = [ "sway-session.target" ];
57 wantedBy = [ "noctalia-shell.service" ];
58 before = [ "noctalia-shell.service" ];
59 serviceConfig = {
60 Type = "oneshot";
61 RemainAfterExit = true;
62 ExecStart = pkgs.writeShellScript "noctalia-seed-state" ''
63 set -eu
64 dir="''${XDG_CACHE_HOME:-$HOME/.cache}/noctalia"
65 f="$dir/shell-state.json"
66 ver="v${pkgs.noctalia-shell.version}"
67 mkdir -p "$dir"
68 if [ -s "$f" ]; then
69 ${pkgs.jq}/bin/jq --arg v "$ver" \
70 '.changelogState.lastSeenVersion = (if (.changelogState.lastSeenVersion // "") == "" then $v else .changelogState.lastSeenVersion end)' \
71 "$f" > "$f.tmp" && mv "$f.tmp" "$f"
72 else
73 ${pkgs.jq}/bin/jq -n --arg v "$ver" '{changelogState:{lastSeenVersion:$v}}' > "$f"
74 fi
75 '';
76 };
77 };
78}