nix/modules/nixos/common.nix

258 lines
4.8 KiB
Nix
Raw Permalink Normal View History

2023-09-22 12:56:48 -05:00
{
2023-10-03 11:52:44 -05:00
config,
lib,
inputs,
2023-10-05 10:41:31 -05:00
colors,
2023-10-03 14:50:00 -05:00
# outputs,
2023-10-03 11:52:44 -05:00
system,
2023-10-06 01:11:27 -05:00
pkgs,
2023-10-03 11:52:44 -05:00
...
2023-10-06 01:11:27 -05:00
}: {
2024-01-02 18:54:46 -06:00
networking.hostName = lib.mkDefault "nixoslyte";
2023-10-03 14:50:00 -05:00
imports = [
inputs.home-manager.nixosModules.home-manager
];
hardware.enableRedistributableFirmware = true;
2023-09-06 01:20:43 -05:00
services.journald.extraConfig = "SystemMaxUse=1G";
2023-09-05 23:11:14 -05:00
environment = {
variables = {
EDITOR = "hx";
VISUAL = "hx";
PAGER = "less";
MANPAGER = "less";
};
2023-10-06 01:11:27 -05:00
systemPackages = with pkgs;
2023-10-03 13:18:12 -05:00
[
2024-01-02 18:54:46 -06:00
# age
# bat
# bc
# bind
# bottom
# btrfs-progs
# cue
2023-10-03 13:18:12 -05:00
curl
2024-01-02 18:54:46 -06:00
# dogdns
2023-10-03 13:18:12 -05:00
dua
2023-10-03 14:50:00 -05:00
eza
2023-10-03 13:18:12 -05:00
fd
file
2023-11-09 16:25:30 -06:00
fzf
2023-10-03 13:18:12 -05:00
gnumake
2024-01-02 18:54:46 -06:00
# gron
# hexyl
2023-10-03 13:18:12 -05:00
iputils
2024-01-02 18:54:46 -06:00
# jq
2023-10-03 13:18:12 -05:00
killall
less
mosh
2024-01-02 18:54:46 -06:00
# nmap
nettools
2023-10-03 13:18:12 -05:00
openssl
2024-01-02 18:54:46 -06:00
# pciutils
# pv
# rclone
# restic
2023-10-03 13:18:12 -05:00
ripgrep
rsync
2024-01-02 18:54:46 -06:00
# rtx
2023-10-03 13:18:12 -05:00
sd
2024-01-02 18:54:46 -06:00
# sops
2023-10-03 13:18:12 -05:00
smartmontools
2024-01-02 18:54:46 -06:00
# sqlite
# skim
# sysstat
2023-10-03 13:18:12 -05:00
unzip
2024-01-02 18:54:46 -06:00
# usbutils
# watchexec
2023-10-03 13:18:12 -05:00
wget
2024-01-02 18:54:46 -06:00
# xh
2023-10-03 13:18:12 -05:00
zellij
2024-01-02 18:54:46 -06:00
# zstd
2023-10-03 13:18:12 -05:00
]
2023-10-03 14:50:00 -05:00
++ (with inputs.home-manager.packages.${system}; [
home-manager
])
++ (with inputs.helix.packages.${system}; [
helix
2023-10-03 13:18:12 -05:00
]);
2023-09-05 23:11:14 -05:00
};
2023-10-18 09:14:19 -05:00
users.groups.daniel = {};
2023-09-05 22:39:17 -05:00
users.users = {
daniel = {
isNormalUser = true;
home = "/home/daniel/.home";
2023-12-04 09:15:37 -06:00
createHome = true;
2023-09-05 22:39:17 -05:00
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAPLXOjupz3ScYjgrF+ehrbp9OvGAWQLI6fplX6w9Ijb daniel@lyte.dev"
];
2023-09-06 00:57:08 -05:00
group = "daniel";
2023-10-27 21:46:38 -05:00
extraGroups = ["users" "wheel" "video" "dialout" "uucp"];
2023-10-03 11:52:44 -05:00
packages = [];
2023-09-05 22:39:17 -05:00
};
root = {
openssh.authorizedKeys.keys = config.users.users.daniel.openssh.authorizedKeys.keys;
};
};
i18n = {
defaultLocale = "en_US.UTF-8";
};
services = {
xserver = {
layout = "us";
xkbOptions = "ctrl:nocaps";
};
openssh = {
enable = true;
2023-09-05 23:11:14 -05:00
settings = {
PasswordAuthentication = false;
};
2023-10-05 10:41:31 -05:00
openFirewall = lib.mkDefault false;
2023-09-05 23:11:14 -05:00
# listenAddresses = [
# { addr = "0.0.0.0"; port = 22; }
# ];
};
tailscale = {
enable = true;
useRoutingFeatures = lib.mkDefault "client";
2023-09-05 22:39:17 -05:00
};
2023-09-05 23:51:32 -05:00
fwupd.enable = true;
smartd.enable = true;
2023-09-05 22:39:17 -05:00
};
console = {
font = "Lat2-Terminus16";
useXkbConfig = true;
earlySetup = true;
2023-10-05 10:41:31 -05:00
colors = with colors; [
bg
red
green
orange
blue
purple
yellow
fg3
fgdim
red
green
orange
blue
purple
yellow
fg
2023-09-19 20:56:24 -05:00
];
2023-09-05 22:39:17 -05:00
};
networking = {
useDHCP = lib.mkDefault true;
2023-09-05 23:11:14 -05:00
firewall = {
enable = lib.mkDefault true;
allowPing = lib.mkDefault true;
2023-10-05 10:41:31 -05:00
allowedTCPPorts = lib.mkDefault [];
2023-10-03 11:52:44 -05:00
allowedUDPPorts = lib.mkDefault [];
2023-09-05 23:11:14 -05:00
};
2023-10-10 14:29:31 -05:00
2024-01-02 18:54:46 -06:00
# TODO: podman equivalent?
2023-10-10 14:29:31 -05:00
extraHosts = ''
::1 host.docker.internal
127.0.0.1 host.docker.internal
'';
2023-09-05 22:39:17 -05:00
};
nix = {
settings = {
2023-10-03 11:52:44 -05:00
trusted-users = ["root" "daniel"];
experimental-features = lib.mkDefault ["nix-command" "flakes"];
2023-09-06 00:57:08 -05:00
substituters = [
"https://cache.nixos.org/"
2023-10-03 11:23:30 -05:00
"https://helix.cachix.org"
"https://nix-community.cachix.org"
"https://nix.h.lyte.dev"
2023-09-06 00:57:08 -05:00
];
trusted-public-keys = [
2023-10-03 11:23:30 -05:00
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs="
2023-09-06 00:57:08 -05:00
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
2023-10-03 11:23:30 -05:00
"h.lyte.dev:HeVWtne31ZG8iMf+c15VY3/Mky/4ufXlfTpT8+4Xbs0="
2023-09-06 00:57:08 -05:00
];
2023-09-05 22:39:17 -05:00
};
2023-10-08 02:46:37 -05:00
registry = {
self.flake = inputs.self;
nixpkgs = {
from = {
id = "nixpkgs";
type = "indirect";
};
2023-10-18 09:14:19 -05:00
flake = inputs.nixpkgs;
2023-10-08 02:46:37 -05:00
};
};
2023-09-05 22:39:17 -05:00
};
nixpkgs = {
config = {
allowUnfree = true;
};
hostPlatform = lib.mkDefault "x86_64-linux";
};
2023-09-05 23:51:32 -05:00
programs = {
fish = {
enable = true;
};
tmux = {
enable = true;
clock24 = true;
};
traceroute.enable = true;
git = {
enable = true;
2023-11-07 17:09:05 -06:00
package = pkgs.gitFull;
2023-09-05 23:51:32 -05:00
lfs = {
2023-09-05 22:39:17 -05:00
enable = true;
};
};
2023-09-28 12:29:21 -05:00
# https://github.com/nix-community/home-manager/issues/3113
dconf.enable = true;
2023-09-05 23:51:32 -05:00
};
2023-09-05 22:39:17 -05:00
time = {
timeZone = "America/Chicago";
};
users = {
defaultUserShell = pkgs.fish;
};
2023-10-27 21:46:38 -05:00
2024-01-02 18:54:46 -06:00
# TODO: should not be in common?
# services.udev.extraRules = ''
# # https://betaflight.com/docs/wiki/archive/Installing-Betaflight#step-1
# # ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", MODE="0664", GROUP="uucp"
# # ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="uucp"'
# '';
2023-09-05 22:39:17 -05:00
}