{ pkgs, lib, sysLib, config, ... }: with pkgs; let onlyShare = drv: runCommand "${drv.name}-only-share" {} '' mkdir -p $out ln -s ${drv}/share $out/share ''; mpc-cli-man = onlyShare mpc-cli; shell-scripts = (import ./scripts.nix) {inherit pkgs lib sysLib config;}; Gui = { Terminals = [ # foot # wayland native terminal alacritty # default terminal ]; Browsers = [ #ungoogled-chromium # web browser (only for web programming) #brave ]; ImageManipulation = [ #krita # new, and better (KDE) #gimp # conservative, and old (GNOME) ]; Social = [ mumble # voice chat software (client) # lutris # multiple game store clients # nheko # best matrix client (as of today) # element-desktop # nheko didn't work signal-desktop # to avoid encryption problems with signal-bridge ]; Misc = [ #kalzium # Periodic Table of Elements (`element` is [sort of] better) keepassxc # password manager #onlykey # OnlyKey Chrome Desktop App anki-bin # spaced repetition ]; }; TuiCli = { EyeCandy = [ #banner # Print large banners to ASCII terminals cmatrix # A curses-based scrolling 'Matrix'-like screen hyfetch # Neofetch with LGBTQ pride flags. ]; Social = [ iamb # best tui matrix client (as of today) ]; Misc = [ android-file-transfer # Android MTP client with minimalistic UI #xdg-ninja # A shell script which checks your $HOME for unwanted files and directories. xdg-utils # open urls and such things yokadi # Command line oriented, sqlite powered, todo list killall # kill a application by name snap-sync-forked # A btrfs based backup solution bc # Smart calculator ]; WM = { river = [river]; # A dynamic tiling wayland compositor CLITools = [ lswt # List Wayland toplevels wl-clipboard # Command-line copy/paste utilities swaylock # lockscreen ]; Media = [ wf-recorder # Screen recorder libnotify # a command to send a notification ]; }; Media = { View = [ imv # Image viewer ytcc # Command line tool to keep track of your favorite playlists on YouTube and many other places. ytc # My tool to download the videos (used in conjunction with the entry above) yts # My tool to select the videos (used in conjunction with the entry above) yt # My tool to both select and then download the videos (a merged version of the two entries above) comments # My tool to display comments ]; Listen = [ pulseaudio # set the volume with pactl ncmpc # mpd player client mpc-cli-man # a cli mpd client (added via a wrapper script) ]; }; Hardware = { Storage = [ #compsize # Calculate compression ratio of a set of files on Btrfs # TODO: smartmontools # Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives ]; Input = [ #piper # GTK application to configure gaming mice ]; }; FileListers = [ tree # A directory listing program displaying a depth indented list of files fd # Simple, fast and user-friendly alternative to find ripgrep # A search tool that combines the usability of ag with the raw speed of grep fzf # used to quickly move around with its keybindings file # Show information about a file ]; Editors = [ ed # A POSIX-compliant line-oriented text editor #sed # GNU stream editor vim # The original ex/vi text editor (this is `vim` and not `vi`, as `vi` is unfree) #neovim # Fork of Vim aiming to improve user experience, plugins, and GUIs ]; Programming = { GeneralTools = [ git # the fast distributed version control system git-crypt # mostly here to avoid problems in repositories, where the flake can't be loaded git-absorb # git commit --fixup, but automatic glow # Command-line markdown renderer ]; }; }; # TODO: unmaintained, find sth else: # handlr # Powerful alternative to xdg-utils written in Rust mapFun = x: if builtins.isAttrs x then if lib.isDerivation x then [x] else builtins.attrValues x else [x]; in { home.packages = [] ++ shell-scripts ++ (with builtins; concatLists (concatLists [ (concatMap mapFun (concatMap mapFun (concatMap mapFun (concatMap mapFun (concatMap mapFun (concatMap mapFun (attrValues Gui))))))) (concatMap mapFun (concatMap mapFun (concatMap mapFun (concatMap mapFun (concatMap mapFun (concatMap mapFun (attrValues TuiCli))))))) ])); }