mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-03-18 15:34:13 +01:00
87 lines
2.9 KiB
Nix
87 lines
2.9 KiB
Nix
{
|
||
lib,
|
||
pkgs,
|
||
...
|
||
}: {
|
||
###################################################################################
|
||
#
|
||
# NixOS's core configuration suitable for all my machines
|
||
#
|
||
###################################################################################
|
||
|
||
# to install chrome, you need to enable unfree packages
|
||
nixpkgs.config.allowUnfree = lib.mkForce true;
|
||
|
||
# for nix server, we do not need to keep too much generations
|
||
boot.loader.systemd-boot.configurationLimit = lib.mkDefault 10;
|
||
|
||
# do garbage collection weekly to keep disk usage low
|
||
nix.gc = {
|
||
automatic = lib.mkDefault true;
|
||
dates = lib.mkDefault "weekly";
|
||
options = lib.mkDefault "--delete-older-than 7d";
|
||
};
|
||
|
||
# Manual optimise storage: nix-store --optimise
|
||
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store
|
||
nix.settings.auto-optimise-store = true;
|
||
|
||
# Enable in-memory compressed devices and swap space provided by the zram kernel module.
|
||
# By enable this, we can store more data in memory instead of fallback to disk-based swap devices directly,
|
||
# and thus improve I/O performance when we have a lot of memory.
|
||
#
|
||
# https://www.kernel.org/doc/Documentation/blockdev/zram.txt
|
||
zramSwap = {
|
||
enable = true;
|
||
# one of "lzo", "lz4", "zstd"
|
||
algorithm = "zstd";
|
||
# Priority of the zram swap devices.
|
||
# It should be a number higher than the priority of your disk-based swap devices
|
||
# (so that the system will fill the zram swap devices before falling back to disk swap).
|
||
priority = 5;
|
||
# Maximum total amount of memory that can be stored in the zram swap devices (as a percentage of your total memory).
|
||
# Defaults to 1/2 of your total RAM. Run zramctl to check how good memory is compressed.
|
||
# This doesn’t define how much memory will be used by the zram swap devices.
|
||
memoryPercent = 50;
|
||
};
|
||
|
||
# for power management
|
||
services = {
|
||
power-profiles-daemon = {
|
||
enable = true;
|
||
};
|
||
upower.enable = true;
|
||
};
|
||
|
||
# List packages installed in system profile. To search, run:
|
||
# $ nix search wget
|
||
environment.systemPackages = with pkgs; [
|
||
parted
|
||
psmisc # killall/pstree/prtstat/fuser/...
|
||
neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||
wget
|
||
curl
|
||
aria2
|
||
git # used by nix flakes
|
||
git-lfs # used by huggingface models
|
||
|
||
# create a fhs environment by command `fhs`, so we can run non-nixos packages in nixos!
|
||
(
|
||
let
|
||
base = pkgs.appimageTools.defaultFhsEnvArgs;
|
||
in
|
||
pkgs.buildFHSUserEnv (base
|
||
// {
|
||
name = "fhs";
|
||
targetPkgs = pkgs: (base.targetPkgs pkgs) ++ [pkgs.pkg-config];
|
||
profile = "export FHS=1";
|
||
runScript = "bash";
|
||
extraOutputsToInstall = ["dev"];
|
||
})
|
||
)
|
||
];
|
||
|
||
# replace default editor with neovim
|
||
environment.variables.EDITOR = "nvim";
|
||
}
|