the configuration for all my nixos machines (hacky! bad! ugly!)
1{pkgs, lib, config, ...}:{
2 imports = [
3 ./nix.nix
4 ./profiles/desktop
5 ./profiles/docs.nix
6 ./profiles/games.nix
7 ./profiles/laptop.nix
8 ./profiles/networking.nix
9 ./profiles/perftools.nix
10 ./profiles/zfs.nix
11 ];
12
13 console = {
14 font = "Lat2-Terminus16";
15 };
16 time.timeZone = "America/New_York";
17
18 i18n = let
19 locale = "en_US.UTF-8";
20 in {
21 defaultLocale = locale;
22 extraLocaleSettings = {
23 LC_ADDRESS = locale;
24 LC_IDENTIFICATION = locale;
25 LC_MEASUREMENT = locale;
26 LC_MONETARY = locale;
27 LC_NAME = locale;
28 LC_NUMERIC = locale;
29 LC_PAPER = locale;
30 LC_TELEPHONE = locale;
31 LC_TIME = locale;
32 };
33 };
34
35 environment = {
36 systemPackages = with pkgs; [
37 git
38 nano
39 # for lspci etc
40 pciutils
41 # for lsusb etc
42 usbutils
43 lshw
44 home-manager
45 lm_sensors
46 smartmontools
47 ];
48 pathsToLink = ["/share/zsh"];
49 };
50 programs = {
51 mtr.enable = true;
52 zsh.enable = true;
53 };
54
55 profiles = {
56 networking.enable = lib.mkDefault true;
57 };
58
59 users.users.joshua = {
60 subUidRanges = [ { startUid = 100000; count = 65536; } ];
61 subGidRanges = [ { startGid = 100000; count = 65536; } ];
62 isNormalUser = true;
63 description = "Joshua Barrett";
64 shell = pkgs.zsh;
65 extraGroups = [
66 "wheel"
67 "docker"
68 "podman"
69 "wireshark"
70 "kvm"
71 "adbusers"
72 "dialout"
73 ];
74 linger = true;
75 openssh.authorizedKeys.keys = [
76 # prospero
77 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHM0G+Ri6crg86mYVWWDHUiO+FX0GB0di9QkdNvE8SWF"
78 # mercury
79 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG3JS6Mf2PwfjZOAh3Cztmeu1CFzxond254jHAeLQ85O"
80 # uruk
81 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN4yxSed86xXJ3wuBwxX7HrAHrHSkFliBg7s4Nx53NFS"
82 ];
83 };
84
85 # Enable the Docker daemon.
86 virtualisation.docker = {
87 enable = true;
88 # Docker appears to select `devicemapper` by default, which is not cool.
89 storageDriver = if config.profiles.zfs.enable then "zfs" else "overlay2";
90 # Prune the docker registry weekly.
91 autoPrune.enable = true;
92 extraOptions = ''
93 --experimental
94 '';
95 };
96
97 virtualisation.oci-containers = {
98 backend = "docker";
99 };
100
101 security.pam.sshAgentAuth.enable = lib.mkDefault true;
102}