aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorene <ene@sils.li>2023-02-02 18:18:15 +0100
committerene <ene@sils.li>2023-02-03 17:35:02 +0100
commitcfc1bd35c2eb1d49284e4ce5a16c8f57f41a1296 (patch)
tree412ea9b4e2c5362e3a4c9cfb86c91ff886a85648
parentRefactor(packages): Refactored Packages (diff)
downloadnixos-config-cfc1bd35c2eb1d49284e4ce5a16c8f57f41a1296.zip
Feat: Reworked the packages configuration
Diffstat (limited to '')
-rw-r--r--system/packages/packages.nix304
1 files changed, 274 insertions, 30 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
- }
- }
+}:
+with pkgs; let
+ Gui = {
+ Terminals = [
+ alacritty # terminal emulator
+ ];
- }
- }' "./packages.conf" >> $out/clean.json
- echo ']' >> $out/clean.json
+ 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
+ ];
- packagesList = builtins.fromJSON "${output}/clean.json"; # TODO could work
+ 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