about summary refs log tree commit diff stats
path: root/sys/nixpkgs/pkgs/scripts/default.nix
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sys/nixpkgs/pkgs/scripts/default.nix350
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;
+    }
+  )
+]