diff --git a/lock.nix b/lock.nix index ec4adc3..64f2376 100644 --- a/lock.nix +++ b/lock.nix @@ -4,19 +4,19 @@ sha256 = "sha256-DlvJv33ml5UTKgu4b0HauOfFIoDx6QXtbqUF3vWeRCY="; }; nixpkgs = { - revision = "36ab78dab7da2e4e27911007033713bab534187b"; - sha256 = "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw="; + revision = "55d1f923c480dadce40f5231feb472e81b0bab48"; + sha256 = "sha256-y2ZtlIlNTuVJUZCqzZAhIw5rrKP4DOSklev6c8PyCkQ="; }; nixpkgs-unstable = { - revision = "9e83b64f727c88a7711a2c463a7b16eedb69a84c"; - sha256 = "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI="; + revision = "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f"; + sha256 = "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q="; }; nix-bitcoin = { - revision = "ac1344fb6d91e2af219803eaaa67d1d974666156"; - sha256 = "sha256-qLwBEXlGY2pLNPhPNpeOE0DNC1luovTYE3ZDPMyMPXc="; + revision = "e7e6353b3a72205b037be53eda2e71e24e46b45e"; + sha256 = "sha256-Y53kyw7CQUEUiKPVQQzCMB4OIiZtOoFNurJhhM6Xvx4="; }; cosmic-modules = { - revision = "ef3b52e04d4294aa98fdac6c065b2d818022efd1"; - sha256 = "sha256-zuONfwNObFx8A2zunwwkW2jUgO6rvd6dO2okiiCxPO8="; + revision = "e3bea95daa167bf84a4bf3387ef6f01f081152b6"; + sha256 = "sha256-QhmqgiAGqR7VYxyNsdpR2qfejRnviyf7ElZ8v8MtwwY="; }; } diff --git a/nixos/modules/core-desktop.nix b/nixos/modules/core-desktop.nix index d81ceec..72a1f33 100644 --- a/nixos/modules/core-desktop.nix +++ b/nixos/modules/core-desktop.nix @@ -27,7 +27,12 @@ kdePackages.kdeconnect-kde pcmanfm pwvucontrol - qimgv + (qimgv.override { + opencv4 = opencv4.override { + # https://github.com/NixOS/nixpkgs/issues/383175 + enableCuda = false; + }; + }) ]; programs.mpv = let diff --git a/nixos/modules/nvidia.nix b/nixos/modules/nvidia.nix index ad6f2db..afd3d33 100644 --- a/nixos/modules/nvidia.nix +++ b/nixos/modules/nvidia.nix @@ -24,18 +24,12 @@ nvidiaSettings = true; package = let mkDriverArgs = { - version = "575.64"; - sha256_64bit = "sha256-6wG8/nOwbH0ktgg8J+ZBT2l5VC8G5lYBQhtkzMCtaLE="; - sha256_aarch64 = "sha256-uHj8fB1sSJfX0NWZEE1eZN1LQQkf7J0jPV3EeQCSG10="; - openSha256 = "sha256-y93FdR5TZuurDlxc/p5D5+a7OH93qU4hwQqMXorcs/g="; - settingsSha256 = "sha256-3BvryH7p0ioweNN4S8oLDCTSS47fQPWVYwNq4AuWQgQ="; - persistencedSha256 = "sha256-QkDNQKwCsakZOLcSie1NBiFCM5e5NFGiIKtPSFeWdXs="; - patches = [ - (pkgs.fetchpatch { - url = "https://raw.githubusercontent.com/rpmfusion/nvidia-kmod/020f5fabfb067150f8dd0d6e470a7a694f59eb59/Workaround-nv_vm_flags_-calling-GPL-only-code.patch"; - hash = "sha256-2WQs8WDVzNivwUSWn7t2hoduUVvmem5e+JpGt04380c="; - }) - ]; + version = "575.51.02"; + sha256_64bit = "sha256-XZ0N8ISmoAC8p28DrGHk/YN1rJsInJ2dZNL8O+Tuaa0="; + sha256_aarch64 = "sha256-NNeQU9sPfH1sq3d5RUq1MWT6+7mTo1SpVfzabYSVMVI="; + openSha256 = "sha256-NQg+QDm9Gt+5bapbUO96UFsPnz1hG1dtEwT/g/vKHkw="; + settingsSha256 = "sha256-6n9mVkEL39wJj5FB1HBml7TTJhNAhS/j5hqpNGFQE4w="; + persistencedSha256 = "sha256-dgmco+clEIY8bedxHC4wp+fH5JavTzyI1BI8BxoeJJI="; }; in ( config.boot.kernelPackages.nvidiaPackages.mkDriver mkDriverArgs ).overrideAttrs (super: { passthru = super.passthru or {} // { diff --git a/nixos/modules/razer.nix b/nixos/modules/razer.nix index cfcda07..f299e95 100644 --- a/nixos/modules/razer.nix +++ b/nixos/modules/razer.nix @@ -15,14 +15,14 @@ # NIXPKGS-PR: 384992 packages = let oldVersion = pkgs.python3Packages.openrazer-daemon.version; - version = "3.10.3"; + version = "3.10.1"; in lib.mapAttrs (_: package: package.overrideAttrs (oldAttrs: { version = lib.replaceStrings [ oldVersion ] [ version ] oldAttrs.version; src = pkgs.fetchFromGitHub { owner = "openrazer"; repo = "openrazer"; tag = "v${version}"; - hash = "sha256-M5g3Rn9WuyudhWQfDooopjexEgGVB0rzfJsPg+dqwn4="; + hash = "sha256-igrGx7Y6ENtZatJCTAW43/0q6ZjljJ9/kU3QFli4yIU="; }; })) { kernel = config.boot.kernelPackages.openrazer; diff --git a/nixos/modules/shell.nix b/nixos/modules/shell.nix index 2c70c93..891e3b9 100644 --- a/nixos/modules/shell.nix +++ b/nixos/modules/shell.nix @@ -15,17 +15,7 @@ in aliasDrag ranger-git ripgrep - (kitty.overrideAttrs (superAttrs: { - patches = superAttrs.patches or [] ++ [ - (fetchpatch { - url = "https://github.com/AmirulAndalib/kitty/commit/61fd8c4003b361503160424cbed1960153f40290.patch"; - excludes = lib.map lib.escapeRegex [ - "docs/changelog.rst" - ]; - hash = "sha256-TqO/pLRkxN+Mz4nfNfTntGpPoy6OgbtAGmdohG/1BFs="; - }) - ]; - })) + kitty zoxide ]) ++ [ ( @@ -39,19 +29,15 @@ in HISTCONTROL=ignoreboth ''; - programs.bash.interactiveShellInit = lib.mkMerge [ - '' - HISTCONTROL=ignoreboth - if test -n "$KITTY_INSTALLATION_DIR"; then - export KITTY_SHELL_INTEGRATION="enabled,no-sudo" - source "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash" - fi - alias bye=exit - '' - (lib.mkAfter '' - eval "''$(${lib.getExe pkgs.zoxide} init bash)" - '') - ]; + programs.bash.interactiveShellInit = '' + HISTCONTROL=ignoreboth + if test -n "$KITTY_INSTALLATION_DIR"; then + export KITTY_SHELL_INTEGRATION="enabled,no-sudo" + source "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash" + fi + eval "''$(zoxide init bash)" + alias bye=exit + ''; environment.etc."xdg/kitty/kitty.conf".text = '' font_family MesloLGS Nerd Font diff --git a/pkgs/by-name/ra/ranger-git/package.nix b/pkgs/by-name/ra/ranger-git/package.nix index 7efb7ce..d60114a 100644 --- a/pkgs/by-name/ra/ranger-git/package.nix +++ b/pkgs/by-name/ra/ranger-git/package.nix @@ -16,8 +16,8 @@ ranger.overrideAttrs (selfAttrs: superAttrs: { src = fetchFromGitHub { owner = "ranger"; repo = "ranger"; - rev = "7e38143eaa91c82bed8f309aa167b1e6f2607576"; - hash = "sha256-O0DjecncpN+Bv8Ng+keuvU9iVtWAV4a50p959pMvkww="; + rev = "b00f923911090204139c9e19ba42e9d80aa0889f"; + hash = "sha256-uMvo+5I5WCJGT5+XRS/NFClDGH4F59ogQJb+RYuraX4="; }; patches = superAttrs.patches or [] ++ [ diff --git a/pkgs/by-name/up/upp/buildUppPackage.nix b/pkgs/by-name/up/upp/buildUppPackage.nix new file mode 100644 index 0000000..2ceabee --- /dev/null +++ b/pkgs/by-name/up/upp/buildUppPackage.nix @@ -0,0 +1,81 @@ +{ + lib, + pkg-config, + stdenv, + upp, +}: + +{ + assembly ? ".", + extraAssemblies ? [], + includeUppsrcAssembly ? true, + package, + flags ? [], + buildMethod ? if stdenv.cc.isClang then "CLANG" else "GCC", + buildShared ? false, + ... +}@args: + +let + flagsString = lib.optionalString (flags != []) ( "+" + lib.concatStringsSep "," flags); + output = if buildShared then "lib/${package}.so" else "bin/${package}"; +in + +stdenv.mkDerivation (self: { + nativeBuildInputs = [ + pkg-config + upp + ] ++ args.nativeBuildInputs or []; + + buildInputs = upp.uppsrcDependencies ++ args.buildInputs or []; + + assemblies = lib.concatStringsSep "," ( + lib.singleton assembly + ++ extraAssemblies + ++ lib.optional includeUppsrcAssembly "${upp.src}/uppsrc" + ); + + postUnpack = '' + mkdir -p .home + export HOME=$(realpath .home) + ''; + + UPP_NO_BUILD_INFO = true; + + # https://www.ultimatepp.org/app$ide$umk$en-us.html + # s - use shared libraries + # S - use shared libraries and build shared libraries + # u - use target directory + # v - verbose + # r - release mode + + # FIXME: writing to $out should be done in the install phase + buildPhase = '' + runHook preBuild + + mkdir -p $out/${if buildShared then "lib" else "bin"} + + umk \ + "$assemblies" \ + ${lib.escapeShellArg package} \ + ${buildMethod} \ + -${if buildShared then "S" else "s"}uvr "-H$NIX_BUILD_CORES" \ + ${flagsString} \ + $out/${output} + + runHook postBuild + ''; + + # Don't run installPhase unless the user explicitly provides it + dontInstall = !lib.hasAttr "installPhase" args; +} // lib.removeAttrs args [ + "assembly" + "extraAssemblies" + "includeUppsrcAssembly" + "package" + "flags" + "buildMethod" + "buildShared" + "nativeBuildInputs" + "buildInputs" +]) diff --git a/pkgs/by-name/up/upp/no-build-info.patch b/pkgs/by-name/up/upp/no-build-info.patch new file mode 100644 index 0000000..639ca12 --- /dev/null +++ b/pkgs/by-name/up/upp/no-build-info.patch @@ -0,0 +1,131 @@ +diff --git a b +index a3e9af6..0ff3dd8 100644 +--- a/Makefile ++++ b/Makefile +@@ -100,8 +100,14 @@ all: prepare $(OutFile) + .PHONY: build_info + build_info: +- (date '+#define bmYEAR %y%n#define bmMONTH %m%n#define bmDAY %d%n#define bmHOUR %H%n#define bmMINUTE %M%n#define bmSECOND %S%n#define bmTIME Time( %y, %m, %d, %H, %M, %S )' | sed 's| 0\([[:digit:]]\)| \1|g' && \ +- echo '#define bmMACHINE "'`hostname`'"' && \ +- echo '#define bmUSER "'`whoami`'"') > "$(UPPOUT)/build_info.h" ++ (echo '#define bmYEAR 1970' && \ ++ echo '#define bmMONTH 1' && \ ++ echo '#define bmDAY 1' && \ ++ echo '#define bmHOUR 0' && \ ++ echo '#define bmMINUTE 0' && \ ++ echo '#define bmSECOND 1' && \ ++ echo '#define bmTIME Time(1970, 1, 1, 0, 0, 1)' && \ ++ echo '#define bmMACHINE ""' && \ ++ echo '#define bmUSER ""') > "$(UPPOUT)/build_info.h" + + .PHONY: prepare + prepare: \ +index a3e9af6..0ff3dd8 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -100,8 +100,14 @@ all: prepare $(OutFile) + .PHONY: build_info + build_info: +- (date '+#define bmYEAR %y%n#define bmMONTH %m%n#define bmDAY %d%n#define bmHOUR %H%n#define bmMINUTE %M%n#define bmSECOND %S%n#define bmTIME Time( %y, %m, %d, %H, %M, %S )' | sed 's| 0\([[:digit:]]\)| \1|g' && \ +- echo '#define bmMACHINE "'`hostname`'"' && \ +- echo '#define bmUSER "'`whoami`'"') > "$(UPPOUT)/build_info.h" ++ (echo '#define bmYEAR 1970' && \ ++ echo '#define bmMONTH 1' && \ ++ echo '#define bmDAY 1' && \ ++ echo '#define bmHOUR 0' && \ ++ echo '#define bmMINUTE 0' && \ ++ echo '#define bmSECOND 1' && \ ++ echo '#define bmTIME Time(1970, 1, 1, 0, 0, 1)' && \ ++ echo '#define bmMACHINE ""' && \ ++ echo '#define bmUSER ""') > "$(UPPOUT)/build_info.h" + + .PHONY: prepare + prepare: \ +--- a/umkMakefile ++++ b/umkMakefile +@@ -52,8 +52,14 @@ all: prepare $(OutFile) + .PHONY: build_info + build_info: +- (date '+#define bmYEAR %y%n#define bmMONTH %m%n#define bmDAY %d%n#define bmHOUR %H%n#define bmMINUTE %M%n#define bmSECOND %S%n#define bmTIME Time( %y, %m, %d, %H, %M, %S )' | sed 's| 0\([[:digit:]]\)| \1|g' && \ +- echo '#define bmMACHINE "'`hostname`'"' && \ +- echo '#define bmUSER "'`whoami`'"') > "$(UPPOUT)/build_info.h" ++ (echo '#define bmYEAR 1970' && \ ++ echo '#define bmMONTH 1' && \ ++ echo '#define bmDAY 1' && \ ++ echo '#define bmHOUR 0' && \ ++ echo '#define bmMINUTE 0' && \ ++ echo '#define bmSECOND 1' && \ ++ echo '#define bmTIME Time(1970, 1, 1, 0, 0, 1)' && \ ++ echo '#define bmMACHINE ""' && \ ++ echo '#define bmUSER ""') > "$(UPPOUT)/build_info.h" + + .PHONY: prepare + prepare: \ +--- a/umkMakefile.in ++++ b/umkMakefile.in +@@ -52,8 +52,14 @@ all: prepare $(OutFile) + .PHONY: build_info + build_info: +- (date '+#define bmYEAR %y%n#define bmMONTH %m%n#define bmDAY %d%n#define bmHOUR %H%n#define bmMINUTE %M%n#define bmSECOND %S%n#define bmTIME Time( %y, %m, %d, %H, %M, %S )' | sed 's| 0\([[:digit:]]\)| \1|g' && \ +- echo '#define bmMACHINE "'`hostname`'"' && \ +- echo '#define bmUSER "'`whoami`'"') > "$(UPPOUT)/build_info.h" ++ (echo '#define bmYEAR 1970' && \ ++ echo '#define bmMONTH 1' && \ ++ echo '#define bmDAY 1' && \ ++ echo '#define bmHOUR 0' && \ ++ echo '#define bmMINUTE 0' && \ ++ echo '#define bmSECOND 1' && \ ++ echo '#define bmTIME Time(1970, 1, 1, 0, 0, 1)' && \ ++ echo '#define bmMACHINE ""' && \ ++ echo '#define bmUSER ""') > "$(UPPOUT)/build_info.h" + + .PHONY: prepare + prepare: \ +--- a/uppsrc/ide/Builders/CppBuilder.cpp ++++ b/uppsrc/ide/Builders/CppBuilder.cpp +@@ -580,19 +580,32 @@ void CppBuilder::SaveBuildInfo(const String& package) + RealizePath(path); + FileOut info(path); + Time t = GetSysTime(); +- info << "#define bmYEAR " << (int)t.year << "\r\n"; +- info << "#define bmMONTH " << (int)t.month << "\r\n"; +- info << "#define bmDAY " << (int)t.day << "\r\n"; +- info << "#define bmHOUR " << (int)t.hour << "\r\n"; +- info << "#define bmMINUTE " << (int)t.minute << "\r\n"; +- info << "#define bmSECOND " << (int)t.second << "\r\n"; +- info << Format("#define bmTIME Time(%d, %d, %d, %d, %d, %d)\r\n", +- (int)t.year, (int)t.month, (int)t.day, (int)t.hour, (int)t.minute, (int)t.second); +- info << "#define bmMACHINE " << AsCString(GetComputerName()) << "\r\n"; +- info << "#define bmUSER " << AsCString(GetUserName()) << "\r\n"; +- +- if(package == mainpackage) +- info << Join(RepoInfo(package), "\r\n"); ++ char* no_build_info = getenv("NO_BUILD_INFO"); ++ if((no_build_info != NULL) && strcmp(no_build_info, "1")) { ++ info << "#define bmYEAR " << (int)t.year << "\r\n"; ++ info << "#define bmMONTH " << (int)t.month << "\r\n"; ++ info << "#define bmDAY " << (int)t.day << "\r\n"; ++ info << "#define bmHOUR " << (int)t.hour << "\r\n"; ++ info << "#define bmMINUTE " << (int)t.minute << "\r\n"; ++ info << "#define bmSECOND " << (int)t.second << "\r\n"; ++ info << Format("#define bmTIME Time(%d, %d, %d, %d, %d, %d)\r\n", ++ (int)t.year, (int)t.month, (int)t.day, (int)t.hour, (int)t.minute, (int)t.second); ++ info << "#define bmMACHINE " << AsCString(GetComputerName()) << "\r\n"; ++ info << "#define bmUSER " << AsCString(GetUserName()) << "\r\n"; ++ ++ if(package == mainpackage) ++ info << Join(RepoInfo(package), "\r\n"); ++ } else { ++ info << "#define bmYEAR 1970\r\n"; ++ info << "#define bmMONTH 1\r\n"; ++ info << "#define bmDAY 1\r\n"; ++ info << "#define bmHOUR 0\r\n"; ++ info << "#define bmMINUTE 0\r\n"; ++ info << "#define bmSECOND 1\r\n"; ++ info << "#define bmTIME Time(1970, 1, 1, 0, 0, 1)\r\n"; ++ info << "#define bmMACHINE \"\"\r\n"; ++ info << "#define bmUSER \"\"\r\n"; ++ } + } + + String CppBuilder::DefinesTargetTime(const char *sep, const String& package, const Package& pkg) diff --git a/pkgs/by-name/up/upp/package.nix b/pkgs/by-name/up/upp/package.nix new file mode 100644 index 0000000..dbe9700 --- /dev/null +++ b/pkgs/by-name/up/upp/package.nix @@ -0,0 +1,175 @@ +{ + lib, + callPackage, + fetchFromGitHub, + fetchpatch, + makeWrapper, + pkg-config, + stdenv, + makeDesktopItem, + copyDesktopItems, + + # pkg-config dependencies + libpng, + freetype, + fontconfig, + xorg, + expat, + gtk3, + libnotify, + + # other dependencies + libclang, + openssl, +}: + +let + buildMethod = if stdenv.cc.isClang then "CLANG" else "GCC"; + uppsrcDependencies = [ + expat + fontconfig + freetype + gtk3 + libnotify + libpng + openssl + xorg.libX11 + xorg.libXdmcp + xorg.libXext + xorg.libXft + xorg.libXinerama + xorg.libXrender + xorg.libxcb + ]; +in stdenv.mkDerivation (self: let + selfBootstrap = self.overrideAttrs (selfAttrs: superAttrs: { + passthru = superAttrs.passthru // { + bootstrap = true; + }; + }); +in { + pname = "upp"; + version = "2025.1"; + + src = fetchFromGitHub { + owner = "ultimatepp"; + repo = "ultimatepp"; + tag = "2025.1"; + hash = "sha256-/hsjQvc5+HxyaytZ5kryhSxbuaAx0eXuH285q7NPiiw="; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ + makeWrapper + pkg-config + ] ++ lib.optional (!self.passthru.bootstrap) copyDesktopItems; + + buildInputs = uppsrcDependencies ++ lib.optional (!self.passthru.bootstrap) libclang; + + patches = [ + ./no-build-info.patch + (fetchpatch { + # https://github.com/ultimatepp/ultimatepp/pull/271 + url = "https://github.com/ultimatepp/ultimatepp/commit/db5cad68673f9571e6571116e0570e22e3e44fe8.patch"; + hash = "sha256-t2PducjE6b5MjDSAIKvEMdHnT8oTGmI073qYuhLFCh0="; + }) + ]; + postPatch = '' + patchShebangs ./configure_makefile + echo "#define IDE_VERSION \"${self.version}\"" > uppsrc/ide/version.h + '' + lib.optionalString (!self.passthru.bootstrap) '' + mkdir -p .home + export HOME=$(realpath .home) + ''; + + NIX_LDFLAGS = [ + "-L${libclang.lib}/lib" + "-lclang" + ]; + + NIX_CFLAGS_COMPILE = [ + "-DflagLCLANG" + ]; + + UPP_NO_BUILD_INFO = true; + + buildPhase = '' + runHook preBuild + '' + ( + # Don't build theide in bootstrap to save resources + if self.passthru.bootstrap then '' + make -f umkMakefile -j $NIX_BUILD_CORES "$makeFlagsArray" + '' else '' + ${lib.getExe' selfBootstrap "umk"} uppsrc ide ${buildMethod} -rvs "-H$NIX_BUILD_CORES" + ${lib.getExe' selfBootstrap "umk"} uppsrc umk ${buildMethod} -rvs "-H$NIX_BUILD_CORES" + '') + '' + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + '' + (if self.passthru.bootstrap then '' + mv ./umk $out/bin/umk + '' else '' + mv $HOME/.cache/upp.out/umk/${buildMethod}.Main.Shared/umk $out/bin/umk + mv $HOME/.cache/upp.out/ide/${buildMethod}.Gui.Main.Shared/ide $out/bin/theide + + wrapProgram $out/bin/theide \ + --unset WAYLAND_DISPLAY + + mkdir -p $out/share/icons/hicolor/scalable/apps + cp uppsrc/ide/icon.svg $out/share/icons/hicolor/scalable/apps/upp-theide.svg + for size in 16 32 64 128 256 512; do + mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps + cp uppsrc/ide/icon''${size}x''${size}.png $out/share/icons/hicolor/''${size}x''${size}/apps/upp-theide.png + done + '') + '' + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + name = "upp-theide"; + exec = "theide"; + icon = "upp-theide"; + desktopName = "TheIDE"; + comment = "The U++ Framework IDE"; + categories = [ "Development" "IDE" ]; + terminal = false; + }) + ]; + + passthru = { + bootstrap = false; + inherit uppsrcDependencies; + buildUppPackage = callPackage ./buildUppPackage.nix {}; + tests = lib.genAttrs [ + "AddressBookXML2" + "Bombs" + "Days" + "SQLApp" + "httpcli" + ] (examplePackageName: self.passthru.buildUppPackage { + pname = examplePackageName; + version = self.version; + package = examplePackageName; + src = self.src; + includeUppsrcAssembly = false; + buildInputs = self.passthru.uppsrcDependencies; + assembly = "examples"; + extraAssemblies = [ + "uppsrc" + ]; + }); + }; + + meta = { + homepage = "https://www.ultimatepp.org"; + description = "C++ cross-platform rapid application development framework"; + license = lib.licenses.bsd2; + mainProgram = "umk"; + }; +}) diff --git a/pkgs/overlays/unstable-from-source.nix b/pkgs/overlays/unstable-from-source.nix index 416b778..bca6b9f 100644 --- a/pkgs/overlays/unstable-from-source.nix +++ b/pkgs/overlays/unstable-from-source.nix @@ -1,8 +1,6 @@ { unstableSource, attributeName ? "unstable", - # callPackage :: function | boolean - callPackage ? false, }: self: super: @@ -17,58 +15,26 @@ let "parsed" ]; - # if overlay is found in previous layer, then it was provided in "overlays" argument - # otherwise, it is provided in "crossOverlays" argument. - overlays = self.lib.groupBy (overlay: - if self.lib.elem overlay self.buildPackages.overlays then "allLayers" - else "finalLayer" - ) self.overlays; - - unstablePkgs = import unstableSource { + unstablePkgsForNixpkgs = nixpkgs: import unstableSource { # localSystem -> pkgs.stdenv.buildPlatform - localSystem = sanitizePlatform self.stdenv.buildPlatform; + localSystem = sanitizePlatform nixpkgs.stdenv.buildPlatform; # crossSystem -> pkgs.stdenv.hostPlatform or pkgs.stdenv.targetPlatform ?? # passing below # config -> pkgs.config - config = self.config; - # overlays -> pkgs.buildPackages.overlays - overlays = overlays.allLayers or []; - # crossOverlays -> pkgs.overlays without pkgs.buildPackages.overlays - crossOverlays = overlays.finalLayer or []; + config = nixpkgs.config; + # overlays -> partial of pkgs.overlays + overlays = nixpkgs.overlays; + # crossOverlays -> partial of pkgs.overlays + # crossOverlays are merged to overlays, not sure what issues that might raise. + # ignoring. } // self.lib.optionalAttrs ( - self.lib.systems.equals self.stdenv.buildPlatform self.stdenv.hostPlatform + self.lib.systems.equals nixpkgs.stdenv.buildPlatform nixpkgs.stdenv.hostPlatform ) { # workaround for some odd structured packages that changes behaviour # when crossSystem is passed. - crossSystem = sanitizePlatform self.stdenv.hostPlatform; + crossSystem = sanitizePlatform nixpkgs.stdenv.hostPlatform; }; - - callPackage' = if builtins.isFunction callPackage then callPackage - else if builtins.isBool callPackage && callPackage then self.callPackage - else if builtins.isBool callPackage && !callPackage then throw "this should never be evaluated" - else throw '' - callPackage argument should be a function or a boolean. - If you want to use the callPackage from self, set it to true. - If you want to use a custom callPackage, set it to a function (pkgs.callPackage). - ''; - - callPackagesUnstablePkgs = self.lib.mapAttrsRecursiveCond ( - attrset: !(self.lib.hasAttr "override" attrset) && attrset.recurseForDerivations or false - ) ( - _: unstablePackage: callPackage' { - # For some reason, override functor of the package has its argument set as required, - # which is totally false! the override functor can take all of those arguemnts optionally. - __functionArgs = self.lib.mapAttrs (_: _: true) (self.lib.functionArgs unstablePackage.override); - __functor = - if builtins.isFunction unstablePackage.override then unstablePackage.override - else unstablePackage.override.__functor; - } {} - ) unstablePkgs; - in { - "${attributeName}" = if !useUnstable then self - # if callPackage is not false - else if !(builtins.isBool callPackage && !callPackage) then callPackagesUnstablePkgs - else unstablePkgs; + "${attributeName}" = if useUnstable then unstablePkgsForNixpkgs self else self; }