Core modules
A set of NixOS modules available at provision.core that provide defaults for:
- aliases (optionally enabled use sysadmin + nix shell aliases)
 - defaults (optionally set some sysctl + systemd global defaults)
 - fonts (optionally configure system fonts)
 - locales (optionally configure locale, keymaps, timeZone)
 - packages (optionally enabled a core set of tools to import)
 - shell (starship, zsh, direnv)
 
System
Defaults
Changes some system defaults of sysctl and systemd.
provision.core.defaults = {
  # it can be useful to bump inotify limits to when encountering `too many open files` in many places
  sysctl.bumpInotifyLimits = true;
  # multiplied by 128 to set limits in `fs.inotify.max_*` options
  sysctl.inotifyLimitsMultiple = 64;
  # Set a default timeout for systemd units globally
  systemd.defaultTimeoutSec = 30;
};
Module Options Reference for provision.core.defaults
Packages
Adds packages to environment.systemPackages.
Includes some default aliases that I find useful.
provision.core.packages = {
  # enabling imports the aliases into `environment.systemPackages`
  enable = true;
  # Add your own packages, these are merged with the upstream defaults
  packages = with pkgs; [
    tmux
    ripgrep
  ];
  # You can override all of the upstream defaults with
  # packages = lib.mkForce [ ];
};
Module Options Reference for provision.core.packages
Aliases
Adds shell aliases to environment.shellAliases.
Includes some default aliases that I find useful.
provision.core.aliases = {
  # enabling imports the aliases into `environment.shellAliases`
  enable = true;
  # Define your own aliases, these are merged with the upstream defaults
  aliases = {
    myalias = "ls -la";
    # you can override one of the default upstreams
    np = "nix shell nixos#";
    # or disable it
    n = null;
    nl = "";
  };
  # You can override all of the upstream defaults with
  # aliases = lib.mkForce { };
};
Module Options Reference for provision.core.aliases
Locale
Configures locale, timeZone, keymap
provision.core.locale = {
  enable = true;
  keyMap = "de";
  default = "de_DE.UTF-8";
  timeZone = "Europe/Berlin";
  # swap caps:escape in xkb.options
  swapEscape = true;
};
Module Options Reference for provision.core.locale
Fonts
Simple wrapper that adds packages to fonts.packages and sets fonts.defaultFonts names.
provision.core.fonts = {
  enable = true;
  name = "Hack";
  packages = [ pkgs.hack-font ];
};
Module Options Reference for provision.core.fonts
Shell
Add opinionated configurations of some basic shell utilities, currently:
- starship
 - zsh
 - direnv
 
provision.core.shell = {
  # enable all integrations
  enable = true;
  # or enable them on a per integration basic
  direnv.enable = true;
  starship.enable = true;
  zsh.enable = true;
};
Module Options Reference for provision.core.shell
Security
Some basic security related options enablement
- doas + extra rules
 - ssh (no openFirewall)
 - electron compatibility (chromium suid sandbox)
 - hardened kernel (enable + set)
 - user namespacing (enable)
 
provision.core.security = {
  # enable doas
  doas.enable = true;
  # add extra rules
  doas.extraRules = [
    {
      users = [ "myuser" ];
      noPass = true;
    }
  ];
  electron.enable = true;
  hardened = {
    enable = true;
    kernel = pkgs.linux_6_6_hardened;
  };
  namespacing.enable = true;
};
Module Options Reference for provision.core.security