diff options
author | ene <ene@sils.li> | 2023-02-02 18:18:15 +0100 |
---|---|---|
committer | ene <ene@sils.li> | 2023-02-03 17:35:02 +0100 |
commit | cfc1bd35c2eb1d49284e4ce5a16c8f57f41a1296 (patch) | |
tree | 412ea9b4e2c5362e3a4c9cfb86c91ff886a85648 /system/packages/packages.nix | |
parent | Refactor(packages): Refactored Packages (diff) | |
download | nixos-config-cfc1bd35c2eb1d49284e4ce5a16c8f57f41a1296.tar.gz nixos-config-cfc1bd35c2eb1d49284e4ce5a16c8f57f41a1296.zip |
Feat: Reworked the packages configuration
Diffstat (limited to 'system/packages/packages.nix')
-rw-r--r-- | system/packages/packages.nix | 312 |
1 files changed, 278 insertions, 34 deletions
diff --git a/system/packages/packages.nix b/system/packages/packages.nix index c9ac9431..e427ac94 100644 --- a/system/packages/packages.nix +++ b/system/packages/packages.nix @@ -2,41 +2,285 @@ config, pkgs, ... -}: let - output = - pkgs.runCommand - "packages-cleaner" - {} - '' - mkdir $out - echo '[' >> $out/clean.json - awk '{ - if (NF) { - gsub(/^[[:blank:]]*/,"") - gsub(/[[:blank:]]*$/,"") - if ( !/^#/ || !/^\/\// ) { - if ( /.*#/ && !/#!/ ) { - gsub(/#.*/,"") - gsub(/[[:blank:]]*$/,"") - if (NF) { - print "pkgs.%s" $0 - } - } else { - print "pkgs.%s" $0 - } - } - - } - }' "./packages.conf" >> $out/clean.json - echo ']' >> $out/clean.json - - - ''; - - packagesList = builtins.fromJSON "${output}/clean.json"; # TODO could work +}: +with pkgs; let + Gui = { + Terminals = [ + alacritty # terminal emulator + ]; + + Browsers = [ + firefox # web browser + ungoogled-chromium-xdg-bin # web browser (only for web programming) + ]; + + ImageManipulation = [ + krita # new, and better (KDE) + gimp # conservative, and old (GNOME) + ]; + + Social = [ + mumble # voice chat software (client) + nheko-git # Matrix Desktop 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 + openssh # SSH client + ]; + }; + + EyeCandy = [ + banner # Print large banners to ASCII terminals + cmatrix # A curses-based scrolling 'Matrix'-like screen + hyfetch # Neofetch with LGBTQ pride flags. + ]; + + Backups = [ + rclone # Sync files to and from Google Drive, S3, Swift, Cloudfiles, Dropbox and Google Cloud Storage + snapper # A tool for managing BTRFS and LVM snapshots. It can create, diff and restore snapshots and provides timelined auto-snapping. + snap-sync # Use snapper snapshots to backup to external drive + ]; + + Misc = [ + android-file-transfer # Android MTP client with minimalistic UI + docx2txt # Recovers text from DOCX files, with good formatting. + btop # Interactive process viewer (maybe better than htop) + ttf-sourcecodepro-nerd # Patched font Source Code Pro from nerd fonts library + xdg-ninja-git # A shell script which checks your $HOME for unwanted files and directories. + yokadi # Command line oriented, sqlite powered, todo list + ]; + + WM = { + inherit river; # A dynamic tiling wayland compositor + + CLITools = [ + lswt # List Wayland toplevels + wlopm # Wayland output power management. + wlr-randr # Utility to manage outputs + wl-clipboard # Command-line copy/paste utilities + gammastep # Adjust the color temperature of your screen according to your surroundings. + ]; + + Components = [ + yambar # status panel + swaybg # Wallpaper + mako # notification daemon + bemenu-wayland # Run prompt + ]; + + Media = [ + slurp # Select a region (used in the coordinates for grim/maim) + grim # Screenshot utility + #maim # Screenshot utility + wf-recorder # Screen recorder + ]; + + Idle = [ + swayidle # Idle management daemon + swaylock # Screen locker + ]; + }; + + LF = { + inherit lf; # A terminal file manager inspired by ranger + + Functions = [ + broot # Fuzzy Search + tree + cd + dragon-drop # Simple drag-and-drop source/sink + trash-cli # Command line trashcan (recycle bin) interface + ]; + + Previewer = [ + chafa # Image-to-text converter + highlight # source code highlighter + mediainfo # Supplies technical and tag information about a video or audio file + w3m # Text-based Web browser as well as pager + ffmpegthumbnailer # video thumbnailer that can be used by file managers + ]; + }; + + Media = { + Download = [ + 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 + mpv # media player + ]; + + Listen = [ + moc # An ncurses console audio player designed to be powerful and easy to use + pavucontrol # PulseAudio Volume Control + #pipewire-alsa # Low-latency audio/video router and processor - ALSA configuration + #pipewire-jack # Low-latency audio/video router and processor - JACK support + #pipewire-pulse # Low-latency audio/video router and processor - PulseAudio replacement + ]; + }; + + Hardware = { + Boot = [ + efibootmgr # Linux user-space application to modify the EFI Boot Manager + grub # GNU GRand Unified Bootloader (2) + ]; + + Storage = [ + compsize # Calculate compression ratio of a set of files on Btrfs + smartmontools # Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives + ]; + + Input = [ + piper # GTK application to configure gaming mice + ]; + + Printer = [ + gutenprint # Top quality printer drivers for POSIX systems + sane-airscan # SANE - SANE backend for AirScan (eSCL) and WSD document scanners + ]; + + CPU = [ + cpupower # examine and tune power saving related features of your processor + ]; + }; + + Zsh = [ + zsh # A very advanced and programmable command interpreter (shell) for UNIX + zsh-syntax-highlighting # Fish shell like syntax highlighting for Zsh + + # next one only works if your alias is only a command, e.g. if you `alias='cat some_file.txt &2> /dev/null'`, running `cat some_file.txt` won't trigger it. + # TODO find something better for this use case + # zsh-you-should-use # ZSH plugin that reminds you to use existing aliases for commands you just typed + ]; + + CoreUtils = [ + file # File type identification utility + grep # A string search utility + sudo # Give certain users the ability to run some commands as root + wget # Network utility to retrieve files from the Web + which # A utility to show the full path of commands + ]; + + FileListers = [ + tree # A directory listing program displaying a depth indented list of files + findutils # GNU utilities to locate 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 + ]; + + UnCompressors = [ + zip # Compressor/archiver for creating and modifying zipfiles + gzip # GNU compression utility + p7zip # Command-line file archiver with high compression ratio + unzip # For extracting and viewing files in .zip archives + ]; + + Editors = [ + ed # A POSIX-compliant line-oriented text editor + sed # GNU stream editor + vi # The original ex/vi text editor + neovim # Fork of Vim aiming to improve user experience, plugins, and GUIs + ]; + + Programming = { + GeneralTools = [ + git # the fast distributed version control system + git-bug # Distributed, offline-first bug tracker embedded in git, with bridges + glow # Command-line markdown renderer + strace # A diagnostic, debugging and instructional userspace tracer + tokei # A blazingly fast CLOC (Count Lines Of Code) program + ]; + + Rust = [ + rustup # The Rust toolchain installer + rust-analyzer # Rust compiler front-end for IDEs + ]; + + Yaml = [ + yamllint # Linter for YAML files + ]; + + TeX = [ + zathura # Minimalistic document viewer + zathura-pdf-poppler # Adds pdf support to zathura by using the poppler engine + ltex-ls-bin # LTeX Language Server + biber # A Unicode-capable BibTeX replacement for biblatex users + pandoc # Conversion between markup formats + ]; + + Web = [ + vscode-langservers-extracted # Language servers extracted from VSCode. + dart-sass # Sass makes CSS fun again + prettier # An opinionated code formatter for JS, JSON, CSS, YAML and much more + ]; + + Shell = [ + dash # POSIX compliant shell that aims to be as small as possible + shellcheck # Shell script analysis tool + ]; + + Lua = [ + lua # Powerful lightweight programming language designed for extending applications + lua-format # LuaFormatter - Code formatter for Lua + lua-language-server # Lua Language Server coded by Lua + ]; + + R = [ + r # Language and environment for statistical computing and graphics + ]; + }; + }; + #expect # A tool for automating interactive applications + #handlr # Powerful alternative to xdg-utils written in Rust + #linux # The Linux kernel and modules + #linux-firmware # Firmware files for Linux + #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 isAttrs x + then attrValues x + else x; in { - environment.systemPackages = with pkgs; [ - packagesList + environment.systemPackages = with builtins; [ + map + mapFun + (map + mapFun + (map + mapFun + (attrValues Gui))) + + map + mapFun + (map + mapFun + (map + mapFun + (attrValues TuiCli))) ]; } # QEMU |