{ config, nix-index-database, nixpkgs-unstable, nixpkgs, lib, pkgs, ... }: { imports = [ nix-index-database.nixosModules.nix-index ]; nix = { # https://nixos.wiki/wiki/Storage_optimization gc = { # Automatically run the nix garbage collector, removing files from # the store that are not referenced by any generation. # https://nixos.org/manual/nix/stable/package-management/garbage-collection automatic = true; dates = "weekly"; options = "--delete-older-than 7d"; }; settings = { # Automatically optimise the store after each build. Store optimisation # reduces nix store space by 25-35% by finding identical files and # hard-linking them to each other. # https://nixos.org/manual/nix/unstable/command-ref/nix-store/optimise.html auto-optimise-store = true; experimental-features = [ "nix-command" "flakes" ]; }; # The nix registry is used to refer to flakes using symbolic identifiers # when running commands such as `nix run nixpkgs#hello`. By default, # the global registry from [1] is used, which aliases `nixpkgs` to the # nixpkgs-unstable branch. We overwrite the default global `nixpkgs` # registry with one which refers to the same nixpkgs as the rest of # the system, aligning it with flake.lock. # [1] https://github.com/NixOS/flake-registry/blob/master/flake-registry.json registry = { nixpkgs.flake = nixpkgs; nixpkgs-unstable.flake = nixpkgs-unstable; }; }; # Enable all firmware with a license allowing redistribution hardware.enableRedistributableFirmware = true; environment.systemPackages = with pkgs; [ bat black clang curl dig fd file fzf gcc git gnumake htop inetutils jq magic-wormhole ntp progress pwgen python310 python311 python312 rsync sqlite tmux traceroute tree unzip wget wireguard-tools xkcdpass yq ]; # https://github.com/nix-community/comma programs.nix-index-database.comma.enable = true; programs.command-not-found.enable = false; i18n = { defaultLocale = "en_DK.UTF-8"; extraLocaleSettings = { LC_ADDRESS = "en_DK.UTF-8"; LC_IDENTIFICATION = "en_DK.UTF-8"; LC_MEASUREMENT = "en_DK.UTF-8"; LC_MONETARY = "en_DK.UTF-8"; LC_NAME = "en_DK.UTF-8"; LC_NUMERIC = "en_DK.UTF-8"; LC_PAPER = "en_DK.UTF-8"; LC_TELEPHONE = "en_DK.UTF-8"; LC_TIME = "en_DK.UTF-8"; }; supportedLocales = lib.mkOptionDefault [ "da_DK.UTF-8/UTF-8" ]; }; time = { timeZone = "Europe/Copenhagen"; }; }