177 lines
4.2 KiB
Nix
177 lines
4.2 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
options,
|
|
inputs,
|
|
outputs,
|
|
...
|
|
} @ args: let
|
|
cfg = config.nixfiles.profile.base;
|
|
in {
|
|
options.nixfiles.profile.base = {
|
|
enable = lib.mkEnableOption "base config";
|
|
};
|
|
# TODO was gonna add something but i forgor and now i'm too lazy
|
|
# to delete this
|
|
config = lib.mkMerge [
|
|
(lib.mkIf cfg.enable {
|
|
nixfiles.common = {
|
|
# Enable my account
|
|
me.enable = lib.mkDefault true;
|
|
# Enable system Nix configuration
|
|
nix.enable = lib.mkDefault true;
|
|
# busybox low-priority install
|
|
busybox.enable = lib.mkDefault true;
|
|
};
|
|
|
|
# locale settings
|
|
i18n = {
|
|
defaultLocale = lib.mkDefault "en_US.utf8";
|
|
extraLocaleSettings = {
|
|
LC_ALL = lib.mkDefault config.i18n.defaultLocale;
|
|
LC_CTYPE = lib.mkDefault config.i18n.defaultLocale;
|
|
};
|
|
};
|
|
|
|
# Enable flakes
|
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
|
|
|
# Allow unfree packages
|
|
nixpkgs.config.allowUnfree = true;
|
|
|
|
# this allows non-NixOS binaries to run on NixOS.
|
|
programs.nix-ld = {
|
|
enable = true;
|
|
libraries = with pkgs; [
|
|
# don't know if i need this right now but i'm saving it for later
|
|
# libstdcxx5
|
|
];
|
|
};
|
|
|
|
# this is a FUSE filesystem which mirrors the calling process's PATH to
|
|
# /usr/bin and /bin
|
|
services.envfs.enable = lib.mkDefault true;
|
|
|
|
# List packages installed in system profile. To search, run:
|
|
# $ nix search wget
|
|
environment.systemPackages = with pkgs; let
|
|
neofetch-hyfetch-shim = writeShellScriptBin "neofetch" ''
|
|
exec "${hyfetch}/bin/neowofetch" "$@"
|
|
'';
|
|
in [
|
|
neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
tmux
|
|
wget
|
|
curl
|
|
git
|
|
git-lfs
|
|
stow
|
|
zsh
|
|
ntfs3g
|
|
openssh
|
|
sshfs
|
|
file
|
|
tree
|
|
moreutils
|
|
libarchive
|
|
|
|
fd
|
|
ripgrep
|
|
comma
|
|
nil
|
|
|
|
# UEFI utils
|
|
efitools
|
|
sbctl
|
|
sbsigntool
|
|
|
|
# network utilities
|
|
inetutils
|
|
socat
|
|
nmap
|
|
hping
|
|
dig
|
|
dig.dnsutils
|
|
|
|
# system utilities
|
|
htop
|
|
lshw
|
|
pciutils
|
|
usbutils
|
|
compsize
|
|
efibootmgr
|
|
ncdu
|
|
btdu
|
|
rmlint
|
|
|
|
# nix utilities
|
|
nix-du
|
|
graphviz # for nix-du
|
|
nvd
|
|
nix-diff
|
|
|
|
# secrets
|
|
age
|
|
pass
|
|
sops
|
|
|
|
# etc
|
|
hyfetch
|
|
neofetch-hyfetch-shim
|
|
atool-wrapped
|
|
restic
|
|
rclone
|
|
pv
|
|
|
|
# kitty compatibility on all systems
|
|
kitty.terminfo
|
|
|
|
# GPG
|
|
gnupg
|
|
pinentry-tty
|
|
];
|
|
|
|
# Needed for Kvantum themes to be detected
|
|
environment.pathsToLink = ["/share/Kvantum"];
|
|
|
|
# allow for more interactive authentication
|
|
security.polkit.enable = lib.mkDefault true;
|
|
|
|
programs.neovim = {
|
|
enable = lib.mkDefault true;
|
|
defaultEditor = lib.mkDefault true;
|
|
};
|
|
|
|
programs.ssh.enableAskPassword = lib.mkDefault false;
|
|
programs.fuse.userAllowOther = lib.mkDefault true;
|
|
|
|
programs.gnupg.agent = {
|
|
enable = lib.mkDefault true;
|
|
enableSSHSupport = lib.mkDefault false;
|
|
};
|
|
|
|
# initrd rescue password (can store plain hash since it is extremely
|
|
# unlikely to be brute forced)
|
|
boot.initrd.systemd.emergencyAccess = "$2b$15$jljA4yma8GrD2LmvhrlUkuXWBry/0jhMnXs1qB1y/byBGXKq74wMK";
|
|
|
|
boot.loader.systemd-boot.configurationLimit = lib.mkDefault 15;
|
|
|
|
# see:
|
|
# https://redd.it/vdz86j
|
|
# https://github.com/NixOS/nixpkgs/commit/15d761a525a025de0680b62e8ab79a9d183f313d
|
|
# https://discourse.nixos.org/t/why-does-multi-user-target-depend-on-network-online-target/33565
|
|
|
|
systemd.targets.network-online.wantedBy = lib.mkForce [];
|
|
|
|
# enable systemd OOM management
|
|
systemd.oomd = {
|
|
enable = lib.mkDefault true;
|
|
enableRootSlice = lib.mkDefault true;
|
|
enableUserSlices = lib.mkDefault true;
|
|
enableSystemSlice = lib.mkDefault true;
|
|
};
|
|
})
|
|
];
|
|
}
|