Compare commits

..

19 commits

Author SHA1 Message Date
0773738cca lock: update 2025-06-19 10:49:08 +02:00
62738d411c nixos/nvidia: update 2025-06-19 10:48:58 +02:00
2715e3140d lock: update 2025-06-15 14:47:47 +02:00
80c06ca3d7 Revert "nixos/core-desktop: disable cuda for qimgv"
This reverts commit b1e0daf1e3.
2025-06-12 20:58:14 +02:00
9a81551bfe lock: update 2025-06-12 20:35:51 +02:00
07ca427669 lock: update 2025-06-06 21:29:24 +02:00
7dce41a818 lock: update 2025-06-05 22:05:38 +02:00
384bc2e88b pkgs/overlays/unstable-from-source: fix when there is no elements found in a given overlay grouping 2025-06-05 19:12:45 +02:00
a8c92f2a6a pkgs/ranger-git: update 2025-06-05 19:05:19 +02:00
6e95f125ce pkgs/overlays/unstable-from-source: fix handling of overlays
crossOverlays are just overlays applied only in the final layer
2025-06-01 20:00:17 +02:00
2d88df163a pkgs/overlays/unstable-from-source: fix infinite recursion in assert
also fix checking of callPackage argument, it was opposite
2025-06-01 19:45:20 +02:00
955083407e pkgs/overlays/unstable-from-source: allow to provide callPackage
that means that you can build package from unstable,
while using dependencies for a given unstable package from stable

needs more testing with nested packages and package sets,
but I don't see why it wouldn't work
2025-06-01 18:48:45 +02:00
a3735e02a9 lock: update 2025-05-31 08:08:28 +02:00
d5569e4321 nixos/nvidia: update 2025-05-31 08:08:28 +02:00
f54c76a6ce nixos/razer: update openrazer package to 3.10.3 2025-05-31 08:08:28 +02:00
91e4fdba56 pkgs/overlays/unstable-from-source: remove unnecesary function 2025-05-31 08:08:28 +02:00
4aa8236957 nixos/shell: make sure zoxide is evaled latest 2025-05-31 08:08:28 +02:00
a1208a79b2 lock: update 2025-05-27 22:01:39 +02:00
2389ca1a05 nixos/shell: patch kitty for copy-ansi-to-clipboard fix
https://github.com/kovidgoyal/kitty/issues/8682
2025-05-27 20:10:51 +02:00
10 changed files with 94 additions and 432 deletions

View file

@ -4,19 +4,19 @@
sha256 = "sha256-DlvJv33ml5UTKgu4b0HauOfFIoDx6QXtbqUF3vWeRCY="; sha256 = "sha256-DlvJv33ml5UTKgu4b0HauOfFIoDx6QXtbqUF3vWeRCY=";
}; };
nixpkgs = { nixpkgs = {
revision = "55d1f923c480dadce40f5231feb472e81b0bab48"; revision = "36ab78dab7da2e4e27911007033713bab534187b";
sha256 = "sha256-y2ZtlIlNTuVJUZCqzZAhIw5rrKP4DOSklev6c8PyCkQ="; sha256 = "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=";
}; };
nixpkgs-unstable = { nixpkgs-unstable = {
revision = "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f"; revision = "9e83b64f727c88a7711a2c463a7b16eedb69a84c";
sha256 = "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q="; sha256 = "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=";
}; };
nix-bitcoin = { nix-bitcoin = {
revision = "e7e6353b3a72205b037be53eda2e71e24e46b45e"; revision = "ac1344fb6d91e2af219803eaaa67d1d974666156";
sha256 = "sha256-Y53kyw7CQUEUiKPVQQzCMB4OIiZtOoFNurJhhM6Xvx4="; sha256 = "sha256-qLwBEXlGY2pLNPhPNpeOE0DNC1luovTYE3ZDPMyMPXc=";
}; };
cosmic-modules = { cosmic-modules = {
revision = "e3bea95daa167bf84a4bf3387ef6f01f081152b6"; revision = "ef3b52e04d4294aa98fdac6c065b2d818022efd1";
sha256 = "sha256-QhmqgiAGqR7VYxyNsdpR2qfejRnviyf7ElZ8v8MtwwY="; sha256 = "sha256-zuONfwNObFx8A2zunwwkW2jUgO6rvd6dO2okiiCxPO8=";
}; };
} }

View file

@ -27,12 +27,7 @@
kdePackages.kdeconnect-kde kdePackages.kdeconnect-kde
pcmanfm pcmanfm
pwvucontrol pwvucontrol
(qimgv.override { qimgv
opencv4 = opencv4.override {
# https://github.com/NixOS/nixpkgs/issues/383175
enableCuda = false;
};
})
]; ];
programs.mpv = let programs.mpv = let

View file

@ -24,12 +24,18 @@
nvidiaSettings = true; nvidiaSettings = true;
package = let package = let
mkDriverArgs = { mkDriverArgs = {
version = "575.51.02"; version = "575.64";
sha256_64bit = "sha256-XZ0N8ISmoAC8p28DrGHk/YN1rJsInJ2dZNL8O+Tuaa0="; sha256_64bit = "sha256-6wG8/nOwbH0ktgg8J+ZBT2l5VC8G5lYBQhtkzMCtaLE=";
sha256_aarch64 = "sha256-NNeQU9sPfH1sq3d5RUq1MWT6+7mTo1SpVfzabYSVMVI="; sha256_aarch64 = "sha256-uHj8fB1sSJfX0NWZEE1eZN1LQQkf7J0jPV3EeQCSG10=";
openSha256 = "sha256-NQg+QDm9Gt+5bapbUO96UFsPnz1hG1dtEwT/g/vKHkw="; openSha256 = "sha256-y93FdR5TZuurDlxc/p5D5+a7OH93qU4hwQqMXorcs/g=";
settingsSha256 = "sha256-6n9mVkEL39wJj5FB1HBml7TTJhNAhS/j5hqpNGFQE4w="; settingsSha256 = "sha256-3BvryH7p0ioweNN4S8oLDCTSS47fQPWVYwNq4AuWQgQ=";
persistencedSha256 = "sha256-dgmco+clEIY8bedxHC4wp+fH5JavTzyI1BI8BxoeJJI="; 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=";
})
];
}; };
in ( config.boot.kernelPackages.nvidiaPackages.mkDriver mkDriverArgs ).overrideAttrs (super: { in ( config.boot.kernelPackages.nvidiaPackages.mkDriver mkDriverArgs ).overrideAttrs (super: {
passthru = super.passthru or {} // { passthru = super.passthru or {} // {

View file

@ -15,14 +15,14 @@
# NIXPKGS-PR: 384992 # NIXPKGS-PR: 384992
packages = let packages = let
oldVersion = pkgs.python3Packages.openrazer-daemon.version; oldVersion = pkgs.python3Packages.openrazer-daemon.version;
version = "3.10.1"; version = "3.10.3";
in lib.mapAttrs (_: package: package.overrideAttrs (oldAttrs: { in lib.mapAttrs (_: package: package.overrideAttrs (oldAttrs: {
version = lib.replaceStrings [ oldVersion ] [ version ] oldAttrs.version; version = lib.replaceStrings [ oldVersion ] [ version ] oldAttrs.version;
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
owner = "openrazer"; owner = "openrazer";
repo = "openrazer"; repo = "openrazer";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-igrGx7Y6ENtZatJCTAW43/0q6ZjljJ9/kU3QFli4yIU="; hash = "sha256-M5g3Rn9WuyudhWQfDooopjexEgGVB0rzfJsPg+dqwn4=";
}; };
})) { })) {
kernel = config.boot.kernelPackages.openrazer; kernel = config.boot.kernelPackages.openrazer;

View file

@ -15,7 +15,17 @@ in
aliasDrag aliasDrag
ranger-git ranger-git
ripgrep ripgrep
kitty (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=";
})
];
}))
zoxide zoxide
]) ++ [ ]) ++ [
( (
@ -29,15 +39,19 @@ in
HISTCONTROL=ignoreboth HISTCONTROL=ignoreboth
''; '';
programs.bash.interactiveShellInit = '' programs.bash.interactiveShellInit = lib.mkMerge [
''
HISTCONTROL=ignoreboth HISTCONTROL=ignoreboth
if test -n "$KITTY_INSTALLATION_DIR"; then if test -n "$KITTY_INSTALLATION_DIR"; then
export KITTY_SHELL_INTEGRATION="enabled,no-sudo" export KITTY_SHELL_INTEGRATION="enabled,no-sudo"
source "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash" source "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash"
fi fi
eval "''$(zoxide init bash)"
alias bye=exit alias bye=exit
''; ''
(lib.mkAfter ''
eval "''$(${lib.getExe pkgs.zoxide} init bash)"
'')
];
environment.etc."xdg/kitty/kitty.conf".text = '' environment.etc."xdg/kitty/kitty.conf".text = ''
font_family MesloLGS Nerd Font font_family MesloLGS Nerd Font

View file

@ -16,8 +16,8 @@ ranger.overrideAttrs (selfAttrs: superAttrs: {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ranger"; owner = "ranger";
repo = "ranger"; repo = "ranger";
rev = "b00f923911090204139c9e19ba42e9d80aa0889f"; rev = "7e38143eaa91c82bed8f309aa167b1e6f2607576";
hash = "sha256-uMvo+5I5WCJGT5+XRS/NFClDGH4F59ogQJb+RYuraX4="; hash = "sha256-O0DjecncpN+Bv8Ng+keuvU9iVtWAV4a50p959pMvkww=";
}; };
patches = superAttrs.patches or [] ++ [ patches = superAttrs.patches or [] ++ [

View file

@ -1,81 +0,0 @@
{
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"
])

View file

@ -1,131 +0,0 @@
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)

View file

@ -1,175 +0,0 @@
{
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";
};
})

View file

@ -1,6 +1,8 @@
{ {
unstableSource, unstableSource,
attributeName ? "unstable", attributeName ? "unstable",
# callPackage :: function | boolean
callPackage ? false,
}: }:
self: super: self: super:
@ -15,26 +17,58 @@ let
"parsed" "parsed"
]; ];
unstablePkgsForNixpkgs = nixpkgs: import unstableSource { # 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 {
# localSystem -> pkgs.stdenv.buildPlatform # localSystem -> pkgs.stdenv.buildPlatform
localSystem = sanitizePlatform nixpkgs.stdenv.buildPlatform; localSystem = sanitizePlatform self.stdenv.buildPlatform;
# crossSystem -> pkgs.stdenv.hostPlatform or pkgs.stdenv.targetPlatform ?? # crossSystem -> pkgs.stdenv.hostPlatform or pkgs.stdenv.targetPlatform ??
# passing below # passing below
# config -> pkgs.config # config -> pkgs.config
config = nixpkgs.config; config = self.config;
# overlays -> partial of pkgs.overlays # overlays -> pkgs.buildPackages.overlays
overlays = nixpkgs.overlays; overlays = overlays.allLayers or [];
# crossOverlays -> partial of pkgs.overlays # crossOverlays -> pkgs.overlays without pkgs.buildPackages.overlays
# crossOverlays are merged to overlays, not sure what issues that might raise. crossOverlays = overlays.finalLayer or [];
# ignoring.
} // self.lib.optionalAttrs ( } // self.lib.optionalAttrs (
self.lib.systems.equals nixpkgs.stdenv.buildPlatform nixpkgs.stdenv.hostPlatform self.lib.systems.equals self.stdenv.buildPlatform self.stdenv.hostPlatform
) { ) {
# workaround for some odd structured packages that changes behaviour # workaround for some odd structured packages that changes behaviour
# when crossSystem is passed. # when crossSystem is passed.
crossSystem = sanitizePlatform nixpkgs.stdenv.hostPlatform; crossSystem = sanitizePlatform self.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 in
{ {
"${attributeName}" = if useUnstable then unstablePkgsForNixpkgs self else self; "${attributeName}" = if !useUnstable then self
# if callPackage is not false
else if !(builtins.isBool callPackage && !callPackage) then callPackagesUnstablePkgs
else unstablePkgs;
} }