diff options
6 files changed, 0 insertions, 679 deletions
diff --git a/krebs/5pkgs/simple/flameshot-once/config.nix b/krebs/5pkgs/simple/flameshot-once/config.nix deleted file mode 100644 index 24df403aa..000000000 --- a/krebs/5pkgs/simple/flameshot-once/config.nix +++ /dev/null @@ -1,416 +0,0 @@ -{ config, pkgs, ... }: -with pkgs.stockholm.lib; - -let - # Encode integer to C-escaped string of bytes, little endian / LSB 0 - le = rec { - x1 = i: let - i0 = mod i 16; - i1 = i / 16; - in - if i == 0 then - "\\0" - else if i < 16 then - "\\x${elemAt hexchars i0}" - else - "\\x${elemAt hexchars i1}${elemAt hexchars i0}"; - - x2 = i: let - i0 = mod i 256; - i1 = i / 256; - in - "${x1 i1}${x1 i0}"; - - x4 = i: let - i0 = mod i 65536; - i1 = i / 65536; - in - "${x2 i1}${x2 i0}"; - }; - - toQList = t: xs: - assert t == "int"; - "QList<${t}>${le.x4 0}${le.x1 (length xs)}${concatMapStrings le.x4 xs}"; -in - -{ - options = { - imgur = mkOption { - default = {}; - type = types.submodule { - options = { - enable = mkEnableOption "imgur"; - createUrl = mkOption { - example = "http://p.r/image"; - type = types.str; - }; - deleteUrl = mkOption { - example = "http://p.r/image/delete/%1"; - type = types.str; - }; - xdg-open = mkOption { - default = {}; - type = types.submodule { - options = { - enable = mkEnableOption "imgur.xdg-open" // { - default = true; - }; - browser = mkOption { - default = "${pkgs.coreutils}/bin/false"; - type = types.str; - }; - createPrefix = mkOption { - default = config.imgur.createUrl; - type = types.str; - }; - deletePrefix = mkOption { - default = removeSuffix "/%1" config.imgur.deleteUrl; - type = types.str; - }; - }; - }; - }; - }; - }; - }; - package = mkOption { - type = types.package; - default = import ./flameshot { inherit pkgs; }; - }; - settings = { - # Options without a description are not documented in flameshot's README. - # Compare with: - # nix-shell -p flameshot-once.dev --run get-recognizedGeneralOptions - General = mapAttrs (_: recursiveUpdate { default = null; }) { - allowMultipleGuiInstances = mkOption { - description = '' - Allow multiple instances of `flameshot gui` to run at the same time - ''; - type = with types; nullOr bool; - }; - antialiasingPinZoom = mkOption { - description = '' - Anti-aliasing image when zoom the pinned image - ''; - type = with types; nullOr bool; - }; - autoCloseIdleDaemon = mkOption { - description = '' - Automatically close daemon when it's not needed - ''; - type = with types; nullOr bool; - }; - buttons = let - buttonTypes = { - # Generated with: - # nix-shell -p flameshot-once.dev --run get-buttonTypes - TYPE_PENCIL = 0; - TYPE_DRAWER = 1; - TYPE_ARROW = 2; - TYPE_SELECTION = 3; - TYPE_RECTANGLE = 4; - TYPE_CIRCLE = 5; - TYPE_MARKER = 6; - TYPE_SELECTIONINDICATOR = 7; - TYPE_MOVESELECTION = 8; - TYPE_UNDO = 9; - TYPE_COPY = 10; - TYPE_SAVE = 11; - TYPE_EXIT = 12; - TYPE_IMAGEUPLOADER = 13; - TYPE_OPEN_APP = 14; - TYPE_PIXELATE = 15; - TYPE_REDO = 16; - TYPE_PIN = 17; - TYPE_TEXT = 18; - TYPE_CIRCLECOUNT = 19; - TYPE_SIZEINCREASE = 20; - TYPE_SIZEDECREASE = 21; - TYPE_INVERT = 22; - TYPE_ACCEPT = 23; - }; - iterableButtonTypes = [ - # Generated with: - # nix-shell -p flameshot-once.dev --run get-iterableButtonTypes - "TYPE_ACCEPT" - "TYPE_ARROW" - "TYPE_CIRCLE" - "TYPE_CIRCLECOUNT" - "TYPE_COPY" - "TYPE_DRAWER" - "TYPE_EXIT" - "TYPE_IMAGEUPLOADER" - "TYPE_MARKER" - "TYPE_MOVESELECTION" - "TYPE_OPEN_APP" - "TYPE_PENCIL" - "TYPE_PIN" - "TYPE_PIXELATE" - "TYPE_RECTANGLE" - "TYPE_REDO" - "TYPE_SAVE" - "TYPE_SELECTION" - "TYPE_SIZEDECREASE" - "TYPE_SIZEINCREASE" - "TYPE_TEXT" - "TYPE_UNDO" - ]; - in mkOption { - apply = names: - if names != null then let - values = map (name: buttonTypes.${name}) names; - in - ''@Variant(\0\0\0\x7f\0\0\0\v${toQList "int" values})'' - else - null; - description = '' - Configure which buttons to show after drawing a selection - ''; - type = with types; nullOr (listOf (enum iterableButtonTypes)); - }; - checkForUpdates = mkOption { - type = with types; nullOr bool; - }; - contrastOpacity = mkOption { - description = '' - Opacity of area outside selection - ''; - type = with types; nullOr (boundedInt 0 255); - }; - contrastUiColor = mkOption { - description = '' - Contrast UI color - ''; - type = with types; nullOr flameshot.color; - }; - copyAndCloseAfterUpload = mkOption { - type = with types; nullOr bool; - }; - copyOnDoubleClick = mkOption { - type = with types; nullOr bool; - }; - copyPathAfterSave = mkOption { - description = '' - Copy path to image after save - ''; - type = with types; nullOr bool; - }; - copyURLAfterUpload = mkOption { - description = '' - On successful upload, close the dialog and copy URL to clipboard - ''; - type = with types; nullOr bool; - }; - disabledTrayIcon = mkOption { - description = '' - Whether the tray icon is disabled - ''; - type = with types; nullOr bool; - }; - drawColor = mkOption { - description = '' - Last used color - ''; - type = with types; nullOr flameshot.color; - }; - drawFontSize = mkOption { - type = with types; nullOr positive; - }; - drawThickness = mkOption { - description = '' - Last used tool thickness - ''; - type = with types; nullOr positive; - }; - filenamePattern = mkOption { - description = '' - Filename pattern using C++ strftime formatting - ''; - type = - # This is types.filename extended by [%:][%:+]* - with types; - nullOr (addCheck str (test "[%:0-9A-Za-z._][%:+0-9A-Za-z._-]*")); - }; - fontFamily = mkOption { - type = with types; nullOr str; - }; - historyConfirmationToDelete = mkOption { - type = with types; nullOr bool; - }; - ignoreUpdateToVersion = mkOption { - description = '' - Ignore updates to versions less than this value - ''; - type = with types; nullOr str; - }; - keepOpenAppLauncher = mkOption { - description = '' - Keep the App Launcher open after selecting an app - ''; - type = with types; nullOr bool; - }; - predefinedColorPaletteLarge = mkOption { - description = '' - Use larger color palette as the default one - ''; - type = with types; nullOr bool; - }; - saveAfterCopy = mkOption { - description = '' - Save image after copy - ''; - type = with types; nullOr bool; - }; - saveAsFileExtension = mkOption { - description = '' - Default file extension for screenshots - ''; - type = with types; nullOr (addCheck filename (hasPrefix ".")); - }; - safeLastRegion = mkOption { - type = with types; nullOr bool; - }; - savePath = mkOption { - description = '' - Image Save Path - ''; - type = with types; nullOr absolute-pathname; - }; - savePathFixed = mkOption { - description = '' - Whether the savePath is a fixed path - ''; - type = with types; nullOr bool; - }; - showDesktopNotification = mkOption { - description = '' - Show desktop notifications - ''; - type = with types; nullOr bool; - }; - showHelp = mkOption { - description = '' - Show the help screen on startup - ''; - type = with types; nullOr bool; - }; - showMagnifier = mkOption { - type = with types; nullOr bool; - }; - showSelectionGeometry = mkOption { - type = with types; nullOr (boundedInt 0 5); - }; - showSelectionGeometryHideTime = mkOption { - type = with types; nullOr uint; - }; - showSidePanelButton = mkOption { - description = '' - Show the side panel button - ''; - type = with types; nullOr bool; - }; - showStartupLaunchMessage = mkOption { - type = with types; nullOr bool; - }; - squareMagnifier = mkOption { - type = with types; nullOr bool; - }; - startupLaunch = mkOption { - description = '' - Launch at startup - ''; - type = with types; nullOr bool; - }; - uiColor = mkOption { - description = '' - Main UI color - ''; - type = with types; nullOr flameshot.color; - }; - undoLimit = mkOption { - type = with types; nullOr (boundedInt 0 999); - }; - uploadClientSecret = mkOption { - type = with types; nullOr str; - }; - uploadHistoryMax = mkOption { - type = with types; nullOr uint; - }; - uploadWithoutConfirmation = mkOption { - description = '' - Upload to imgur without confirmation - ''; - type = with types; nullOr bool; - }; - useJpgForClipboard = mkOption { - description = '' - Use JPG format instead of PNG - ''; - type = with types; nullOr bool; - }; - userColors = mkOption { - apply = value: - if value != null then - concatStringsSep ", " value - else - null; - description = '' - List of colors for color picker - The colors are arranged counter-clockwise with the first being set - to the right of the cursor. "picker" adds a custom color picker. - ''; - type = - with types; - nullOr (listOf (either flameshot.color (enum ["picker"]))); - }; - }; - Shortcuts = genAttrs [ - # Generated with: - # nix-shell -p flameshot-once.dev --run get-Shortcuts - "TYPE_ACCEPT" - "TYPE_ARROW" - "TYPE_CIRCLE" - "TYPE_CIRCLECOUNT" - "TYPE_COMMIT_CURRENT_TOOL" - "TYPE_COPY" - "TYPE_DELETE_CURRENT_TOOL" - "TYPE_DRAWER" - "TYPE_EXIT" - "TYPE_IMAGEUPLOADER" - "TYPE_INVERT" - "TYPE_MARKER" - "TYPE_MOVESELECTION" - "TYPE_MOVE_DOWN" - "TYPE_MOVE_LEFT" - "TYPE_MOVE_RIGHT" - "TYPE_MOVE_UP" - "TYPE_OPEN_APP" - "TYPE_PENCIL" - "TYPE_PIN" - "TYPE_PIXELATE" - "TYPE_RECTANGLE" - "TYPE_REDO" - "TYPE_RESIZE_DOWN" - "TYPE_RESIZE_LEFT" - "TYPE_RESIZE_RIGHT" - "TYPE_RESIZE_UP" - "TYPE_SAVE" - "TYPE_SELECTION" - "TYPE_SELECTIONINDICATOR" - "TYPE_SELECT_ALL" - "TYPE_SIZEDECREASE" - "TYPE_SIZEINCREASE" - "TYPE_SYM_RESIZE_DOWN" - "TYPE_SYM_RESIZE_LEFT" - "TYPE_SYM_RESIZE_RIGHT" - "TYPE_SYM_RESIZE_UP" - "TYPE_TEXT" - "TYPE_TOGGLE_PANEL" - "TYPE_UNDO" - ] (name: mkOption { - default = null; - type = with types; nullOr str; - }); - }; - }; -} diff --git a/krebs/5pkgs/simple/flameshot-once/default.nix b/krebs/5pkgs/simple/flameshot-once/default.nix deleted file mode 100644 index 3626409f3..000000000 --- a/krebs/5pkgs/simple/flameshot-once/default.nix +++ /dev/null @@ -1,149 +0,0 @@ -{ name ? "flameshot-once", pkgs, ... }@args: -with pkgs.stockholm.lib; - -let - # config cannot be declared in the input attribute set because that would - # cause callPackage to inject the wrong config. Instead, get it from ... - # via args. - config = args.config or {}; - - cfg = evalModulesConfig (singleton { - _file = toString ./default.nix; - _module.args.pkgs = pkgs; - imports = [ - config - ./config.nix - ]; - }); -in - -pkgs.symlinkJoin { - inherit name; - paths = [ - (pkgs.write "flameshot-once" { - "/bin/flameshot-once" = { - executable = true; - text = /* sh */ '' - #! ${pkgs.dash}/bin/dash - export PATH=${makeBinPath [ - pkgs.qt5.qtbase - ]}:''${PATH+:$PATH} - ${optionalString (config != null) /* sh */ '' - export XDG_CONFIG_HOME=${placeholder "out"}/etc - ${optionalString cfg.imgur.enable /* sh */ '' - export IMGUR_CREATE_URL=${shell.escape cfg.imgur.createUrl} - export IMGUR_DELETE_URL=${shell.escape cfg.imgur.deleteUrl} - ${optionalString cfg.imgur.xdg-open.enable /* sh */ '' - export PATH=${placeholder "out"}/lib/imgur/bin''${PATH+:$PATH} - ''} - ''} - ''} - ${cfg.package}/bin/flameshot & - exec ${cfg.package}/bin/flameshot gui - ''; - }; - "/etc/flameshot/flameshot.ini".text = - lib.generators.toINI {} (stripAttr cfg.settings); - ${if cfg.imgur.enable then "/lib/imgur/bin/xdg-open" else null} = { - executable = true; - text = /* sh */ '' - #! ${pkgs.dash}/bin/dash - set -efu - uri=$1 - prefix=$(${pkgs.coreutils}/bin/dirname "$uri") - case $prefix in - (${shell.escape cfg.imgur.xdg-open.createPrefix}) - echo "opening image in browser: $uri" >&2 - exec ${config.imgur.xdg-open.browser} "$uri" - ;; - (${shell.escape cfg.imgur.xdg-open.deletePrefix}) - echo "deleting image: $uri" >&2 - exec ${pkgs.curl}/bin/curl -fsS -X DELETE "$uri" - ;; - (*) - echo "don't know how to open URI: $uri" >&2 - exit 1 - esac - ''; - }; - }) - ]; -} -// { - dev = pkgs.write "flameshot-once-tools" { - "/bin/get-buttonTypes" = { - executable = true; - text = /* sh */ '' - #! ${pkgs.dash}/bin/dash - indent=$(${placeholder "out"}/bin/indent-of buttonTypes) - src=${cfg.package.src}/src/tools/capturetool.h - ${pkgs.coreutils}/bin/cat "$src" | - ${pkgs.gnused}/bin/sed -nr ' - s/^\s*(TYPE_\S+)\s*=\s*([0-9]+),/\1 = \2;/p - ' | - ${placeholder "out"}/bin/prefix " $indent" - ''; - }; - "/bin/get-iterableButtonTypes" = { - executable = true; - text = /* sh */ '' - #! ${pkgs.dash}/bin/dash - indent=$(${placeholder "out"}/bin/indent-of iterableButtonTypes) - src=${cfg.package.src}/src/widgets/capture/capturetoolbutton.cpp - ${pkgs.coreutils}/bin/cat "$src" | - ${pkgs.gnused}/bin/sed -n '/\<iterableButtonTypes = {/,/^}/p' | - ${pkgs.gcc}/bin/cpp | - ${pkgs.coreutils}/bin/tr , \\n | - ${pkgs.gnused}/bin/sed -rn 's/^ *CaptureTool::(TYPE_[A-Z_]+).*/"\1"/p' | - ${pkgs.coreutils}/bin/sort | - ${placeholder "out"}/bin/prefix " $indent" - ''; - }; - "/bin/get-recognizedGeneralOptions" = { - executable = true; - text = /* sh */ '' - #! ${pkgs.dash}/bin/dash - src=${cfg.package.src}/src/utils/confighandler.cpp - ${pkgs.coreutils}/bin/cat "$src" | - ${pkgs.gnused}/bin/sed -n '/\<recognizedGeneralOptions = {/,/^};/p' | - ${pkgs.gcc}/bin/cpp | - ${pkgs.gnugrep}/bin/grep -F OPTION | - ${pkgs.coreutils}/bin/sort - ''; - }; - "/bin/get-Shortcuts" = { - executable = true; - text = /* sh */ '' - #! ${pkgs.dash}/bin/dash - indent=$(${placeholder "out"}/bin/indent-of Shortcuts) - src=${cfg.package.src}/src/utils/confighandler.cpp - ${pkgs.coreutils}/bin/cat "$src" | - ${pkgs.gnused}/bin/sed -n '/recognizedShortcuts = {/,/^};/p ' | - ${pkgs.gcc}/bin/cpp | - ${pkgs.gnused}/bin/sed -nr 's/^\s*SHORTCUT\("(TYPE_[^"]+).*/"\1"/p' | - ${pkgs.coreutils}/bin/sort | - ${placeholder "out"}/bin/prefix " $indent" - ''; - }; - "/bin/indent-of" = { - executable = true; - text = /* sh */ '' - #! ${pkgs.dash}/bin/dash - # usage: indent-of NAME NIX_FILE - exec ${pkgs.gawk}/bin/awk -v name="$1" ' - $1 == name && $2 == "=" { - sub("[^ ].*", "") - print - } - ' ${./config.nix} - ''; - }; - "/bin/prefix" = { - executable = true; - text = /* sh */ '' - #! ${pkgs.dash}/bin/dash - ${pkgs.gawk}/bin/awk -v prefix="$1" '{ print prefix $0 }' - ''; - }; - }; -} diff --git a/krebs/5pkgs/simple/flameshot-once/flameshot/default.nix b/krebs/5pkgs/simple/flameshot-once/flameshot/default.nix deleted file mode 100644 index 43cfdb00d..000000000 --- a/krebs/5pkgs/simple/flameshot-once/flameshot/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs }: - -pkgs.flameshot.overrideAttrs (old: rec { - name = "flameshot-${version}"; - version = "12.1.0-pre"; - src = pkgs.fetchFromGitHub { - owner = "flameshot-org"; - repo = "flameshot"; - rev = "f7e41f4d708e50eeaec892408069da25a28e04a2"; - hash = "sha256-fZquXY0xSaN1hJgCh16MocIlvxHe1c2Nt+fGF2NIOVw="; - }; - patches = old.patches or [] ++ [ - ./flameshot-12.imgur.patch - ./flameshot-12.history.patch - ./flameshot-12.applauncher.patch - ]; -}) diff --git a/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.applauncher.patch b/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.applauncher.patch deleted file mode 100644 index 6937c55b3..000000000 --- a/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.applauncher.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/src/tools/launcher/applauncherwidget.cpp b/src/tools/launcher/applauncherwidget.cpp -index 8a202c89..7427aeb9 100644 ---- a/src/tools/launcher/applauncherwidget.cpp -+++ b/src/tools/launcher/applauncherwidget.cpp -@@ -20,6 +20,7 @@ - #include <QProcess> - #include <QStandardPaths> - #include <QTabWidget> -+#include <stdlib.h> - - namespace { - #if defined(Q_OS_WIN) -@@ -66,7 +67,12 @@ AppLauncherWidget::AppLauncherWidget(const QPixmap& p, QWidget* parent) - QDir appsDirLocal(dirLocal); - m_parser.processDirectory(appsDirLocal); - -- QString dir = QStringLiteral("/usr/share/applications/"); -+ const char *USER = secure_getenv("USER"); -+ QString dirUser = "/etc/profiles/per-user/" + QString::fromUtf8(USER) + "/share/applications/"; -+ QDir appsDirUser(dirUser); -+ m_parser.processDirectory(appsDirUser); -+ -+ QString dir = QStringLiteral("/run/current-system/sw/share/applications/"); - QDir appsDir(dir); - m_parser.processDirectory(appsDir); - #endif diff --git a/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.history.patch b/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.history.patch deleted file mode 100644 index 66f28a661..000000000 --- a/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.history.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/src/utils/history.cpp b/src/utils/history.cpp -index f3ee09d0..7c85c34b 100644 ---- a/src/utils/history.cpp -+++ b/src/utils/history.cpp -@@ -76,9 +76,9 @@ const HistoryFileName& History::unpackFileName(const QString& fileNamePacked) - int nPathIndex = fileNamePacked.lastIndexOf("/"); - QStringList unpackedFileName; - if (nPathIndex == -1) { -- unpackedFileName = fileNamePacked.split("-"); -+ unpackedFileName = fileNamePacked.split("|"); - } else { -- unpackedFileName = fileNamePacked.mid(nPathIndex + 1).split("-"); -+ unpackedFileName = fileNamePacked.mid(nPathIndex + 1).split("|"); - } - - switch (unpackedFileName.length()) { -@@ -109,9 +109,9 @@ const QString& History::packFileName(const QString& storageType, - if (storageType.length() > 0) { - if (deleteToken.length() > 0) { - m_packedFileName = -- storageType + "-" + deleteToken + "-" + m_packedFileName; -+ storageType + "|" + deleteToken + "|" + m_packedFileName; - } else { -- m_packedFileName = storageType + "-" + m_packedFileName; -+ m_packedFileName = storageType + "|" + m_packedFileName; - } - } - return m_packedFileName; diff --git a/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.imgur.patch b/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.imgur.patch deleted file mode 100644 index b6c3f497a..000000000 --- a/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.imgur.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/src/tools/imgupload/storages/imgur/imguruploader.cpp b/src/tools/imgupload/storages/imgur/imguruploader.cpp -index d6748b5a..5bb8d7de 100644 ---- a/src/tools/imgupload/storages/imgur/imguruploader.cpp -+++ b/src/tools/imgupload/storages/imgur/imguruploader.cpp -@@ -16,6 +16,7 @@ - #include <QNetworkRequest> - #include <QShortcut> - #include <QUrlQuery> -+#include <stdlib.h> - - ImgurUploader::ImgurUploader(const QPixmap& capture, QWidget* parent) - : ImgUploaderBase(capture, parent) -@@ -70,7 +71,13 @@ void ImgurUploader::upload() - QString description = FileNameHandler().parsedPattern(); - urlQuery.addQueryItem(QStringLiteral("description"), description); - -- QUrl url(QStringLiteral("https://api.imgur.com/3/image")); -+ const char *IMGUR_CREATE_URL = secure_getenv("IMGUR_CREATE_URL"); -+ QString createUrlPattern = -+ IMGUR_CREATE_URL != NULL -+ ? QString::fromUtf8(IMGUR_CREATE_URL) -+ : QStringLiteral("https://api.imgur.com/3/image") -+ ; -+ QUrl url(createUrlPattern); - url.setQuery(urlQuery); - QNetworkRequest request(url); - request.setHeader(QNetworkRequest::ContentTypeHeader, -@@ -87,8 +94,14 @@ void ImgurUploader::deleteImage(const QString& fileName, - const QString& deleteToken) - { - Q_UNUSED(fileName) -+ const char *IMGUR_DELETE_URL = secure_getenv("IMGUR_DELETE_URL"); -+ QString deleteImageURLPattern = -+ IMGUR_DELETE_URL != NULL -+ ? QString::fromUtf8(IMGUR_DELETE_URL) -+ : QStringLiteral("https://imgur.com/delete/%1") -+ ; - bool successful = QDesktopServices::openUrl( -- QUrl(QStringLiteral("https://imgur.com/delete/%1").arg(deleteToken))); -+ QUrl(deleteImageURLPattern.arg(deleteToken))); - if (!successful) { - notification()->showMessage(tr("Unable to open the URL.")); - } |