me like nix
1{ pkgs, ... }:
2
3{
4
5 nix.settings.experimental-features = [
6 "nix-command"
7 "flakes"
8 ];
9 nix.settings.download-buffer-size = 268435456;
10
11 hardware.bluetooth.enable = true;
12 hardware.bluetooth.powerOnBoot = true;
13 services.blueman.enable = true;
14
15 # Bootloader.
16 boot.loader.systemd-boot.enable = true;
17 boot.loader.efi.canTouchEfiVariables = true;
18
19 services.fwupd.enable = true;
20 # Use latest kernel.
21 boot.kernelPackages = pkgs.linuxPackages_latest;
22
23 # Enable networking
24 networking.networkmanager.enable = true;
25
26 # Set your time zone.
27 # time.timeZone = "America/New_York";
28 time.timeZone = "America/Toronto";
29
30 # Select internationalisation properties.
31 i18n.defaultLocale = "en_US.UTF-8";
32
33 i18n.extraLocaleSettings = {
34 LC_ADDRESS = "en_US.UTF-8";
35 LC_IDENTIFICATION = "en_US.UTF-8";
36 LC_MEASUREMENT = "en_US.UTF-8";
37 LC_MONETARY = "en_US.UTF-8";
38 LC_NAME = "en_US.UTF-8";
39 LC_NUMERIC = "en_US.UTF-8";
40 LC_PAPER = "en_US.UTF-8";
41 LC_TELEPHONE = "en_US.UTF-8";
42 LC_TIME = "en_US.UTF-8";
43 };
44
45 programs.niri = {
46 enable = true;
47 };
48
49 services.greetd = {
50 enable = true;
51 settings = {
52 default_session = {
53 command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd niri-session";
54 user = "greeter";
55 };
56 };
57 };
58
59 # Enable CUPS to print documents.
60 services.printing.enable = true;
61
62 security.polkit.enable = true;
63 security.rtkit.enable = true;
64 services.pipewire = {
65 enable = true;
66 alsa.enable = true;
67 alsa.support32Bit = true;
68 pulse.enable = true;
69 # If you want to use JACK applications, uncomment this
70 #jack.enable = true;
71
72 # use the example session manager (no others are packaged yet so this is enabled by default,
73 # no need to redefine it in your config for now)
74 #media-session.enable = true;
75 };
76
77 services.udisks2.enable = true;
78 services.tailscale.enable = true;
79
80 # ZSA Keyboard udev rules for Oryx web flashing and live training
81 services.udev.extraRules = ''
82 # Rules for Oryx web flashing and live training
83 KERNEL=="hidraw*", ATTRS{idVendor}=="16c0", MODE="0664", GROUP="plugdev"
84 KERNEL=="hidraw*", ATTRS{idVendor}=="3297", MODE="0664", GROUP="plugdev"
85
86 # Legacy rules for live training over webusb (Not needed for firmware v21+)
87 # Rule for all ZSA keyboards
88 SUBSYSTEM=="usb", ATTR{idVendor}=="3297", GROUP="plugdev"
89 # Rule for the Moonlander
90 SUBSYSTEM=="usb", ATTR{idVendor}=="3297", ATTR{idProduct}=="1969", GROUP="plugdev"
91 # Rule for the Ergodox EZ
92 SUBSYSTEM=="usb", ATTR{idVendor}=="feed", ATTR{idProduct}=="1307", GROUP="plugdev"
93 # Rule for the Planck EZ
94 SUBSYSTEM=="usb", ATTR{idVendor}=="feed", ATTR{idProduct}=="6060", GROUP="plugdev"
95
96 # Wally Flashing rules for the Ergodox EZ
97 ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1"
98 ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1"
99 SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", MODE:="0666"
100 KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", MODE:="0666"
101
102 # Keymapp / Wally Flashing rules for the Moonlander and Planck EZ
103 SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666", SYMLINK+="stm32_dfu"
104 # Keymapp Flashing rules for the Voyager
105 SUBSYSTEMS=="usb", ATTRS{idVendor}=="3297", MODE:="0666", SYMLINK+="ignition_dfu"
106 # USB serial device access via Chrome/Chromium
107 KERNEL=="ttyUSB[0-9]*", MODE:="0666", GROUP="dialout"
108 KERNEL=="ttyACM[0-9]*", MODE:="0666", GROUP="dialout"
109 '';
110
111 # Define a user account. Don't forget to set a password with ‘passwd’.
112 users.groups.storage = { };
113 users.groups.plugdev = { };
114 users.users.sean = {
115 isNormalUser = true;
116 description = "Sean Aye";
117 extraGroups = [
118 "docker"
119 "networkmanager"
120 "wheel"
121 "video"
122 "disk"
123 "storage"
124 "input"
125 "plugdev"
126 "dialout"
127 ];
128 shell = pkgs.fish;
129 };
130
131 programs.fish.enable = true;
132 programs._1password.enable = true;
133 programs._1password-gui = {
134 enable = true;
135 polkitPolicyOwners = [ "sean" ];
136 };
137
138 virtualisation.docker.enable = true;
139
140 # Allow unfree packages
141 nixpkgs.config.allowUnfree = true;
142
143 # List packages installed in system profile. To search, run:
144 # $ nix search wget
145 environment.systemPackages = with pkgs; [
146 wl-clipboard
147 ];
148 environment.variables = {
149 EDITOR = "hx";
150 VISUAL = "hx";
151 SUDO_EDITOR = "hx";
152 };
153}