# vim: ts=2 { config, pkgs, home-manager, user_js, impermanence, sysLib, grades, snap-sync, ... }: with pkgs; let snap-sync-pkgs = pkgs.writeShellScriptBin "snap-sync" (builtins.readFile "${snap-sync}/bin/snap-sync"); shell-scripts = (import ./scripts.nix) {inherit pkgs sysLib;}; Gui = { Terminals = [ # foot # wayland native terminal ]; Browsers = [ ungoogled-chromium # web browser (only for web programming) ]; ImageManipulation = [ krita # new, and better (KDE) gimp # conservative, and old (GNOME) ]; Social = [ mumble # voice chat software (client) ]; Misc = [ kalzium # Periodic Table of Elements keepassxc # password manager onlykey # OnlyKey Chrome Desktop App steam # Valve's digital software delivery system ]; }; TuiCli = { Networking = { OneOffThings = [ #bind # A complete, highly portable implementation of the DNS protocol #firewalld # Firewall daemon with D-Bus interface #ngrep # A grep-like utility that allows you to search for network packets on an interface. #openbsd-netcat # TCP/IP swiss army knife. OpenBSD variant. ]; Misc = [ lftp # FTP client ]; }; EyeCandy = [ banner # Print large banners to ASCII terminals cmatrix # A curses-based scrolling 'Matrix'-like screen hyfetch # Neofetch with LGBTQ pride flags. ]; Backups = [ # TODO rclone # Sync files to and from Google Drive, S3, Swift, Cloudfiles, Dropbox and Google Cloud Storage ]; Misc = [ android-file-transfer # Android MTP client with minimalistic UI python39Packages.docx2txt # Recovers text from DOCX files, with good formatting. xdg-ninja # A shell script which checks your $HOME for unwanted files and directories. yokadi # Command line oriented, sqlite powered, todo list killall # kill a application by name ]; WM = { river = [river]; # A dynamic tiling wayland compositor CLITools = [ lswt # List Wayland toplevels wl-clipboard # Command-line copy/paste utilities # DONE wlopm # Wayland output power management. # DONE wlr-randr # Utility to manage outputs ]; Components = [ # DONE yambar # status panel # DONE swaybg # Wallpaper # DONE bemenu # Run prompt ]; Media = [ # TODO slurp # Select a region (used in the coordinates for grim/maim) # TODO grim # Screenshot utility #maim # Screenshot utility wf-recorder # Screen recorder ]; }; LF = { Previewer = [ # TODO chafa # Image-to-text converter # TODO highlight # source code highlighter # TODO mediainfo # Supplies technical and tag information about a video or audio file # TODO w3m # Text-based Web browser as well as pager # TODO ffmpegthumbnailer # video thumbnailer that can be used by file managers ]; }; Media = { Download = [ # TODO yt-dlp # A youtube-dl fork with additional features and fixes #cclive # Commandline downloader for popular video websites. ]; Manipulate = [ ffmpeg # Complete solution to record, convert and stream audio and video ]; View = [ imv # Image viewer ]; Listen = [ moc # An ncurses console audio player designed to be powerful and easy to use pavucontrol # PulseAudio Volume Control ]; }; 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 ]; Printer = [ # TODO sane-airscan # SANE - SANE backend for AirScan (eSCL) and WSD document scanners ]; }; 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 ]; Editors = [ ed # A POSIX-compliant line-oriented text editor #sed # GNU stream editor #vi # The original ex/vi text editor # TODO neovim # Fork of Vim aiming to improve user experience, plugins, and GUIs ]; Programming = { GeneralTools = [ git # the fast distributed version control system glow # Command-line markdown renderer # TODO ADD THESE TO A Shell-FLAKE git-bug # Distributed, offline-first bug tracker embedded in git, with bridges # TODO ADD THESE TO A Shell-FLAKE strace # A diagnostic, debugging and instructional userspace tracer # TODO ADD THESE TO A Shell-FLAKE tokei # A blazingly fast CLOC (Count Lines Of Code) program # TODO ADD THESE TO A Shell-FLAKE onefetch # TODO ]; # TODO add to nix-shell Rust = [ # TODO add to nix-shell rustup # The Rust toolchain installer # TODO add to nix-shell rust-analyzer # Rust compiler front-end for IDEs # TODO add to nix-shell ]; # See above Yaml = [ # See above yamllint # Linter for YAML files # See above ]; # TODO See above TeX = [ # TODO See zathura # Minimalistic document viewer # TODO See #zathura-pdf-poppler # Adds pdf support to zathura by using the poppler engine # TODO See ltex-ls # LTeX Language Server # TODO See biber # A Unicode-capable BibTeX replacement for biblatex users # TODO See pandoc # Conversion between markup formats # TODO See ]; # TODO See # TODO See Web = [ # TODO See nodePackages_latest.vscode-langservers-extracted # Language servers extracted from VSCode. # TODO See rsass # dart-sass # Sass makes CSS fun again # TODO See nodePackages_latest.prettier # An opinionated code formatter for JS, JSON, CSS, YAML and much more # TODO See ]; # TODO See # TODO See Shell = [ # TODO See dash # POSIX compliant shell that aims to be as small as possible # TODO See shellcheck # Shell script analysis tool # TODO See ]; # TODO See # TODO See Lua = [ # TODO See lua # Powerful lightweight programming language designed for extending applications # TODO See luaformatter # lua-format # LuaFormatter - Code formatter for Lua # TODO See sumneko-lua-language-server #lua-language-server # Lua Language Server coded by Lua # TODO See ]; # TODO See # TODO See R = [ # TODO See R # Language and environment for statistical computing and graphics # TODO See ]; }; }; #expect # A tool for automating interactive applications #handlr # Powerful alternative to xdg-utils written in Rust #packagekit-qt5 # Qt5 bindings for PackageKit #vulkan-radeon # Radeon's Vulkan mesa driver #xorg-bdftopcf # Convert X font from Bitmap Distribution Format to Portable Compiled Format mapFun = x: if builtins.isAttrs x then if lib.isDerivation x then [x] else builtins.attrValues x else [x]; in { nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ ]; home.packages = [ snap-sync-pkgs grades.outputs.packages.${system}.default ] ++ 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))))))) ])); }