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 parent
ad4cd937f9
commit
f765a460b5
7 files changed
+31
-165
No files matched your search
@@ -1,5 +1,24 @@
|
|||||||
# Decisions
|
# 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
|
## 2026-08-14 – regreet and swaylock from nixpkgs, autologin after LUKS
|
||||||
|
|
||||||
- **Who**: Dominik, ClaudeCode
|
- **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,
|
compositor, Quickshell as the bar and launcher, regreet as the login greeter,
|
||||||
swaylock as the screen locker, Catppuccin Mocha throughout.
|
swaylock as the screen locker, Catppuccin Mocha throughout.
|
||||||
|
|
||||||
Ships Nix packages for the components that are not in nixpkgs — moonset, stasis,
|
Ships Nix packages for the components that are not in nixpkgs — stasis,
|
||||||
sweet-cursors — and NixOS modules that assemble them into a working session.
|
sweet-cursors, the moonarch helper scripts — and NixOS modules that assemble them
|
||||||
`moonlock` is still packaged here for one reason: moonset's Lock action invokes
|
into a working session. Greeter, locker and power menu are no longer own programs:
|
||||||
it by name. It goes with the moonset release that changes that.
|
`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
|
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
|
`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
|
flake.nix Inputs and outputs
|
||||||
pkgs/ Build recipes
|
pkgs/ Build recipes
|
||||||
moonlock.nix screen locker, retired but still called by moonset
|
|
||||||
moonset.nix session power menu
|
|
||||||
stasis.nix idle manager
|
stasis.nix idle manager
|
||||||
sweet-cursors.nix cursor theme
|
sweet-cursors.nix cursor theme
|
||||||
moonarch-scripts.nix battery and camera helpers
|
moonarch-scripts.nix battery and camera helpers
|
||||||
@@ -41,7 +40,7 @@ hands them the packages and the config source.
|
|||||||
Build a single package:
|
Build a single package:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
nix build .#moonlock
|
nix build .#stasis
|
||||||
```
|
```
|
||||||
|
|
||||||
Build a whole system without activating it:
|
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
|
## 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
|
```bash
|
||||||
# adjust the tag in flake.nix, then
|
# 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
|
## Configuration files
|
||||||
|
|
||||||
Config files are deployed unchanged wherever possible. These are generated
|
Config files are deployed unchanged wherever possible. These are generated
|
||||||
|
|||||||
Generated
-36
@@ -37,40 +37,6 @@
|
|||||||
"url": "https://gitea.moonarch.de/nevaforget/moonarch.git"
|
"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": {
|
"nixos-hardware": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
@@ -122,8 +88,6 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
"moonarch": "moonarch",
|
"moonarch": "moonarch",
|
||||||
"moonlock": "moonlock",
|
|
||||||
"moonset": "moonset",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"stasis": "stasis",
|
"stasis": "stasis",
|
||||||
|
|||||||
@@ -20,14 +20,6 @@
|
|||||||
url = "git+https://gitea.moonarch.de/nevaforget/moonarch.git";
|
url = "git+https://gitea.moonarch.de/nevaforget/moonarch.git";
|
||||||
flake = false;
|
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 = {
|
sweet-cursors = {
|
||||||
url = "git+https://gitea.moonarch.de/nevaforget/Sweet-cursors.git";
|
url = "git+https://gitea.moonarch.de/nevaforget/Sweet-cursors.git";
|
||||||
flake = false;
|
flake = false;
|
||||||
@@ -45,16 +37,6 @@
|
|||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
moonarchPackages = {
|
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 {
|
sweet-cursors = pkgs.callPackage ./pkgs/sweet-cursors.nix {
|
||||||
src = inputs.sweet-cursors;
|
src = inputs.sweet-cursors;
|
||||||
version = "0-unstable";
|
version = "0-unstable";
|
||||||
|
|||||||
+1
-23
@@ -66,18 +66,6 @@ in
|
|||||||
# stasis reads /etc/stasis/ as its system-wide fallback, never /etc/xdg/.
|
# stasis reads /etc/stasis/ as its system-wide fallback, never /etc/xdg/.
|
||||||
"stasis/stasis.rune".source = "${xdg}/stasis/stasis.rune";
|
"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.
|
# Configs outside /etc/xdg/ in the Arch package as well.
|
||||||
"mpv/mpv.conf".source = "${etc}/mpv/mpv.conf";
|
"mpv/mpv.conf".source = "${etc}/mpv/mpv.conf";
|
||||||
"xdg-desktop-portal/niri-portals.conf".source =
|
"xdg-desktop-portal/niri-portals.conf".source =
|
||||||
@@ -157,15 +145,11 @@ in
|
|||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# Own programs
|
# Own programs
|
||||||
moonarchPkgs.moonset
|
|
||||||
moonarchPkgs.sweet-cursors
|
moonarchPkgs.sweet-cursors
|
||||||
moonarchPkgs.stasis
|
moonarchPkgs.stasis
|
||||||
moonarchPkgs.moonarch-scripts
|
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
|
swaylock
|
||||||
|
|
||||||
# Compositor extras
|
# Compositor extras
|
||||||
@@ -244,10 +228,4 @@ in
|
|||||||
"C %h/.config/waypaper/config.ini 0644 - - - ${waypaperConfig}"
|
"C %h/.config/waypaper/config.ini 0644 - - - ${waypaperConfig}"
|
||||||
"C %h/.config/swaylock/config 0644 - - - ${swaylockConfig}"
|
"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