blob: aa70aa0989c1821741c1c944feb5cfc0d051cc8a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
{
config,
lib,
pkgs,
nixos-apple-silicon,
...
}:
{
imports = [
nixos-apple-silicon.nixosModules.apple-silicon-support
];
# boot settings
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = false;
plymouth.enable = true;
initrd.systemd.enable = true;
# expand display to notch region
kernelParams = [
"apple_dcp.show_notch=1"
];
# check nixos-apple-silicon documentation on this,
# if keyboard weirdness ever comes up.
# extraModprobeConfig = ''
# options hid_apple iso_layout=0
# '';
# show a nix logo on asahi m1n1 boot!
m1n1CustomLogo = ../../assets/nix-256x256.png;
};
# swap
zramSwap = {
enable = true;
algorithm = "zstd";
swapDevices = 1;
memoryPercent = 50;
};
# hardware
hardware = {
enableAllFirmware = true;
enableRedistributableFirmware = true;
graphics = {
enable = true;
enable32Bit = lib.mkForce false;
};
bluetooth.enable = true;
# asahi-specific settings!
asahi = {
enable = true;
# proprietary apple firmware extracted during installation.
# it can also be found in /boot/asahi, but needs to be
# included here for flake purity.
peripheralFirmwareDirectory = ../../assets/m1-firmware;
# mesa
useExperimentalGPUDriver = true;
experimentalGPUInstallMode = "replace"; # probably no longer used.
# sound
setupAsahiSound = true;
# kernel
withRust = true;
};
};
# internet/wifi
networking = {
networkmanager = {
enable = true;
wifi.backend = "iwd";
};
wireless.iwd = {
enable = true;
settings.General.EnableNetworkConfiguration = true;
};
};
# sound
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
jack.enable = true;
};
fileSystems =
let
options = [
"users" # any user can mount and unmount dao, implies 'noexec', 'nodev', 'nosuid'
"exec" # override 'users' 'noexec' default, executable files are nice!
"nofail" # it's okay if dao can't be found
"noatime" # do not update access timestamps (files+folders)
"x-gvfs-show" # show dao in (i.e.) nautilus
# btrfs options
"compress=zstd" # compress data with zstd, level 3
];
in
{
# disk with all my personal projects & life in general
"/mnt/Dao" = {
device = "/dev/disk/by-label/Dao";
fsType = "btrfs";
inherit options;
};
# disk with consultancy work-related things
"/mnt/Lao" = {
device = "/dev/disk/by-label/Lao";
fsType = "btrfs";
inherit options;
};
};
services.btrfs.autoScrub.enable = true;
}
|