me like nix
0

Configure Feed

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

add regreet, youtube-tui, kaleidux, etc

author
Sean Aye
date (Mar 22, 2026, 8:03 PM -0400) commit 9c5178c3 parent d5444a9f change-id qotttxzw
+442 -10
+4 -3
flake.lock
··· 356 356 "utils": "utils" 357 357 }, 358 358 "locked": { 359 - "lastModified": 1771317848, 360 - "narHash": "sha256-Zq2oYebRrRMsKmX+mi9qf1ywpO7Y/jZuOFyVTpdrdFY=", 359 + "lastModified": 1773534934, 360 + "narHash": "sha256-a65NKbsleL0/bY6p2LQ0OWfcxysKk8rV9zBa5vEcIWg=", 361 361 "owner": "Mjoyufull", 362 362 "repo": "Kaleidux", 363 - "rev": "64edb0815cbb1b4dd3055924750b5da914dfa6d6", 363 + "rev": "66e9df0b9922adc63caaa6ae933b1fd204877cce", 364 364 "type": "github" 365 365 }, 366 366 "original": { 367 367 "owner": "Mjoyufull", 368 + "ref": "feat/zerocopy", 368 369 "repo": "Kaleidux", 369 370 "type": "github" 370 371 }
+1 -1
flake.nix
··· 24 24 inputs.nixpkgs.follows = "nixpkgs"; 25 25 }; 26 26 kaleidux = { 27 - url = "github:Mjoyufull/Kaleidux"; 27 + url = "github:Mjoyufull/Kaleidux/feat/zerocopy"; 28 28 inputs.nixpkgs.follows = "nixpkgs"; 29 29 }; 30 30 fsel = {
+35 -4
hosts/common/common.nix
··· 84 84 flavor = "frappe"; 85 85 }; 86 86 87 - programs.regreet.enable = true; 87 + programs.regreet = { 88 + enable = true; 89 + theme = { 90 + package = pkgs.catppuccin-gtk.override { 91 + variant = "frappe"; 92 + accents = [ "lavender" ]; 93 + size = "standard"; 94 + }; 95 + name = "catppuccin-frappe-lavender-standard"; 96 + }; 97 + iconTheme = { 98 + package = pkgs.catppuccin-papirus-folders.override { 99 + flavor = "frappe"; 100 + accent = "lavender"; 101 + }; 102 + name = "Papirus-Dark"; 103 + }; 104 + cursorTheme = { 105 + package = pkgs.catppuccin-cursors.frappeDark; 106 + name = "catppuccin-frappe-dark-cursors"; 107 + }; 108 + }; 88 109 89 110 # Enable CUPS to print documents. 90 111 services.printing.enable = true; ··· 181 202 gamescopeSession = { 182 203 enable = true; 183 204 args = [ 184 - "-r 120" 185 - "-R 120" 205 + "-r" "120" 206 + "-R" "120" 186 207 ]; 187 208 env = { 188 209 STEAM_DESKTOP_SESSION = "niri"; ··· 197 218 198 219 programs.gamescope = { 199 220 enable = true; 200 - capSysNice = true; 221 + capSysNice = false; 222 + }; 223 + 224 + # Manually add the gamescope capability wrapper without triggering 225 + # the steam module's setuid bwrap override (which zeros CapBnd 226 + # inside the FHS sandbox, preventing games from launching) 227 + security.wrappers.gamescope = { 228 + owner = "root"; 229 + group = "root"; 230 + source = "${pkgs.gamescope}/bin/gamescope"; 231 + capabilities = "cap_sys_nice+pie"; 201 232 }; 202 233 203 234 programs.fish.enable = true;
+31 -2
hosts/common/home.nix
··· 24 24 ncdu 25 25 youtube-tui 26 26 yt-dlp # youtube-tui and mpv need this to resolve YouTube URLs 27 - mpv # video player 28 27 zellij # terminal multiplexer 29 28 alacritty 30 29 inputs.fsel.packages.${pkgs.system}.default # App launcher / fuzzy finder ··· 318 317 }; 319 318 spawn-at-startup = [ 320 319 { command = [ "xwayland-satellite" ]; } 321 - { command = [ "kaleidux-daemon" ]; } 322 320 { command = [ "cclipd" ]; } 323 321 ]; 324 322 environment = { ··· 375 373 recursive = true; 376 374 }; 377 375 376 + systemd.user.services.kaleidux = { 377 + Unit = { 378 + Description = "Kaleidux dynamic wallpaper daemon"; 379 + After = [ "graphical-session.target" ]; 380 + PartOf = [ "graphical-session.target" ]; 381 + }; 382 + Service = { 383 + ExecStart = "${inputs.kaleidux.packages.${pkgs.system}.default}/bin/kaleidux-daemon"; 384 + Restart = "on-failure"; 385 + RestartSec = 2; 386 + }; 387 + Install = { 388 + WantedBy = [ "graphical-session.target" ]; 389 + }; 390 + }; 391 + 378 392 systemd.user.services.quickshell = { 379 393 Unit = { 380 394 Description = "QuickShell status bar"; ··· 566 580 }; 567 581 568 582 # Program configurations 583 + programs.mpv = { 584 + enable = true; 585 + scripts = [ pkgs.mpvScripts.mpris pkgs.mpvScripts.sponsorblock ]; 586 + }; 587 + xdg.configFile."youtube-tui" = { 588 + source = ./youtube-tui; 589 + recursive = true; 590 + }; 569 591 programs.git = { 570 592 enable = true; 571 593 settings = { ··· 590 612 email = "hello@seanaye.ca"; 591 613 name = "Sean Aye"; 592 614 }; 615 + ui."diff-formatter" = ":git"; 593 616 signing = { 594 617 sign-all = true; 595 618 behavior = "own"; ··· 599 622 }; 600 623 }; 601 624 }; 625 + xdg.configFile."jj/conf.d/diffnav.toml".text = '' 626 + [[--scope]] 627 + --when.commands = ["diff", "show"] 628 + [--scope.ui] 629 + pager = "diffnav" 630 + ''; 602 631 603 632 programs.home-manager.enable = true; 604 633
+27
hosts/common/youtube-tui/appearance.yml
··· 1 + borders: Rounded 2 + colors: 3 + text: Reset 4 + text_special: Reset 5 + text_secondary: Reset 6 + text_error: LightRed 7 + outline: Reset 8 + outline_selected: LightBlue 9 + outline_hover: LightRed 10 + outline_secondary: LightYellow 11 + message_outline: '#FF7F00' 12 + message_error_outline: LightRed 13 + message_success_outline: LightGreen 14 + command_capture: '#64FF64' 15 + item_info: 16 + tag: Gray 17 + title: LightBlue 18 + description: Gray 19 + author: LightGreen 20 + viewcount: LightYellow 21 + length: LightCyan 22 + published: LightMagenta 23 + video_count: '#838DFF' 24 + sub_count: '#65FFBA' 25 + likes: '#C8FF81' 26 + genre: '#FF75D7' 27 + page_turner: Gray
+25
hosts/common/youtube-tui/cmdefine.yml
··· 1 + bookmarks: loadpage bookmarks 2 + feed: loadpage feed 3 + pause: mpv sprop pause yes ;; echo mpv Player paused 4 + resume: mpv sprop pause no ;; echo mpv Player resumed 5 + library: loadpage library 6 + watchhistory: loadpage watchhistory 7 + x: quit 8 + q: quit 9 + playlist: loadpage playlist 10 + r: reload 11 + v: version 12 + trending: loadpage trending 13 + rc: reload configs 14 + search: loadpage search 15 + popular: loadpage popular 16 + back: mpv playlist-previous ;; echo mpv Skipped 17 + channel: loadpage channel 18 + tpause: mpv tprop pause ;; echo success Toggled player pause 19 + h: help 20 + sub: sync 21 + video: loadpage video 22 + next: mpv playlist-next ;; echo mpv Skipped 23 + exit: quit 24 + cp: copy 25 + print: echo
+82
hosts/common/youtube-tui/commandbindings.yml
··· 1 + global: 2 + ' ': 3 + 0: tpause ;; echo mpv Player pause toggled 4 + Right: 5 + 3: next ;; echo mpv Skipped 6 + 2: mpv seek 5 ;; echo mpv Fast forwarded 5 seconds 7 + Left: 8 + 3: back ;; echo mpv Unskipped 9 + 2: mpv seek -5 ;; echo mpv Rewinded 5 seconds 10 + 'y': 11 + 0: cp ${url} 12 + 'f': 13 + 2: run ${browser} '${url}' 14 + 'c': 15 + 2: cp ${url} 16 + search: 17 + 'a': 18 + 2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video 19 + 'A': 20 + 1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle 21 + 'p': 22 + 2: parrun mpv '${hover-url}' 23 + popular: 24 + 'a': 25 + 2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video 26 + 'p': 27 + 2: parrun mpv '${hover-url}' 28 + 'A': 29 + 1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle 30 + trending: 31 + 'p': 32 + 2: parrun mpv '${hover-url}' 33 + 'A': 34 + 1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle 35 + 'a': 36 + 2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video 37 + video: {} 38 + playlist: 39 + 'a': 40 + 2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video 41 + 'A': 42 + 1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle 43 + 'p': 44 + 2: parrun mpv '${hover-url}' 45 + channel_main: {} 46 + channel_videos: 47 + 'a': 48 + 2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video 49 + 'p': 50 + 2: parrun mpv '${hover-url}' 51 + 'A': 52 + 1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle 53 + channel_playlists: 54 + 'p': 55 + 2: parrun mpv '${hover-url}' 56 + 'A': 57 + 1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle 58 + 'a': 59 + 2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video 60 + watchhistory: 61 + 'a': 62 + 2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video 63 + 'p': 64 + 2: parrun mpv '${hover-url}' 65 + 'A': 66 + 1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle 67 + feed: 68 + 'P': 69 + 1: parrun ${terminal-emulator} mpv '${hover-channel-url}/videos' --no-video --loop-playlist=inf --shuffle 70 + 'a': 71 + 2: parrun ${terminal-emulator} mpv '${hover-video-url}' --no-video 72 + 'p': 73 + 2: parrun mpv '${hover-video-url}' 74 + 'A': 75 + 1: parrun ${terminal-emulator} mpv '${hover-channel-url}/videos' --no-video --loop-playlist=inf --shuffle 76 + library: 77 + 'a': 78 + 2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video 79 + 'A': 80 + 1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle 81 + 'p': 82 + 2: parrun mpv '${hover-url}'
+56
hosts/common/youtube-tui/commands.yml
··· 1 + launch_command: loadpage library ;; flush ;; history clear ;; key Esc 0 ;; key Up 0 ;; key Up 0 ;; key Left 0 ;; key Enter 0 2 + video: 3 + - Reload updated video: run rm '~/.cache/youtube-tui/info/${id}.json' ;; video ${id} 4 + - Play video: parrun ${video-player} '${embed-url}' 5 + - Play audio: run pkill -f 'mpv --no-video' ;; parrun mpv --no-video '${embed-url}' 6 + - Play audio (loop): run pkill -f 'mpv --no-video' ;; parrun mpv --no-video --loop '${embed-url}' 7 + - View channel: channel ${channel-id} 8 + - Subscribe to channel: sync ${channel-id} 9 + - Open in browser: parrun ${browser} '${url}' 10 + - Toggle bookmark: togglemark ${id} 11 + - Save video to library: bookmark ${id} ;; run rm -rf '${save-path}${id}.*' ;; parrun ${terminal-emulator} ${youtube-downloader} '${embed-url}' -o '${save-path}%(title)s[%(id)s].%(ext)s' 12 + - Save audio to library: bookmark ${id} ;; parrun rm -rf '${save-path}${id}.*' ;; parrun ${terminal-emulator} ${youtube-downloader} '${embed-url}' -x -o '${save-path}%(title)s[%(id)s].%(ext)s' 13 + - 'Mode: ${provider}': switchprovider 14 + saved_video: 15 + - Reload updated video: run rm '~/.cache/youtube-tui/info/${id}.json' ;; video ${id} 16 + - '[Offline] Play saved file': parrun ${video-player} '${offline-path}' --force-window 17 + - '[Offline] Play saved file (audio)': run pkill -f 'mpv --no-video' ;; parrun mpv --no-video '${offline-path}' 18 + - '[Offline] Play saved file (audio loop)': run pkill -f 'mpv --no-video' ;; parrun mpv --no-video --loop '${offline-path}' 19 + - View channel: channel ${channel-id} 20 + - Subscribe to channel: sync ${channel-id} 21 + - Open in browser: parrun ${browser} '${url}' 22 + - Toggle bookmark: togglemark ${id} 23 + - Redownload video to library: bookmark ${id} ;; run rm ${save-path}*${id}*.* ;; parrun ${terminal-emulator} ${youtube-downloader} ${embed-url} -o '${save-path}%(title)s[%(id)s].%(ext)s' 24 + - Redownload audio to library: bookmark ${id} ;; run rm ${save-path}*${id}*.* ;; parrun ${terminal-emulator} ${youtube-downloader} ${embed-url} -x -o '${save-path}%(title)s[%(id)s].%(ext)s' 25 + - Delete saved file: run rm ${save-path}*${id}*.* 26 + playlist: 27 + - Switch view: '%switch-view%' 28 + - Reload updated playlist: run rm ~/.cache/youtube-tui/info/${id}.json ;; reload 29 + - Play all (videos): parrun ${video-player} ${url} 30 + - Play all (audio): run pkill -f 'mpv --no-video' ;; parrun mpv --no-video '${url}' 31 + - Shuffle play all (audio loop): run pkill -f 'mpv --no-video' ;; parrun mpv --no-video --shuffle --loop-playlist '${url}' 32 + - View channel: channel ${channel-id} 33 + - Subscribe to channel: sync ${channel-id} 34 + - Open in browser: parrun ${browser} '${url}' 35 + - Toggle bookmark: togglemark ${id} 36 + - Save playlist videos to library: bookmark ${id} ;; run rm -rf '${save-path}*${id}*' ;; parrun ${terminal-emulator} bash -c "${youtube-downloader} ${all-videos} -o '"'${save-path}${title}[${id}]/%(title)s[%(id)s].%(ext)s'"'" 37 + - Save playlist audio to library: bookmark ${id} ;; run rm -rf '${save-path}*${id}*' ;; parrun ${terminal-emulator} bash -c "${youtube-downloader} ${all-videos} -x -o '"'${save-path}${title}[${id}]/%(title)s[%(id)s].%(ext)s'"'" 38 + - 'Mode: ${provider}': switchprovider 39 + saved_playlist: 40 + - Switch view: '%switch-view%' 41 + - Reload updated playlist: run rm ~/.cache/youtube-tui/info/${id}.json ;; reload 42 + - '[Offline] Play all (videos)': parrun ${video-player} ${save-path}*${id}*/* --force-window 43 + - '[Offline] Play all (audio)': run pkill -f 'mpv --no-video' ;; parrun mpv --no-video ${save-path}*${id}*/* 44 + - '[Offline] Shuffle play all (audio loop)': run pkill -f 'mpv --no-video' ;; parrun mpv --no-video --shuffle --loop-playlist ${save-path}*${id}*/* 45 + - View channel: channel ${channel-id} 46 + - Subscribe to channel: sync ${channel-id} 47 + - Open in browser: parrun ${browser} '${url}' 48 + - Toggle bookmark: togglemark ${id} 49 + - Redownload playlist videos to library: bookmark ${id} ;; run rm -rf ${save-path}*${id}* ;; parrun ${terminal-emulator} bash -c "${youtube-downloader} ${all-videos} -o '"'${save-path}${title}[${id}]/%(title)s[%(id)s].%(ext)s'"'" 50 + - Redownload playlist audio to library: bookmark ${id} ;; run rm -rf ${save-path}*${id}* ;; parrun ${terminal-emulator} bash -c "${youtube-downloader} ${all-videos} -x -o '"'${save-path}${title}[${id}]/%(title)s[%(id)s].%(ext)s'"'" 51 + - Delete saved files: run rm -rf ${save-path}*${id}* 52 + channel: 53 + - Subscribe to channel: sync ${id} 54 + - Play all (videos): parrun ${video-player} ${url} 55 + - Play all (audio): run pkill -f 'mpv --no-video' ;; parrun mpv --no-video '${url}' 56 + - Shuffle play all (audio loop): run pkill -f 'mpv --no-video' ;; parrun mpv --no-video --shuffle --loop-playlist '${url}'
+52
hosts/common/youtube-tui/keybindings.yml
··· 1 + 'q': 2 + 0: Exit 3 + Up: 4 + 2: PreviousEntry 5 + 0: MoveUp 6 + 'l': 7 + 0: MoveRight 8 + 'h': 9 + 0: MoveLeft 10 + Right: 11 + 2: NextWord 12 + 0: MoveRight 13 + 'w': 14 + 2: RemoveWord 15 + Left: 16 + 2: PreviousWord 17 + 4: Back 18 + 0: MoveLeft 19 + 'a': 20 + 2: First 21 + Backspace: 22 + 0: Back 23 + 'k': 24 + 0: MoveUp 25 + 'j': 26 + 0: MoveDown 27 + 'v': 28 + 2: Paste 29 + Enter: 30 + 0: Select 31 + Down: 32 + 0: MoveDown 33 + 2: NextEntry 34 + Esc: 35 + 0: Deselect 36 + End: 37 + 0: ClearHistory 38 + 'u': 39 + 2: ClearLine 40 + 'r': 41 + 2: Reload 42 + Home: 43 + 0: FirstHistory 44 + F5: 45 + 0: Reload 46 + ':': 47 + 0: StartCommandCapture 48 + 'd': 49 + 4: RemoveWord 50 + 0: ClearHistory 51 + 'e': 52 + 2: End
+30
hosts/common/youtube-tui/main.yml
··· 1 + mouse_support: true 2 + invidious_instance: https://invidious.f5.si 3 + write_config: Try 4 + allow_unicode: true 5 + message_bar_default: All good :) 6 + images: Halfblocks 7 + refresh_after_modifying_search_filters: true 8 + syncing: 9 + download_images: true 10 + sync_channel_info: true 11 + sync_channel_cooldown_secs: 86400 12 + sync_videos_cooldown_secs: 600 13 + limits: 14 + watch_history: 50 15 + search_history: 75 16 + commands_history: 75 17 + textbar_scroll_behaviour: History 18 + image_index: 4 19 + provider: YouTube 20 + search_provider: RustyPipe 21 + api_key: YOUR API KEY HERE 22 + shell: sh 23 + legacy_input_handling: false 24 + env: 25 + browser: xdg-open 26 + terminal-emulator: alacritty -e 27 + youtube-downloader: yt-dlp 28 + download-path: ~/Downloads/%(title)s-%(id)s.%(ext)s 29 + video-player: mpv 30 + save-path: ~/.local/share/youtube-tui/saved/
+88
hosts/common/youtube-tui/pages.yml
··· 1 + main_menu: 2 + layout: 3 + - type: NonCenteredRow 4 + items: 5 + - SearchBar 6 + - SearchFilters 7 + - type: CenteredRow 8 + items: 9 + - Library 10 + - Feed 11 + - History 12 + - type: NonCenteredRow 13 + items: 14 + - ItemList 15 + - type: NonCenteredRow 16 + items: 17 + - MessageBar 18 + message: Loading main menu... 19 + command: key Esc 0 ;; key Down 0 ;; key Down 0 ;; key Enter 0 20 + feed: 21 + layout: 22 + - type: NonCenteredRow 23 + items: 24 + - SearchBar 25 + - SearchFilters 26 + - type: CenteredRow 27 + items: 28 + - Library 29 + - Feed 30 + - History 31 + - type: NonCenteredRow 32 + items: 33 + - ChannelList 34 + - type: NonCenteredRow 35 + items: 36 + - VideoList 37 + - type: NonCenteredRow 38 + items: 39 + - MessageBar 40 + message: Loading feed... 41 + command: key Esc 0 ;; key Down 0 ;; key Down 0 ;; key Enter 0 42 + search: 43 + layout: 44 + - type: NonCenteredRow 45 + items: 46 + - SearchBar 47 + - SearchFilters 48 + - type: NonCenteredRow 49 + items: 50 + - ItemList 51 + - type: NonCenteredRow 52 + items: 53 + - MessageBar 54 + message: Loading search results... 55 + command: key Esc 0 ;; key Down 0 ;; key Enter 0 56 + singleitem: 57 + layout: 58 + - type: NonCenteredRow 59 + items: 60 + - SearchBar 61 + - SearchFilters 62 + - type: NonCenteredRow 63 + items: 64 + - SingleItemInfo 65 + - type: NonCenteredRow 66 + items: 67 + - MessageBar 68 + message: Loading item details... 69 + command: key Esc 0 ;; key Down 0 ;; key Enter 0 70 + channeldisplay: 71 + layout: 72 + - type: NonCenteredRow 73 + items: 74 + - SearchBar 75 + - SearchFilters 76 + - type: CenteredRow 77 + items: 78 + - ChannelMain 79 + - ChannelVideos 80 + - ChannelPlaylists 81 + - type: NonCenteredRow 82 + items: 83 + - ChannelDisplay 84 + - type: NonCenteredRow 85 + items: 86 + - MessageBar 87 + message: Loading channel details... 88 + command: key Esc 0 ;; key Down 0 ;; key Enter 0 ;; key Up 0
+4
hosts/common/youtube-tui/remaps.yml
··· 1 + 'a': 2 + 5: 3 + code: 'b' 4 + modifiers: 5
+7
hosts/common/youtube-tui/search.yml
··· 1 + query: '' 2 + filters: 3 + sort: Relevance 4 + date: None 5 + duration: None 6 + type: All 7 + page: 1