best practices: got rid of rec

This commit is contained in:
Danilo Reyes 2024-11-09 14:53:58 -06:00
parent 0bebf3e366
commit be0e4d7109
8 changed files with 283 additions and 243 deletions

View File

@ -124,42 +124,46 @@
wget
sops
];
variables = rec {
# PATH
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_DATA_HOME = "\${HOME}/.local/share";
XDG_STATE_HOME = "\${HOME}/.local/state";
variables =
let
XDG_DATA_HOME = "\${HOME}/.local/share";
XDG_CONFIG_HOME = "\${HOME}/.config";
XDG_CACHE_HOME = "\${HOME}/.cache";
in
{
# PATH
inherit XDG_DATA_HOME XDG_CONFIG_HOME XDG_CACHE_HOME;
XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_STATE_HOME = "\${HOME}/.local/state";
# DEV PATH
CARGO_HOME = "${XDG_DATA_HOME}/cargo";
GEM_HOME = "${XDG_DATA_HOME}/ruby/gems";
GEM_PATH = "${XDG_DATA_HOME}/ruby/gems";
GEM_SPEC_CACHE = "${XDG_DATA_HOME}/ruby/specs";
GOPATH = "${XDG_DATA_HOME}/go";
PSQL_HISTORY = "${XDG_DATA_HOME}/psql_history";
REDISCLI_HISTFILE = "${XDG_DATA_HOME}/redis/rediscli_history";
WINEPREFIX = "${XDG_DATA_HOME}/wine";
# DEV PATH
CARGO_HOME = "${XDG_DATA_HOME}/cargo";
GEM_HOME = "${XDG_DATA_HOME}/ruby/gems";
GEM_PATH = "${XDG_DATA_HOME}/ruby/gems";
GEM_SPEC_CACHE = "${XDG_DATA_HOME}/ruby/specs";
GOPATH = "${XDG_DATA_HOME}/go";
PSQL_HISTORY = "${XDG_DATA_HOME}/psql_history";
REDISCLI_HISTFILE = "${XDG_DATA_HOME}/redis/rediscli_history";
WINEPREFIX = "${XDG_DATA_HOME}/wine";
# OPTIONS
ELECTRUMDIR = "${XDG_DATA_HOME}/electrum";
WGETRC = "${XDG_CONFIG_HOME}/wgetrc";
XCOMPOSECACHE = "${XDG_CACHE_HOME}/X11/xcompose";
"_JAVA_OPTIONS" = "-Djava.util.prefs.userRoot=${XDG_CONFIG_HOME}/java";
# OPTIONS
ELECTRUMDIR = "${XDG_DATA_HOME}/electrum";
WGETRC = "${XDG_CONFIG_HOME}/wgetrc";
XCOMPOSECACHE = "${XDG_CACHE_HOME}/X11/xcompose";
"_JAVA_OPTIONS" = "-Djava.util.prefs.userRoot=${XDG_CONFIG_HOME}/java";
# NVIDIA
CUDA_CACHE_PATH = "${XDG_CACHE_HOME}/nv";
# NVIDIA
CUDA_CACHE_PATH = "${XDG_CACHE_HOME}/nv";
# WAYLAND
WLR_NO_HARDWARE_CURSORS = 1;
NIXOS_OZONE_WL = 1;
# WAYLAND
WLR_NO_HARDWARE_CURSORS = 1;
NIXOS_OZONE_WL = 1;
# Themes
# WEBKIT_DISABLE_COMPOSITING_MODE = "1";
# Themes
# WEBKIT_DISABLE_COMPOSITING_MODE = "1";
PATH = [ "\${HOME}/.local/bin" ];
};
PATH = [ "\${HOME}/.local/bin" ];
};
};
programs = {
nh = {

View File

@ -44,14 +44,19 @@ in
nodejs
perl
(python311.withPackages (ps: with ps; [ tensorflow ]))
(perlPackages.buildPerlPackage rec {
pname = "Image-ExifTool";
version = "12.70";
src = fetchurl {
url = "https://exiftool.org/Image-ExifTool-${version}.tar.gz";
hash = "sha256-TLJSJEXMPj870TkExq6uraX8Wl4kmNerrSlX3LQsr/4=";
};
})
(perlPackages.buildPerlPackage (
let
version = "12.70";
in
{
pname = "Image-ExifTool";
inherit version;
src = fetchurl {
url = "https://exiftool.org/Image-ExifTool-${version}.tar.gz";
hash = "sha256-TLJSJEXMPj870TkExq6uraX8Wl4kmNerrSlX3LQsr/4=";
};
}
))
];
};
programs.msmtp = {

View File

@ -15,17 +15,21 @@
imagemagick # photoshop what??
])
++ [
(pkgs.python3Packages.buildPythonApplication rec {
pname = "ffpb";
version = "0.4.1";
src = pkgs.python3Packages.fetchPypi {
inherit pname version;
sha256 = "sha256-7eVqbLpMHS1sBw2vYS4cTtyVdnnknGtEI8190VlXflk=";
};
doCheck = false;
buildInputs = [ pkgs.python3Packages.setuptools ];
propagatedBuildInputs = [ pkgs.python3Packages.tqdm ];
})
(pkgs.python3Packages.buildPythonApplication (
let
pname = "ffpb";
version = "0.4.1";
in
{
src = pkgs.python3Packages.fetchPypi {
inherit pname version;
sha256 = "sha256-7eVqbLpMHS1sBw2vYS4cTtyVdnnknGtEI8190VlXflk=";
};
doCheck = false;
buildInputs = [ pkgs.python3Packages.setuptools ];
propagatedBuildInputs = [ pkgs.python3Packages.tqdm ];
}
))
];
};
}

View File

@ -15,19 +15,27 @@ let
};
in
{
nightly = qt6Packages.callPackage ./generic.nix rec {
pname = "citra-nightly";
version = "2104";
nightly = qt6Packages.callPackage ./generic.nix (
let
version = "2104";
in
{
pname = "citra-nightly";
inherit
version
branch
compat-list
;
src = fetchFromGitHub {
owner = "CaptainJawZ";
repo = "Citra-Nightly";
rev = "nightly-${version}";
sha256 = "0ggi1l8327s43xaxs616g0s9vmal6q7vsv69bn07gp71gchhcmyi";
fetchSubmodules = true;
};
src = fetchFromGitHub {
owner = "CaptainJawZ";
repo = "Citra-Nightly";
rev = "nightly-${version}";
sha256 = "0ggi1l8327s43xaxs616g0s9vmal6q7vsv69bn07gp71gchhcmyi";
fetchSubmodules = true;
};
inherit branch compat-list;
};
}
);
}
.${branch}

View File

@ -37,7 +37,7 @@ assert lib.assertMsg (
!enableFfmpegAudioDecoder || !enableFdk
) "Can't enable both enableFfmpegAudioDecoder and enableFdk";
stdenv.mkDerivation rec {
stdenv.mkDerivation {
inherit pname version src;
nativeBuildInputs = [

View File

@ -58,120 +58,130 @@ let
gameLibraryPath = libpath + ":${addOpenGLRunpath.driverLink}/lib";
in
stdenv.mkDerivation rec {
pname = "polymc" + (lib.optionalString ((lib.versions.major qt6.qtbase.version) == "5") "-qt5");
version = "6.1";
stdenv.mkDerivation (
let
version = "6.1";
in
{
pname = "polymc" + (lib.optionalString ((lib.versions.major qt6.qtbase.version) == "5") "-qt5");
inherit version;
src = fetchFromGitHub {
owner = "PolyMC";
repo = "PolyMC";
rev = version;
sha256 = "sha256-AOy13zAWQ0CtsX9z1M+fxH7Sh/QSFy7EdQ/fD9yUYc8=";
fetchSubmodules = true;
};
dontWrapQtApps = true;
nativeBuildInputs = [
cmake
extra-cmake-modules
ninja
jdk17
qt6.wrapQtAppsHook
file
ghc_filesystem
];
buildInputs = [
qt6.qtbase
qt6.qtsvg
qt6.qtcharts
qt6.qtwayland
qt6Packages.quazip
zlib
];
src = fetchFromGitHub {
owner = "PolyMC";
repo = "PolyMC";
rev = version;
sha256 = "sha256-AOy13zAWQ0CtsX9z1M+fxH7Sh/QSFy7EdQ/fD9yUYc8=";
fetchSubmodules = true;
};
dontWrapQtApps = true;
nativeBuildInputs = [
cmake
extra-cmake-modules
ninja
jdk17
qt6.wrapQtAppsHook
file
ghc_filesystem
];
buildInputs = [
qt6.qtbase
qt6.qtsvg
qt6.qtcharts
qt6.qtwayland
qt6Packages.quazip
zlib
];
cmakeFlags = [
"-GNinja"
"-DLauncher_QT_VERSION_MAJOR=${lib.versions.major qt6.qtbase.version}"
] ++ lib.optionals (msaClientID != null) [ "-DLauncher_MSA_CLIENT_ID=${msaClientID}" ];
cmakeFlags = [
"-GNinja"
"-DLauncher_QT_VERSION_MAJOR=${lib.versions.major qt6.qtbase.version}"
] ++ lib.optionals (msaClientID != null) [ "-DLauncher_MSA_CLIENT_ID=${msaClientID}" ];
postPatch = ''
# hardcode jdk paths
substituteInPlace launcher/java/JavaUtils.cpp \
--replace 'scanJavaDir("/usr/lib/jvm")' 'javas.append("${jdk17}/lib/openjdk/bin/java")'
'';
postFixup = ''
# xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
wrapQtApp $out/bin/polymc \
--suffix LD_LIBRARY_PATH : "${gameLibraryPath}" \
--suffix PATH : "${binpath}" \
--set-default ALSOFT_DRIVERS "pulse"
'';
passthru = {
wrap =
{
extraJDKs ? [ ],
extraPaths ? [ ],
extraLibs ? [ ],
withWaylandGLFW ? false,
withMangohud ? true,
withGamemode ? true,
}:
stdenv.mkDerivation rec {
pname = "${polymc.pname}-wrapped";
inherit (polymc) version;
libsPath =
(lib.makeLibraryPath (extraLibs ++ lib.optional withGamemode gamemode.lib))
+ lib.optionalString withMangohud "${mangohud + "/lib/mangohud"}";
binsPath = lib.makeBinPath (extraPaths ++ lib.optional withMangohud mangohud);
waylandPreExec = writeShellScript "waylandGLFW" ''
if [ -n "$WAYLAND_DISPLAY" ]; then
export LD_LIBRARY_PATH=${lib.getLib glfw-wayland-minecraft}/lib:"$LD_LIBRARY_PATH"
fi
'';
src = polymc;
nativeBuildInputs = [ makeWrapper ];
phases = [
"installPhase"
"fixupPhase"
];
installPhase = ''
mkdir -p $out/bin
ln -s $src/bin/polymc $out/bin/polymc
ln -s $src/share $out/share
'';
postFixup =
let
javaPaths = lib.makeSearchPath "bin/java" extraJDKs;
in
''
wrapProgram $out/bin/polymc \
--suffix LD_LIBRARY_PATH : "${libsPath}" \
--suffix POLYMC_JAVA_PATHS : "${javaPaths}" \
--suffix PATH : "${binsPath}" ${lib.optionalString withWaylandGLFW "--run ${waylandPreExec}"}
'';
preferLocalBuild = true;
inherit (polymc) meta;
};
};
meta = with lib; {
homepage = "https://polymc.org/";
downloadPage = "https://polymc.org/download/";
changelog = "https://github.com/PolyMC/PolyMC/releases";
description = "A free, open source launcher for Minecraft";
longDescription = ''
Allows you to have multiple, separate instances of Minecraft (each with
their own mods, texture packs, saves, etc) and helps you manage them and
their associated options with a simple interface.
postPatch = ''
# hardcode jdk paths
substituteInPlace launcher/java/JavaUtils.cpp \
--replace 'scanJavaDir("/usr/lib/jvm")' 'javas.append("${jdk17}/lib/openjdk/bin/java")'
'';
platforms = [ "x86_64-linux" ];
license = licenses.gpl3Only;
};
};
postFixup = ''
# xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
wrapQtApp $out/bin/polymc \
--suffix LD_LIBRARY_PATH : "${gameLibraryPath}" \
--suffix PATH : "${binpath}" \
--set-default ALSOFT_DRIVERS "pulse"
'';
passthru = {
wrap =
{
extraJDKs ? [ ],
extraPaths ? [ ],
extraLibs ? [ ],
withWaylandGLFW ? false,
withMangohud ? true,
withGamemode ? true,
}:
stdenv.mkDerivation (
let
libsPath =
(lib.makeLibraryPath (extraLibs ++ lib.optional withGamemode gamemode.lib))
+ lib.optionalString withMangohud "${mangohud + "/lib/mangohud"}";
binsPath = lib.makeBinPath (extraPaths ++ lib.optional withMangohud mangohud);
waylandPreExec = writeShellScript "waylandGLFW" ''
if [ -n "$WAYLAND_DISPLAY" ]; then
export LD_LIBRARY_PATH=${lib.getLib glfw-wayland-minecraft}/lib:"$LD_LIBRARY_PATH"
fi
'';
in
{
pname = "${polymc.pname}-wrapped";
inherit (polymc) version;
inherit libsPath binsPath waylandPreExec;
src = polymc;
nativeBuildInputs = [ makeWrapper ];
phases = [
"installPhase"
"fixupPhase"
];
installPhase = ''
mkdir -p $out/bin
ln -s $src/bin/polymc $out/bin/polymc
ln -s $src/share $out/share
'';
postFixup =
let
javaPaths = lib.makeSearchPath "bin/java" extraJDKs;
in
''
wrapProgram $out/bin/polymc \
--suffix LD_LIBRARY_PATH : "${libsPath}" \
--suffix POLYMC_JAVA_PATHS : "${javaPaths}" \
--suffix PATH : "${binsPath}" ${lib.optionalString withWaylandGLFW "--run ${waylandPreExec}"}
'';
preferLocalBuild = true;
inherit (polymc) meta;
}
);
};
meta = with lib; {
homepage = "https://polymc.org/";
downloadPage = "https://polymc.org/download/";
changelog = "https://github.com/PolyMC/PolyMC/releases";
description = "A free, open source launcher for Minecraft";
longDescription = ''
Allows you to have multiple, separate instances of Minecraft (each with
their own mods, texture packs, saves, etc) and helps you manage them and
their associated options with a simple interface.
'';
platforms = [ "x86_64-linux" ];
license = licenses.gpl3Only;
};
}
);
in
polymc

View File

@ -16,58 +16,62 @@ let
filepicker = callPackage ./filepicker.nix { };
in
buildNpmPackage rec {
pname = "vdhcoapp";
version = "2.0.19";
buildNpmPackage (
let
version = "2.0.19";
pname = "vdhcoapp";
src = fetchFromGitHub {
owner = "aclap-dev";
repo = "${pname}";
rev = "v${version}";
hash = "sha256-8xeZvqpRq71aShVogiwlVD3gQoPGseNOmz5E3KbsZxU=";
};
in
{
inherit pname version src;
src = fetchFromGitHub {
owner = "aclap-dev";
repo = "vdhcoapp";
rev = "v${version}";
hash = "sha256-8xeZvqpRq71aShVogiwlVD3gQoPGseNOmz5E3KbsZxU=";
};
sourceRoot = "${src.name}/app";
npmDepsHash = "sha256-E032U2XZdyTER6ROkBosOTn7bweDXHl8voC3BQEz8Wg=";
dontNpmBuild = true;
sourceRoot = "${src.name}/app";
npmDepsHash = "sha256-E032U2XZdyTER6ROkBosOTn7bweDXHl8voC3BQEz8Wg=";
dontNpmBuild = true;
nativeBuildInputs = [
toml2json
makeWrapper
];
nativeBuildInputs = [
toml2json
makeWrapper
];
patches = [
(substituteAll {
src = ./code.patch;
inherit ffmpeg;
filepicker = lib.getExe filepicker;
})
];
patches = [
(substituteAll {
src = ./code.patch;
inherit ffmpeg;
filepicker = lib.getExe filepicker;
})
];
postPatch = ''
# Cannot use patch, setting placeholder here
substituteInPlace src/native-autoinstall.js \
--replace process.execPath "\"${placeholder "out"}/bin/vdhcoapp\""
'';
postPatch = ''
# Cannot use patch, setting placeholder here
substituteInPlace src/native-autoinstall.js \
--replace process.execPath "\"${placeholder "out"}/bin/vdhcoapp\""
'';
preBuild = ''
toml2json --pretty ../config.toml > src/config.json
'';
preBuild = ''
toml2json --pretty ../config.toml > src/config.json
'';
installPhase = ''
mkdir -p $out/opt/vdhcoapp
installPhase = ''
mkdir -p $out/opt/vdhcoapp
cp -r . "$out/opt/vdhcoapp"
cp -r . "$out/opt/vdhcoapp"
makeWrapper ${nodejs}/bin/node $out/bin/vdhcoapp \
--add-flags $out/opt/vdhcoapp/src/main.js
'';
makeWrapper ${nodejs}/bin/node $out/bin/vdhcoapp \
--add-flags $out/opt/vdhcoapp/src/main.js
'';
meta = with lib; {
description = "Companion application for the Video DownloadHelper browser add-on";
homepage = "https://www.downloadhelper.net/";
license = licenses.gpl2;
maintainers = with maintainers; [ wolfangaukang ];
mainProgram = "vdhcoapp";
};
}
meta = with lib; {
description = "Companion application for the Video DownloadHelper browser add-on";
homepage = "https://www.downloadhelper.net/";
license = licenses.gpl2;
maintainers = with maintainers; [ wolfangaukang ];
mainProgram = "vdhcoapp";
};
}
)

View File

@ -8,32 +8,37 @@
glib,
}:
rustPlatform.buildRustPackage rec {
pname = "filepicker";
version = "1.0.1";
rustPlatform.buildRustPackage (
let
version = "1.0.1";
in
{
pname = "filepicker";
inherit version;
src = fetchFromGitHub {
owner = "paulrouget";
repo = "static-filepicker";
rev = "v${version}";
hash = "sha256-7sRzf3SA9RSBf4O36olXgka8c6Bufdb0qsuTofVe55s=";
};
src = fetchFromGitHub {
owner = "paulrouget";
repo = "static-filepicker";
rev = "v${version}";
hash = "sha256-7sRzf3SA9RSBf4O36olXgka8c6Bufdb0qsuTofVe55s=";
};
cargoHash = "sha256-aal7ppFkCpNc+QTS4Qklsb9WfJ65QqG6p1eOskiX+/Q=";
cargoHash = "sha256-aal7ppFkCpNc+QTS4Qklsb9WfJ65QqG6p1eOskiX+/Q=";
buildInputs = [
atk
gtk3
glib
];
buildInputs = [
atk
gtk3
glib
];
nativeBuildInputs = [ pkg-config ];
nativeBuildInputs = [ pkg-config ];
meta = with lib; {
description = "File picker used by VDHCoApp";
homepage = "https://github.com/paulrouget/static-filepicker";
license = licenses.gpl2;
mainProgram = "filepicker";
maintainers = with maintainers; [ hannesgith ];
};
}
meta = with lib; {
description = "File picker used by VDHCoApp";
homepage = "https://github.com/paulrouget/static-filepicker";
license = licenses.gpl2;
mainProgram = "filepicker";
maintainers = with maintainers; [ hannesgith ];
};
}
)