From 8b5fd926ec451c87f5b2e854a265502ac6fe7bd5 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Tue, 18 Jan 2022 18:21:20 +0800 Subject: [PATCH] Allow self-references in top-level package list It now allows for package to use our own packages easily. Though, having a recursive attribute set can be easier, setting our package list this way is easier to maintain in the long-term since it is a set-and-forget setup. The only disadvantage I can see is the need to re-review what the hell the code is doing depending on my familiarity for Nix in the future. ;p --- pkgs/default.nix | 58 ++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index 3c35a2d9..0f9a27af 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,27 +1,33 @@ -{ pkgs ? import { } }: +{ pkgs ? import { }, overrides ? (self: super: { }) }: -with pkgs; { - doggo = callPackage ./doggo.nix { }; - gnome-shell-extension-pop-shell = - callPackage ./gnome-shell-extension-pop-shell.nix { }; - gnome-shell-extension-burn-my-windows = - callPackage ./gnome-shell-extension-burn-my-windows.nix { }; - gnome-shell-extension-desktop-cube = - callPackage ./gnome-shell-extension-desktop-cube.nix { }; - gnome-shell-extension-fly-pie = - callPackage ./gnome-shell-extension-fly-pie.nix { }; - guile-config = callPackage ./guile-config.nix { }; - guile-hall = callPackage ./guile-hall.nix { }; - junction = callPackage ./junction.nix { }; - libcs50 = callPackage ./libcs50.nix { }; - llama = callPackage ./llama.nix { }; - neo = callPackage ./neo.nix { }; - pop-launcher = callPackage ./pop-launcher.nix { }; - pop-launcher-plugin-duckduckgo-bangs = - callPackage ./pop-launcher-plugin-duckduckgo-bangs.nix { }; - photon-rss = callPackage ./photon-rss.nix { }; - ratt = callPackage ./ratt.nix { }; - tic-80 = callPackage ./tic-80 { }; - sioyek = libsForQt5.callPackage ./sioyek.nix { }; - vpaint = libsForQt5.callPackage ./vpaint.nix { }; -} +with pkgs; + +let + packages = self: + let callPackage = newScope self; + in { + doggo = callPackage ./doggo.nix { }; + gnome-shell-extension-burn-my-windows = + callPackage ./gnome-shell-extension-burn-my-windows.nix { }; + gnome-shell-extension-desktop-cube = + callPackage ./gnome-shell-extension-desktop-cube.nix { }; + gnome-shell-extension-fly-pie = + callPackage ./gnome-shell-extension-fly-pie.nix { }; + gnome-shell-extension-pop-shell = + callPackage ./gnome-shell-extension-pop-shell.nix { }; + guile-config = callPackage ./guile-config.nix { }; + guile-hall = callPackage ./guile-hall.nix { }; + junction = callPackage ./junction.nix { }; + libcs50 = callPackage ./libcs50.nix { }; + llama = callPackage ./llama.nix { }; + neo = callPackage ./neo.nix { }; + pop-launcher = callPackage ./pop-launcher.nix { }; + pop-launcher-plugin-duckduckgo-bangs = + callPackage ./pop-launcher-plugin-duckduckgo-bangs.nix { }; + photon-rss = callPackage ./photon-rss.nix { }; + ratt = callPackage ./ratt.nix { }; + tic-80 = callPackage ./tic-80 { }; + sioyek = libsForQt5.callPackage ./sioyek.nix { }; + vpaint = libsForQt5.callPackage ./vpaint.nix { }; + }; +in lib.fix (lib.extends overrides packages)