this repo has no description
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

realtime-ish audio and discord proxy working

dusk 8741a773 24ac226b

+362 -47
+142 -2
flake.lock
··· 1 1 { 2 2 "nodes": { 3 + "chaotic": { 4 + "inputs": { 5 + "flake-schemas": "flake-schemas", 6 + "home-manager": "home-manager", 7 + "jovian": "jovian", 8 + "nixpkgs": "nixpkgs", 9 + "rust-overlay": "rust-overlay" 10 + }, 11 + "locked": { 12 + "lastModified": 1761548673, 13 + "narHash": "sha256-/513FfwpfbeppPdGDbmLhgcctLqEHdx8Rs92jImKA3M=", 14 + "owner": "chaotic-cx", 15 + "repo": "nyx", 16 + "rev": "25ef687b6a0a13e9d39c3949e7de05873f5571a9", 17 + "type": "github" 18 + }, 19 + "original": { 20 + "owner": "chaotic-cx", 21 + "ref": "nyxpkgs-unstable", 22 + "repo": "nyx", 23 + "type": "github" 24 + } 25 + }, 26 + "flake-schemas": { 27 + "locked": { 28 + "lastModified": 1721999734, 29 + "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=", 30 + "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982", 31 + "revCount": 75, 32 + "type": "tarball", 33 + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz" 34 + }, 35 + "original": { 36 + "type": "tarball", 37 + "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" 38 + } 39 + }, 40 + "home-manager": { 41 + "inputs": { 42 + "nixpkgs": [ 43 + "chaotic", 44 + "nixpkgs" 45 + ] 46 + }, 47 + "locked": { 48 + "lastModified": 1761513701, 49 + "narHash": "sha256-w7qOcQb1FSMZASvWe01r99QqZ5LnHO0k3rgs5ryyig0=", 50 + "owner": "nix-community", 51 + "repo": "home-manager", 52 + "rev": "255b6a0ef2f488a2fad051361699cc67db57338c", 53 + "type": "github" 54 + }, 55 + "original": { 56 + "owner": "nix-community", 57 + "repo": "home-manager", 58 + "type": "github" 59 + } 60 + }, 61 + "jovian": { 62 + "inputs": { 63 + "nix-github-actions": "nix-github-actions", 64 + "nixpkgs": [ 65 + "chaotic", 66 + "nixpkgs" 67 + ] 68 + }, 69 + "locked": { 70 + "lastModified": 1761376732, 71 + "narHash": "sha256-wavx9gROyuRZKSvPCCBh78gOur7o88ndRi545njNRrM=", 72 + "owner": "Jovian-Experiments", 73 + "repo": "Jovian-NixOS", 74 + "rev": "8bef482d65425d0cff6b20c11a5f054f85569a38", 75 + "type": "github" 76 + }, 77 + "original": { 78 + "owner": "Jovian-Experiments", 79 + "repo": "Jovian-NixOS", 80 + "type": "github" 81 + } 82 + }, 83 + "nix-github-actions": { 84 + "inputs": { 85 + "nixpkgs": [ 86 + "chaotic", 87 + "jovian", 88 + "nixpkgs" 89 + ] 90 + }, 91 + "locked": { 92 + "lastModified": 1729697500, 93 + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", 94 + "owner": "zhaofengli", 95 + "repo": "nix-github-actions", 96 + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", 97 + "type": "github" 98 + }, 99 + "original": { 100 + "owner": "zhaofengli", 101 + "ref": "matrix-name", 102 + "repo": "nix-github-actions", 103 + "type": "github" 104 + } 105 + }, 3 106 "nixpkgs": { 4 - "flake": false, 107 + "locked": { 108 + "lastModified": 1761373498, 109 + "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", 110 + "owner": "NixOS", 111 + "repo": "nixpkgs", 112 + "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce", 113 + "type": "github" 114 + }, 115 + "original": { 116 + "owner": "NixOS", 117 + "ref": "nixos-unstable", 118 + "repo": "nixpkgs", 119 + "type": "github" 120 + } 121 + }, 122 + "nixpkgs_2": { 5 123 "locked": { 6 124 "lastModified": 1761512058, 7 125 "narHash": "sha256-FYDC/VM/Tu7bJ9uwxmZqIhkz7QblCcp65+LMb4StGTY=", ··· 19 137 }, 20 138 "root": { 21 139 "inputs": { 22 - "nixpkgs": "nixpkgs" 140 + "chaotic": "chaotic", 141 + "nixpkgs": "nixpkgs_2" 142 + } 143 + }, 144 + "rust-overlay": { 145 + "inputs": { 146 + "nixpkgs": [ 147 + "chaotic", 148 + "nixpkgs" 149 + ] 150 + }, 151 + "locked": { 152 + "lastModified": 1761446259, 153 + "narHash": "sha256-JNNOtIIVIX+yBIsh1rq1Nxhc1LZq168vuQB5sqrZbCY=", 154 + "owner": "oxalica", 155 + "repo": "rust-overlay", 156 + "rev": "95098bb4d55ebe167c082fc40705a73ef76b58e4", 157 + "type": "github" 158 + }, 159 + "original": { 160 + "owner": "oxalica", 161 + "repo": "rust-overlay", 162 + "type": "github" 23 163 } 24 164 } 25 165 },
+2 -2
flake.nix
··· 2 2 description = "config!!!"; 3 3 4 4 inputs.nixpkgs.url = "github:NixOS/nixpkgs/42060c40fd43c114af7010980168f8dcba734d3b"; 5 - inputs.nixpkgs.flake = false; 5 + inputs.chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; 6 6 7 7 outputs = 8 8 flakeInputs: 9 9 let 10 - lib = import "${flakeInputs.nixpkgs}/lib"; 10 + lib = flakeInputs.nixpkgs.lib; 11 11 tlib = import ./lib lib; 12 12 l = lib; 13 13
-9
hosts/chernobog/default.nix
··· 45 45 ]; 46 46 }; 47 47 48 - services.pipewire = { 49 - enable = true; 50 - audio.enable = true; 51 - alsa.enable = true; 52 - alsa.support32Bit = true; 53 - pulse.enable = true; 54 - jack.enable = true; 55 - }; 56 - 57 48 fonts = { 58 49 enableDefaultPackages = true; 59 50 packages = with pkgs; [
+8
hosts/chernobog/modules/ananicy.nix
··· 1 + { pkgs, ... }: 2 + { 3 + services.ananicy = { 4 + enable = true; 5 + package = pkgs.ananicy-cpp; 6 + rulesProvider = pkgs.ananicy-rules-cachyos_git; 7 + }; 8 + }
+53
hosts/chernobog/modules/audio.nix
··· 1 + { pkgs, ... }: 2 + let 3 + rate = 48000; 4 + quant = 256; 5 + quantRateMax = "${toString quant}/${toString rate}"; 6 + quantRateMin = "${toString (quant / 2)}/${toString rate}"; 7 + in 8 + { 9 + imports = [ ../../../modules/audio/desktop-audio.nix ]; 10 + 11 + environment.systemPackages = with pkgs; [ 12 + helvum 13 + pwvucontrol 14 + ]; 15 + 16 + security.rtkit.enable = true; 17 + services.pipewire = { 18 + enable = true; 19 + audio.enable = true; 20 + alsa.enable = true; 21 + alsa.support32Bit = true; 22 + pulse.enable = true; 23 + jack.enable = true; 24 + }; 25 + 26 + services.pipewire.extraConfig.pipewire."92-low-latency" = { 27 + "context.properties" = { 28 + "default.clock.rate" = rate; 29 + "default.clock.quantum" = quant; 30 + "default.clock.min-quantum" = quant / 2; 31 + "default.clock.max-quantum" = quant; 32 + }; 33 + }; 34 + 35 + services.pipewire.extraConfig.pipewire-pulse."92-low-latency" = { 36 + context.modules = [ 37 + { 38 + name = "libpipewire-module-protocol-pulse"; 39 + args = { 40 + pulse.min.req = quantRateMin; 41 + pulse.default.req = quantRateMax; 42 + pulse.max.req = quantRateMax; 43 + pulse.min.quantum = quantRateMin; 44 + pulse.max.quantum = quantRateMax; 45 + }; 46 + } 47 + ]; 48 + stream.properties = { 49 + node.latency = quantRateMax; 50 + resample.quality = 1; 51 + }; 52 + }; 53 + }
+4
hosts/chernobog/modules/kernel.nix
··· 1 + { pkgs, ... }: 2 + { 3 + boot.kernelPackages = pkgs.linuxPackages_cachyos-lto; 4 + }
+6 -1
hosts/default.nix
··· 11 11 inherit lib; 12 12 system = null; 13 13 modules = [ 14 + # set.inputs.nixpkgs.nixosModules.readOnlyPkgs 14 15 { networking.hostName = name; } 15 - { nixpkgs.pkgs = set.pkgs; } 16 + { 17 + nixpkgs.pkgs = set.pkgs; 18 + chaotic.nyx.overlay.enable = false; 19 + } 20 + set.inputs.chaotic.nixosModules.default 16 21 (import (./. + "/${name}/default.nix")) 17 22 ]; 18 23 specialArgs = {
+5
hosts/dzwonek/modules/tailscale.nix
··· 4 4 5 5 # age.secrets.tailscaleAuthKey.file = ../../../secrets/tailscaleAuthKey.age; 6 6 # services.tailscale.authKeyFile = config.age.secrets.tailscaleAuthKey.path; 7 + 8 + services.tailscale = { 9 + extraSetFlags = [ "--advertise-exit-node" ]; 10 + useRoutingFeatures = "both"; 11 + }; 7 12 }
+4
hosts/wolumonde/modules/tailscale.nix
··· 4 4 5 5 # age.secrets.tailscaleAuthKey.file = ../../../secrets/tailscaleAuthKey.age; 6 6 # services.tailscale.authKeyFile = config.age.secrets.tailscaleAuthKey.path; 7 + services.tailscale = { 8 + extraSetFlags = [ "--advertise-exit-node" ]; 9 + useRoutingFeatures = "both"; 10 + }; 7 11 8 12 networking.firewall.public.tailscale.allowedUDPPorts = [ 9 13 config.services.tailscale.port
+18
modules/audio/desktop-audio.nix
··· 1 + { 2 + services.pipewire.extraConfig.pipewire = { 3 + "10-virtual-sink" = { 4 + "context.objects" = [ 5 + { 6 + factory = "adapter"; 7 + args = { 8 + "factory.name" = "support.null-audio-sink"; 9 + "node.name" = "virtual_sink"; 10 + "node.description" = "Virtual Sink for Recording"; 11 + "media.class" = "Audio/Sink"; 12 + "audio.position" = "FL,FR"; 13 + }; 14 + } 15 + ]; 16 + }; 17 + }; 18 + }
-2
modules/network/tailscale.nix
··· 3 3 services.tailscale = { 4 4 enable = true; 5 5 port = 41641; 6 - extraSetFlags = [ "--advertise-exit-node" ]; 7 6 # extraUpFlags = [ "--ssh" ]; 8 7 extraDaemonFlags = [ "--no-logs-no-support" ]; 9 - useRoutingFeatures = "both"; 10 8 openFirewall = true; 11 9 }; 12 10
+12 -13
pkgs-set/default.nix
··· 22 22 ; 23 23 }; 24 24 inputs = (l.mapAttrs (_: inp: inp // { __toString = s: toString s.src; }) _inputs) // flakeInputs; 25 - pkgs = _pkgs.appendOverlays ( 26 - l.flatten ( 27 - l.mapAttrsToList ( 28 - name: _: 29 - if name != "disabled" then 30 - let 31 - o = import "${./overlays}/${name}"; 32 - in 33 - if (l.functionArgs o) ? inputs then o { inherit inputs; } else o 34 - else 35 - [ ] 36 - ) (l.readDir ./overlays) 37 - ) 25 + overlays = l.flatten ( 26 + l.mapAttrsToList ( 27 + name: _: 28 + if name != "disabled" then 29 + let 30 + o = import "${./overlays}/${name}"; 31 + in 32 + if (l.functionArgs o) ? inputs then o { inherit inputs; } else o 33 + else 34 + [ ] 35 + ) (l.readDir ./overlays) 38 36 ); 37 + pkgs = _pkgs.appendOverlays (overlays ++ [ flakeInputs.chaotic.overlays.cache-friendly ]); 39 38 terraPkgs = pkgs.lib.makeScope pkgs.newScope ( 40 39 self: 41 40 l.genAttrs (l.map (l.removeSuffix ".nix") (l.attrNames (l.readDir ./pkgs))) (
+38 -4
users/modules/discord/default.nix
··· 2 2 pkgs, 3 3 terra, 4 4 inputs, 5 + lib, 5 6 ... 6 7 }: 8 + let 9 + pkg = pkgs.discord.override { 10 + withMoonlight = true; 11 + inherit (terra) moonlight; 12 + withOpenASAR = true; 13 + withTTS = false; 14 + }; 15 + in 7 16 { 8 17 # imports = ["${inputs.moonlight}/nix/home-manager.nix"]; 9 18 10 19 home.packages = [ 11 - (pkgs.discord.override { 12 - withMoonlight = true; 13 - inherit (terra) moonlight; 14 - withOpenASAR = true; 20 + (pkgs.symlinkJoin { 21 + name = "discord"; 22 + paths = [ pkg ]; 23 + buildInputs = [ pkgs.makeWrapper ]; 24 + postBuild = '' 25 + wrapProgram $out/bin/discord \ 26 + --add-flags "--proxy-server=socks5://127.0.0.1:1337" 27 + wrapProgram $out/bin/Discord \ 28 + --add-flags "--proxy-server=socks5://127.0.0.1:1337" 29 + ''; 15 30 }) 16 31 ]; 32 + 33 + systemd.user.services.discord-socks-proxy = { 34 + Unit = { 35 + Description = "SSH SOCKS5 proxy for Discord"; 36 + After = [ "network-online.target" ]; 37 + Wants = [ "network-online.target" ]; 38 + }; 39 + 40 + Service = { 41 + Type = "simple"; 42 + ExecStart = "${pkgs.openssh}/bin/ssh -N -D 127.0.0.1:1337 root@wolumonde"; 43 + Restart = "on-failure"; 44 + RestartSec = "3s"; 45 + }; 46 + 47 + Install = { 48 + WantedBy = [ "default.target" ]; 49 + }; 50 + }; 17 51 }
-3
users/modules/rofi/default.nix
··· 3 3 stylix.targets.rofi.enable = true; 4 4 programs.rofi = { 5 5 enable = true; 6 - package = pkgs.rofi.overrideAttrs (old: rec { 7 - buildInputs = builtins.filter (x: x.pname != "gdk-pixbuf") old.buildInputs; 8 - }); 9 6 }; 10 7 }
+7 -11
users/modules/sway/default.nix
··· 10 10 imports = [ 11 11 ../wayland 12 12 ../swaylock 13 + ../swayidle 13 14 ../wlsunset 14 15 ../mako 15 - ../rofi 16 + ../tofi 16 17 # ./swayidle.nix 17 18 ]; 18 19 ··· 20 21 wayland.windowManager = { 21 22 sway = 22 23 let 23 - mkRofiCmd = 24 - args: 25 - "${config.programs.rofi.package}/bin/rofi ${lib.concatStringsSep " " args} | ${pkgs.sway}/bin/swaymsg --"; 26 24 inherit (tlib) pkgBin; 27 25 in 28 26 { ··· 35 33 border = 0; 36 34 titlebar = false; 37 35 }; 38 - menu = mkRofiCmd [ 39 - "-show" 40 - "drun" 41 - ]; 36 + menu = "${config.programs.tofi.package}/bin/tofi-drun"; 42 37 modifier = "Mod4"; 43 38 terminal = config.settings.terminal.binary; 44 39 startup = [ ··· 61 56 shotFile = config.home.homeDirectory + "/shots/shot_$(date '+%Y_%m_%d_%H_%M')"; 62 57 shotDir = config.home.homeDirectory + "/shots"; 63 58 in 64 - { 59 + lib.mkOptionDefault { 65 60 "${mod}+d" = "exec ${config.wayland.windowManager.sway.config.menu}"; 66 61 "${mod}+Return" = "exec ${config.wayland.windowManager.sway.config.terminal}"; 67 62 "${mod}+Escape" = "exec ${wlogout} -p layer-shell"; ··· 77 72 exec export SFILE="${shotFile}.png" && mkdir -p ${shotDir} && ${grim} -g "$(${slurp})" "$SFILE" && ${cat} "$SFILE" | ${wl-copy} -t image/png 78 73 ''; 79 74 # record screen 80 - "Mod1+r" = ''exec mkdir -p ${shotDir} && ${wf-recorder} -x yuv420p -f "${shotFile}.mp4"''; 75 + "Mod1+r" = 76 + ''exec mkdir -p ${shotDir} && ${wf-recorder} --audio-backend=pipewire --audio=alsa_output.pci-0000_09_00.4.pro-output-0.monitor -f "${shotFile}.mp4"''; 81 77 # record an area 82 78 "Mod1+Shift+r" = 83 - ''exec mkdir -p ${shotDir} && ${wf-recorder} -x yuv420p -g "$(${slurp})" -f "${shotFile}.mp4"''; 79 + ''exec mkdir -p ${shotDir} && ${wf-recorder} --audio-backend=pipewire --audio=alsa_output.pci-0000_09_00.4.pro-output-0.monitor -g "$(${slurp})" -f "${shotFile}.mp4"''; 84 80 # stop recording 85 81 "Mod1+c" = "exec pkill -INT wf-recorder"; 86 82 "XF86AudioRaiseVolume" = "exec ${pactl} set-sink-volume 0 +5%";
+45
users/modules/swayidle/default.nix
··· 1 + { pkgs, ... }: 2 + { 3 + services.swayidle = 4 + let 5 + # Lock command 6 + lock = "${pkgs.swaylock}/bin/swaylock --daemonize"; 7 + display = status: "swaymsg 'output * power ${status}'"; 8 + in 9 + { 10 + enable = true; 11 + timeouts = [ 12 + { 13 + timeout = 60; 14 + command = display "off"; 15 + resumeCommand = display "on"; 16 + } 17 + { 18 + timeout = 60 * 5; 19 + command = lock; 20 + } 21 + { 22 + timeout = 60 * 10; 23 + command = "${pkgs.systemd}/bin/systemctl suspend"; 24 + } 25 + ]; 26 + events = [ 27 + { 28 + event = "before-sleep"; 29 + command = (display "off") + "; " + lock; 30 + } 31 + { 32 + event = "after-resume"; 33 + command = display "on"; 34 + } 35 + { 36 + event = "lock"; 37 + command = (display "off") + "; " + lock; 38 + } 39 + { 40 + event = "unlock"; 41 + command = display "on"; 42 + } 43 + ]; 44 + }; 45 + }
+18
users/modules/tofi/default.nix
··· 1 + { lib, config, ... }: 2 + { 3 + stylix.targets.tofi.enable = true; 4 + programs.tofi = { 5 + enable = true; 6 + settings = { 7 + outline-width = 0; 8 + border-width = 0; 9 + width = "48%"; 10 + height = "20%"; 11 + num-results = 7; 12 + font = lib.mkForce "${config.stylix.fonts.serif.package}/share/fonts/truetype/ComicRelief.ttf"; 13 + hint-font = false; 14 + ascii-input = true; 15 + drun-launch = true; 16 + }; 17 + }; 18 + }