From 7d6f85d3b8ab064421a359a11b285668877b7d50 Mon Sep 17 00:00:00 2001 From: Alexander Neonxp Kiryukhin Date: Sun, 8 Feb 2026 17:31:26 +0300 Subject: =?UTF-8?q?=D0=9F=D0=BE=D1=81=D1=82=20=D0=BF=D1=80=D0=BE=20stplr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/posts/2025-02-08-stplr/index.md | 75 ++++++++++ content/projects/_index.md | 2 +- content/projects/stplr/index.md | 51 +++++++ hugo.yaml | 26 +++- static/img/git.svg | 1 + static/img/golang.svg | 3 + static/img/home.svg | 3 + static/img/logo.svg | 172 +++++++++++++++++++++++ static/img/notebook.svg | 3 + static/img/other.svg | 3 + static/img/project.svg | 3 + static/img/star.svg | 3 + static/img/tag.svg | 3 + themes/neonxp/assets/css/main.css | 5 +- themes/neonxp/assets/css/paper.css | 5 +- themes/neonxp/layouts/_default/section.feed.json | 31 ++++ 16 files changed, 382 insertions(+), 7 deletions(-) create mode 100644 content/posts/2025-02-08-stplr/index.md create mode 100644 content/projects/stplr/index.md create mode 100644 static/img/git.svg create mode 100644 static/img/golang.svg create mode 100644 static/img/home.svg create mode 100644 static/img/logo.svg create mode 100644 static/img/notebook.svg create mode 100644 static/img/other.svg create mode 100644 static/img/project.svg create mode 100644 static/img/star.svg create mode 100644 static/img/tag.svg create mode 100644 themes/neonxp/layouts/_default/section.feed.json diff --git a/content/posts/2025-02-08-stplr/index.md b/content/posts/2025-02-08-stplr/index.md new file mode 100644 index 0000000..31056c2 --- /dev/null +++ b/content/posts/2025-02-08-stplr/index.md @@ -0,0 +1,75 @@ +--- +title: Пакетный менеджер Stapler +date: "2026-02-08T15:02:12+03:00" +tags: + - Разное +categories: + - IT +--- + +Давеча я открыл для себя чудесный пакетный менеджер для Linux — [Stapler](https://stplr.dev/). + +Как я понял, делают его ребята из сообщества пользователей +[AltLinux](https://altlinux.org/), но он не заточен конкретно под Alt, а может +работать, по идее, на любом дистрибутиве. Ну а я уже давно использую этот +дистрибутив, поэтому у меня выработался пиетет ко всему связанному с AltLinux :) + +Самое близкое, как бы я его мог описать это смесь маковского Homebrew и +арчевского AUR. + +Основная прелесть для меня в том, что, во-первых, пакет описывается очень +простым [языком](https://stplr.dev/docs/dev/intro), а во-вторых, нет никакого +центрального репозитория пакетов, а есть только [обычные git +репозитории](https://stplr.dev/docs/intro#%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B8-%D1%81%D0%BE%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D0%B6%D0%B4%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0%D0%BC%D0%B8), +в которых лежат рецепты сборок пакетов. Именно последняя часть и роднит в моих +глазах Stapler и Homebrew, в котором, так же, любой пользователь мог сделать +свой кастомный репозиторий пакетов на базе обычного git репозитория. + +И да, конечно же, я запустил и свой репозиторий: +https://git.neonxp.ru/repo/about/ + +Эта возможность в том числе открывает пространство и для использования в +корпоративной среде, где с помощью этого инструмента можно легко и просто +организовать корпоративный репозиторий (или даже не один!) доверенного +внутреннего ПО для корпоративных компьютеров. + +Так же, в теории (эту мысль нужно будет продумать!) это может ложиться и на +процесс CI/CD с доставкой софта на сервера. + +## Использование + +Я бы мог здесь расписать как Stapler ставить и использовать, но зачем, если и +так есть отличная подробная документация — https://stplr.dev/docs/intro/ . + +Оставлю только команды для привлечения внимания: + +```sh +# Подключаем репозиторий проприетарного ПО, которого обычно нет в стандартных +# репозиториях дистрибутивов: +stplr repo add aides https://altlinux.space/aides-community/aides.git +# Подключаем мой маленький репозиторий: +stplr repo add neonxp.ru git://git.neonxp.ru/repo + +# Установка софта + +strplr install max # Установится из aides + +stplr install emacs # Установится уже из neonxp.ru +``` + +Удобно? Да! Просто? Проще некуда! + +## Что по планам? + +А ничего особенного. Буду потихоньку жить с этим инструментом и дополнять свой +репозиторий софтом по мере того, как буду сам в нём нуждаться или как будут +запросы на «опакечивание» того или иного свободного ПО. + +## Кстати! + +Раз уж я упомянул про запросы на «опакечивание», то они принимаются. Для этого +достаточно направить запрос в список рассылки посвящённый репозиторию: +[stplr@list.neonxp.ru](mailto:stplr@list.neonxp.ru). А ещё, на этот список можно +подписаться по желанию: +[stplr+subscribe@list.neonxp.ru](mailto:stplr+subscribe@list.neonxp.ru) +(достаточно туда написать любое письмо, в ответ придёт инструкция). diff --git a/content/projects/_index.md b/content/projects/_index.md index a703e30..09fbf86 100644 --- a/content/projects/_index.md +++ b/content/projects/_index.md @@ -7,5 +7,5 @@ title: Проекты -Ещё больше — на git репозитории +Ещё больше — на git репозитории и на моих go пакетах. diff --git a/content/projects/stplr/index.md b/content/projects/stplr/index.md new file mode 100644 index 0000000..3833ccd --- /dev/null +++ b/content/projects/stplr/index.md @@ -0,0 +1,51 @@ +--- +title: "stplr репозиторий свободного ПО" +--- + +В этом репозитории три основных группы софта: + +1. GNU софт +2. Софт который я использую в повседневной жизни и он мне нужен +3. Софт который пишу я (на Golang) + +При этом, я не вижу проблемы добавлять пакеты нужные другим людям. +Но это должен быть исключительно свободный софт и приоритетно под лицензией +семейства GPL. + +Для заказа нужного вам пакета - пишите в группу рассылки репозитория: +[mailto:stplr@list.neonxp.ru](mailto:stplr@list.neonxp.ru) + +Для подписки на список рассылки репозитория отправьте любое письмо на адрес +[mailto:stplr+subscribe@list.neonxp.ru](mailto:stplr+subscribe@list.neonxp.ru), +а дальше, следуйте присланной инструкции. + +## Установка репозитория + +1. Сначала нужно установить пакетный менеджер Stapler — + [https://stplr.dev/docs/intro](https://stplr.dev/docs/intro) +2. Добавление этого репозитория в Stapler: + + ``` + stplr repo add neonxp.ru git://git.neonxp.ru/repo + ``` + +## Установка приложений + +После добавления репозитория, установка любого приложения заключается в простой +команде + +``` +stplr install имя_приложения +``` + +Например, + +``` +stplr install recutils +``` + +## Ссылки + +- Пост в блоге про Stapler и этот репозиторий: [https://neonxp.ru/posts/2025-02-08-stplr/](https://neonxp.ru/posts/2025-02-08-stplr/) +- Сайт Stapler: [https://stplr.dev/](https://stplr.dev) +- Репозиторий Aides: [https://aides.space/](https://aides.space/) diff --git a/hugo.yaml b/hugo.yaml index 3351986..b5749a8 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -10,27 +10,39 @@ menus: main: - name: Главная pageRef: / + pre: weight: 10 - name: Блог pageRef: /posts + pre: weight: 20 - name: Теги pageRef: /tags + pre: weight: 25 - name: Категории pageRef: /categories + pre: weight: 26 - name: Проекты pageRef: /projects + pre: weight: 30 - name: Разное pageRef: /pages + pre: weight: 40 + - name: Git + url: https://git.neonxp.ru/ + pre: + weight: 50 - name: Go url: https://go.neonxp.ru/ - weight: 50 + pre: + weight: 55 - name: Я pageRef: /me + pre: weight: 60 - name: Atom url: /feed/ @@ -63,6 +75,7 @@ outputs: section: - html - atom + - feed page: - html taxonomy: @@ -78,11 +91,21 @@ outputFormats: isPlainText: false noUgly: true rel: "alternate" + feed: + mediaType: "application/json" + baseName: "feed" + isHTML: false + isPlainText: false + noUgly: true + rel: "alternate" mediaTypes: application/atom+xml: suffixes: - xml + application/json: + suffixes: + - json enableRobotsTXT: true @@ -91,4 +114,3 @@ imaging: quality: 75 hint: photo anchor: Smart - compression: lossless diff --git a/static/img/git.svg b/static/img/git.svg new file mode 100644 index 0000000..5bf444b --- /dev/null +++ b/static/img/git.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/golang.svg b/static/img/golang.svg new file mode 100644 index 0000000..634a860 --- /dev/null +++ b/static/img/golang.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/static/img/home.svg b/static/img/home.svg new file mode 100644 index 0000000..1697938 --- /dev/null +++ b/static/img/home.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/static/img/logo.svg b/static/img/logo.svg new file mode 100644 index 0000000..c595a71 --- /dev/null +++ b/static/img/logo.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NXP + diff --git a/static/img/notebook.svg b/static/img/notebook.svg new file mode 100644 index 0000000..a307156 --- /dev/null +++ b/static/img/notebook.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/static/img/other.svg b/static/img/other.svg new file mode 100644 index 0000000..f381614 --- /dev/null +++ b/static/img/other.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/static/img/project.svg b/static/img/project.svg new file mode 100644 index 0000000..bb73f0d --- /dev/null +++ b/static/img/project.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/static/img/star.svg b/static/img/star.svg new file mode 100644 index 0000000..d7729cd --- /dev/null +++ b/static/img/star.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/static/img/tag.svg b/static/img/tag.svg new file mode 100644 index 0000000..3e92376 --- /dev/null +++ b/static/img/tag.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/themes/neonxp/assets/css/main.css b/themes/neonxp/assets/css/main.css index 7edc2db..9d07479 100644 --- a/themes/neonxp/assets/css/main.css +++ b/themes/neonxp/assets/css/main.css @@ -126,9 +126,10 @@ img { } .menu-icon { - height: 16px; - width: 16px; + height: 24px; + width: 24px; border-radius: 0; + margin-bottom: -0.5rem; } a.btn-primary { diff --git a/themes/neonxp/assets/css/paper.css b/themes/neonxp/assets/css/paper.css index 35130ab..eb6b982 100644 --- a/themes/neonxp/assets/css/paper.css +++ b/themes/neonxp/assets/css/paper.css @@ -137,8 +137,9 @@ figure { max-width: 800px; } -figure img { - width: 100%; + +img { + max-width: 100%; } @media (max-width: 900px) { diff --git a/themes/neonxp/layouts/_default/section.feed.json b/themes/neonxp/layouts/_default/section.feed.json new file mode 100644 index 0000000..d7d70d0 --- /dev/null +++ b/themes/neonxp/layouts/_default/section.feed.json @@ -0,0 +1,31 @@ +{ + "version": "https://jsonfeed.org/version/1", + "title": {{ .Site.Title | jsonify }}, + "home_page_url": {{ .Permalink | jsonify }}, + {{ with .OutputFormats.Get "json" -}} + "feed_url": {{ .Permalink | jsonify }}, + {{- end }} + {{- if .Site.Params.author -}} + "author": { + "name": {{ .Site.Params.author | jsonify }} + }, + {{ end -}} + {{- if .Data.Pages -}} + "items": [ + {{ range $index, $element := first 10 .Data.Pages -}} + {{ if $index }},{{end}} { + "title": {{ $element.Title | jsonify }}, + "id": {{ $element.Permalink | jsonify }}, + "url": {{ $element.Permalink | jsonify }}, + "summary": {{ $element.Summary | jsonify }}, + {{- if eq $element.Type "link" -}} + "external_url": {{ $element.Params.link | jsonify }}, + {{- end -}} + "content_html": {{ $element.Content | jsonify }}, + "content_text": {{ $element.Plain | jsonify }}, + "date_published": {{ $element.Date.Format "2006-02-01T15:04:05-0700" | jsonify }} + } + {{- end }} + ] + {{ end -}} +} \ No newline at end of file -- cgit v1.2.3