diff options
| author | Mel <einebeere@gmail.com> | 2024-10-14 22:15:32 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2024-10-14 22:15:32 +0200 |
| commit | 7bca7fb6cac0a3d6479ee8dd8fb5f13fa0261a51 (patch) | |
| tree | ced025aff19ffe1a9a040f3e8034a48a88285b3a | |
| download | minerals-7bca7fb6cac0a3d6479ee8dd8fb5f13fa0261a51.tar.zst minerals-7bca7fb6cac0a3d6479ee8dd8fb5f13fa0261a51.zip | |
Break up configuration for multiple machines
Signed-off-by: Mel <einebeere@gmail.com>
| -rw-r--r-- | config.nix | 4 | ||||
| -rw-r--r-- | configs/.vimrc | 60 | ||||
| -rw-r--r-- | flake.lock | 66 | ||||
| -rw-r--r-- | flake.nix | 49 | ||||
| -rw-r--r-- | home.nix | 42 | ||||
| -rw-r--r-- | machines/devices/grimoire.nix | 68 | ||||
| -rw-r--r-- | machines/grimoire.nix | 14 | ||||
| -rw-r--r-- | machines/hardware/grimoire.nix | 39 | ||||
| -rw-r--r-- | modules/common.nix | 90 | ||||
| -rw-r--r-- | modules/flatpak.nix | 12 | ||||
| -rw-r--r-- | modules/fonts.nix | 15 | ||||
| -rw-r--r-- | modules/gnome.nix | 64 | ||||
| -rw-r--r-- | modules/libreoffice.nix | 11 | ||||
| -rw-r--r-- | modules/locale.nix | 27 | ||||
| -rw-r--r-- | modules/nix-ld.nix | 59 | ||||
| -rw-r--r-- | modules/user.nix | 27 | ||||
| -rw-r--r-- | pkgs/default.nix | 11 | ||||
| -rw-r--r-- | pkgs/electron-wayland-wrappers.nix | 42 | ||||
| -rw-r--r-- | pkgs/ghidra/default.nix | 15 | ||||
| -rw-r--r-- | pkgs/ghidra/ui-scale.patch | 11 |
20 files changed, 726 insertions, 0 deletions
diff --git a/config.nix b/config.nix new file mode 100644 index 0000000..28cc9d1 --- /dev/null +++ b/config.nix @@ -0,0 +1,4 @@ +{ + allowUnfree = true; + input-fonts.acceptLicense = true; +} diff --git a/configs/.vimrc b/configs/.vimrc new file mode 100644 index 0000000..79ae89a --- /dev/null +++ b/configs/.vimrc @@ -0,0 +1,60 @@ +" NECESSITIES: + +" disable vi compatability, if still on for some reason +set nocompatible + +" enable syntax highlight +syntax on + +" indent settings +set autoindent +set smarttab +set smartindent +set expandtab +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 +set shiftround + +" disable text wrapping +set nowrap + +" allow backspace over everything, default is dumb +set backspace=indent,eol,start + +" never hide statusbar +set laststatus=2 + +" search settings +set incsearch +set hlsearch +set smartcase +set ignorecase +" map CTRL+L to remove search highlights +nnoremap <silent> <C-L> :noh<C-R><CR><CR><C-L> + +" open windows below and to the right of current (why is the default opposite lol) +set splitbelow splitright + +" show unfinished command in the last line (like 4dd) +set showcmd + +" show relative numbers and absolute number for current line +set number relativenumber + +" COLOR: + +" temporary default color scheme +colorscheme habamax + +" dont change default background color +highlight Normal ctermbg=NONE + +" CUSTOMIZATION: + +" disable arrow keys, use hjkl instead +noremap <Up> <Nop> +noremap <Down> <Nop> +noremap <Left> <Nop> +noremap <Right> <Nop> + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..a8e0775 --- /dev/null +++ b/flake.lock @@ -0,0 +1,66 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1726989464, + "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-24.05", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1728740863, + "narHash": "sha256-u+rxA79a0lyhG+u+oPBRtTDtzz8kvkc9a6SWSt9ekVc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a3f9ad65a0bf298ed5847629a57808b97e6e8077", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1728492678, + "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a37fc66 --- /dev/null +++ b/flake.nix @@ -0,0 +1,49 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; + + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + + home-manager = { + url = "github:nix-community/home-manager/release-24.05"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, home-manager }: + let + system = "x86_64-linux"; + + machines = [ + "grimoire" + "bismuth" + ]; + + packageSets = let + pkgsInputs = { inherit system; config = import ./config.nix; }; + in rec { + pkgs = import nixpkgs pkgsInputs; + unstablePkgs = import nixpkgs-unstable pkgsInputs; + auxiliaryPkgs = import ./pkgs { inherit pkgs unstablePkgs; }; + }; + + in { + nixosConfigurations = nixpkgs.lib.genAttrs machines + (machine: nixpkgs.lib.nixosSystem { + inherit system; + + specialArgs = inputs // packageSets; + + modules = [ + ./machines/${machine}.nix + + home-manager.nixosModules.home-manager { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.mel = import ./home.nix; + } + ]; + } + ); + }; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..f13eb88 --- /dev/null +++ b/home.nix @@ -0,0 +1,42 @@ +{ pkgs, ... }: + +{ + programs = { + git = { + enable = true; + userName = "Mel"; + userEmail = "einebeere@gmail.com"; + signing = { + key = "D75A C286 ACA7 00B4 D8EC 377D 2082 F8EC 11CC 009B"; + signByDefault = true; + }; + extraConfig.init.defaultBranch = "main"; + }; + + tmux = { + enable = true; + mouse = true; + keyMode = "vi"; + plugins = with pkgs.tmuxPlugins; [ + yank fpp open fuzzback + ]; + }; + + fish = { + enable = true; + interactiveShellInit = '' + set fish_greeting + ''; + }; + + zoxide = { enable = true; enableFishIntegration = true; }; + starship = { enable = true; enableFishIntegration = true; }; + direnv = { enable = true; }; + }; + + home.sessionPath = [ + "$HOME/.local/share/JetBrains/Toolbox/scripts" + ]; + + home.stateVersion = "24.05"; +} diff --git a/machines/devices/grimoire.nix b/machines/devices/grimoire.nix new file mode 100644 index 0000000..f8b7631 --- /dev/null +++ b/machines/devices/grimoire.nix @@ -0,0 +1,68 @@ +{ config, pkgs, ... }: + +{ + hardware = { + enableAllFirmware = true; + enableRedistributableFirmware = true; + }; + + # boot settings + boot = { + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + + plymouth.enable = true; + + initrd.systemd.enable = true; + }; + + # swap + swapDevices = [{ + device = "/var/swapfile"; + size = 8 * 1024; + }]; + + # internet + networking = { + networkmanager = { + enable = true; + # needed so that network chip wakes up after a longer suspend + # https://bbs.archlinux.org/viewtopic.php?id=270819 + wifi = { + powersave = false; + scanRandMacAddress = false; + }; + }; + }; + + # sound + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa = { enable = true; support32Bit = true; }; + pulse.enable = true; + jack.enable = true; + }; + + # bluetooth + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + + # printing + services.printing = { + enable = true; + stateless = true; + startWhenNeeded = true; + }; + + services.avahi.enable = false; + #services.avahi = { + # enable = true; + # nssmdns4 = true; + # openFirewall = true; + #}; +} diff --git a/machines/grimoire.nix b/machines/grimoire.nix new file mode 100644 index 0000000..4af614d --- /dev/null +++ b/machines/grimoire.nix @@ -0,0 +1,14 @@ +{ ... }: + +{ + imports = [ + ../modules/common.nix + + ./hardware/grimoire.nix + ./devices/grimoire.nix + ]; + + networking.hostName = "Grimoire"; + + system.stateVersion = "24.05"; +} diff --git a/machines/hardware/grimoire.nix b/machines/hardware/grimoire.nix new file mode 100644 index 0000000..c8fc7c6 --- /dev/null +++ b/machines/hardware/grimoire.nix @@ -0,0 +1,39 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/hardware/network/broadcom-43xx.nix") + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/e03c7434-31d7-474b-9c8b-45b044b1492c"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/67E3-17ED"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/modules/common.nix b/modules/common.nix new file mode 100644 index 0000000..447e3e9 --- /dev/null +++ b/modules/common.nix @@ -0,0 +1,90 @@ +{ config, pkgs, unstablePkgs, auxiliaryPkgs, ... }: + +{ + imports = [ + ./user.nix + ./locale.nix + ./gnome.nix + ./fonts.nix + ./flatpak.nix + ./libreoffice.nix + ./nix-ld.nix + ]; + + boot.kernelPackages = pkgs.linuxPackages_latest; + + nix.settings.experimental-features = [ "flakes" "nix-command" ]; + + services.envfs.enable = true; + virtualisation.libvirtd.enable = true; + + services = { + acpid.enable = true; + sysprof.enable = true; + tailscale = { + enable = true; + useRoutingFeatures = "both"; + extraUpFlags = [ "--ssh" ]; + }; + + # sometimes needed for gnupg + pcscd.enable = true; + }; + + programs = { + steam = { + enable = true; + remotePlay.openFirewall = true; + }; + virt-manager.enable = true; + vim = { + defaultEditor = true; + package = pkgs.vim_configurable.customize { + vimrcFile = ./configs/.vimrc; + }; + }; + fish.enable = true; + git.enable = true; + tmux.enable = true; + + adb.enable = true; + + gnupg.agent = { + enable = true; + enableSSHSupport = true; + pinentryPackage = pkgs.pinentry-gnome3; + }; + }; + + environment.systemPackages = (with pkgs; [ + file unzip jq dig htop wget gnupg pinentry-gnome3 + inetutils pciutils lshw inxi iw pmutils acpi acpid + sysprof wireshark hardinfo + vlc celluloid foliate calibre + yt-dlp ffmpeg_7-full handbrake subtitlecomposer mpv helvum + gimp krita aseprite blender inkscape obs-studio darktable + audacity musescore reaper bitwig-studio + lagrange + qemu_full virtiofsd + + openvpn openvpn3 update-resolv-conf + + xorg.xeyes wl-clipboard + + ripgrep gnumake gdb gcc clang + go gopls delve go-task + meson cmake + nil direnv + + wineWowPackages.stagingFull winetricks bottles + scrcpy apfs-fuse + + prismlauncher + ]) ++ (with unstablePkgs; [ + davinci-resolve + ]) ++ (with auxiliaryPkgs; [ + ghidra + ]); + + environment.etc.openvpn.source = "${pkgs.update-resolv-conf}/libexec/openvpn"; +} diff --git a/modules/flatpak.nix b/modules/flatpak.nix new file mode 100644 index 0000000..1751fcf --- /dev/null +++ b/modules/flatpak.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +{ + # Flatpak is used for some packages that don't work + # nicely on NixOS, like Handbrake. + services.flatpak.enable = true; + + environment.systemPackages = (with pkgs; [ + # Add GUI for Flatpak installation. + gnome.gnome-software + ]); +} diff --git a/modules/fonts.nix b/modules/fonts.nix new file mode 100644 index 0000000..b500b2e --- /dev/null +++ b/modules/fonts.nix @@ -0,0 +1,15 @@ +{ config, pkgs, ... }: + +{ + fonts = { + enableDefaultPackages = true; + + packages = with pkgs; [ + jetbrains-mono + meslo-lg + input-fonts + fira fira-math fira-code + corefonts vistafonts + ]; + }; +} diff --git a/modules/gnome.nix b/modules/gnome.nix new file mode 100644 index 0000000..7fde00d --- /dev/null +++ b/modules/gnome.nix @@ -0,0 +1,64 @@ +{ config, pkgs, ... }: + +{ + services.xserver.enable = true; + + # i dont like how the icon looks :) + services.xserver.excludePackages = [ pkgs.xterm ]; + + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + + environment.gnome.excludePackages = with pkgs; [ + gnome-console + ]; + + environment.systemPackages = (with pkgs.gnome; [ + gnome-terminal gnome-tweaks dconf-editor + ]) ++ (with pkgs.gnomeExtensions; [ + runcat vitals + ]); + + # legacy apps dark mode support + services.xserver.desktopManager.gnome.extraGSettingsOverrides = '' + # set dark theme for legacy applications + [org.gnome.desktop.interface] + gtk-theme="Adwaita" + + # minimize windows when middle-clicking on titlebar + [org.gnome.desktop.wm.preferences] + action-middle-click-titlebar="minimize" + ''; + + environment.etc = { + "xdg/gtk-2.0/gtkrc".text = '' + gtk-application-prefer-dark-theme = 1 + ''; + "xdg/gtk-3.0/settings.ini".text = '' + [Settings] + gtk-application-prefer-dark-theme = 1 + ''; + "xdg/gtk-4.0/settings.ini".text = '' + [Settings] + gtk-application-prefer-dark-theme = 1 + ''; + }; + + # enable triple buffering which makes mutter supposedly feel smoother + nixpkgs.overlays = [ + # GNOME 46: triple-buffering-v4-46 + (final: prev: { + gnome = prev.gnome.overrideScope (gnomeFinal: gnomePrev: { + mutter = gnomePrev.mutter.overrideAttrs (old: { + src = pkgs.fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "vanvugt"; + repo = "mutter"; + rev = "triple-buffering-v4-46"; + hash = "sha256-C2VfW3ThPEZ37YkX7ejlyumLnWa9oij333d5c4yfZxc="; + }; + }); + }); + }) + ]; +} diff --git a/modules/libreoffice.nix b/modules/libreoffice.nix new file mode 100644 index 0000000..8aad8e2 --- /dev/null +++ b/modules/libreoffice.nix @@ -0,0 +1,11 @@ +{ config, pkgs, ... }: + +{ + environment.systemPackages = (with pkgs; [ + libreoffice-fresh + + hunspell + ]) ++ (with pkgs.hunspellDicts; [ + en_US-large en_GB-large de_DE ru_RU + ]); +} diff --git a/modules/locale.nix b/modules/locale.nix new file mode 100644 index 0000000..2a4f45b --- /dev/null +++ b/modules/locale.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: + +{ + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "de_DE.UTF-8"; + LC_IDENTIFICATION = "de_DE.UTF-8"; + LC_MEASUREMENT = "de_DE.UTF-8"; + LC_MONETARY = "de_DE.UTF-8"; + LC_NAME = "de_DE.UTF-8"; + LC_NUMERIC = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TELEPHONE = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; +} diff --git a/modules/nix-ld.nix b/modules/nix-ld.nix new file mode 100644 index 0000000..2ab5df5 --- /dev/null +++ b/modules/nix-ld.nix @@ -0,0 +1,59 @@ +{ config, pkgs, ... }: + +{ + programs.nix-ld.enable = true; + + programs.nix-ld.libraries = with pkgs; [ + alsa-lib + at-spi2-atk + at-spi2-core + atk + cairo + cups + curl + dbus + expat + fontconfig + freetype + fuse3 + gdk-pixbuf + glib + gtk3 + icu + libGL + libappindicator-gtk3 + libdrm + libglvnd + libnotify + libpulseaudio + libunwind + libusb1 + libuuid + libxkbcommon + libxml2 + mesa + nspr + nss + openssl + pango + pipewire + stdenv.cc.cc + systemd + vulkan-loader + xorg.libX11 + xorg.libXScrnSaver + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrandr + xorg.libXrender + xorg.libXtst + xorg.libxcb + xorg.libxkbfile + xorg.libxshmfence + zlib + ]; +} diff --git a/modules/user.nix b/modules/user.nix new file mode 100644 index 0000000..624756b --- /dev/null +++ b/modules/user.nix @@ -0,0 +1,27 @@ +{ config, pkgs, unstablePkgs, auxiliaryPkgs, ... }: + +{ + users.mutableUsers = false; + users.users.mel = { + isNormalUser = true; + description = "Mel"; + shell = pkgs.fish; + extraGroups = [ "networkmanager" "wheel" ]; + hashedPassword = "$y$j9T$4wGl.YJizIpcfFv0LyvLU0$7LLEkjIFWBOV.XXynReCOczBYNX0EZfMPIDB/bmmhhC"; + + packages = (with pkgs; [ + firefox + thunderbird + tor-browser + transmission_4-gtk + jetbrains-toolbox + ]) ++ (with unstablePkgs; [ + godot_4 + ]) ++ (with auxiliaryPkgs; [ + discord + element-desktop + obsidian + vscode + ]); + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix new file mode 100644 index 0000000..5f87431 --- /dev/null +++ b/pkgs/default.nix @@ -0,0 +1,11 @@ +{ pkgs, unstablePkgs, ... }: + +rec { + inherit (pkgs.callPackages ./electron-wayland-wrappers.nix {}) + discord + obsidian + vscode + element-desktop; + + ghidra = unstablePkgs.callPackage ./ghidra {}; +} diff --git a/pkgs/electron-wayland-wrappers.nix b/pkgs/electron-wayland-wrappers.nix new file mode 100644 index 0000000..b83f258 --- /dev/null +++ b/pkgs/electron-wayland-wrappers.nix @@ -0,0 +1,42 @@ +{ + symlinkJoin, makeWrapper, + + discord, obsidian, vscode, element-desktop +}: + +let + goodFlags = '' + --ozone-platform=wayland \ + --force-device-scale=2 \ + --enable-features=UseOzonePlatform,WaylandWindowDecorations \ + --disable-features=WaylandFractionalScaleV1 + ''; + + badFlags = '' + --ozone-platform=x11 \ + --no-sandbox + ''; + + makeElectronWrapper = { + name, + binary ? name, + package, + bad ? false + }: let + flags = if bad then badFlags else goodFlags; + in symlinkJoin { + name = name; + paths = [ package ]; + buildInputs = [ makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/${binary} \ + --add-flags "${flags}" + ''; + }; +in +{ + discord = makeElectronWrapper { name = "Discord"; package = discord; bad = true; }; + obsidian = makeElectronWrapper { name = "obsidian"; package = obsidian; }; + vscode = makeElectronWrapper { name = "vscode"; binary = "code"; package = vscode.fhs; }; + element-desktop = makeElectronWrapper { name = "element-desktop"; package = element-desktop; }; +} diff --git a/pkgs/ghidra/default.nix b/pkgs/ghidra/default.nix new file mode 100644 index 0000000..79e61e5 --- /dev/null +++ b/pkgs/ghidra/default.nix @@ -0,0 +1,15 @@ +{ ghidra }: + +let + ghidra-patched = ghidra.overrideAttrs (finalAttrs: previousAttrs: { + patches = previousAttrs.patches ++ [ ./ui-scale.patch ]; + }); +in +ghidra-patched.withExtensions (extensions: with extensions; [ + gnudisassembler + machinelearning + ghidraninja-ghidra-scripts + lightkeeper + ret-sync + ghidra-delinker-extension +]) diff --git a/pkgs/ghidra/ui-scale.patch b/pkgs/ghidra/ui-scale.patch new file mode 100644 index 0000000..6ebac8d --- /dev/null +++ b/pkgs/ghidra/ui-scale.patch @@ -0,0 +1,11 @@ +--- a/Ghidra/RuntimeScripts/Common/support/launch.properties ++++ b/Ghidra/RuntimeScripts/Common/support/launch.properties +@@ -20,7 +20,7 @@ + VMARGS=-Dsun.java2d.opengl=false + VMARGS_LINUX=-Dsun.java2d.pmoffscreen=false + VMARGS_LINUX=-Dsun.java2d.xrender=true +-VMARGS_LINUX=-Dsun.java2d.uiScale=1 ++VMARGS_LINUX=-Dsun.java2d.uiScale=2 + VMARGS_LINUX=-Dawt.useSystemAAFontSettings=on + VMARGS_WINDOWS=-Dsun.java2d.d3d=false + |
