{ config, pkgs, lib, inputs, xdg, ... }: { # compress half of the ram to use as swap zramSwap = { enable = true; algorithm = "zstd"; }; # TODO Move? environment.variables = { EDITOR = "nvim"; BROWSER = "chromium"; }; environment.systemPackages = with pkgs; [ git clang llvmPackages_16.bintools # rust-bin.nightly.latest.default # support both 32- and 64-bit applications wineWowPackages.stable # winetricks (all versions) winetricks texlive.combined.scheme-small ]; virtualisation.virtualbox.host.enable = true; users.extraGroups.vboxusers.members = [ "muon" ]; # Set your time zone. time.timeZone = "Atlantic/Reykjavik"; # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; i18n.extraLocaleSettings = { LC_ADDRESS = "en_DK.UTF-8"; LC_IDENTIFICATION = "en_DK.UTF-8"; LC_MEASUREMENT = "en_DK.UTF-8"; LC_MONETARY = "en_DK.UTF-8"; LC_NAME = "en_DK.UTF-8"; LC_NUMERIC = "en_DK.UTF-8"; LC_PAPER = "en_DK.UTF-8"; LC_TELEPHONE = "en_DK.UTF-8"; LC_TIME = "en_DK.UTF-8"; }; # Configure keymap in X11 services.xserver = { layout = "us"; xkbVariant = ""; xkbOptions = "caps:escape"; }; # Use keymap in console console.useXkbConfig = true; programs.thunar.enable = true; services.gvfs.enable = true; # Mount, trash, and other functionalities services.tumbler.enable = true; # Thumbnail support for images # Sound sound = { enable = true; }; hardware.pulseaudio.enable = true; security.rtkit.enable = true; services.pipewire = { enable = false; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; virtualisation.docker.enable = true; services.syncthing = with config.users.users.muon; { enable = true; user = "muon"; dataDir = "${config.xdg.userDirs.documents}"; configDir = "${home}/.config/syncthing"; overrideDevices = true; overrideFolders = true; devices = { "syncthing" = { id = "SDFDQ4N-UPPGKQH-JWVII4O-FT4XTH3-FT2RPMZ-EQC57PQ-VXL7BBD-4LLPTA4"; }; }; folders = { "documents" = { path = "${home}/documents"; devices = ["syncthing"]; }; "librewolf" = { path = "${home}/.librewolf"; devices = ["syncthing"]; }; "logseq" = { path = "${home}/.logseq"; devices = ["syncthing"]; }; "zotero" = { path = "${home}/Zotero"; devices = ["syncthing"]; }; "zotero-conf" = { path = "${home}/.zotero"; devices = ["syncthing"]; }; }; }; programs.nix-ld = { enable = true; libraries = with pkgs; [ stdenv.cc.cc openssl curl glib util-linux glibc icu libunwind libuuid zlib libsecret # graphical freetype libglvnd libnotify SDL2 vulkan-loader gdk-pixbuf xorg.libX11 ]; }; systemd = let extraConfig = '' DefaultTimeoutStopSec=15s ''; in { inherit extraConfig; user = {inherit extraConfig;}; services."getty@tty1".enable = false; services."autovt@tty1".enable = false; services."getty@tty7".enable = false; services."autovt@tty7".enable = false; # Systemd OOMd # Fedora enables these options by default. See the 10-oomd-* files here: # https://src.fedoraproject.org/rpms/systemd/tree/acb90c49c42276b06375a66c73673ac3510255 oomd = { enableRootSlice = true; enableUserServices = true; }; }; services.udev.extraRules = '' # Atmel DFU ### ATmega16U2 SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2fef", TAG+="uaccess" ### ATmega32U2 SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess" ### ATmega16U4 SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uaccess" ### ATmega32U4 SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess" ### AT90USB64 SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess" ### AT90USB162 SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess" ### AT90USB128 SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess" # Input Club SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess" # STM32duino SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess" # STM32 DFU SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess" # BootloadHID SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess" # USBAspLoader SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess" # USBtinyISP SUBSYSTEMS=="usb", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="0c9f", TAG+="uaccess" # ModemManager should ignore the following devices # Atmel SAM-BA (Massdrop) SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" # Caterina (Pro Micro) ## pid.codes shared PID ### Keyboardio Atreus 2 Bootloader SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2302", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ## Spark Fun Electronics ### Pro Micro 3V3/8MHz SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ### Pro Micro 5V/16MHz SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ### LilyPad 3V3/8MHz (and some Pro Micro clones) SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ## Pololu Electronics ### A-Star 32U4 SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ## Arduino SA ### Leonardo SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ### Micro SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ## Adafruit Industries LLC ### Feather 32U4 SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000c", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ### ItsyBitsy 32U4 3V3/8MHz SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000d", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ### ItsyBitsy 32U4 5V/16MHz SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000e", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ## dog hunter AG ### Leonardo SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ### Micro SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" # hid_listen KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" # hid bootloaders ## QMK HID SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2067", TAG+="uaccess" ## PJRC's HalfKay SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0478", TAG+="uaccess" # APM32 DFU SUBSYSTEMS=="usb", ATTRS{idVendor}=="314b", ATTRS{idProduct}=="0106", TAG+="uaccess" # GD32V DFU SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", TAG+="uaccess" # WB32 DFU SUBSYSTEMS=="usb", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="dfa0", TAG+="uaccess" ''; }