{ config, pkgs, options, lib, myLib, ... }: with builtins; with lib; let cfg = config.aviallon.overlays; pkgNames = pkgs: forEach pkgs (p: "${getName p}-${p.version}"); in { imports = [ (mkRenamedOptionModule [ "aviallon" "overlays" "optimizations" ] [ "aviallon" "optimizations" "enable" ] ) ]; options.aviallon.overlays = { enable = mkOption { default = true; example = false; description = "Wether to enable system-wide overlays or not"; type = types.bool; }; traceCallPackage = mkEnableOption "printing package names each time callPackage is evaluated"; }; config = mkIf cfg.enable { nix.nixPath = # Append our nixpkgs-overlays. [ "nixpkgs-overlays=/etc/nixos/overlays-compat/" ]; nixpkgs.overlays = [ ] ++ optional cfg.traceCallPackage ( self: super: { callPackage = path: overrides: let _pkg = super.callPackage path overrides; _name = _pkg.name or _pkg.pname or ""; in trace "callPackage ${_name}" _pkg; } ) ++ [ (self: super: { htop = super.htop.overrideAttrs (old: { configureFlags = old.configureFlags ++ [ "--enable-affinity" "--enable-delayacct" "--enable-capabilities" ]; nativeBuildInputs = old.nativeBuildInputs ++ (with super; [ pkg-config ]); buildInputs = old.buildInputs ++ (with super; [ libcap libunwind libnl ]); }); ark = super.ark.override { unfreeEnableUnrar = true; }; }) # (final: prev: { # # linux-manual requires scripts/split-man.pl from the kernel source, but # # neither xanmod 6.19.7 nor vanilla 6.18.x ship it yet. Mark broken so # # the build doesn't fail; man-pages and man-pages-posix still build fine. # linux-manual = prev.linux-manual.overrideAttrs (_: { # meta = (prev.linux-manual.meta or { }) // { # broken = true; # }; # }); # }) (final: prev: { lutris-fhs = ( prev.buildFHSUserEnv { name = "lutris"; targetPkgs = pkgs: (with pkgs; [ glibc bashInteractive python3Full lutris gamescope wineWow64Packages.waylandFull flatpak ]); # symlink shared assets, including icons and desktop entries extraInstallCommands = '' ln -s "${pkgs.lutris}/share" "$out/" ''; runScript = "/usr/bin/lutris"; } ); }) ( final: prev: let pycharm-common = pkg: let myIsDerivation = x: !(myLib.derivations.isBroken x); interpreters = pkgs: filter (x: myIsDerivation x) (attrValues pkgs.pythonInterpreters); in prev.buildFHSUserEnv rec { name = pkg.pname; targetPkgs = pkgs: ( with pkgs; [ glibc bashInteractive zlib python3Full pkg ] ++ trace "Using the following interpreters: ${toString (pkgNames (interpreters pkgs))}" ( interpreters pkgs ) ); # symlink shared assets, including icons and desktop entries extraInstallCommands = '' ln -s "${pkg}/share" "$out/" ''; runScript = "/usr/bin/${pkg.pname}"; }; in { jetbrains = prev.jetbrains // { pycharm-community-fhs = pycharm-common prev.jetbrains.pycharm-community; pycharm-professional-fhs = pycharm-common prev.jetbrains.pycharm-professional; clion-fhs = let compilers = pkgs: with pkgs; with llvmPackages_17; [ (setPrio (-9) gcc13) (hiPrio clang) clang-unwrapped libcxx ]; in prev.buildFHSUserEnv rec { name = "clion"; targetPkgs = pkgs: ( with pkgs; [ jetbrains.clion (hiPrio cmake) (hiPrio ninja) gnumake extra-cmake-modules ] ++ trace "Using the following compilers: ${toString (pkgNames (compilers pkgs))}" (compilers pkgs) ); # symlink shared assets, including icons and desktop entries extraInstallCommands = '' ln -s "${prev.jetbrains.clion}/share" "$out/" ''; extraOutputsToInstall = [ "include" "dev" "doc" ]; runScript = "/usr/bin/clion"; }; }; } ) ]; aviallon.programs.allowUnfreeList = [ "unrar" "ark" ]; }; }