diff --git a/configuration/base.nix b/configuration/base.nix deleted file mode 100644 index 5efebfc..0000000 --- a/configuration/base.nix +++ /dev/null @@ -1,167 +0,0 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page, on -# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). - -{ pkgs, ... }: - -{ - imports = - [ - ./base/nix-settings.nix - ./base/fonts.nix - ./base/kde.nix - ]; - - # Use the systemd-boot EFI boot loader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - boot.kernelPackages = pkgs.linuxPackages_latest; - - swapDevices = [{ - device = "/var/lib/swapfile"; - size = 16 * 1024; - }]; - - hardware.bluetooth.enable = true; - hardware.enableRedistributableFirmware = true; - hardware.enableAllFirmware = true; - - # networking.hostName = "nixos"; # Define your hostname. - # Pick only one of the below networking options. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - networking.networkmanager = { - # Easiest to use and most distros use this by default. - enable = true; - wifi.powersave = false; - }; - - # Set your time zone. - time.timeZone = "Europe/London"; - - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - # Enable CUPS to print documents. - # services.printing.enable = true; - - # Enable sound. - # hardware.pulseaudio.enable = true; - # OR - services.pipewire = { - enable = true; - pulse.enable = true; - extraConfig.pipewire-pulse = { - "10-prevent-agc" = { - "pulse.rules" = [ - { - matches = [ - { "application.process.binary" = "chrome"; } - { "application.process.binary" = "Discord"; } - { "application.process.binary" = "teams"; } - { "application.process.binary" = "electron"; } - { "application.process.binary" = "skypeforlinux"; } - { "application.process.binary" = "telegram-desktop"; } - { "application.process.binary" = "vivaldi"; } - { "application.process.binary" = "chromium"; } - { "application.process.binary" = "zoom"; } - ]; - actions = { - quirks = [ - "block-source-volume" - ]; - }; - } - ]; - }; - }; - }; - - services.fstrim.enable = true; - # services.resolved.enable = true; - services.mullvad-vpn = { - enable = true; - package = pkgs.mullvad-vpn; - }; - - services.fwupd.enable = true; - services.geoclue2 = { - enable = true; - geoProviderUrl = "https://api.beacondb.net/v1/geolocate"; - }; - services.flatpak.enable = true; - - programs.bash.blesh.enable = true; - programs.fish.enable = true; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; - [ - # utils - uutils-coreutils-noprefix - vim - curl - inetutils - rar - libva-utils - smartmontools - appimage-run - - # dicts - nuspell - hunspellDicts.en-gb-large - - # For cursor in steam? - xsettingsd - xorg.xrdb - ]; - - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - # programs.gnupg.agent = { - # enable = true; - # enableSSHSupport = true; - # }; - - # List services that you want to enable: - - # Enable the OpenSSH daemon. - # services.openssh.enable = true; - - # Open ports in the firewall. - # 443 Helldivers crashes internet otherwise - # networking.firewall.allowedTCPPorts = [ 443 ]; - # networking.firewall.allowedUDPPorts = [ 443 ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - # Block list - # networking.stevenblack.enable = true; - - # Copy the NixOS configuration file and link it from the resulting system - # (/run/current-system/configuration.nix). This is useful in case you - # accidentally delete configuration.nix. - # system.copySystemConfiguration = true; - - # This option defines the first version of NixOS you have installed on this particular machine, - # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. - # - # Most users should NEVER change this value after the initial install, for any reason, - # even if you've upgraded your system to a new NixOS release. - # - # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, - # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how - # to actually do that. - # - # This value being lower than the current NixOS release does NOT mean your system is - # out of date, out of support, or vulnerable. - # - # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, - # and migrated your data accordingly. - # - # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . - system.stateVersion = "24.05"; # Did you read the comment? - -} diff --git a/configuration/base/default.nix b/configuration/base/default.nix new file mode 100644 index 0000000..a86057f --- /dev/null +++ b/configuration/base/default.nix @@ -0,0 +1,13 @@ +{ ... }: + +{ + imports = [ + ./fonts.nix + ./kde.nix + ./location-time.nix + ./networking.nix + ./nix-settings.nix + ./pipewire.nix + ./programs.nix + ]; +} diff --git a/configuration/base/kde.nix b/configuration/base/kde.nix index 23e3fea..6d1e1ce 100644 --- a/configuration/base/kde.nix +++ b/configuration/base/kde.nix @@ -27,15 +27,20 @@ in }; }; services.desktopManager.plasma6.enable = true; + environment.plasma6.excludePackages = [ pkgs.kdePackages.discover ]; # For cursor in steam? xdg.icons.fallbackCursorThemes = [ "breeze_cursors" ]; + programs.partition-manager.enable = true; + environment.systemPackages = with pkgs; - [ maliit-keyboard ] ++ (with kdePackages; [ + [ + maliit-keyboard + exfatprogs + ] ++ (with kdePackages; [ sddm-kcm plasma-disks - partitionmanager filelight ffmpegthumbs kcalc diff --git a/configuration/base/location-time.nix b/configuration/base/location-time.nix new file mode 100644 index 0000000..1fa22cf --- /dev/null +++ b/configuration/base/location-time.nix @@ -0,0 +1,14 @@ +{ ... }: + +{ + # Set your time zone. + # time.timeZone = "Europe/London"; + services.automatic-timezoned.enable = true; + services.chrony = { + enable = true; + }; + services.geoclue2 = { + enable = true; + geoProviderUrl = "https://api.beacondb.net/v1/geolocate"; + }; +} diff --git a/configuration/base/networking.nix b/configuration/base/networking.nix new file mode 100644 index 0000000..5afe702 --- /dev/null +++ b/configuration/base/networking.nix @@ -0,0 +1,26 @@ +{ pkgs, ... }: + +{ + # networking.hostName = "nixos"; # Define your hostname. + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.networkmanager = { + # Easiest to use and most distros use this by default. + enable = true; + wifi.powersave = false; + }; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + services.mullvad-vpn = { + enable = true; + package = pkgs.mullvad-vpn; + }; + + # services.resolved.enable = true; +} diff --git a/configuration/base/nix-settings.nix b/configuration/base/nix-settings.nix index 06109e6..5e9a8e2 100644 --- a/configuration/base/nix-settings.nix +++ b/configuration/base/nix-settings.nix @@ -7,10 +7,10 @@ nix.gc.automatic = true; nix.gc.options = "--delete-older-than 7d"; - # programs.nix-ld = { - # enable = true; - # # libraries = pkgs.steam-run.fhsenv.args.multiPkgs pkgs; - # libraries = pkgs.appimageTools.defaultFhsEnvArgs.targetPkgs pkgs; - # }; + programs.nix-ld = { + enable = true; + # libraries = pkgs.steam-run.fhsenv.args.multiPkgs pkgs; + # libraries = pkgs.appimageTools.defaultFhsEnvArgs.targetPkgs pkgs; + }; } diff --git a/configuration/base/pipewire.nix b/configuration/base/pipewire.nix new file mode 100644 index 0000000..ed0f3bf --- /dev/null +++ b/configuration/base/pipewire.nix @@ -0,0 +1,35 @@ +{ ... }: + +{ + # Enable sound. + # hardware.pulseaudio.enable = true; + # OR + services.pipewire = { + enable = true; + pulse.enable = true; + extraConfig.pipewire-pulse = { + "10-prevent-agc" = { + "pulse.rules" = [ + { + matches = [ + { "application.process.binary" = "chrome"; } + { "application.process.binary" = "Discord"; } + { "application.process.binary" = "teams"; } + { "application.process.binary" = "electron"; } + { "application.process.binary" = "skypeforlinux"; } + { "application.process.binary" = "telegram-desktop"; } + { "application.process.binary" = "vivaldi"; } + { "application.process.binary" = "chromium"; } + { "application.process.binary" = "zoom"; } + ]; + actions = { + quirks = [ + "block-source-volume" + ]; + }; + } + ]; + }; + }; + }; +} diff --git a/configuration/base/programs.nix b/configuration/base/programs.nix new file mode 100644 index 0000000..b76d6a3 --- /dev/null +++ b/configuration/base/programs.nix @@ -0,0 +1,37 @@ +{ pkgs, ... }: + +{ + security.sudo-rs.enable = true; + services.fwupd.enable = true; + services.flatpak.enable = true; + programs.bash.blesh.enable = true; + programs.fish.enable = true; + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; + [ + # utils + uutils-coreutils-noprefix + vim + curl + inetutils + dig + + rar + zstd + xz + p7zip + + libva-utils + smartmontools + appimage-run + + # dicts + nuspell + hunspellDicts.en-gb-large + + # For cursor in steam? + xsettingsd + xorg.xrdb + ]; +} diff --git a/configuration/default.nix b/configuration/default.nix new file mode 100644 index 0000000..0c04f4a --- /dev/null +++ b/configuration/default.nix @@ -0,0 +1,74 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +{ pkgs, ... }: + +{ + imports = [ ./base ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.kernelPackages = pkgs.linuxPackages_latest; + + hardware.bluetooth.enable = true; + hardware.enableRedistributableFirmware = true; + hardware.enableAllFirmware = true; + + # Disks / Swap / etc + # swapDevices = [{ + # device = "/var/lib/swapfile"; + # size = 16 * 1024; # 16 GB + # }]; + zramSwap.enable = true; # Creates a zram block device and uses it as a swap device + services.fstrim.enable = true; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # 443 Helldivers crashes internet otherwise + # networking.firewall.allowedTCPPorts = [ 443 ]; + # networking.firewall.allowedUDPPorts = [ 443 ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # Block list + # networking.stevenblack.enable = true; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how + # to actually do that. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "24.05"; # Did you read the comment? + +} diff --git a/configuration/modules/virtualisation.nix b/configuration/modules/virtualisation.nix index 1439198..b8950c7 100644 --- a/configuration/modules/virtualisation.nix +++ b/configuration/modules/virtualisation.nix @@ -8,8 +8,17 @@ }; libvirtd = { enable = true; - qemu.vhostUserPackages = [ pkgs.virtiofsd ]; + qemu = { + vhostUserPackages = [ pkgs.virtiofsd ]; + ovmf.enable = true; + }; }; + # podman = { + # enable = true; + # dockerSocket.enable = true; + # dockerCompat = true; + # defaultNetwork.settings.dns_enabled = true; + # }; # remember to add the necessary users to the docker group docker = { enable = true; @@ -20,6 +29,11 @@ # }; }; programs.virt-manager.enable = true; - # environment.systemPackages = with pkgs;[ podman-compose ]; + # environment.systemPackages = with pkgs;[ + # docker-compose + # # podman-compose + # podman-tui + # podman-desktop + # ]; } diff --git a/devices/deck/home.nix b/devices/deck/home.nix index e6403b8..737b848 100644 --- a/devices/deck/home.nix +++ b/devices/deck/home.nix @@ -5,7 +5,7 @@ let in { imports = [ - ../../home-manager/base.nix + ../../home-manager ../../home-manager/gaming.nix ../../home-manager/development/vscode.nix ]; diff --git a/devices/starlite/configuration.nix b/devices/starlite/configuration.nix index 7742eda..e3deaa3 100644 --- a/devices/starlite/configuration.nix +++ b/devices/starlite/configuration.nix @@ -7,7 +7,7 @@ { imports = [ - ../../configuration/base.nix + ../../configuration # Include the results of the hardware scan. ./hardware-configuration.nix inputs.disko.nixosModules.default @@ -30,7 +30,7 @@ home-manager = { extraSpecialArgs = { inherit inputs; }; sharedModules = [ - inputs.nix-index-database.hmModules.nix-index + inputs.nix-index-database.homeModules.nix-index ]; users = { "worble" = import ./home.nix; diff --git a/devices/starlite/home.nix b/devices/starlite/home.nix index b90ffe5..583561a 100644 --- a/devices/starlite/home.nix +++ b/devices/starlite/home.nix @@ -2,7 +2,7 @@ { imports = [ - ../../home-manager/base.nix + ../../home-manager ../../home-manager/development/vscode.nix ]; diff --git a/devices/tuxedo/configuration.nix b/devices/tuxedo/configuration.nix index 99f27d9..e018bad 100644 --- a/devices/tuxedo/configuration.nix +++ b/devices/tuxedo/configuration.nix @@ -7,7 +7,7 @@ { imports = [ - ../../configuration/base.nix + ../../configuration # Include the results of the hardware scan. ./hardware-configuration.nix inputs.disko.nixosModules.default @@ -20,18 +20,6 @@ networking.hostName = "tuxedo"; # Define your hostname. - # one day i will fix the fullscreen issue - # https://community.frame.work/t/fullscreen-games-freeze-on-plasma-6-with-dgpu/61088/9 - # https://community.frame.work/t/bug-psa-gpu-bug-causes-crashes-on-kde-plasma/58133/4 - # https://www.reddit.com/r/archlinux/comments/1gzy0xd/amdgpu_regression_on_kernel_612_choppy/ - # https://forum.manjaro.org/t/unstable-update-october-2024-edition/168715/44 - boot.kernelParams = [ - # "amdgpu.dcdebugmask=0x410" - # or amdgpu.dcdebugmask=0x010 - # or amdgpu.dcdebugmask=0x400 - # or both amdgpu.dcdebugmask=0x410 - ]; - boot.extraModprobeConfig = '' options iwlwifi 11n_disable=8 power_save=0 options iwlmvm power_scheme=1 @@ -39,10 +27,9 @@ services.hardware.openrgb.enable = true; - fileSystems."/mnt/HDD1" = { - #device = "/dev/disk/by-uuid/35763dc3-c736-4714-ade7-40bf49ad50dd"; + fileSystems."/mnt/HDD2" = { fsType = "ext4"; - label = "HDD1"; + label = "HDD2"; options = [ # If you don't have this options attribute, it'll default to "defaults" # boot options for fstab. Search up fstab mount options you can use @@ -60,15 +47,33 @@ dumpcap.enable = true; }; + programs.gpu-screen-recorder.enable = true; # For promptless recording on both CLI and GUI + + # programs.obs-studio = { + # enable = true; + # enableVirtualCamera = true; + # }; + environment.systemPackages = with pkgs;[ distrobox + gpu-screen-recorder-gtk + + inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".lsfg-vk + inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".lsfg-vk-ui ]; # Define a user account. Don't forget to set a password with ‘passwd’. users.users.worble = { initialPassword = "password"; isNormalUser = true; - extraGroups = [ "wheel" "gamemode" "docker" "cdrom" "wireshark" ]; # Enable ‘sudo’ for the user. + extraGroups = [ + "wheel" + "gamemode" + "docker" + "podman" + "cdrom" + "wireshark" + ]; # Enable ‘sudo’ for the user. linger = true; }; @@ -76,7 +81,7 @@ useGlobalPkgs = true; extraSpecialArgs = { inherit inputs; }; sharedModules = [ - inputs.nix-index-database.hmModules.nix-index + inputs.nix-index-database.homeModules.nix-index ]; users = { "worble" = import ./home.nix; diff --git a/devices/tuxedo/home.nix b/devices/tuxedo/home.nix index 77af4dc..c3c0fc5 100644 --- a/devices/tuxedo/home.nix +++ b/devices/tuxedo/home.nix @@ -2,9 +2,10 @@ { imports = [ - ../../home-manager/base.nix - ../../home-manager/development/all.nix + ../../home-manager + ../../home-manager/development ../../home-manager/gaming.nix + ../../home-manager/streamlink.nix ]; terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo"; @@ -34,17 +35,16 @@ # media jellyfin-media-player haruna - fooyin - strawberry - mpc-qt # misc electrum - gpu-screen-recorder-gtk syncthing dbeaver-bin ruffle popsicle + + # for headset tune + headsetcontrol ]; home.file = { @@ -73,16 +73,13 @@ }; mpv = { - enable = true; config = { profile = "gpu-hq"; vo = "gpu-next"; - gpu-api = "opengl"; - gpu-context = "wayland"; - hwdec = "vulkan"; - screenshot-directory = "/mnt/HDD1/Pictures/"; - # screenshot-directory = "~/Pictures/"; - screenshot-template = "%F/%F_snapshot_%P"; + gpu-api = "auto"; + gpu-context = "auto"; + hwdec = "auto"; + screenshot-directory = "/mnt/HDD2/Pictures/"; glsl-shaders = "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; }; extraInput = '' @@ -114,10 +111,10 @@ services = { rclone-media = { Unit = { - Description = "rclone-media /mnt/HDD1/Videos/"; - After = [ "network.target" "mnt-HDD1.mount" ]; + Description = "rclone-media /mnt/HDD2/Videos/"; + After = [ "network.target" "mnt-HDD2.mount" ]; # Maybe? https://unix.stackexchange.com/questions/281650/systemd-unit-requiresmountsfor-vs-conditionpathisdirectory - # RequiresMountsFor = "/mnt/HDD1/Videos/"; + # RequiresMountsFor = "/mnt/HDD2/Videos/"; }; Install = { @@ -134,7 +131,7 @@ runtimeInputs = [ pkgs.inotify-tools pkgs.libnotify pkgs.rclone ]; text = '' function rclonecopy { file=$1 - changed_rel=''${file#"/mnt/HDD1/Videos"} + changed_rel=''${file#"/mnt/HDD2/Videos"} notify-send -a "rclone-media" "rclone for $file triggered" if rclone copyto "$file" media:"media-7gM2gcrxRjXqfj$changed_rel" ; then notify-send -a "rclone-media" "rclone complete for $file" @@ -146,7 +143,7 @@ text = '' inotifywait -mr \ --format '%w%f' \ -e close_write \ - /mnt/HDD1/Videos/ | + /mnt/HDD2/Videos/ | while read -r file; do rclonecopy "$file" done diff --git a/flake.lock b/flake.lock index 5ac5732..52b5161 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1750903843, - "narHash": "sha256-Ng9+f0H5/dW+mq/XOKvB9uwvGbsuiiO6HrPdAcVglCs=", + "lastModified": 1758287904, + "narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=", "owner": "nix-community", "repo": "disko", - "rev": "83c4da299c1d7d300f8c6fd3a72ac46cb0d59aae", + "rev": "67ff9807dd148e704baadbd4fd783b54282ca627", "type": "github" }, "original": { @@ -45,11 +45,11 @@ ] }, "locked": { - "lastModified": 1750792728, - "narHash": "sha256-Lh3dopA8DdY+ZoaAJPrtkZOZaFEJGSYjOdAYYgOPgE4=", + "lastModified": 1758463745, + "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", "owner": "nix-community", "repo": "home-manager", - "rev": "366f00797b1efb70f2882d3da485e3c10fd3d557", + "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", "type": "github" }, "original": { @@ -66,11 +66,11 @@ ] }, "locked": { - "lastModified": 1751170039, - "narHash": "sha256-3EKpUmyGmHYA/RuhZjINTZPU+OFWko0eDwazUOW64nw=", + "lastModified": 1758427679, + "narHash": "sha256-xwjWRJTKDCjQ0iwfh7WhDhgcS0Wt3d1Yscg83mKBCn4=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "9c932ae632d6b5150515e5749b198c175d8565db", + "rev": "fd2569ca2ef7d69f244cd9ffcb66a0540772ff85", "type": "github" }, "original": { @@ -105,11 +105,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1751163387, - "narHash": "sha256-DbEJL/mglbCqTa6s1I8H3Vmrl5roDI0tj7Blx4Js5Do=", + "lastModified": 1758678836, + "narHash": "sha256-ewDKEXcKYF7L+EGVa+8E1nxK1pdwVrCHcj5UhuGA8V0=", "owner": "nix-community", "repo": "nix-vscode-extensions", - "rev": "edb6831ba2ff1b6ff93bec29060e33d6d6cff3cd", + "rev": "5007786714b3573b37cf3b8c4a33e2ddce86960d", "type": "github" }, "original": { @@ -120,11 +120,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1750837715, - "narHash": "sha256-2m1ceZjbmgrJCZ2PuQZaK4in3gcg3o6rZ7WK6dr5vAA=", + "lastModified": 1758663926, + "narHash": "sha256-6CFdj7Xs616t1W4jLDH7IohAAvl5Dyib3qEv/Uqw1rk=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "98236410ea0fe204d0447149537a924fb71a6d4f", + "rev": "170ff93c860b2a9868ed1e1102d4e52cb3d934e1", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1751011381, - "narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=", + "lastModified": 1758427187, + "narHash": "sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "30e2e2857ba47844aa71991daa6ed1fc678bcbb7", + "rev": "554be6495561ff07b6c724047bdd7e0716aa7b46", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1750969886, - "narHash": "sha256-zW/OFnotiz/ndPFdebpo3X0CrbVNf22n4DjN2vxlb58=", + "lastModified": 1758589230, + "narHash": "sha256-zMTCFGe8aVGTEr2RqUi/QzC1nOIQ0N1HRsbqB4f646k=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a676066377a2fe7457369dd37c31fd2263b662f4", + "rev": "d1d883129b193f0b495d75c148c2c3a7d95789a0", "type": "github" }, "original": { @@ -202,11 +202,11 @@ ] }, "locked": { - "lastModified": 1748252092, - "narHash": "sha256-6nL55wvV7SthEXaXDiQo8xxkxQLAVcNBU21YJ7GJLm8=", + "lastModified": 1756281415, + "narHash": "sha256-CjpoVwpJJ+DOZilPrDpZ5S3V+B1Y0calaHxTp2xMvGs=", "owner": "numtide", "repo": "system-manager", - "rev": "c6850451ef769fd03d0ad5474f928b916aa23775", + "rev": "e271eedac9a24678ca6cfc61677837422bf474e0", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index cfd95ad..f72bfb4 100644 --- a/flake.nix +++ b/flake.nix @@ -57,7 +57,7 @@ inherit pkgs; extraSpecialArgs = { inherit inputs; }; modules = [ - nix-index-database.hmModules.nix-index + nix-index-database.homeModules.nix-index ./devices/deck/home.nix ]; }; diff --git a/home-manager/base/default.nix b/home-manager/base/default.nix new file mode 100644 index 0000000..56ecafd --- /dev/null +++ b/home-manager/base/default.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + imports = [ + ./fonts.nix + ./mpv.nix + ./terminal.nix + ]; +} diff --git a/home-manager/base/mpv.nix b/home-manager/base/mpv.nix new file mode 100644 index 0000000..2d9e581 --- /dev/null +++ b/home-manager/base/mpv.nix @@ -0,0 +1,30 @@ +{ pkgs, lib, ... }: + +{ + programs = { + mpv = { + enable = true; + package = ( + pkgs.mpv-unwrapped.wrapper { + scripts = with pkgs.mpvScripts; [ + uosc + sponsorblock + ]; + + mpv = pkgs.mpv-unwrapped; + } + ); + config = { + screenshot-directory = lib.mkDefault "~/Pictures/"; + screenshot-template = lib.mkDefault "%F/%F_snapshot_%P"; + sub-ass-use-video-data = lib.mkDefault "aspect-ratio"; + }; + + scriptOpts = { + uosc = { + time_precision = 3; + }; + }; + }; + }; +} diff --git a/home-manager/base/terminal.nix b/home-manager/base/terminal.nix index 8d62e79..b436520 100644 --- a/home-manager/base/terminal.nix +++ b/home-manager/base/terminal.nix @@ -45,6 +45,12 @@ with lib; ''; }; + nix-index = { + enable = true; + enableBashIntegration = true; + enableFishIntegration = true; + }; + git = { enable = true; delta.enable = true; @@ -106,6 +112,7 @@ with lib; settings = { theme = "dracula"; show_startup_tips = false; + default_mode = "locked"; }; }; diff --git a/home-manager/base.nix b/home-manager/default.nix similarity index 53% rename from home-manager/base.nix rename to home-manager/default.nix index 8605803..36b79e8 100644 --- a/home-manager/base.nix +++ b/home-manager/default.nix @@ -1,10 +1,9 @@ -{ pkgs, lib, inputs, ... }: +{ pkgs, inputs, lib, ... }: { imports = [ - ./base/fonts.nix - ./base/terminal.nix - ./firefox/firefox.nix + ./base + ./firefox ]; home.packages = with pkgs;[ @@ -17,12 +16,22 @@ # comms teamspeak_client - vesktop + discord + + # media + strawberry ]; - # set breeze as default cursor + # set breeze as default cursor + # For cursor in steam? home.file.".icons/default".source = "${pkgs.kdePackages.breeze}/share/icons/breeze_cursors"; + home.file.".npmrc".text = lib.generators.toINIWithGlobalSection { } { + globalSection = { + ignore-scripts = "true"; + }; + }; + home.sessionVariables = { NIXOS_OZONE_WL = "1"; }; @@ -40,25 +49,5 @@ enable = true; package = pkgs.brave; }; - - mpv = lib.mkDefault { - enable = true; - package = ( - pkgs.mpv-unwrapped.wrapper { - scripts = with pkgs.mpvScripts; [ - uosc - sponsorblock - ]; - - mpv = pkgs.mpv-unwrapped.override { - waylandSupport = true; - }; - } - ); - config = { - screenshot-directory = "~/Pictures/"; - screenshot-template = "%F/%F_snapshot_%P"; - }; - }; }; } diff --git a/home-manager/development/all.nix b/home-manager/development/default.nix similarity index 100% rename from home-manager/development/all.nix rename to home-manager/development/default.nix index 7a20034..0796580 100644 --- a/home-manager/development/all.nix +++ b/home-manager/development/default.nix @@ -2,10 +2,10 @@ { imports = [ - ./vscode.nix - ./helix.nix ./dotnet.nix - ./sql.nix ./games.nix + ./helix.nix + ./sql.nix + ./vscode.nix ]; } diff --git a/home-manager/development/helix.nix b/home-manager/development/helix.nix index eb62fba..e4e7985 100644 --- a/home-manager/development/helix.nix +++ b/home-manager/development/helix.nix @@ -21,30 +21,41 @@ with lib; } (mkIf config.helix.fullInstall { extraPackages = with pkgs;[ - marksman - shfmt - bash-language-server - superhtml + #nix nixd nixpkgs-fmt - biome + + #dotnet omnisharp-roslyn netcoredbg + + # rust + rustfmt + clippy + rust-analyzer + lldb + + #python ruff + + # shell + shfmt + bash-language-server + fish-lsp + + # misc + hyprls + marksman + + # web + superhtml + biome ] ++ (with nodePackages;[ vscode-langservers-extracted typescript-language-server ]); languages = { language = [ - { - name = "nix"; - language-servers = [ "nixd" "nil" ]; - } - { - name = "html"; - language-servers = [ "superhtml" "vscode-html-language-server" ]; - } { name = "bash"; formatter = { command = "shfmt"; }; diff --git a/home-manager/development/vscode.nix b/home-manager/development/vscode.nix index b58146f..38a99db 100644 --- a/home-manager/development/vscode.nix +++ b/home-manager/development/vscode.nix @@ -34,7 +34,9 @@ in ms-python.python ms-python.debugpy charliermarsh.ruff - ]) ++ (with vscode-marketplace;[ bradlc.vscode-tailwindcss ]); + ]) ++ (with vscode-marketplace;[ + bradlc.vscode-tailwindcss + ]); userSettings = with pkgs;{ "workbench.iconTheme" = "material-icon-theme"; "window.titleBarStyle" = "custom"; @@ -72,7 +74,7 @@ in "[jsonc]" = { "editor.defaultFormatter" = "biomejs.biome"; }; - "biome.lsp.bin" = "${biome}/bin/biome"; + # "biome.lsp.bin" = "${biome}/bin/biome"; #"biome.requireConfigFile" = true; "typescript.preferences.preferTypeOnlyAutoImports" = true; @@ -89,6 +91,8 @@ in "bashIde.shfmt.path" = "${shfmt}/bin/shfmt"; "rust-analyzer.rustfmt.overrideCommand" = [ "${rustfmt}/bin/rustfmt" ]; + + "tailwindCSS.classFunctions" = [ "cva" "cx" ]; }; }; }; diff --git a/home-manager/firefox/firefox.nix b/home-manager/firefox/default.nix similarity index 100% rename from home-manager/firefox/firefox.nix rename to home-manager/firefox/default.nix diff --git a/home-manager/firefox/firefox-profile.nix b/home-manager/firefox/firefox-profile.nix index 0c9b1ea..1b91e66 100644 --- a/home-manager/firefox/firefox-profile.nix +++ b/home-manager/firefox/firefox-profile.nix @@ -55,6 +55,8 @@ "media.hardwaremediakeys.enabled" = false; # restore tabs on startup "browser.startup.page" = 3; + # do not trim http + "browser.urlbar.trimURLs" = false; /* Arkenfox Begin */ diff --git a/home-manager/gaming.nix b/home-manager/gaming.nix index 2ad766c..b7554f7 100644 --- a/home-manager/gaming.nix +++ b/home-manager/gaming.nix @@ -2,15 +2,42 @@ { home.packages = with pkgs;[ - steamguard-cli + # Wine / Proton + wineWowPackages.staging + winetricks bottles - ryubing - mgba - scanmem (heroic.override { extraPkgs = pkgs: [ pkgs.gamescope ]; }) + (umu-launcher.override { + extraPkgs = pkgs: with pkgs.gst_all_1; [ + gstreamer + gst-plugins-base + gst-plugins-good + gst-plugins-bad + gst-plugins-ugly + gst-libav + gst-vaapi + ]; + }) + + # Steam + steamguard-cli + + # Emulators + ryubing + mgba + + # Cheat engine + scanmem ]; + + # programs.lutris = { + # enable = true; + # extraPackages = with pkgs; [ mangohud winetricks gamescope gamemode umu-launcher ]; + # protonPackages = [ pkgs.proton-ge-bin ]; + # winePackages = [ pkgs.wineWowPackages.staging ]; + # }; } diff --git a/home-manager/streamlink.nix b/home-manager/streamlink.nix new file mode 100644 index 0000000..99427de --- /dev/null +++ b/home-manager/streamlink.nix @@ -0,0 +1,42 @@ +{ pkgs, lib, ... }: + +let + proxies = [ + "https://eu.luminous.dev" # (Europe) + "https://eu2.luminous.dev" # (Europe 2) + "https://as.luminous.dev" # (Asia) + "https://lb-eu.cdn-perfprod.com" # (Europe) + "https://lb-eu2.cdn-perfprod.com" # (Europe 2) + "https://lb-eu4.cdn-perfprod.com" # (Europe 4) + "https://lb-eu5.cdn-perfprod.com" # (Europe 5) + "https://lb-eu3.cdn-perfprod.com" # (Europe 3, using Russia-only proxies) + "https://lb-na.cdn-perfprod.com" # (NA) + "https://lb-as.cdn-perfprod.com" # (Asia) + "https://lb-sa.cdn-perfprod.com" # (SA) + ]; +in +{ + programs.streamlink = { + enable = true; + settings = { + player = "${pkgs.mpv}/bin/mpv"; + player-args = "--cache 2048"; + player-no-close = true; + twitch-low-latency = true; + twitch-disable-ads = true; + default-stream = "best"; + }; + plugins = { + # It is important this is called "twitch" and overwrites the default plugin + twitch = { + settings = { + twitch-proxy-playlist = lib.concatStringsSep "," proxies; + }; + src = builtins.readFile (pkgs.fetchurl { + url = "https://github.com/2bc4/streamlink-ttvlol/releases/download/7.0.0-20241105/twitch.py"; + hash = "sha256-WbxLNkxG64BlnfI/RwY5N0bqEkO/D6u14nYMyTuveN8="; + }); + }; + }; + }; +}