{ 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"; }