nixos-lib/packages.nix

77 lines
2 KiB
Nix

{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.aviallon.programs;
desktopCfg = config.aviallon.desktop;
generalCfg = config.aviallon.general;
optimizeWithFlag = pkg: flag:
pkg.overrideAttrs (attrs: {
NIX_CFLAGS_COMPILE = (attrs.NIX_CFLAGS_COMPILE or "") + " ${flag}";
doCheck = false;
});
optimizeWithFlags = pkg: flags: pkgs.lib.foldl' (pkg: flag: optimizeWithFlag pkg flag) pkg flags;
optimizeForThisHost = pkg: optimizeWithFlags pkg (builtins.trace "${toString config.aviallon.programs.compileFlags}" config.aviallon.programs.compileFlags);
in
{
imports = [
./programs/nano.nix
./programs/git.nix
./programs/htop.nix
];
options.aviallon.programs = {
enable = mkOption {
default = true;
example = false;
description = "Enable aviallon's programs";
type = types.bool;
};
compileFlags = mkOption {
default = [ "-O3" "-march=${generalCfg.cpuArch}" "-mtune=${generalCfg.cpuTune}" ];
example = [ "-O2" "-mavx" ];
description = "Add specific compile flags";
type = types.listOf types.str;
};
};
config = mkIf cfg.enable {
nixpkgs.config.packageOverrides = pkgs:
let
optimizePackage = optimizeForThisHost pkgs;
in {
nano = optimizeForThisHost pkgs.nano;
rsyncOptimized = optimizeForThisHost pkgs.rsync;
opensshOptimized = optimizeForThisHost pkgs.openssh;
nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
inherit pkgs;
};
};
environment.systemPackages = with pkgs; with libsForQt5; [
vim
wget
nano
opensshOptimized
rsyncOptimized
htop
cachix
];
programs.ssh.package = pkgs.opensshOptimized;
programs.ccache.enable = true;
programs.ccache.packageNames = [
# config.boot.kernelPackages.kernel
# "opensshOptimized"
# "rsyncOptimized"
];
nix.sandboxPaths = [
(toString config.programs.ccache.cacheDir)
];
};
}