Chore: Remove hard dependency on overlays (#955)

* Remove hard dependency on overlays

* Update documentation
This commit is contained in:
DADA30000
2025-05-26 21:34:07 +03:00
committed by GitHub
parent 12d6960e19
commit 436dcbfcf2
3 changed files with 127 additions and 103 deletions

View File

@@ -155,28 +155,40 @@ If you install the fonts after installing HyperPanel, you will need to restart H
### NixOS & Home-Manager ### NixOS & Home-Manager
Alternatively, if you're using NixOS and/or Home-Manager, you can setup AGS using the provided Nix Flake. First, add the repository to your Flake's inputs, and enable the overlay. Alternatively, if you're using NixOS and/or Home-Manager, you can setup AGS using the provided Nix Flake. First, add the repository to your Flake's inputs, and enable the overlay.
You can now also just use wrapper as the package directly and ignore this section almost entirely (expect for adding inputs), it's recommended to avoid overlays.
```nix ```nix
# flake.nix # flake.nix
{ {
inputs.hyprpanel.url = "github:Jas-SinghFSU/HyprPanel"; inputs = {
# ... nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
hyprpanel = {
url = "github:Jas-SinghFSU/HyprPanel";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, ... }@inputs: outputs =
let { self, nixpkgs, ... }@inputs:
# ... let
system = "x86_64-linux"; # change to whatever your system should be. overlays = [
pkgs = import nixpkgs {
inherit system;
# ...
overlays = [
inputs.hyprpanel.overlay inputs.hyprpanel.overlay
]; ];
}; in
in { {
# ... nixosConfigurations = {
} nixos = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;
};
modules = [
./configuration.nix
{ nixpkgs.overlays = [ overlays ]; }
];
};
};
};
} }
``` ```
@@ -188,6 +200,7 @@ Once you've set up the overlay, you can reference HyprPanel with `pkgs.hyprpanel
# install it as a system package # install it as a system package
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# ... # ...
inputs.hyprpanel.packages.${pkgs.system}.wrapper # this one if you want to avoid overlays/didn't enable them
hyprpanel hyprpanel
# ... # ...
]; ];
@@ -195,6 +208,7 @@ environment.systemPackages = with pkgs; [
# or install it as a user package # or install it as a user package
users.users.<username>.packages = with pkgs; [ users.users.<username>.packages = with pkgs; [
# ... # ...
inputs.hyprpanel.packages.${pkgs.system}.wrapper # this one if you want to avoid overlays/didn't enable them
hyprpanel hyprpanel
# ... # ...
]; ];
@@ -205,6 +219,7 @@ users.users.<username>.packages = with pkgs; [
# install it as a user package with home-manager # install it as a user package with home-manager
home.packages = with pkgs; [ home.packages = with pkgs; [
# ... # ...
inputs.hyprpanel.packages.${pkgs.system}.wrapper # this one if you want to avoid overlays/didn't enable them
hyprpanel hyprpanel
# ... # ...
]; ];
@@ -212,6 +227,7 @@ home.packages = with pkgs; [
# or reference it directly in your Hyprland configuration # or reference it directly in your Hyprland configuration
wayland.windowManager.hyprland.settings.exec-once = [ wayland.windowManager.hyprland.settings.exec-once = [
"${pkgs.hyprpanel}/bin/hyprpanel" "${pkgs.hyprpanel}/bin/hyprpanel"
"${inputs.hyprpanel.packages.${pkgs.system}.wrapper}/bin/hyprpanel" # this one if you want to avoid overlays/didn't enable them
]; ];
``` ```

171
flake.nix
View File

@@ -8,84 +8,103 @@
}; };
}; };
outputs = { outputs =
self, {
nixpkgs, self,
ags, nixpkgs,
}: let ags,
systems = ["x86_64-linux" "aarch64-linux"]; }:
forEachSystem = nixpkgs.lib.genAttrs systems; let
in { systems = [
packages = forEachSystem (system: let "x86_64-linux"
pkgs = nixpkgs.legacyPackages.${system}; "aarch64-linux"
in { ];
default = ags.lib.bundle { forEachSystem = nixpkgs.lib.genAttrs systems;
inherit pkgs; in
src = ./.; {
name = "hyprpanel"; # name of executable packages = forEachSystem (
entry = "app.ts"; system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
default = ags.lib.bundle {
inherit pkgs;
src = ./.;
name = "hyprpanel"; # name of executable
entry = "app.ts";
extraPackages = extraPackages =
(with ags.packages.${system}; [ (with ags.packages.${system}; [
tray tray
hyprland hyprland
apps apps
battery battery
bluetooth bluetooth
mpris mpris
cava cava
network network
notifd notifd
powerprofiles powerprofiles
wireplumber wireplumber
]) ])
++ (with pkgs; [ ++ (with pkgs; [
fish fish
typescript typescript
libnotify libnotify
dart-sass dart-sass
fd fd
btop btop
bluez bluez
libgtop libgtop
gobject-introspection gobject-introspection
glib glib
bluez-tools bluez-tools
grimblast grimblast
brightnessctl brightnessctl
gnome-bluetooth gnome-bluetooth
(python3.withPackages (ps: (python3.withPackages (
with ps; [ ps: with ps; [
gpustat gpustat
dbus-python dbus-python
pygobject3 pygobject3
])) ]
matugen ))
hyprpicker matugen
hyprsunset hyprpicker
hypridle hyprsunset
wireplumber hypridle
networkmanager wireplumber
wf-recorder networkmanager
upower wf-recorder
gvfs upower
swww gvfs
pywal swww
]); pywal
]);
};
# Make a wrapper package to avoid overlay
wrapper = pkgs.writeShellScriptBin "hyprpanel" ''
if [ "$#" -eq 0 ]; then
exec ${self.packages.${pkgs.stdenv.system}.default}/bin/hyprpanel
else
exec ${ags.packages.${pkgs.stdenv.system}.io}/bin/astal -i hyprpanel "$*"
fi
'';
}
);
# Define .overlay to expose the package as pkgs.hyprpanel based on the system
overlay = final: prev: {
hyprpanel = prev.writeShellScriptBin "hyprpanel" ''
if [ "$#" -eq 0 ]; then
exec ${self.packages.${final.stdenv.system}.default}/bin/hyprpanel
else
exec ${ags.packages.${final.stdenv.system}.io}/bin/astal -i hyprpanel "$*"
fi
'';
}; };
});
# Define .overlay to expose the package as pkgs.hyprpanel based on the system homeManagerModules.hyprpanel = import ./nix/module.nix self;
overlay = final: prev: {
hyprpanel = prev.writeShellScriptBin "hyprpanel" ''
if [ "$#" -eq 0 ]; then
exec ${self.packages.${final.stdenv.system}.default}/bin/hyprpanel
else
exec ${ags.packages.${final.stdenv.system}.io}/bin/astal -i hyprpanel "$*"
fi
'';
}; };
homeManagerModules.hyprpanel = import ./nix/module.nix self;
};
} }

View File

@@ -22,18 +22,7 @@ let
if pkgs ? hyprpanel then if pkgs ? hyprpanel then
pkgs.hyprpanel pkgs.hyprpanel
else else
abort '' self.packages.${pkgs.stdenv.system}.wrapper;
********************************************************************************
* HyprPanel *
*------------------------------------------------------------------------------*
* You didn't add the overlay! *
* *
* Either set 'overlay.enable = true' or manually add it to 'nixpkgs.overlays'. *
* If you use the 'nixosModule' for Home Manager and have 'useGlobalPkgs' set, *
* you will need to add the overlay yourself. *
********************************************************************************
'';
# Shorthand lambda for self-documenting options under settings # Shorthand lambda for self-documenting options under settings
mkStrOption = mkStrOption =