diff --git a/Laptop/configuration.nix b/Laptop/configuration.nix index 6449944..abccc97 100644 --- a/Laptop/configuration.nix +++ b/Laptop/configuration.nix @@ -4,24 +4,55 @@ { config, pkgs, ... }: +let + nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" '' + export __NV_PRIME_RENDER_OFFLOAD=1 + export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 + export __GLX_VENDOR_LIBRARY_NAME=nvidia + export __VK_LAYER_NV_optimus=NVIDIA_only + exec -a "$0" "$@" + ''; +in { imports = - [ # Include the results of the hardware scan. + [ + # Include the results of the hardware scan. ./hardware-configuration.nix ./software.nix ./modules/gnome.nix + # ./modules/i3.nix ./modules/zsh.nix + ./pipewire.nix ]; - nixpkgs.config = { - allowUnfree = true; - android_sdk.accept_license = true; - }; + nixpkgs.config = { + allowUnfree = true; + # allowBroken = true; + android_sdk.accept_license = true; + chromium.enableWideVine = true; + }; + + nixpkgs.overlays = [ + (self: super: + { + vscode-extensions = super.vscode-extensions // { + github.copilot = pkgs.vscode-utils.buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "github"; + name = "copilot"; + version = "1.30.6165"; + sha256 = "2Y4zQphaPzTjvOJ4EluaVNFksJ2/PL7UE5ceAW7da6Q="; + }; + }; + }; + } + ) + ]; + # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; - boot.extraModulePackages = [ config.boot.kernelPackages.wireguard ]; # Networking @@ -38,11 +69,32 @@ }; }; firewall = { - allowedTCPPorts = [ 1716 51820 24642 ]; - allowedUDPPorts = [ 1716 51820 24642 ]; + enable = false; + allowedTCPPorts = [ 3979 1716 51820 24642 ]; + allowedUDPPorts = [ 3979 1716 51820 24642 ]; + }; + hosts = { + "195.201.86.153" = [ "derpy" "server" ]; + "64.227.64.222" = [ "wireguard" ]; + "192.168.1.2" = [ "openhab" ]; + "188.126.61.194" = [ "home" ]; + }; + wireguard.interfaces = { + wg0 = { + ips = [ "10.100.0.2/24" ]; + privateKeyFile = "/home/inex/wireguard-keys/private"; + peers = [ + { + publicKey = "8sEAHYhydEGKTVecXcOb28zeGHGLGCsri5evbSQV8mY="; + allowedIPs = [ "10.100.0.0/24" ]; + endpoint = "135.181.97.221:51820"; + persistentKeepalive = 25; + } + ]; + }; }; }; - + # BLuetooth and audio sound.enable = true; @@ -52,13 +104,17 @@ package = pkgs.bluezFull; }; pulseaudio = { - enable = true; + enable = false; package = pkgs.pulseaudioFull; support32Bit = true; extraModules = [ pkgs.pulseaudio-modules-bt ]; }; + sane = { + enable = true; + brscan4.enable = true; + }; }; - + # Select internationalisation properties. # i18n = { # consoleFont = "Lat2-Terminus16"; @@ -72,12 +128,18 @@ # List services that you want to enable: # Enable CUPS to print documents. - services.printing.enable = true; + services.printing = { + enable = true; + drivers = [ pkgs.gutenprint ]; + }; + + services.flatpak.enable = true; # Enable the X11 windowing system. services.xserver = { enable = true; layout = "us"; + xkbVariant = "colemak"; videoDrivers = [ "nvidia" ]; libinput.enable = true; exportConfiguration = true; @@ -86,12 +148,11 @@ #displayManager.startx.enable = true; }; + boot.kernelParams = [ "modprobe.blacklist=dvb_usb_rtl28xxu" ]; + services.udev.packages = [ pkgs.rtl-sdr ]; + # Video driver - hardware = {/* - bumblebee = { - enable = true; - driver = "nouveau"; - };*/ + hardware = { opengl = { enable = true; driSupport32Bit = true; @@ -114,23 +175,41 @@ }; }; - virtualisation.docker.enable = true; + virtualisation = { + docker = { + enable = true; + enableOnBoot = false; + }; + }; - hardware.steam-hardware.enable = true; + hardware.steam-hardware.enable = true; # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.inex = { - isNormalUser = true; - home = "/home/inex"; - description = "Inex Code"; - extraGroups = [ "wheel" "networkmanager" "jackaudio" "audio" "video" "adbusers" "docker" ]; # Enable ‘sudo’ for the user. + users.users = { + inex = { + isNormalUser = true; + home = "/home/inex"; + description = "Inex Code"; + extraGroups = [ "wheel" "user-with-access-to-virtualbox" "networkmanager" "jackaudio" "audio" "video" "adbusers" "docker" "scanner" "lp" "plugdev" ]; # Enable ‘sudo’ for the user. + }; + }; # This value determines the NixOS release with which your system is to be # compatible, in order to avoid breaking some software such as database # servers. You should change this only after NixOS release notes say you # should. - system.stateVersion = "19.09"; # Did you read the comment?} + system.stateVersion = "22.05"; # Did you read the comment?} + + environment.shellInit = '' + export VST_PATH=/nix/var/nix/profiles/default/lib/vst:/var/run/current-system/sw/lib/vst:~/.vst + export LXVST_PATH=/nix/var/nix/profiles/default/lib/lxvst:/var/run/current-system/sw/lib/lxvst:~/.lxvst + export LADSPA_PATH=/nix/var/nix/profiles/default/lib/ladspa:/var/run/current-system/sw/lib/ladspa:~/.ladspa + export LV2_PATH=/nix/var/nix/profiles/default/lib/lv2:/var/run/current-system/sw/lib/lv2:~/.lv2 + export DSSI_PATH=/nix/var/nix/profiles/default/lib/dssi:/var/run/current-system/sw/lib/dssi:~/.dssi + export VST3_PATH=/nix/var/nix/profiles/default/lib/vst3:/var/run/current-system/sw/lib/vst3:~/.vst3 + ''; + } diff --git a/Laptop/modules/gnome.nix b/Laptop/modules/gnome.nix index 933ca28..471f91b 100644 --- a/Laptop/modules/gnome.nix +++ b/Laptop/modules/gnome.nix @@ -10,18 +10,17 @@ }; }; desktopManager = { - gnome3.enable = true; + gnome.enable = true; }; }; - + qt5.platformTheme = "gnome"; environment.systemPackages = with pkgs; [ - gnome3.pomodoro - gnome3.gnome-tweaks - gnome3.networkmanager-openvpn - gnome3.evolution + gnome.pomodoro + gnome.gnome-tweaks + evolution gnomeExtensions.gsconnect paper-icon-theme ]; diff --git a/Laptop/modules/vscode.nix b/Laptop/modules/vscode.nix new file mode 100644 index 0000000..d311d6e --- /dev/null +++ b/Laptop/modules/vscode.nix @@ -0,0 +1,96 @@ +{ config, pkgs, ... }: + +let + unstable = import { config.allowUnfree = true; }; + extensions = (with pkgs.vscode-extensions; [ + unstable.vscode-extensions.ms-vsliveshare.vsliveshare + arcticicestudio.nord-visual-studio-code + bbenoist.nix + davidanson.vscode-markdownlint + dbaeumer.vscode-eslint + jakebecker.elixir-ls + james-yu.latex-workshop + jnoortheen.nix-ide + mhutchie.git-graph + ms-azuretools.vscode-docker + ms-python.vscode-pylance + ms-python.python + ms-toolsai.jupyter + ms-vscode-remote.remote-ssh + ms-vscode.cpptools + github.copilot + ]) ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + { + name = "vscode-standardjs"; + publisher = "chenxsan"; + version = "1.4.1"; + sha256 = "0hiaqflp0d3k2pq3p44wrpyn4v6n0x660f4v47nf9bsdn5lidih3"; + } + { + name = "npm-intellisense"; + publisher = "christian-kohler"; + version = "1.4.1"; + sha256 = "0hph57g8fbwrvj1sdzc7vqsiaf7n2qzvkakc9ir0kkkwwdxc6c5a"; + } + { + name = "dart-code"; + publisher = "Dart-Code"; + version = "3.40.0"; + sha256 = "1cvibhazgz42zzwlk354sihrimw26qvgsq5nirvwx4v27gcirq81"; + } + { + name = "flutter"; + publisher = "Dart-Code"; + version = "3.40.0"; + sha256 = "0yxkqr6ajpdl06rxxad4c1zx5ci4sbaj2lk2xl9bws51imn58wry"; + } + { + name = "vscode-html-css"; + publisher = "ecmel"; + version = "1.12.2"; + sha256 = "059s1yg0b875b3ijhwgpg8v408as5z6r876jv5jing1vjb20pgvb"; + } + { + name = "vscode-npm-script"; + publisher = "eg2"; + version = "0.3.25"; + sha256 = "0z01i0fhl0phmz5bx5fh80flarldk7sdqgr14vx9kjz5yjzz48ys"; + } + { + name = "vsc-material-theme-icons"; + publisher = "equinusocio"; + version = "2.3.1"; + sha256 = "1djm4k3hcn4aq63d4mxs2n4ffq5x1qr82q6gxwi5pmabrb0hrb30"; + } + { + name = "vscode-systemd-support"; + publisher = "hangxingliu"; + version = "1.0.1"; + sha256 = "0f7j6y1jngicm475nilx08j55d94nnmymifxcbkszlxg0lnjrqys"; + } + { + name = "materialdesignicons-intellisense"; + publisher = "lukas-tr"; + version = "4.0.0"; + sha256 = "1748pj3jcgddpiamcs4ii2bjsmn9m9fx0dn2swfki8c6ibwrhy0w"; + } + { + name = "remote-containers"; + publisher = "ms-vscode-remote"; + version = "0.234.0"; + sha256 = "07mx08nwvw7jdlvkbr5iwikrcriib4zc1im1lbrqxjv7paj1an86"; + } + + ]; + vscode-with-extensions = pkgs.vscode-with-extensions.override { + vscodeExtensions = extensions; + }; + +in +{ + config = { + environment.systemPackages = [ + vscode-with-extensions + ]; + }; +} diff --git a/Laptop/pipewire.nix b/Laptop/pipewire.nix new file mode 100644 index 0000000..12381ea --- /dev/null +++ b/Laptop/pipewire.nix @@ -0,0 +1,94 @@ +{ + security.rtkit.enable = true; + services = { + pipewire = { + enable = true; + config.pipewire = { + "context.properties" = { + "link.max-buffers" = 16; + "log.level" = 2; + "default.clock.rate" = 48000; + "default.clock.quantum" = 512; + "default.clock.min-quantum" = 512; + "default.clock.max-quantum" = 512; + "core.daemon" = true; + "core.name" = "pipewire-0"; + }; + "context.modules" = [ + { + name = "libpipewire-module-rtkit"; + args = { + "nice.level" = -15; + "rt.prio" = 88; + "rt.time.soft" = 200000; + "rt.time.hard" = 200000; + }; + flags = [ "ifexists" "nofail" ]; + } + { name = "libpipewire-module-protocol-native"; } + { name = "libpipewire-module-profiler"; } + { name = "libpipewire-module-metadata"; } + { name = "libpipewire-module-spa-device-factory"; } + { name = "libpipewire-module-spa-node-factory"; } + { name = "libpipewire-module-client-node"; } + { name = "libpipewire-module-client-device"; } + { + name = "libpipewire-module-portal"; + flags = [ "ifexists" "nofail" ]; + } + { + name = "libpipewire-module-access"; + args = {}; + } + { name = "libpipewire-module-adapter"; } + { name = "libpipewire-module-link-factory"; } + { name = "libpipewire-module-session-manager"; } + ]; + }; + config.pipewire-pulse = { + "context.properties" = { + "log.level" = 2; + }; + "context.modules" = [ + { + name = "libpipewire-module-rtkit"; + args = { + "nice.level" = -15; + "rt.prio" = 88; + "rt.time.soft" = 200000; + "rt.time.hard" = 200000; + }; + flags = [ "ifexists" "nofail" ]; + } + { name = "libpipewire-module-protocol-native"; } + { name = "libpipewire-module-client-node"; } + { name = "libpipewire-module-adapter"; } + { name = "libpipewire-module-metadata"; } + { + name = "libpipewire-module-protocol-pulse"; + args = { + "pulse.min.req" = "512/48000"; + "pulse.default.req" = "512/48000"; + "pulse.max.req" = "512/48000"; + "pulse.min.quantum" = "512/48000"; + "pulse.max.quantum" = "512/48000"; + "server.address" = [ "unix:native" ]; + }; + } + ]; + "stream.properties" = { + "node.latency" = "512/48000"; + "resample.quality" = 1; + }; + }; + config.jack = { + "jack.properties" = { + "node.latency" = "512/48000"; + "node.lock-quantum" = true; + }; + }; + pulse.enable = true; + jack.enable = true; + }; + }; +} diff --git a/Laptop/software.nix b/Laptop/software.nix index 4c54024..3f73fea 100644 --- a/Laptop/software.nix +++ b/Laptop/software.nix @@ -1,29 +1,52 @@ { config, pkgs, ... }: let - unstable = import {}; -in { + unstable = import { config.allowUnfree = true; }; +in +{ environment.systemPackages = with pkgs; [ - # Utils - cool-retro-term - tmux - ponysay - (pkgs.callPackage ./modules/my_vim.nix {}) - neofetch + # Utils + (pkgs.callPackage ./modules/my_vim.nix { }) pciutils usbutils + i2c-tools bind - # openvpn - git - unzip - tldr - ffmpeg - wget nix-bundle + file + glxinfo + nmap + gparted + + # Archives + unzip + unrar + + appimage-run + + # Manuals + unstable.manix + tldr + + # Terminal + cool-retro-term + mosh + tmux + neofetch + ponysay + bpytop + httpie + htop + + # Voice + speechd + rhvoice + unstable.noisetorch + + xsane + # Wireguard - wireguard wireguard-tools nextcloud-client @@ -34,69 +57,102 @@ in { # Browsers firefox + ungoogled-chromium + + # Downloaders transmission-gtk - youtube-dl + yt-dlp + syncthing + wget # Messangers tdesktop - #discord mumble - #riot-desktop qtox dino - zoom-us - + gomuks + # Games steam - steam-run-native + steam-run unstable.openttd + minecraft lutris vulkan-tools wineWowPackages.full wineWowPackages.fonts - - # Development - vscode - ansible - octaveFull - texlive.combined.scheme-full - gcc-unwrapped - python3Full - # (import (builtins.fetchTarball "https://github.com/babariviere/nixpkgs/archive/flutter-init.tar.gz") {}).flutter - #android-studio - cmake - nodejs + xonotic + cataclysm-dda + # VCS + git + gitAndTools.git-bug + + # IDE + lens + postman + unstable.androidStudioPackages.canary + + # Compilers and interpretators ccls + cmake + gcc-unwrapped + octaveFull + python3Full + nodejs + nixpkgs-fmt + # Docker and orchestration + ansible + docker-compose + + # Maps josm - + # Screen recording obs-studio peek - + # Graphics + blender krita gmic_krita_qt potrace - + ffmpeg + inkscape + imagemagick + # Audio audacity + pulseeffects-pw # lmms picard cmus + spotify + rhythmbox + unstable.helvum + + vlc + syncplay + + # DAW + zrythm + distrho + helvum + zam-plugins + x42-plugins + helm + zyn-fusion + lsp-plugins + ardour - # Plugins - # ladspaPlugins - # lsp-plugins - # Documents anki libreoffice - homebank - trilium - klavaro liberation_ttf + obsidian + keepassxc + glow ]; -} +}