puzzlevision/modules/nixos/system/nix/default.nix
Jo a6da14d4cf
Some checks failed
Trufflehog: check for exposed secrets / Run trufflehog (push) Has been cancelled
Nix: check for unused code / Run deadnix (push) Has been cancelled
Nix: validate flake.lock / Check Lockfile (push) Has been cancelled
Nix: validate flake / Validate x86_64-linux (push) Has been cancelled
️ Improve hardware support and performance through various modifications
2025-09-02 22:05:47 +02:00

70 lines
1.5 KiB
Nix

{
lib,
pkgs,
self,
config,
...
}:
let
inherit (lib) mkEnableOption mkIf types;
inherit (self) namespace;
inherit (self.lib) mkOpt;
cfg = config.${namespace}.system.nix;
in
{
options.${namespace}.system.nix = {
enable = mkEnableOption "Nix configuration overrides.";
use-lix = mkEnableOption "Lix as an alternative to CppNix.";
use-nixld = mkEnableOption "the use of dynamically linked executables on nix based systems.";
trusted-users = mkOpt (types.listOf types.str) [
"@wheel"
] "List of trusted users for this NixOS system.";
};
config = mkIf cfg.enable {
nix = {
optimise = {
automatic = true;
dates = [ "03:45" ];
};
settings = {
builders-use-substitutes = true;
experimental-features = [
"nix-command"
"flakes"
];
keep-derivations = true;
keep-outputs = true;
cores = 2;
max-jobs = 8;
warn-dirty = false;
trusted-users = cfg.trusted-users;
};
# Garbage collection configuration.
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 3d";
};
package = mkIf cfg.use-lix pkgs.lix; # Enable LIX
};
nixpkgs.config.allowUnfree = true;
# Dynamic libraries for unpackaged programs
programs.nix-ld = mkIf cfg.use-nixld {
enable = true;
libraries = with pkgs; [
glibc
libcxx
];
};
};
}