From 6adc5e377cee9c7e10e61ef82c672d573d2049f2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 18 Feb 2024 15:41:01 +0300 Subject: [PATCH] H U I --- TAS2XXX38BB.bin | Bin 0 -> 64504 bytes TIAS2781RCA4.bin | Bin 0 -> 2740 bytes audiorelay.nix | 89 ++++++++++++++++ configuration.nix | 103 ++++++++++++++++-- flake.lock | 191 +++++++++++++++++++++++++++++++-- flake.nix | 15 ++- hardware-configuration.nix | 13 ++- home.nix | 211 +++++++++++++++++++++++++++++++++++++ spotify.nix | 78 ++++++++++++++ 9 files changed, 677 insertions(+), 23 deletions(-) create mode 100644 TAS2XXX38BB.bin create mode 100644 TIAS2781RCA4.bin create mode 100644 audiorelay.nix create mode 100644 home.nix create mode 100644 spotify.nix diff --git a/TAS2XXX38BB.bin b/TAS2XXX38BB.bin new file mode 100644 index 0000000000000000000000000000000000000000..d729b9771f31a9652f9e0096394109fc869c4405 GIT binary patch literal 64504 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 {} }: + +pkgs.stdenv.mkDerivation rec { + name = "audio-relay"; + version = "0.26.3"; + + src = builtins.fetchurl { + url = "https://dl.audiorelay.net/setups/linux/audiorelay-0.26.3.tar.gz"; + sha256 = "sha256:05553s1gp9bimr79nvagdk0l8ahmbwkqg6i6csavvzw40kisj49r"; + }; + + nativeBuildInputs = with pkgs; [ + autoPatchelfHook + makeWrapper + ]; + + buildInputs = with pkgs; [ + jdk + alsaLib + file + fontconfig.lib + freetype + libglvnd + libpulseaudio + stdenv.cc.cc.lib + xorg.libX11 + xorg.libXext + xorg.libXi + xorg.libXrender + xorg.libXtst + xorg.libXrandr + xorg.libXinerama + zlib + ]; + + dontAutoPatchelf = true; + + postFixup = '' + autoPatchelf \ + $out/bin \ + $out/lib/runtime/lib/jexec \ + $out/lib/runtime/lib/jspawnhelper \ + #$(find "$out/lib/runtime/lib" -type f -name 'lib*.so' -a -not -name 'libj*.so') + wrapProgram $out/bin/AudioRelay \ + --prefix LD_LIBRARY_PATH : $out/lib/runtime/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.alsaLib}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.fontconfig.lib}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.freetype}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.libglvnd}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.libpulseaudio}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.stdenv.cc.cc.lib}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.xorg.libX11}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXext}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXi}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXrender}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.xorg.libXtst}/lib/ \ + --prefix LD_LIBRARY_PATH : ${pkgs.zlib}/lib/ + ''; + + installPhase = '' + mkdir -p $out/share/icons/hicolor/512x512/apps + ln -sf AudioRelay bin/audio-relay + cp -rp bin lib $out/ + cp lib/AudioRelay.png $out/share/icons/hicolor/512x512/apps/audiorelay.png + cp -r ${desktopItem}/share/applications $out/share + cp $out/lib/app/AudioRelay.cfg $out/lib/app/.AudioRelay-wrapped.cfg + ''; + + desktopItem = pkgs.makeDesktopItem { + name = "AudioRelay"; + exec = "audio-relay"; + genericName = "AudioRelay audio bridge"; + comment = "AudioRelay sound server/player"; + categories = [ "Network" "Audio" ]; + desktopName = "AudioRelay"; + mimeTypes = []; + icon = "audiorelay"; + }; + + sourceRoot = "."; + + meta = with lib; { + description = "An application to stream audio between devices"; + homepage = "https://audiorelay.net"; + license = licenses.unfree; +# platforms = platforms.x86_64-linux; + maintainers = with maintainers; []; + }; +} diff --git a/configuration.nix b/configuration.nix index 0900fab..1131ce7 100644 --- a/configuration.nix +++ b/configuration.nix @@ -2,20 +2,71 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config, pkgs, ... }: +{ inputs, unstable, config, pkgs, ... }: { nix.settings.experimental-features = [ "flakes" "nix-command" ]; + nix.settings.auto-optimise-store = true; + + environment.sessionVariables = { + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + NIXOS_OZONE_WL = "1"; + }; + + environment.etc."wireplumber/main.lua.d/99-enable-soft-mixer.lua".text = '' + -- alsa_monitor.rules[1].apply_properties["api.alsa.use-acp"] = true; + ''; + + programs.hyprland.enable = true; + + boot.kernel.sysctl."kernel.sysrq" = 1; + + users.users.socks = { + group = "socks"; + isSystemUser = true; + }; + users.groups.socks = {}; + + systemd.services.singboxaus = { + enable = true; + description = "avoid censorship"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { Restart = "on-failure"; RestartSec = "15"; User = "socks"; Group = "socks"; }; + script = "sing-box run -c /etc/sing-box/config.json"; + path = with unstable; [ shadowsocks-libev shadowsocks-v2ray-plugin sing-box]; + }; # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.extraInstallCommands = '' patch_slim7_ssdt=$( - cp -fq ./slim7-ssdt /boot/EFI/nixos/slim7-ssdt + + ${pkgs.coreutils}/bin/cp -f ${./slim7-ssdt} /boot/EFI/nixos/slim7-ssdt + for file in /boot/loader/entries/nixos-generation-*.conf; do + ${pkgs.gnused}/bin/sed -i '0,/^initrd\s/{s/^initrd\s/initrd \/efi\/nixos\/slim7-ssdt\n&/}' "$file" + done ) ''; + boot.kernelParams = [ "rtc_cmos.use_acpi_alarm=1" "ideapad_laptop.allow_v4_dytc=1" ]; boot.loader.efi.canTouchEfiVariables = true; + programs.firejail.enable = true; + + security.wrappers = { + firejail = { + source = "${pkgs.firejail.out}/bin/firejail"; + }; + }; + + programs.command-not-found.enable = false; + programs.fish.enable = true; + programs.fish.promptInit = '' + set TERM "xterm-256color" + set fish_greeting + any-nix-shell fish --info-right | source + ''; + users.defaultUserShell = pkgs.fish; + networking.hostName = "dlaptop"; # Define your hostname. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. @@ -57,7 +108,19 @@ xkbVariant = ""; }; - # Enable CUPS to print documents. + virtualisation = { + podman = { + enable = true; + dockerCompat = true; + }; + spiceUSBRedirection.enable = true; + libvirtd.enable = true; + }; + + programs.steam.enable = true; + programs.gamemode.enable = true; + services.flatpak.enable = true; + # Enable CUPS to print documents. services.printing.enable = true; # Enable sound with pipewire. @@ -66,6 +129,7 @@ security.rtkit.enable = true; services.pipewire = { enable = true; + wireplumber.enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; @@ -77,6 +141,10 @@ #media-session.enable = true; }; + sound.extraConfig = '' + + ''; + # Enable touchpad support (enabled default in most desktopManager). # services.xserver.libinput.enable = true; @@ -84,11 +152,10 @@ users.users.delta = { isNormalUser = true; description = "delta"; - extraGroups = [ "networkmanager" "wheel" ]; - packages = with pkgs; [ - firefox - git - ]; + extraGroups = [ "networkmanager" "wheel" "libvirtd" ]; + #packages = with pkgs; [ + # inputs.firefox.packages.${pkgs.system}.firefox-nightly-bin + #]; }; # Allow unfree packages @@ -97,10 +164,24 @@ # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ - # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. - # wget + gnomeExtensions.appindicator + gnomeExtensions.activate-window-by-title + gnomeExtensions.unite + gnomeExtensions.tailscale-qs + gnomeExtensions.gsconnect + gnomeExtensions.clipboard-indicator + gnome.gnome-tweaks + mojave-gtk-theme + adw-gtk3 + any-nix-shell + openconnect + micro + oath-toolkit + expect ]; + systemd.services.NetworkManager-wait-online.enable = false; # Sometimes it stops the PC from shutdown :/ + # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; @@ -118,7 +199,7 @@ # networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. - # networking.firewall.enable = false; + networking.firewall.enable = false; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/flake.lock b/flake.lock index 8bc5821..d4b5a90 100644 --- a/flake.lock +++ b/flake.lock @@ -1,21 +1,163 @@ { "nodes": { - "nixpkgs": { + "cachix": { "locked": { - "lastModified": 1708105575, - "narHash": "sha256-sS4AItZeUnAei6v8FqxNlm+/27MPlfoGym/TZP0rmH0=", - "owner": "NixOS", + "lastModified": 1635350005, + "narHash": "sha256-tAMJnUwfaDEB2aa31jGcu7R7bzGELM9noc91L2PbVjg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1d1817869c47682a6bee85b5b0a6537b6c0fba26", + "rev": "1c1f5649bb9c1b0d98637c8c365228f57126f361", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-23.11", + "owner": "nixos", + "ref": "nixos-20.09", "repo": "nixpkgs", "type": "github" } }, + "firefox": { + "inputs": { + "cachix": "cachix", + "flake-compat": "flake-compat", + "lib-aggregate": "lib-aggregate", + "mozilla": "mozilla", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1708217961, + "narHash": "sha256-RQNcQRu6LYZgrGo9ZNfP4PMUW16r4pIGoNmhhDPpQIU=", + "owner": "nix-community", + "repo": "flake-firefox-nightly", + "rev": "8e53e0b26e93e03e668060ded53da7eb2751b7d4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "flake-firefox-nightly", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1688025799, + "narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=", + "owner": "nix-community", + "repo": "flake-compat", + "rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1706981411, + "narHash": "sha256-cLbLPTL1CDmETVh4p0nQtvoF+FSEjsnJTFpTxhXywhQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "652fda4ca6dafeb090943422c34ae9145787af37", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-23.11", + "repo": "home-manager", + "type": "github" + } + }, + "lib-aggregate": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1707653303, + "narHash": "sha256-DSnssBCh1rPPyxGxFawGzWJjfmDB5AL18QHzzDMarqc=", + "owner": "nix-community", + "repo": "lib-aggregate", + "rev": "48d8001225a9148f1a97ee519ad53d8272cd8c73", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "lib-aggregate", + "type": "github" + } + }, + "mozilla": { + "flake": false, + "locked": { + "lastModified": 1704373101, + "narHash": "sha256-+gi59LRWRQmwROrmE1E2b3mtocwueCQqZ60CwLG+gbg=", + "owner": "mozilla", + "repo": "nixpkgs-mozilla", + "rev": "9b11a87c0cc54e308fa83aac5b4ee1816d5418a2", + "type": "github" + }, + "original": { + "owner": "mozilla", + "repo": "nixpkgs-mozilla", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1708118438, + "narHash": "sha256-kk9/0nuVgA220FcqH/D2xaN6uGyHp/zoxPNUmPCMmEE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "5863c27340ba4de8f83e7e3c023b9599c3cb3c80", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1707612395, + "narHash": "sha256-iqWiOQY+OwL0Yqdqy1dEWsMMpht+0eSlmtpZ5Rws16Y=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "240f2ff0ed2aac2b91efa29ba3d325526824205b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs-unstable": { "locked": { "lastModified": 1708118438, @@ -32,11 +174,44 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1708161998, + "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "84d981bae8b5e783b3b548de505b22880559515f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { - "nixpkgs": "nixpkgs", + "firefox": "firefox", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index a3130bd..deffbd0 100644 --- a/flake.nix +++ b/flake.nix @@ -2,9 +2,12 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + home-manager.url = "github:nix-community/home-manager/release-23.11"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + firefox.url = "github:nix-community/flake-firefox-nightly"; }; - outputs = inputs @ { nixpkgs, nixpkgs-unstable, ... }: { + outputs = inputs @ { nixpkgs, nixpkgs-unstable, home-manager, firefox, ... }: { nixosConfigurations.dlaptop = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { @@ -14,6 +17,16 @@ modules = [ ./configuration.nix ./hardware-configuration.nix + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.delta = import ./home.nix; + home-manager.extraSpecialArgs = { + inherit inputs; + unstable = import nixpkgs-unstable { system = "x86_64-linux"; config = { allowUnfree = true; }; }; + }; + } ]; }; }; diff --git a/hardware-configuration.nix b/hardware-configuration.nix index 97a4b6a..ab8c277 100644 --- a/hardware-configuration.nix +++ b/hardware-configuration.nix @@ -8,13 +8,20 @@ [ (modulesPath + "/installer/scan/not-detected.nix") ]; + hardware.firmware = [ + (pkgs.runCommandNoCC "subwoofer" { } '' + mkdir -p $out/lib/firmware/ + cp ${./TAS2XXX38BB.bin} $out/lib/firmware/TAS2XXX38BB.bin + cp ${./TIAS2781RCA4.bin} $out/lib/firmware/TIAS2781RCA4.bin + '') + ]; + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; - boot.initrd.extraFiles."slim7-ssdt".source = "./slim7-ssdt"; boot.kernelModules = [ "kvm-amd" ]; boot.kernelPackages = unstable.linuxPackages_zen; boot.extraModulePackages = [ ]; - + fileSystems."/" = { device = "/dev/disk/by-uuid/6b2d5c46-92de-42d0-a272-16b7ef7f30af"; fsType = "ext4"; @@ -31,7 +38,7 @@ device = "/var/lib/swapfile"; size = 32*1024; } ]; - + # 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 diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..3e79925 --- /dev/null +++ b/home.nix @@ -0,0 +1,211 @@ +{ unstable, inputs, home, config, lib, pkgs, specialArgs, ... }: + +{ + home.username = "delta"; + home.stateVersion = "23.11"; + + home.pointerCursor = { + gtk.enable = true; + x11.enable = true; + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 16; + }; + + nixpkgs.overlays = [ + + (final: prev: { + discordtmp = prev.discord.override { + withOpenASAR = true; + withVencord = true; + }; + }) + + (final: prev: let + commandLineArgs = toString [ + "--enable-accelerated-mjpeg-decode" + "--enable-accelerated-video" + "--enable-accelerated-video-decode" + "--enable-zero-copy" + "--use-gl=desktop" + #"--enable-features=UseOzonePlatform,WaylandWindowDecorations,VaapiVideoDecodeLinuxGL" + "--enable-features=UseOzonePlatform,WaylandWindowDecorations,VaapiVideoDecodeLinuxGL,VaapiVideoEncoder" + "--ozone-platform=wayland" + "--no-sandbox" + "\"$@\"" + ]; + + gpuCommandLineArgs = " " + toString [ + "--ignore-gpu-blacklist" + "--enable-native-gpu-memory-buffers" + "--enable-gpu-rasterization" + "--enable-native-gpu-memory-buffers" + "--enable-gpu-compositing" + "--enable-raw-draw" + "--use-vulkan" + "--enable-oop-rasterization" + "--canvas-oop-rasterization" + ] + " " + commandLineArgs; + + #mkDiscord = args: pkgs.symlinkJoin { + # name = "discord"; + # paths = [ + # #prev.discord + # (pkgs.writeShellScriptBin "discord" "exec ${prev.discordtmp}/bin/discord ${args}") + # (pkgs.writeShellScriptBin "Discord" "exec ${prev.discordtmp}/bin/Discord ${args}") + # ]; + #}; + mkDiscord = args: pkgs.symlinkJoin { + name = "discord"; + paths = let + aliases = ["discord" "Discord" "disc" "dis"]; + in + map (alias: pkgs.writeShellScriptBin alias "exec ${prev.discordtmp}/bin/discord ${args}") aliases; + }; + + in { + discord = mkDiscord commandLineArgs; + discord-gpu = mkDiscord gpuCommandLineArgs; + }) + + # VSCODIUM ############### + (final: prev: let + commandLineArgs = toString [ + "--enable-features=UseOzonePlatform" + "--ozone-platform=wayland" + "--no-sandbox" + "\"$@\"" + ]; + + mkVscode = args: pkgs.symlinkJoin { + name = "vscode"; + paths = let + aliases = ["code" "codium" "vscodium" "vscode"]; + in + map (alias: pkgs.writeShellScriptBin alias "exec ${prev.vscodium}/bin/codium ${args}") aliases; + }; + + in { + vscodium = mkVscode commandLineArgs; + }) + ]; + + programs.vscode = { + enable = true; + package = pkgs.vscodium; + }; + + home.packages = with pkgs; [ + firefox + git + unstable.foot + wl-clipboard + wl-clipboard-x11 + (callPackage ./audiorelay.nix {}) + (callPackage ./spotify.nix {}) + + (unstable.telegram-desktop.overrideAttrs (oldAttrs: { + patches = (oldAttrs.patches or []) ++ [ + (fetchpatch { + url = "https://raw.githubusercontent.com/Layerex/telegram-desktop-patches/master/0001-Disable-sponsored-messages.patch"; + hash = "sha256-o2Wxyag6hpEDgGm8FU4vs6aCpL9aekazKiNeZPLI9po="; + }) + (fetchpatch { + url = "https://raw.githubusercontent.com/Layerex/telegram-desktop-patches/master/0002-Disable-saving-restrictions.patch"; + hash = "sha256-sQsyXlvhXSvouPgzYSiRB8ieICo3GDXWH5MaZtBjtqw="; + }) + (fetchpatch { + url = "https://raw.githubusercontent.com/Layerex/telegram-desktop-patches/master/0003-Disable-invite-peeking-restrictions.patch"; + hash = "sha256-8mJD6LOjz11yfAdY4QPK/AUz9o5W3XdupXxy7kRrbC8="; + }) + (fetchpatch { + url = "https://raw.githubusercontent.com/Layerex/telegram-desktop-patches/master/0004-Disable-accounts-limit.patch"; + hash = "sha256-PZWCFdGE/TTJ1auG1JXNpnTUko2rCWla6dYKaQNzreg="; + }) + ]; + })) + ]; + + dconf.settings = { + "org/gnome/mutter" = { + experimental-features = [ "scale-monitor-framebuffer" ]; + }; + }; + + programs.obs-studio = { + enable = true; + plugins = with pkgs.obs-studio-plugins; [ + obs-pipewire-audio-capture + ]; + }; + + programs.mpv = { + enable = true; + config = { + hwdec = "auto"; + slang = "en,eng"; + alang = "en,eng"; + subs-fallback = "default"; + subs-with-matching-audio = "yes"; + save-position-on-quit = "yes"; + }; + scripts = with pkgs; [ + mpvScripts.autoload + mpvScripts.cutter + ]; + scriptOpts = { + autoload = { + disabled = "no"; + images = "no"; + videos = "yes"; + audio = "yes"; + additional_image_exts = "list,of,ext"; + additional_video_exts = "list,of,ext"; + additional_audio_exts = "list,of,ext"; + ignore_hidden = "yes"; + }; + }; + }; + + gtk = { + enable = true; + + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + }; + + programs.fish = { + enable = true; + + shellAliases = { + rebuild = "sudo nixos-rebuild switch --flake ~/Documents/dotfiles/"; + rollback = "sudo nixos-rebuild switch --rollback --flake ~/Documents/dotfiles/"; + run = "~/.local/share/run"; + }; + shellInit = '' + any-nix-shell fish --info-right | source + ''; + }; + + wayland.windowManager.hyprland = { + enable = true; + #plugins = + + }; + + + xdg.dataFile."run" = { + enable = true; + executable = true; + text = '' + #!/bin/sh + if [[ $# -eq 0 ]]; then + echo "Error: Missing argument." + else + nix run nixpkgs#"$1" -- "''\${@:2}" + fi + ''; + }; +} diff --git a/spotify.nix b/spotify.nix new file mode 100644 index 0000000..405ee9e --- /dev/null +++ b/spotify.nix @@ -0,0 +1,78 @@ +{ + spotify, + stdenv, + rustPlatform, + fetchFromGitHub, + xorg, + pkgs +}: let + spotify-adblock = rustPlatform.buildRustPackage { + pname = "spotify-adblock"; + version = "1.0.3"; + src = fetchFromGitHub { + owner = "abba23"; + repo = "spotify-adblock"; + rev = "5a3281dee9f889afdeea7263558e7a715dcf5aab"; + hash = "sha256-UzpHAHpQx2MlmBNKm2turjeVmgp5zXKWm3nZbEo0mYE="; + }; + cargoSha256 = "sha256-wPV+ZY34OMbBrjmhvwjljbwmcUiPdWNHFU3ac7aVbIQ="; + + patchPhase = '' + substituteInPlace src/lib.rs \ + --replace 'config.toml' $out/etc/spotify-adblock/config.toml + ''; + + buildPhase = '' + make + ''; + + installPhase = '' + mkdir -p $out/etc/spotify-adblock + install -D --mode=644 config.toml $out/etc/spotify-adblock + mkdir -p $out/lib + install -D --mode=644 --strip target/release/libspotifyadblock.so $out/lib + + ''; + + }; + spotifywm = stdenv.mkDerivation { + name = "spotifywm"; + src = fetchFromGitHub { + owner = "dasj"; + repo = "spotifywm"; + rev = "8624f539549973c124ed18753881045968881745"; + hash = "sha256-AsXqcoqUXUFxTG+G+31lm45gjP6qGohEnUSUtKypew0="; + }; + buildInputs = [xorg.libX11]; + installPhase = "mv spotifywm.so $out"; + }; +in + spotify.overrideAttrs ( + old: { + postInstall = + (old.postInstall or "") + + '' + mkdir spotify-xpui + mv $out/share/spotify/Apps/xpui.spa . + ${pkgs.unzip}/bin/unzip -qq xpui.spa -d spotify-xpui/ + + cd spotify-xpui/ + ${pkgs.perl}/bin/perl -pi -w -e 's|adsEnabled:!0|adsEnabled:!1|' xpui.js + ${pkgs.perl}/bin/perl -pi -w -e 's|allSponsorships||' xpui.js + ${pkgs.perl}/bin/perl -pi -w -e 's/(return|.=.=>)"free"===(.+?)(return|.=.=>)"premium"===/$1"premium"===$2$3"free"===/g' xpui.js + ${pkgs.perl}/bin/perl -pi -w -e 's/(case .:|async enable\(.\)\{)(this.enabled=.+?\(.{1,3},"audio"\),|return this.enabled=...+?\(.{1,3},"audio"\))((;case 4:)?this.subscription=this.audioApi).+?this.onAdMessage\)/$1$3.cosmosConnector.increaseStreamTime(-100000000000)/' xpui.js + ${pkgs.perl}/bin/perl -pi -w -e 's|(Enables quicksilver in-app messaging modal",default:)(!0)|$1false|' xpui.js + ${pkgs.perl}/bin/perl -pi -w -e 's/(\.WiPggcPDzbwGxoxwLWFf\s*{)/$1 height: 0;/;' home-hpto.css + + ${pkgs.zip}/bin/zip -qq -r xpui.spa . + mv xpui.spa $out/share/spotify/Apps/xpui.spa + cd .. + rm xpui.spa + + ln -s ${spotify-adblock}/lib/libspotifyadblock.so $libdir + sed -i "s:^Name=Spotify.*:Name=Spotify-adblock:" "$out/share/spotify/spotify.desktop" + wrapProgram $out/bin/spotify \ + --set LD_PRELOAD "${spotify-adblock}/lib/libspotifyadblock.so" + ''; + } + )