2023-07-18 13:55:24 +08:00
|
|
|
inputs:
|
|
|
|
{
|
2024-03-25 11:30:50 +08:00
|
|
|
imports = inputs.localLib.findModules ./.;
|
2023-12-05 16:40:40 +08:00
|
|
|
options.nixos.packages =
|
|
|
|
let
|
|
|
|
inherit (inputs.lib) mkOption types;
|
|
|
|
packageSets =
|
2023-09-01 21:05:26 +08:00
|
|
|
[
|
|
|
|
# no gui, only used for specific purpose
|
|
|
|
"server"
|
2024-04-25 15:16:32 +08:00
|
|
|
"server-extra"
|
2023-09-01 21:05:26 +08:00
|
|
|
# gui, for daily use, but not install large programs such as matlab
|
|
|
|
"desktop"
|
2024-04-25 15:16:32 +08:00
|
|
|
"desktop-extra"
|
2023-09-01 21:05:26 +08:00
|
|
|
# nearly everything
|
|
|
|
"workstation"
|
|
|
|
];
|
2023-12-05 16:40:40 +08:00
|
|
|
in
|
|
|
|
{
|
2024-04-25 17:55:57 +08:00
|
|
|
packageSet = mkOption
|
|
|
|
{
|
|
|
|
type = types.enum packageSets;
|
|
|
|
default = if inputs.config.nixos.system.gui.enable then "desktop" else "server";
|
|
|
|
};
|
2023-12-05 16:40:40 +08:00
|
|
|
extraPackages = mkOption { type = types.listOf types.unspecified; default = []; };
|
|
|
|
excludePackages = mkOption { type = types.listOf types.unspecified; default = []; };
|
|
|
|
extraPythonPackages = mkOption { type = types.listOf types.unspecified; default = []; };
|
|
|
|
excludePythonPackages = mkOption { type = types.listOf types.unspecified; default = []; };
|
|
|
|
extraPrebuildPackages = mkOption { type = types.listOf types.unspecified; default = []; };
|
|
|
|
excludePrebuildPackages = mkOption { type = types.listOf types.unspecified; default = []; };
|
|
|
|
_packageSets = mkOption
|
|
|
|
{
|
|
|
|
type = types.listOf types.nonEmptyStr;
|
|
|
|
readOnly = true;
|
|
|
|
default = builtins.genList (i: builtins.elemAt packageSets i)
|
|
|
|
((inputs.localLib.findIndex inputs.config.nixos.packages.packageSet packageSets) + 1);
|
|
|
|
};
|
|
|
|
_packages = mkOption { type = types.listOf types.unspecified; default = []; };
|
|
|
|
_pythonPackages = mkOption { type = types.listOf types.unspecified; default = []; };
|
|
|
|
_prebuildPackages = mkOption { type = types.listOf types.unspecified; default = []; };
|
2023-09-01 21:05:26 +08:00
|
|
|
};
|
2023-10-22 13:28:15 +08:00
|
|
|
config =
|
2024-04-25 15:16:32 +08:00
|
|
|
{
|
|
|
|
environment.systemPackages = let inherit (inputs.lib.lists) subtractLists; in with inputs.config.nixos.packages;
|
|
|
|
(inputs.lib.lists.subtractLists excludePackages (_packages ++ extraPackages))
|
|
|
|
++ [
|
|
|
|
(inputs.pkgs.python3.withPackages (pythonPackages:
|
|
|
|
inputs.lib.lists.subtractLists
|
|
|
|
(builtins.concatLists (builtins.map (packageFunction: packageFunction pythonPackages)
|
|
|
|
excludePythonPackages))
|
|
|
|
(builtins.concatLists (builtins.map (packageFunction: packageFunction pythonPackages)
|
|
|
|
(_pythonPackages ++ extraPythonPackages)))))
|
|
|
|
(inputs.pkgs.callPackage ({ stdenv }: stdenv.mkDerivation
|
|
|
|
{
|
|
|
|
name = "prebuild-packages";
|
|
|
|
propagateBuildInputs = inputs.lib.lists.subtractLists excludePrebuildPackages
|
|
|
|
(_prebuildPackages ++ extraPrebuildPackages);
|
|
|
|
phases = [ "installPhase" ];
|
|
|
|
installPhase =
|
|
|
|
''
|
|
|
|
runHook preInstall
|
|
|
|
mkdir -p $out
|
|
|
|
runHook postInstall
|
|
|
|
'';
|
|
|
|
}) {})
|
|
|
|
];
|
|
|
|
};
|
2023-07-18 13:55:24 +08:00
|
|
|
}
|
2023-07-25 18:04:29 +08:00
|
|
|
|
2023-09-01 21:05:26 +08:00
|
|
|
# programs.firejail =
|
|
|
|
# {
|
|
|
|
# enable = true;
|
|
|
|
# wrappedBinaries =
|
|
|
|
# {
|
|
|
|
# qq =
|
|
|
|
# {
|
|
|
|
# executable = "${inputs.pkgs.qq}/bin/qq";
|
|
|
|
# profile = "${inputs.pkgs.firejail}/etc/firejail/linuxqq.profile";
|
|
|
|
# };
|
|
|
|
# };
|
|
|
|
# };
|
2023-07-25 18:04:29 +08:00
|
|
|
|
|
|
|
# config.nixpkgs.config.replaceStdenv = { pkgs }: pkgs.ccacheStdenv;
|
2023-09-01 21:05:26 +08:00
|
|
|
# only replace stdenv for large and tested packages
|
|
|
|
# config.programs.ccache.packageNames = [ "webkitgtk" "libreoffice" "tensorflow" "linux" "chromium" ];
|
|
|
|
# config.nixpkgs.overlays = [(final: prev:
|
|
|
|
# {
|
|
|
|
# libreoffice-qt = prev.libreoffice-qt.override (prev: { unwrapped = prev.unwrapped.override
|
|
|
|
# (prev: { stdenv = final.ccacheStdenv.override { stdenv = prev.stdenv; }; }); });
|
|
|
|
# python3 = prev.python3.override { packageOverrides = python-final: python-prev:
|
|
|
|
# {
|
|
|
|
# tensorflow = python-prev.tensorflow.override
|
|
|
|
# { stdenv = final.ccacheStdenv.override { stdenv = python-prev.tensorflow.stdenv; }; };
|
|
|
|
# };};
|
|
|
|
# # webkitgtk = prev.webkitgtk.override (prev:
|
|
|
|
# # { stdenv = final.ccacheStdenv.override { stdenv = prev.stdenv; }; enableUnifiedBuilds = false; });
|
|
|
|
# wxGTK31 = prev.wxGTK31.override { stdenv = final.ccacheStdenv.override { stdenv = prev.wxGTK31.stdenv; }; };
|
|
|
|
# wxGTK32 = prev.wxGTK32.override { stdenv = final.ccacheStdenv.override { stdenv = prev.wxGTK32.stdenv; }; };
|
|
|
|
# # firefox-unwrapped = prev.firefox-unwrapped.override
|
|
|
|
# # { stdenv = final.ccacheStdenv.override { stdenv = prev.firefox-unwrapped.stdenv; }; };
|
|
|
|
# # chromium = prev.chromium.override
|
|
|
|
# # { stdenv = final.ccacheStdenv.override { stdenv = prev.chromium.stdenv; }; };
|
|
|
|
# # linuxPackages_xanmod_latest = prev.linuxPackages_xanmod_latest.override
|
|
|
|
# # {
|
|
|
|
# # kernel = prev.linuxPackages_xanmod_latest.kernel.override
|
|
|
|
# # {
|
|
|
|
# # stdenv = final.ccacheStdenv.override { stdenv = prev.linuxPackages_xanmod_latest.kernel.stdenv; };
|
|
|
|
# # buildPackages = prev.linuxPackages_xanmod_latest.kernel.buildPackages //
|
|
|
|
# # { stdenv = prev.linuxPackages_xanmod_latest.kernel.buildPackages.stdenv; };
|
|
|
|
# # };
|
|
|
|
# # };
|
|
|
|
# })];
|
|
|
|
# config.programs.ccache.packageNames = [ "libreoffice-unwrapped" ];
|
2023-07-25 18:04:29 +08:00
|
|
|
|
|
|
|
# cross-x86_64-pc-linux-musl/gcc
|
|
|
|
# dev-cpp/cpp-httplib ? how to use
|
|
|
|
# dev-cpp/cppcoro
|
|
|
|
# dev-cpp/date
|
|
|
|
# dev-cpp/nameof
|
|
|
|
# dev-cpp/scnlib
|
|
|
|
# dev-cpp/tgbot-cpp
|
|
|
|
# dev-libs/pocketfft
|
|
|
|
# dev-util/intel-hpckit
|
|
|
|
# dev-util/nvhpc
|
|
|
|
# kde-misc/wallpaper-engine-kde-plugin
|
|
|
|
# media-fonts/arphicfonts
|
|
|
|
# media-fonts/sarasa-gothic
|
|
|
|
# media-gfx/flameshot
|
|
|
|
# media-libs/libva-intel-driver
|
|
|
|
# media-libs/libva-intel-media-driver
|
|
|
|
# media-sound/netease-cloud-music
|
|
|
|
# net-vpn/frp
|
|
|
|
# net-wireless/bluez-tools
|
|
|
|
# sci-libs/mkl
|
|
|
|
# sci-libs/openblas
|
|
|
|
# sci-libs/pfft
|
|
|
|
# sci-libs/scalapack
|
|
|
|
# sci-libs/wannier90
|
|
|
|
# sci-mathematics/ginac
|
|
|
|
# sci-mathematics/mathematica
|
|
|
|
# sci-mathematics/octave
|
|
|
|
# sci-physics/lammps::touchfish-os
|
|
|
|
# sci-physics/vsim
|
|
|
|
# sci-visualization/scidavis
|
|
|
|
# sys-apps/flatpak
|
|
|
|
# sys-cluster/modules
|
|
|
|
# sys-devel/distcc
|
|
|
|
# sys-fs/btrfs-progs
|
|
|
|
# sys-fs/compsize
|
|
|
|
# sys-fs/dosfstools
|
|
|
|
# sys-fs/duperemove
|
|
|
|
# sys-fs/exfatprogs
|
|
|
|
# sys-fs/mdadm
|
|
|
|
# sys-fs/ntfs3g
|
|
|
|
# sys-kernel/dracut
|
|
|
|
# sys-kernel/linux-firmware
|
|
|
|
# sys-kernel/xanmod-sources
|
|
|
|
# sys-kernel/xanmod-sources:6.1.12
|
|
|
|
# sys-kernel/xanmod-sources::touchfish-os
|
|
|
|
# sys-libs/libbacktrace
|
|
|
|
# sys-libs/libselinux
|
|
|
|
# x11-apps/xinput
|
|
|
|
# x11-base/xorg-apps
|
|
|
|
# x11-base/xorg-fonts
|
|
|
|
# x11-base/xorg-server
|
|
|
|
# x11-misc/imwheel
|
|
|
|
# x11-misc/optimus-manager
|
|
|
|
# x11-misc/unclutter-xfixes
|
|
|
|
|
2023-09-19 18:44:03 +08:00
|
|
|
# ++ ( with inputs.pkgs.pkgsCross.mingwW64.buildPackages; [ gcc ] );
|