blob: 33a93bc86fa1e44f7f05d03bf4cee83b7a86604b [file] [log] [blame]
Felix Singerf9948a42021-02-01 13:46:50 +01001# SPDX-License-Identifier: GPL-2.0-only
2
3{ config, options, pkgs, ... }:
4
5{
6 imports = [
7 <nixpkgs/nixos/modules/installer/cd-dvd/channel.nix>
8 <nixpkgs/nixos/modules/installer/cd-dvd/iso-image.nix>
9 ];
10
Felix Singeracf10d62023-12-08 10:06:20 +010011 system.stateVersion = "23.11";
Felix Singerf9948a42021-02-01 13:46:50 +010012
13 isoImage = {
14 makeEfiBootable = true;
15 makeUsbBootable = true;
16 isoName = "${config.isoImage.isoBaseName}-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.iso";
17 };
18
Felix Singer7a474a52021-09-03 22:44:22 +020019 environment = {
20 variables = {
21 EDITOR = "nvim";
22 VISUAL = "nvim";
23 # Tell the Nix evaluator to garbage collect more aggressively.
24 # This is desirable in memory-constrained environments that don't
25 # (yet) have swap set up.
26 GC_INITIAL_HEAP_SIZE = "1M";
27 };
28 shellAliases.vim = "nvim";
29 };
Felix Singerf9948a42021-02-01 13:46:50 +010030
31 boot = {
Felix Singer46e109f2021-09-09 21:28:39 +020032 kernelParams = [
33 "console=ttyS0,115200"
34 "console=tty0"
35 "iomem=relaxed"
Felix Singer2282ed72023-10-16 23:38:52 +020036 "spi_intel.writeable=1"
Felix Singer46e109f2021-09-09 21:28:39 +020037 ];
Felix Singerf9948a42021-02-01 13:46:50 +010038 # pkgs.linuxPackages == lts
39 # pkgs.linuxPackages_latest == stable
40 kernelPackages = pkgs.linuxPackages;
41 extraModulePackages = with config.boot.kernelPackages; [
42 acpi_call
43 chipsec
44 zfs
45 ];
46 # Make programs more likely to work in low memory
47 # environments. The kernel's overcommit heustistics bite us
48 # fairly often, preventing processes from forking even if
49 # there is plenty of free memory.
50 kernel.sysctl."vm.overcommit_memory" = "1";
51 loader.grub.memtest86.enable = true;
52 postBootCommands = ''
53 mkdir -p /mnt
54 '';
55 };
56
57 console.packages = options.console.packages.default ++ [ pkgs.terminus_font ];
58
59 nixpkgs.config.allowUnfree = true;
60 hardware = {
61 cpu.intel.updateMicrocode = true;
62 cpu.amd.updateMicrocode = true;
63 enableAllFirmware = true;
64 bluetooth = {
65 enable = true;
66 powerOnBoot = false;
Felix Singerf9948a42021-02-01 13:46:50 +010067 };
68 };
69
70 services = {
71 fwupd.enable = true;
72 udev.packages = with pkgs; [
73 rfkill_udev
74 ];
75 openssh = {
76 enable = true;
Felix Singer2282ed72023-10-16 23:38:52 +020077 settings.PermitRootLogin = "yes";
Felix Singerf9948a42021-02-01 13:46:50 +010078 };
79 };
80
81 networking = {
82 hostName = "devsystem";
83 networkmanager.enable = true;
84 };
85
86 security.sudo.wheelNeedsPassword = false;
87
88 users = {
89 groups.user = {};
90 users = {
91 root.initialHashedPassword = "";
92 user = {
93 isNormalUser = true;
94 group = "user";
Felix Singer3a5e6f52022-02-19 17:15:31 +010095 extraGroups = [ "users" "wheel" "networkmanager" "uucp" "flashrom" ];
Felix Singerf9948a42021-02-01 13:46:50 +010096 initialHashedPassword = "";
97 };
98 };
99 };
100
Felix Singer3a5e6f52022-02-19 17:15:31 +0100101 programs.flashrom.enable = true;
102
Felix Singerf9948a42021-02-01 13:46:50 +0100103 environment.systemPackages = with pkgs; [
104 acpica-tools
105 btrfs-progs
106 bzip2
107 ccrypt
108 chipsec
109 coreboot-utils
110 cryptsetup
111 curl
112 ddrescue
Felix Singerdca85832022-07-27 02:03:20 +0200113 devmem2
Felix Singerf9948a42021-02-01 13:46:50 +0100114 dmidecode
115 dosfstools
116 e2fsprogs
117 efibootmgr
118 efivar
119 exfat
120 f2fs-tools
Felix Singerf9948a42021-02-01 13:46:50 +0100121 fuse
122 fuse3
123 fwts
124 gptfdisk
125 gitAndTools.gitFull
126 gitAndTools.tig
127 gzip
128 hdparm
129 hexdump
130 htop
131 i2c-tools
Felix Singerf9948a42021-02-01 13:46:50 +0100132 intel-gpu-tools
133 inxi
134 iotools
135 jfsutils
136 jq
137 mdadm
138 minicom
139 mkpasswd
140 ms-sys
141 msr-tools
Felix Singer9758ef92021-12-25 11:33:24 +0100142 mtdutils
Felix Singerf9948a42021-02-01 13:46:50 +0100143 neovim
144 nixos-install-tools
145 ntfsprogs
Felix Singerae90f2e2021-09-30 15:24:20 +0200146 nvme-cli
Felix Singerf9948a42021-02-01 13:46:50 +0100147 openssl
148 p7zip
149 pacman
150 parted
Felix Singerdca85832022-07-27 02:03:20 +0200151 pcimem
Felix Singerf9948a42021-02-01 13:46:50 +0100152 pciutils
153 phoronix-test-suite
154 powertop
155 psmisc
156 python3Full
157 rsync
158 screen
159 sdparm
160 smartmontools
161 socat
162 sshfs-fuse
163 testdisk
164 tmate
165 tmux
Felix Singer5e443222021-09-13 22:46:23 +0200166 uefitool
167 uefitoolPackages.old-engine
Felix Singerf9948a42021-02-01 13:46:50 +0100168 unzip
169 upterm
170 usbutils
171 wget
Felix Singerf9948a42021-02-01 13:46:50 +0100172 zfs
173 zip
174 zstd
175 ];
176}