Merge pull request #147 from wer-zen/main

Nix Part for README
This commit is contained in:
Lysec 2025-08-26 15:38:40 +02:00 committed by GitHub
commit 7379bcb5b6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 145 additions and 148 deletions

129
README.md
View file

@ -87,59 +87,108 @@ If you want to use the ArchUpdater Widget, make sure you have any polkit agent i
### Installation
#### For Arch
```bash
# Install Quickshell
yay -S quickshell-git
# Download and install Noctalia (latest release)
mkdir -p ~/.config/quickshell && curl -sL https://github.com/noctalia-dev/noctalia-shell/releases/latest/download/noctalia-latest.tar.gz | tar -xz --strip-components=1 -C ~/.config/quickshell
```
### Usage
#### For Nix
```bash
# Start the shell
qs
# Launcher
qs ipc call launcher toggle
# SidePanel
qs ipc call sidePanel toggle
# Clipboard History
qs ipc call launcher clipboard
# Calculator
qs ipc call launcher calculator
# Brightness
qs ipc call brightness increase
qs ipc call brightness decrease
# Power Panel
qs ipc call powerPanel toggle
# Idle Inhibitor
qs ipc call idleInhibitor toggle
# Settings Window
qs ipc call settings toggle
# Toggle lock screen
qs ipc call lockScreen toggle
nix run github:noctalia-dev/noctalia-shell
```
### Keybinds
<details>
<summary><strong>For flakes</strong></summary>
| Action | Command |
|--------|---------|
| Toggle Application Launcher | `qs ipc call appLauncher toggle` |
| Toggle Lock Screen | `qs ipc call lockScreen toggle` |
```nix
{
description = "Example Nix flake with Noctalia + Quickshell";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
};
quickshell = {
url = "github:outfoxxed/quickshell";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, noctalia, quickshell, ... }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
in {
nixosConfigurations.my-host = nixpkgs.lib.nixosSystem {
system = system;
modules = [
./configuration.nix
# Add noctalia to system packages
({ pkgs, ... }: {
environment.systemPackages = [
noctalia.packages.${system}.default
quickshell.packages.${system}.default
];
})
];
};
};
}
```
</details>
### Usage
<details>
<summary> With the binary </summary>
| Action | Command |
| --------------------------- | ----------------------------------------- |
| Start the Shell | `noctalia-shell` |
| Toggle Application Launcher | `noctalia-shell ipc call launcher toggle` |
| Toggle Side Panel | `noctalia-shell ipc call sidePanel toggle` |
| Open Clipboard History | `noctalia-shell ipc call launcher clipboard` |
| Open Calculator | `noctalia-shell ipc call launcher calculator` |
| Increase Brightness | `noctalia-shell ipc call brightness increase` |
| Decrease Brightness | `noctalia-shell ipc call brightness decrease` |
| Toggle Power Panel | `noctalia-shell ipc call powerPanel toggle` |
| Toggle Idle Inhibitor | `noctalia-shell ipc call idleInhibitor toggle` |
| Toggle Settings Window | `noctalia-shell ipc call settings toggle` |
| Toggle Lock Screen | `noctalia-shell ipc call lockScreen toggle` |
| Toggle Notification History | `noctalia-shell ipc call notifications toggleHistory` |
</details>
<details>
<summary> Without the binary </summary>
| Action | Command |
| --------------------------- | ----------------------------------------- |
| Start the Shell | `qs` |
| Toggle Application Launcher | `qs ipc call launcher toggle` |
| Toggle Side Panel | `qs ipc call sidePanel toggle` |
| Open Clipboard History | `qs ipc call launcher clipboard` |
| Open Calculator | `qs ipc call launcher calculator` |
| Increase Brightness | `qs ipc call brightness increase` |
| Decrease Brightness | `qs ipc call brightness decrease` |
| Toggle Power Panel | `qs ipc call powerPanel toggle` |
| Toggle Idle Inhibitor | `qs ipc call idleInhibitor toggle` |
| Toggle Settings Window | `qs ipc call settings toggle` |
| Toggle Lock Screen | `qs ipc call lockScreen toggle` |
| Toggle Notification History | `qs ipc call notifications toggleHistory` |
| Toggle Settings Panel | `qs ipc call settings toggle` |
| Increase Brightness | `qs ipc call brightness increase` |
| Decrease Brightness | `qs ipc call brightness decrease` |
</details>
### Configuration

6
flake.lock generated
View file

@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1755615617,
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
"lastModified": 1756125398,
"narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "20075955deac2583bb12f07151c2df830ef346b4",
"rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5",
"type": "github"
},
"original": {

View file

@ -1,5 +1,5 @@
{
description = "Desktop shell for Caelestia dots";
description = "Noctalia shell - a Wayland desktop shell built with Quickshell";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
@ -11,25 +11,57 @@
};
};
outputs = {
self,
nixpkgs,
systems,
...
} @ inputs: let
eachSystem = nixpkgs.lib.genAttrs (import systems);
in {
formatter = eachSystem (pkgs: pkgs.alejandra);
outputs = { self, nixpkgs, systems, quickshell, ... }:
let
eachSystem = nixpkgs.lib.genAttrs (import systems);
in {
formatter = eachSystem (pkgs: pkgs.alejandra);
packages = eachSystem (system: rec {
noctalia-shell = nixpkgs.legacyPackages.${system}.callPackage ./nix {
rev = self.rev or self.dirtyRev;
quickshell = inputs.quickshell.packages.${system}.default.override {
withX11 = false;
withI3 = false;
};
};
default = noctalia-shell;
});
};
packages = eachSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
qs = quickshell.packages.${system}.default.override {
withX11 = false;
withI3 = false;
};
runtimeDeps = with pkgs; [
bash bluez brightnessctl cava cliphist coreutils ddcutil file
findutils gpu-screen-recorder libnotify matugen networkmanager
swww wl-clipboard
];
fontconfig = pkgs.makeFontsConf {
fontDirectories = [ pkgs.material-symbols pkgs.roboto pkgs.inter-nerdfont ];
};
in
pkgs.stdenv.mkDerivation {
pname = "noctalia-shell";
version = self.rev or self.dirtyRev or "dirty";
src = ./.;
nativeBuildInputs = [ pkgs.gcc pkgs.makeWrapper pkgs.qt6.wrapQtAppsHook ];
buildInputs = [ qs pkgs.xkeyboard-config pkgs.qt6.qtbase ];
propagatedBuildInputs = runtimeDeps;
installPhase = ''
mkdir -p $out/share/noctalia-shell
cp -r ./* $out/share/noctalia-shell
makeWrapper ${qs}/bin/qs $out/bin/noctalia-shell \
--prefix PATH : "${pkgs.lib.makeBinPath runtimeDeps}" \
--set FONTCONFIG_FILE "${fontconfig}" \
--add-flags "-p $out/share/noctalia-shell"
'';
meta = {
description = "A sleek and minimal desktop shell thoughtfully crafted for Wayland, built with Quickshell.";
homepage = "https://github.com/noctalia-dev/noctalia-shell";
license = pkgs.lib.licenses.mit;
mainProgram = "noctalia-shell";
};
}
);
defaultPackage = eachSystem (system: self.packages.${system});
};
}

View file

@ -1,84 +0,0 @@
{
rev,
lib,
stdenv,
makeWrapper,
makeFontsConf,
ddcutil,
brightnessctl,
cava,
networkmanager,
wl-clipboard,
libnotify,
bluez,
bash,
coreutils,
findutils,
file,
material-symbols,
roboto,
inter-nerdfont,
matugen,
cliphist,
swww,
gpu-screen-recorder,
gcc,
qt6,
quickshell,
xkeyboard-config,
extraRuntimeDeps ? [],
}: let
runtimeDeps =
[
bash
bluez
brightnessctl
cava
cliphist
coreutils
ddcutil
file
findutils
gpu-screen-recorder
libnotify
matugen
networkmanager
swww
wl-clipboard
]
++ extraRuntimeDeps;
fontconfig = makeFontsConf {
fontDirectories = [
material-symbols
roboto
inter-nerdfont
];
};
in
stdenv.mkDerivation {
pname = "noctalia-shell";
version = "${rev}";
src = ./..;
nativeBuildInputs = [gcc makeWrapper qt6.wrapQtAppsHook];
buildInputs = [quickshell xkeyboard-config qt6.qtbase];
propagatedBuildInputs = runtimeDeps;
installPhase = ''
mkdir -p $out/share/noctalia-shell
cp -r ./* $out/share/noctalia-shell
makeWrapper ${quickshell}/bin/qs $out/bin/noctalia-shell \
--prefix PATH : "${lib.makeBinPath runtimeDeps}" \
--set FONTCONFIG_FILE "${fontconfig}" \
--add-flags "-p $out/share/noctalia-shell"
'';
meta = {
description = "A sleek and minimal desktop shell thoughtfully crafted for Wayland, built with Quickshell.";
homepage = "https://github.com/noctalia-dev/noctalia-shell";
license = lib.licenses.mit;
mainProgram = "noctalia-shell";
};
}