diff --git a/.gitignore b/.gitignore index 9240914..664a1e1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,2 @@ -/.idea/inspectionProfiles/profiles_settings.xml -/.idea/.gitignore -/.idea/modules.xml -/.idea/nixos.iml -/.idea/vcs.xml +/.idea +flake.lock \ No newline at end of file diff --git a/flake.lock b/flake.lock index 09d6f23..cb18004 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1722462338, - "narHash": "sha256-ss0G8t8RJVDewA3MyqgAlV951cWRK6EtVhVKEZ7J5LU=", + "lastModified": 1750798083, + "narHash": "sha256-DTCCcp6WCFaYXWKFRA6fiI2zlvOLCf5Vwx8+/0R8Wc4=", "owner": "nix-community", "repo": "home-manager", - "rev": "6e090576c4824b16e8759ebca3958c5b09659ee8", + "rev": "ff31a4677c1a8ae506aa7e003a3dba08cb203f82", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1722421184, - "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=", + "lastModified": 1750741721, + "narHash": "sha256-Z0djmTa1YmnGMfE9jEe05oO4zggjDmxOGKwt844bUhE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58", + "rev": "4b1164c3215f018c4442463a27689d973cffd750", "type": "github" }, "original": { diff --git a/hosts/cap-nr200p/configuration.nix b/hosts/cap-nr200p/configuration.nix index f2bd57d..06a86d0 100644 --- a/hosts/cap-nr200p/configuration.nix +++ b/hosts/cap-nr200p/configuration.nix @@ -1,8 +1,8 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). +# Edit this configuration file to define what should be installed on your system. +# Help is available in the configuration.nix(5) man page and in the NixOS manual +# (accessible by running ‘nixos-help’). -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: { imports = [ @@ -10,6 +10,32 @@ ./hardware-configuration.nix ]; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + + boot = { + # Make v4l2loopback kernel module available to NixOS. + extraModulePackages = with config.boot.kernelPackages; [ + v4l2loopback + ]; + # Activate kernel module(s). + kernelModules = [ + # Virtual camera. + "v4l2loopback" + # Virtual Microphone. Custom DroidCam v4l2loopback driver needed for audio. + # "snd-aloop" + ]; + }; + + boot.extraModprobeConfig = '' + # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming + # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams + # https://github.com/umlaeute/v4l2loopback + options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" + ''; + + # + nix.settings.download-buffer-size = 524288000; + # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; @@ -24,6 +50,10 @@ # Enable networking networking.networkmanager.enable = true; + # hardware.u2f.enable = true; + + services.flatpak.enable = true; + # Enable flakes nix.settings.experimental-features = [ "nix-command" @@ -64,8 +94,16 @@ # Enable CUPS to print documents. services.printing.enable = true; + services.avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + + hardware.xone.enable = true; + # Enable sound with pipewire. - hardware.pulseaudio.enable = false; + services.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; @@ -91,11 +129,36 @@ "networkmanager" "wheel" "input" + "dialout" + "plugdev" + "adbusers" ]; packages = with pkgs; [ # thunderbird ]; }; +# users.users.crestline = { +# isNormalUser = true; +# description = "Crestline"; +# extraGroups = [ +# "networkmanager" +# "wheel" +# "input" +# "dialout" +# ]; +# packages = with pkgs; [ +# # thunderbird +# ]; + + # }; + + + #services.displayManager.autoLogin = { + # enable = true; + # user = "crestline"; + #}; + + #services.xserver.displayManager.gdm.autoLogin.delay = 60; # Install firefox. programs.firefox.enable = true; # -# @@ -122,6 +185,8 @@ telegram-desktop discord # spotify + vscode-with-extensions + swayimg pavucontrol networkmanagerapplet pasystray @@ -135,18 +200,138 @@ playerctl google-chrome killall - jetbrains.pycharm-professional + #jetbrains.pycharm-professional wget jq rofi-bluetooth wl-clipboard networkmanager - alsaUtils + alsa-utils nixfmt-rfc-style mako podman + kicad + obsidian + speedcrunch + deadbeef + vlc + sox + audacity + platformio + + # flatcam + pcb2gcode + jetbrains-toolbox + arduino-ide + # python311Full + gcc + stm32cubemx + stm32flash + easyeffects + ncspot + #yubikey-personalization-gui + #yubikey-manager-qt + #zoom-us + mangohud + distrobox + # plex-desktop + rpi-imager + rpiboot + imagemagick + prusa-slicer + freecad + wlogout + gparted + nix-update + ffmpeg-full + projectm_3 + heroic + flameshot + krename + xfce.mousepad + yt-dlp + soapysdr + soapyrtlsdr + # sdrpp + # brave + python3 + #nodejs_23 + streamdeck-ui + scrcpy + kanshi + #wsmancli + #realvnc-vnc-viewer + ncdu + hyprlock + openrgb-with-all-plugins + swayidle + transmission_4-qt + nixos-generators + openwsman + wsmancli + bs-manager ]; + services.monado = { + enable = true; + defaultRuntime = true; + highPriority = true; + }; + + services.hardware.openrgb.enable = true; + + services.meshcentral.enable = true; + programs.ydotool.enable = true; + programs.adb.enable = true; + + hardware.logitech.wireless.enable = true; + hardware.logitech.wireless.enableGraphical = true; + + services.sunshine = { + enable = true; + autoStart = true; + capSysAdmin = true; + openFirewall = true; + + }; + + programs.bash.shellAliases = { + nixrebuild = "cd /etc/nixos && sudo nixos-rebuild switch --flake .#default"; + nixupdate = "cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --flake .#default"; + nixedit = "sudo nano /etc/nixos/hosts/cap-nr200p/configuration.nix"; + scrwebcam = "sudo pkill scrcpy ; sudo modprobe -r v4l2loopback ; sudo modprobe v4l2loopback && nohup scrcpy --camera-facing=back --video-source=camera --v4l2-sink=/dev/video0 --no-window --no-audio-playback 2>&1 1>/dev/null"; + }; + + + virtualisation.waydroid.enable = true; + hardware.steam-hardware.enable = true; + + virtualisation.podman = { + enable = true; + dockerCompat = true; + }; + + services.udev.extraRules = '' + # ST-LINK V2 + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2_%n" + + # ST-LINK V2.1 + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2-1_%n" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2-1_%n" + + # ST-LINK V3 + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374d", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3loader_%n" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" + + # CP2101 - CP 2104 + SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE="600", TAG+="uaccess", SYMLINK+="usb2ser_%n" + + # ATEN UC-232A + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0557", ATTRS{idProduct}=="2008", MODE="600", TAG+="uaccess", SYMLINK+="usb2ser_aten_%n" + ''; + fonts.fontDir.enable = true; fonts.fontconfig.enable = true; fonts.fontconfig.antialias = true; @@ -161,7 +346,8 @@ dina-font proggyfonts font-awesome - nerdfonts + nerd-fonts.symbols-only + nerd-fonts.jetbrains-mono ]; programs.thunar.enable = true; @@ -176,6 +362,9 @@ hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot services.blueman.enable = true; + + hardware.rtl-sdr.enable = true; + security.sudo = { enable = true; extraRules = [ @@ -202,6 +391,13 @@ gamescopeSession.enable = true; }; + programs.gamescope = { + enable = true; + capSysNice = true; + }; + + + # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; diff --git a/modules/nixos/hyprland.nix b/modules/nixos/hyprland.nix index d908a23..8237e1f 100644 --- a/modules/nixos/hyprland.nix +++ b/modules/nixos/hyprland.nix @@ -20,21 +20,23 @@ WLR_NO_HARDWARE_CURSORS = "1"; # Hint electron apps to use wayland NIXOS_OZONE_WL = "1"; + # Fix waiting on vsync + __GL_SYNC_TO_VBLANK = "0"; }; services.xserver = { enable = true; videoDrivers = [ "nvidia" ]; - displayManager.gdm = { + }; + services.displayManager.gdm = { enable = true; wayland = true; - }; }; - services.displayManager.autoLogin = { - enable = true; - user = "caperren"; - }; +# services.displayManager.autoLogin = { +# enable = true; +# user = "caperren"; +# }; hardware.graphics = { enable = true; @@ -45,7 +47,8 @@ # Enable modesetting for Wayland compositors (hyprland) modesetting.enable = true; # Use the open source version of the kernel module (for driver 515.43.04+) - # open = true; + # Actually, just overridden to false for now + open = false; # Enable the Nvidia settings menu nvidiaSettings = true; # Select the appropriate driver version for your specific GPU