2021-05-11 18:40:37 +00:00
|
|
|
{ self, config, lib, pkgs, ... }:
|
2020-01-04 05:06:31 +00:00
|
|
|
let inherit (lib) fileContents;
|
2020-07-31 04:17:28 +00:00
|
|
|
in
|
|
|
|
{
|
2021-12-29 22:42:51 +00:00
|
|
|
# Sets nrdxp.cachix.org binary cache which just speeds up some builds
|
2021-04-19 02:43:37 +00:00
|
|
|
imports = [ ../cachix ];
|
2019-12-05 05:36:36 +00:00
|
|
|
|
2021-12-29 22:42:51 +00:00
|
|
|
# For rage encryption, all hosts need a ssh key pair
|
|
|
|
services.openssh = {
|
|
|
|
enable = true;
|
|
|
|
openFirewall = lib.mkDefault false;
|
|
|
|
};
|
|
|
|
|
|
|
|
# This is just a representation of the nix default
|
2020-01-04 05:06:31 +00:00
|
|
|
nix.systemFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
|
2019-12-05 05:36:36 +00:00
|
|
|
|
|
|
|
environment = {
|
|
|
|
|
2021-12-29 22:42:51 +00:00
|
|
|
# Selection of sysadmin tools that can come in handy
|
2019-12-05 05:36:36 +00:00
|
|
|
systemPackages = with pkgs; [
|
|
|
|
binutils
|
|
|
|
coreutils
|
|
|
|
curl
|
2020-08-02 19:28:41 +00:00
|
|
|
direnv
|
2019-12-05 05:36:36 +00:00
|
|
|
dnsutils
|
2020-07-07 00:25:32 +00:00
|
|
|
dosfstools
|
2019-12-05 05:36:36 +00:00
|
|
|
fd
|
|
|
|
git
|
2021-06-30 14:50:07 +00:00
|
|
|
bottom
|
2019-12-17 04:13:33 +00:00
|
|
|
gptfdisk
|
2019-12-05 05:36:36 +00:00
|
|
|
iputils
|
2020-07-21 00:04:37 +00:00
|
|
|
jq
|
2020-12-16 21:48:40 +00:00
|
|
|
manix
|
2019-12-05 05:36:36 +00:00
|
|
|
moreutils
|
2021-02-15 05:17:24 +00:00
|
|
|
nix-index
|
2020-07-07 00:25:32 +00:00
|
|
|
nmap
|
2019-12-05 05:36:36 +00:00
|
|
|
ripgrep
|
2021-03-15 03:49:35 +00:00
|
|
|
skim
|
2021-02-03 05:46:12 +00:00
|
|
|
tealdeer
|
2021-04-09 03:03:38 +00:00
|
|
|
usbutils
|
2019-12-05 05:36:36 +00:00
|
|
|
utillinux
|
2020-07-07 00:25:32 +00:00
|
|
|
whois
|
2019-12-05 05:36:36 +00:00
|
|
|
];
|
|
|
|
|
2021-12-29 22:42:51 +00:00
|
|
|
# Starship is a fast and featureful shell prompt
|
|
|
|
# starship.toml has sane defaults that can be changed there
|
2020-07-27 04:24:28 +00:00
|
|
|
shellInit = ''
|
|
|
|
export STARSHIP_CONFIG=${
|
|
|
|
pkgs.writeText "starship.toml"
|
2020-08-02 20:50:05 +00:00
|
|
|
(fileContents ./starship.toml)
|
2020-07-27 04:24:28 +00:00
|
|
|
}
|
|
|
|
'';
|
|
|
|
|
2020-01-04 05:06:31 +00:00
|
|
|
shellAliases =
|
2020-07-31 04:13:41 +00:00
|
|
|
let ifSudo = lib.mkIf config.security.sudo.enable;
|
2020-07-31 04:17:28 +00:00
|
|
|
in
|
|
|
|
{
|
2019-12-05 05:36:36 +00:00
|
|
|
# quick cd
|
|
|
|
".." = "cd ..";
|
|
|
|
"..." = "cd ../..";
|
|
|
|
"...." = "cd ../../..";
|
|
|
|
"....." = "cd ../../../..";
|
|
|
|
|
2019-12-15 08:17:42 +00:00
|
|
|
# git
|
|
|
|
g = "git";
|
|
|
|
|
2019-12-15 04:37:46 +00:00
|
|
|
# grep
|
|
|
|
grep = "rg";
|
|
|
|
gi = "grep -i";
|
|
|
|
|
2019-12-05 05:36:36 +00:00
|
|
|
# internet ip
|
|
|
|
myip = "dig +short myip.opendns.com @208.67.222.222 2>&1";
|
|
|
|
|
2019-12-16 04:29:54 +00:00
|
|
|
# nix
|
2019-12-16 05:33:52 +00:00
|
|
|
n = "nix";
|
2019-12-16 22:37:31 +00:00
|
|
|
np = "n profile";
|
|
|
|
ni = "np install";
|
|
|
|
nr = "np remove";
|
2020-07-25 02:20:24 +00:00
|
|
|
ns = "n search --no-update-lock-file";
|
2020-08-02 04:12:15 +00:00
|
|
|
nf = "n flake";
|
2021-02-14 22:50:49 +00:00
|
|
|
nepl = "n repl '<nixpkgs>'";
|
2021-03-02 03:11:23 +00:00
|
|
|
srch = "ns nixos";
|
|
|
|
orch = "ns override";
|
2019-12-16 04:29:54 +00:00
|
|
|
nrb = ifSudo "sudo nixos-rebuild";
|
2020-12-16 21:48:40 +00:00
|
|
|
mn = ''
|
|
|
|
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix
|
|
|
|
'';
|
2019-12-16 04:29:54 +00:00
|
|
|
|
2021-01-19 07:51:23 +00:00
|
|
|
# fix nixos-option
|
2021-05-11 18:40:37 +00:00
|
|
|
nixos-option = "nixos-option -I nixpkgs=${self}/lib/compat";
|
2021-01-19 07:51:23 +00:00
|
|
|
|
2019-12-05 05:36:36 +00:00
|
|
|
# sudo
|
2019-12-19 18:57:49 +00:00
|
|
|
s = ifSudo "sudo -E ";
|
|
|
|
si = ifSudo "sudo -i";
|
2019-12-05 05:36:36 +00:00
|
|
|
se = ifSudo "sudoedit";
|
|
|
|
|
2019-12-26 07:17:44 +00:00
|
|
|
# top
|
2021-06-30 14:50:07 +00:00
|
|
|
top = "btm";
|
2019-12-26 07:17:44 +00:00
|
|
|
|
2019-12-05 05:36:36 +00:00
|
|
|
# systemd
|
|
|
|
ctl = "systemctl";
|
2019-12-19 18:57:49 +00:00
|
|
|
stl = ifSudo "s systemctl";
|
2019-12-05 05:36:36 +00:00
|
|
|
utl = "systemctl --user";
|
|
|
|
ut = "systemctl --user start";
|
|
|
|
un = "systemctl --user stop";
|
2019-12-19 18:57:49 +00:00
|
|
|
up = ifSudo "s systemctl start";
|
|
|
|
dn = ifSudo "s systemctl stop";
|
|
|
|
jtl = "journalctl";
|
2019-12-05 05:36:36 +00:00
|
|
|
|
2021-03-02 03:11:23 +00:00
|
|
|
};
|
2019-12-05 05:36:36 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
fonts = {
|
2020-01-04 05:06:31 +00:00
|
|
|
fonts = with pkgs; [ powerline-fonts dejavu_fonts ];
|
2019-12-05 05:36:36 +00:00
|
|
|
|
|
|
|
fontconfig.defaultFonts = {
|
|
|
|
|
|
|
|
monospace = [ "DejaVu Sans Mono for Powerline" ];
|
|
|
|
|
|
|
|
sansSerif = [ "DejaVu Sans" ];
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
nix = {
|
|
|
|
|
2021-12-29 22:42:51 +00:00
|
|
|
# Improve nix store disk usage
|
2019-12-05 05:36:36 +00:00
|
|
|
autoOptimiseStore = true;
|
|
|
|
gc.automatic = true;
|
|
|
|
optimise.automatic = true;
|
|
|
|
|
2021-12-29 22:42:51 +00:00
|
|
|
# Prevents impurities in builds
|
2019-12-05 05:36:36 +00:00
|
|
|
useSandbox = true;
|
|
|
|
|
2021-12-29 22:42:51 +00:00
|
|
|
# give root and @wheel special privileges with nix
|
2019-12-05 05:36:36 +00:00
|
|
|
trustedUsers = [ "root" "@wheel" ];
|
|
|
|
|
2021-12-29 22:42:51 +00:00
|
|
|
# Generally useful nix option defaults
|
2019-12-05 05:36:36 +00:00
|
|
|
extraOptions = ''
|
2020-07-16 21:16:27 +00:00
|
|
|
min-free = 536870912
|
2020-12-26 05:09:09 +00:00
|
|
|
keep-outputs = true
|
|
|
|
keep-derivations = true
|
2021-02-17 19:54:41 +00:00
|
|
|
fallback = true
|
2019-12-05 05:36:36 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
};
|
|
|
|
|
2020-08-02 19:28:41 +00:00
|
|
|
programs.bash = {
|
2021-12-29 22:42:51 +00:00
|
|
|
# Enable starship
|
2020-08-02 19:28:41 +00:00
|
|
|
promptInit = ''
|
|
|
|
eval "$(${pkgs.starship}/bin/starship init bash)"
|
|
|
|
'';
|
2021-12-29 22:42:51 +00:00
|
|
|
# Enable direnv, a tool for managing shell environments
|
2020-12-20 01:35:16 +00:00
|
|
|
interactiveShellInit = ''
|
2020-08-02 19:28:41 +00:00
|
|
|
eval "$(${pkgs.direnv}/bin/direnv hook bash)"
|
|
|
|
'';
|
|
|
|
};
|
2020-07-27 04:24:28 +00:00
|
|
|
|
2021-12-29 22:42:51 +00:00
|
|
|
# Service that makes Out of Memory Killer more effective
|
2019-12-05 05:36:36 +00:00
|
|
|
services.earlyoom.enable = true;
|
|
|
|
|
|
|
|
}
|