feat: drop moonlock and moonset
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.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Generated
-36
@@ -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",
|
||||
|
||||
@@ -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";
|
||||
|
||||
+1
-23
@@ -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";
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user