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 =
{ self, nixpkgs, ... }@inputs:
let let
# ...
system = "x86_64-linux"; # change to whatever your system should be.
pkgs = import nixpkgs {
inherit system;
# ...
overlays = [ overlays = [
inputs.hyprpanel.overlay inputs.hyprpanel.overlay
]; ];
in
{
nixosConfigurations = {
nixos = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;
};
modules = [
./configuration.nix
{ nixpkgs.overlays = [ overlays ]; }
];
};
};
}; };
in {
# ...
}
} }
``` ```
@@ -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
]; ];
``` ```

View File

@@ -8,17 +8,26 @@
}; };
}; };
outputs = { outputs =
{
self, self,
nixpkgs, nixpkgs,
ags, ags,
}: let }:
systems = ["x86_64-linux" "aarch64-linux"]; let
systems = [
"x86_64-linux"
"aarch64-linux"
];
forEachSystem = nixpkgs.lib.genAttrs systems; forEachSystem = nixpkgs.lib.genAttrs systems;
in { in
packages = forEachSystem (system: let {
packages = forEachSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
in { in
{
default = ags.lib.bundle { default = ags.lib.bundle {
inherit pkgs; inherit pkgs;
src = ./.; src = ./.;
@@ -54,12 +63,13 @@
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 matugen
hyprpicker hyprpicker
hyprsunset hyprsunset
@@ -73,7 +83,16 @@
pywal 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 # Define .overlay to expose the package as pkgs.hyprpanel based on the system
overlay = final: prev: { overlay = final: prev: {

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 =