diff options
Diffstat (limited to '')
-rw-r--r-- | sys/nixpkgs/pkgs/scripts/default.nix | 350 |
1 files changed, 350 insertions, 0 deletions
diff --git a/sys/nixpkgs/pkgs/scripts/default.nix b/sys/nixpkgs/pkgs/scripts/default.nix new file mode 100644 index 00000000..faa546c7 --- /dev/null +++ b/sys/nixpkgs/pkgs/scripts/default.nix @@ -0,0 +1,350 @@ +{ + sysLib, + config, +}: [ + ( + final: prev: let + inherit (prev) lib; + + write_shell = { + name, + path, + dependencies ? [], + keepPath ? false, + completions ? false, + }: + sysLib.writeShellScript { + inherit name keepPath; + src = ./source/${path}/${name}.sh; + dependencies = dependencies ++ [prev.dash]; + generateCompletions = completions; + }; + write_python = { + name, + path, + dependencies_system ? [], + dependencies_python ? _: [], + keepPath ? false, + }: let + src = ./source/${path}/${name}.py; + dependencies = + [(prev.python3.withPackages dependencies_python)] + ++ dependencies_system; + path_setting = + if keepPath + then "--prefix PATH :" + else "--set PATH"; + in + prev.runCommandLocal name { + nativeBuildInputs = [prev.makeWrapper] ++ dependencies; + } + '' + install -m755 ${src} -D "$out/bin/${name}" + patchShebangs "$out/bin/${name}" + wrapProgram "$out/bin/${name}" ${path_setting} ${prev.lib.makeBinPath dependencies}; + ''; + + ## Begin of shell scripts + + aumo-scr = write_shell { + name = "aumo"; + path = "apps"; + dependencies = builtins.attrValues {inherit (prev) udisks gawk gnused gnugrep sudo;}; + }; + + battery-scr = write_shell { + name = "battery"; + path = "wrappers"; + dependencies = []; + }; + + con2pdf-scr = sysLib.writeShellScript { + name = "con2pdf"; + src = ./source/apps/con2pdf.sh; + dependencies = builtins.attrValues {inherit (prev) sane-backends imagemagick coreutils fd;}; + generateCompletions = true; + replacementStrings = { + DEVICE_FUNCTION = + # This is here, because escaping the whole function, to use it in the shell script + # directly just isn't possible + prev.writeText "DEVICE_FUNCTION" + /* + bash + */ + '' + scanimage -L | awk 'BEGIN { FS = "`" } { gsub(/'.*/, "", $2); print $2 }' + ''; + }; + }; + + description-scr = write_shell { + name = "description"; + path = "specific/ytcc"; + dependencies = builtins.attrValues { + inherit (prev) jq fmt less locale; + }; + }; + + fupdate-scr = write_shell { + name = "fupdate"; + path = "apps"; + keepPath = true; + dependencies = builtins.attrValues { + inherit + (prev) + dash + nix + gnugrep + fd + coreutils + bat # used by batgrep + gnused # required by batgrep + git # needed to fetch through git + git-crypt # needed to unlock git-crypted repos + ; + inherit (prev.bat-extras) batgrep; + }; + }; + + git-edit-index-scr = write_shell { + name = "git-edit-index"; + path = "apps"; + completions = true; + # This starts neovim, wich might want to shell out + keepPath = true; + dependencies = builtins.attrValues { + inherit + (prev) + git + gnused + # $EDITOR + + ; + }; + }; + + hibernate-scr = write_shell { + name = "hibernate"; + path = "wrappers"; + dependencies = builtins.attrValues { + inherit + (prev) + systemd + taskwarrior + ; + }; + }; + + ll-scr = sysLib.writeShellScript { + name = "ll"; + src = ./source/wrappers/ll.sh; + wrap = false; + }; + + # TODO: this need to be replaced with a wayland alternative + # llp-scr = write_shell { + # name = "llp"; + # path = "wrappers"; + # dependencies = builtins.attrValues {inherit (prev) lf ueberzug;}; + # }; + + lock-scr = write_shell { + name = "lock"; + path = "wrappers"; + dependencies = builtins.attrValues { + inherit + (prev) + taskwarrior + swaylock + ; + }; + }; + + lyrics-scr = write_shell { + name = "lyrics"; + path = "wrappers"; + dependencies = builtins.attrValues { + inherit + (prev) + exiftool + mpc-cli + jq + less + locale # dependency of less + ; + }; + }; + + mpc-fav-scr = write_shell { + name = "mpc-fav"; + path = "wrappers"; + dependencies = builtins.attrValues { + inherit + (prev) + mpc-cli + ; + }; + }; + + mpc-rm-scr = write_shell { + name = "mpc-rm"; + path = "wrappers"; + dependencies = builtins.attrValues { + inherit + (prev) + mpc-cli + trash-cli + ; + }; + }; + + mpc-scr = write_shell { + name = "mpc"; + path = "wrappers"; + dependencies = [ + mpc-fav-scr + mpc-rm-scr + prev.mpc-cli + ]; + }; + + nato-scr = write_python { + name = "nato"; + path = "small_functions"; + dependencies_python = ps: []; + }; + + neorg-scr = sysLib.writeShellScriptMultiPart { + name = "neorg"; + keepPath = true; + src = ./source/specific/neorg/sh; + baseName = "main.sh"; + cmdPrefix = "functions"; + cmdNames = [ + "add.sh" + "context.sh" + "dmenu.sh" + "f_start.sh" + "f_stop.sh" + "list.sh" + "project.sh" + "utils.sh" + "workspace.sh" + ]; + dependencies = with prev; [ + cocogitto + git-crypt + rofi + libnotify + ]; + generateCompletions = true; + replacementStrings = { + DEFAULT_NEORG_PROJECT_DIR = + config.programs.nixvim.plugins.neorg.modules."core.dirman".config.workspaces.projects; + HOME_TASKRC = "${config.xdg.configHome}/task/home-manager-taskrc"; + ALL_PROJECTS_NEWLINE = "${config.soispha.taskwarrior.projects.projects_newline}"; + ALL_PROJECTS_COMMA = "${config.soispha.taskwarrior.projects.projects_comma}"; + ALL_PROJECTS_PIPE = "${config.soispha.taskwarrior.projects.projects_pipe}"; + ALL_WORKSPACES = "${lib.strings.concatStringsSep "|" (builtins.attrNames config.programs.nixvim.plugins.neorg.modules."core.dirman".config.workspaces)}"; + ID_GENERATION_FUNCTION = "${sysLib.writeShellScript { + name = "neorg_id_function"; + src = ./source/specific/neorg/neorg_id_function.sh; + dependencies = with prev; [ + taskwarrior + gawk + findutils # xargs + ]; + }}/bin/neorg_id_function"; + + # TODO: Replace the hard-coded path here with some reference <2023-10-20> + TASK_PROJECT_FILE = "/home/soispha/repos/nix/nixos-config/hm/soispha/conf/taskwarrior/projects/default.nix"; + }; + }; + + screenshot_persistent-scr = write_shell { + name = "screenshot_persistent"; + path = "small_functions"; + keepPath = true; + dependencies = builtins.attrValues { + inherit + (prev) + grim + slurp + alacritty + rofi + libnotify + lf # TODO: add llp + ; + }; + }; + + screenshot_temporary-scr = write_shell { + name = "screenshot_temporary"; + path = "small_functions"; + dependencies = builtins.attrValues {inherit (prev) grim slurp wl-clipboard;}; + }; + + show-scr = write_shell { + name = "show"; + path = "wrappers"; + keepPath = true; # I might want to use nvim in less (and shell escapes) + dependencies = builtins.attrValues {inherit (prev) less locale;}; + }; + + sort_song-scr = write_shell { + name = "sort_song"; + path = "wrappers"; + dependencies = builtins.attrValues {inherit (prev) mediainfo jq gawk;}; + }; + + spodi-scr = write_shell { + name = "spodi"; + path = "wrappers"; + dependencies = builtins.attrValues {inherit (prev) gawk expect spotdl fd coreutils;}; + }; + + update-sys-scr = write_shell { + name = "update-sys"; + path = "small_functions"; + dependencies = builtins.attrValues {inherit (prev) git git-crypt nixos-rebuild sudo openssh coreutils mktemp gnugrep gnused;}; + }; + + virsh-del-scr = write_shell { + name = "virsh-del"; + path = "wrappers"; + dependencies = builtins.attrValues {inherit (prev) libvirt;}; + }; + + yti-scr = write_shell { + name = "yti"; + path = "wrappers"; + dependencies = builtins.attrValues {inherit (prev) gawk expect yt-dlp;}; + }; + in { + # llp = llp-scr; # TODO: see above + aumo = aumo-scr; + battery = battery-scr; + con2pdf = con2pdf-scr; + description = description-scr; + fupdate = fupdate-scr; + git-edit-index = git-edit-index-scr; + hibernate = hibernate-scr; + ll = ll-scr; + lock = lock-scr; + lyrics = lyrics-scr; + mpc-fav = mpc-fav-scr; + mpc-rm = mpc-rm-scr; + mpc = mpc-scr; + nato = nato-scr; + neorg = neorg-scr; + screenshot_persistent = screenshot_persistent-scr; + screenshot_temporary = screenshot_temporary-scr; + show = show-scr; + sort_song = sort_song-scr; + spodi = spodi-scr; + update-sys = update-sys-scr; + virsh-del = virsh-del-scr; + yti = yti-scr; + } + ) +] |