From ec881f6401f5a5966476409eabc7a5f382453118 Mon Sep 17 00:00:00 2001 From: nevaforget Date: Fri, 14 Aug 2026 17:48:52 +0200 Subject: [PATCH] feat: drop moonlock and moonset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The power menu is a Quickshell popout in the moonarch config now, and it was the last caller of moonlock. Inputs, package entries and both build recipes are gone, together with the generated /etc configs and the moonlock PAM stack — swaylock's comes from programs.niri.enable. --- DECISIONS.md | 19 +++++++++++++++++++ README.md | 20 +++++++++++--------- flake.lock | 36 ----------------------------------- flake.nix | 18 ------------------ modules/desktop.nix | 24 +---------------------- pkgs/moonlock.nix | 46 --------------------------------------------- pkgs/moonset.nix | 33 -------------------------------- 7 files changed, 31 insertions(+), 165 deletions(-) delete mode 100644 pkgs/moonlock.nix delete mode 100644 pkgs/moonset.nix diff --git a/DECISIONS.md b/DECISIONS.md index 2ae5459..5a293c3 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -1,5 +1,24 @@ # Decisions +## 2026-08-14 – moonset and moonlock dropped; the power menu is a Quickshell popout + +- **Who**: Dominik, ClaudeCode +- **Why**: The power menu became `PowerPopout.qml` in the moonarch Quickshell + config (see `moonarch/DECISIONS.md`, same date), and moonset was the last thing + invoking moonlock. Both packages therefore leave this flake with nothing to + replace them: the popout ships inside the config tree that is already deployed. +- **Tradeoffs**: The flake keeps the ability to package a moonarch program — + `stasis` and `sweet-cursors` still use that path — so nothing was generalised + away. What is lost is the pinning discipline for two programs that no longer + exist here; the tags in `flake.nix` were the only record of which version was + deployed, and that record now lives in the retired repos' own history. +- **How**: Inputs `moonlock` and `moonset` removed, `moonarchPackages` entries + with them, `pkgs/moonlock.nix` and `pkgs/moonset.nix` deleted, `flake.lock` + regenerated. `modules/desktop.nix` drops both packages from `systemPackages`, + the generated `environment.etc."moonlock/moonlock.toml"` and + `"moonset/moonset.toml"`, and the moonlock PAM stack — swaylock's comes from + `programs.niri.enable`. + ## 2026-08-14 – regreet and swaylock from nixpkgs, autologin after LUKS - **Who**: Dominik, ClaudeCode diff --git a/README.md b/README.md index d6f8df8..492d5dc 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,11 @@ NixOS configuration for a scrollable-tiling Wayland desktop: niri as the compositor, Quickshell as the bar and launcher, regreet as the login greeter, swaylock as the screen locker, Catppuccin Mocha throughout. -Ships Nix packages for the components that are not in nixpkgs — moonset, stasis, -sweet-cursors — and NixOS modules that assemble them into a working session. -`moonlock` is still packaged here for one reason: moonset's Lock action invokes -it by name. It goes with the moonset release that changes that. +Ships Nix packages for the components that are not in nixpkgs — stasis, +sweet-cursors, the moonarch helper scripts — and NixOS modules that assemble them +into a working session. Greeter, locker and power menu are no longer own programs: +`regreet` and `swaylock` come from nixpkgs, the power menu is a Quickshell popout +inside the moonarch config. The XDG configuration files (niri, Quickshell, foot, GTK, Qt) come from the `moonarch` repository, which is consumed as a flake input. One set of config @@ -18,8 +19,6 @@ files therefore stays valid on both NixOS and Arch. ``` flake.nix Inputs and outputs pkgs/ Build recipes - moonlock.nix screen locker, retired but still called by moonset - moonset.nix session power menu stasis.nix idle manager sweet-cursors.nix cursor theme moonarch-scripts.nix battery and camera helpers @@ -41,7 +40,7 @@ hands them the packages and the config source. Build a single package: ```bash -nix build .#moonlock +nix build .#stasis ``` Build a whole system without activating it: @@ -141,13 +140,16 @@ With `encrypt = true` everything below the ESP sits in a LUKS2 container named ## Version bumps -The application repos are pinned to release tags. After tagging a new version: +`stasis` is pinned to a release tag. After a new upstream release: ```bash # adjust the tag in flake.nix, then -nix flake update moonlock +nix flake update stasis ``` +`moonarch` tracks `main`, so its config changes arrive with +`nix flake update moonarch`. + ## Configuration files Config files are deployed unchanged wherever possible. These are generated diff --git a/flake.lock b/flake.lock index 933365b..35f15f6 100644 --- a/flake.lock +++ b/flake.lock @@ -37,40 +37,6 @@ "url": "https://gitea.moonarch.de/nevaforget/moonarch.git" } }, - "moonlock": { - "flake": false, - "locked": { - "lastModified": 1786101894, - "narHash": "sha256-AcekcezH0GiyiMxRDRBVQZZ7idAg2Jzqc+taCk/ILSw=", - "ref": "refs/tags/v0.6.21", - "rev": "db8e5807e72f60a0cd6ec71f735eb1b82a3b4d9b", - "revCount": 66, - "type": "git", - "url": "https://gitea.moonarch.de/nevaforget/moonlock.git" - }, - "original": { - "ref": "refs/tags/v0.6.21", - "type": "git", - "url": "https://gitea.moonarch.de/nevaforget/moonlock.git" - } - }, - "moonset": { - "flake": false, - "locked": { - "lastModified": 1786101922, - "narHash": "sha256-XGrpX3Mh3/2thJXBv3IYQrSPJIriDIIlOdZavdSmQoU=", - "ref": "refs/tags/v0.9.2", - "rev": "55c683a2d7c5a51554134a88d4807b403e8042fb", - "revCount": 52, - "type": "git", - "url": "https://gitea.moonarch.de/nevaforget/moonset.git" - }, - "original": { - "ref": "refs/tags/v0.9.2", - "type": "git", - "url": "https://gitea.moonarch.de/nevaforget/moonset.git" - } - }, "nixos-hardware": { "inputs": { "nixpkgs": "nixpkgs" @@ -122,8 +88,6 @@ "inputs": { "disko": "disko", "moonarch": "moonarch", - "moonlock": "moonlock", - "moonset": "moonset", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs_2", "stasis": "stasis", diff --git a/flake.nix b/flake.nix index 23ff9ab..221f3da 100644 --- a/flake.nix +++ b/flake.nix @@ -20,14 +20,6 @@ url = "git+https://gitea.moonarch.de/nevaforget/moonarch.git"; flake = false; }; - moonlock = { - url = "git+https://gitea.moonarch.de/nevaforget/moonlock.git?ref=refs/tags/v0.6.21"; - flake = false; - }; - moonset = { - url = "git+https://gitea.moonarch.de/nevaforget/moonset.git?ref=refs/tags/v0.9.2"; - flake = false; - }; sweet-cursors = { url = "git+https://gitea.moonarch.de/nevaforget/Sweet-cursors.git"; flake = false; @@ -45,16 +37,6 @@ pkgs = nixpkgs.legacyPackages.${system}; moonarchPackages = { - moonlock = pkgs.callPackage ./pkgs/moonlock.nix { - src = inputs.moonlock; - version = "0.6.21"; - }; - - moonset = pkgs.callPackage ./pkgs/moonset.nix { - src = inputs.moonset; - version = "0.9.2"; - }; - sweet-cursors = pkgs.callPackage ./pkgs/sweet-cursors.nix { src = inputs.sweet-cursors; version = "0-unstable"; diff --git a/modules/desktop.nix b/modules/desktop.nix index f6fdb07..49e13f8 100644 --- a/modules/desktop.nix +++ b/modules/desktop.nix @@ -66,18 +66,6 @@ in # stasis reads /etc/stasis/ as its system-wide fallback, never /etc/xdg/. "stasis/stasis.rune".source = "${xdg}/stasis/stasis.rune"; - # moonlock and moonset fall back to /usr/share/moonarch/wallpaper.jpg, - # which does not exist here, so the wallpaper is pointed at the store path - # explicitly. Both read these files as their system-wide config. - "moonlock/moonlock.toml".text = '' - background_path = "${wallpaper}" - ''; - # blur matches the value set in ~/.config/moonset/moonset.toml on Arch. - "moonset/moonset.toml".text = '' - background_path = "${wallpaper}" - background_blur = 20.0 - ''; - # Configs outside /etc/xdg/ in the Arch package as well. "mpv/mpv.conf".source = "${etc}/mpv/mpv.conf"; "xdg-desktop-portal/niri-portals.conf".source = @@ -157,15 +145,11 @@ in environment.systemPackages = with pkgs; [ # Own programs - moonarchPkgs.moonset moonarchPkgs.sweet-cursors moonarchPkgs.stasis moonarchPkgs.moonarch-scripts - # Only still installed because moonset's Lock action invokes moonlock by - # name and has no lock_command option. Idle and lid-close use swaylock. - moonarchPkgs.moonlock - # Session lock + # Session lock. The power menu is a Quickshell popout, not a package. swaylock # Compositor extras @@ -244,10 +228,4 @@ in "C %h/.config/waypaper/config.ini 0644 - - - ${waypaperConfig}" "C %h/.config/swaylock/config 0644 - - - ${swaylockConfig}" ]; - - # PAM stack for moonlock, shipped by the package but owned by the system. - # swaylock needs none of this: programs.niri.enable brings - # security.pam.services.swaylock with it. Goes away with moonlock. - security.pam.services.moonlock.text = - builtins.readFile "${moonarchPkgs.moonlock}/share/moonlock/moonlock-pam"; } diff --git a/pkgs/moonlock.nix b/pkgs/moonlock.nix deleted file mode 100644 index 6d656e7..0000000 --- a/pkgs/moonlock.nix +++ /dev/null @@ -1,46 +0,0 @@ -# ABOUTME: Nix build recipe for moonlock, the Wayland lockscreen. -# ABOUTME: Counterpart to moonarch-pkgbuilds/moonlock/PKGBUILD. - -{ lib -, rustPlatform -, pkg-config -, wrapGAppsHook4 -, glib -, gtk4 -, gtk4-layer-shell -, pam -, systemd -, src -, version -}: - -rustPlatform.buildRustPackage { - pname = "moonlock"; - inherit version src; - - cargoLock.lockFile = "${src}/Cargo.lock"; - - # glib provides glib-compile-resources, which build.rs invokes to bundle - # style.css and the default avatar into the binary. - nativeBuildInputs = [ pkg-config wrapGAppsHook4 glib ]; - - buildInputs = [ gtk4 gtk4-layer-shell pam systemd ]; - - postInstall = '' - install -Dm644 config/moonlock.toml.example \ - "$out/share/moonlock/moonlock.toml.example" - - # The PAM stack lives in /etc and is owned by the NixOS module, not by - # this package. It is shipped here so the module can reference it. - install -Dm644 config/moonlock-pam \ - "$out/share/moonlock/moonlock-pam" - ''; - - meta = { - description = "Secure Wayland lockscreen with GTK4, PAM and fingerprint support"; - homepage = "https://gitea.moonarch.de/nevaforget/moonlock"; - license = lib.licenses.mit; - mainProgram = "moonlock"; - platforms = lib.platforms.linux; - }; -} diff --git a/pkgs/moonset.nix b/pkgs/moonset.nix deleted file mode 100644 index 7efcb60..0000000 --- a/pkgs/moonset.nix +++ /dev/null @@ -1,33 +0,0 @@ -# ABOUTME: Nix build recipe for moonset, the Wayland session power menu. -# ABOUTME: Counterpart to moonarch-pkgbuilds/moonset/PKGBUILD. - -{ lib -, rustPlatform -, pkg-config -, wrapGAppsHook4 -, glib -, gtk4 -, gtk4-layer-shell -, src -, version -}: - -rustPlatform.buildRustPackage { - pname = "moonset"; - inherit version src; - - cargoLock.lockFile = "${src}/Cargo.lock"; - - # glib provides glib-compile-resources for the GResource bundle in build.rs. - nativeBuildInputs = [ pkg-config wrapGAppsHook4 glib ]; - - buildInputs = [ gtk4 gtk4-layer-shell ]; - - meta = { - description = "Wayland session power menu with GTK4 and Layer Shell"; - homepage = "https://gitea.moonarch.de/nevaforget/moonset"; - license = lib.licenses.mit; - mainProgram = "moonset"; - platforms = lib.platforms.linux; - }; -}