LINUX.ORG.RU

Избранные сообщения Difrex

Как жить на Ubuntu без программ: пример с Nix и установкой Emacs

Форум — Talks

Так уж получилось, что, вроде бы, в последних выпусках ядра Linux или в каком-то другом компоненте что-то сломали, из-за чего на последней Fedora с Intel HD 4000 производительность графики просто отвратительная. Мне было влом разбираться, из-за чего такая регрессия на вполне известном старом железе (Thinkpad X230) и поэтому опытным путём было выяснено, что на Ubuntu 20.04 всё в порядке — на ней сейчас и пытаюсь жить.

Я избегаю использование LTS-дистрибутивов на рабочем железе, т.к. понятия не имею, откуда брать для них программы. Для Fedora это практически не является проблемой, т.к. инструменты разработки там поддерживаются хорошо и всё нужное можно найти в основных (или не очень, вроде полуофициального RPM Fusion) репозиториях. С Ubuntu это не так: из-за заморозки пакетов, пожалуйста, ешь устаревшие программы и на каждый чих подключай дополнительный репозиторий/PPA, что на самом деле не очень вариант, т.к. они не всегда есть, а если и есть — поддерживаются какими-то левыми людьми (что не плохо само по себе, просто не ясно, как долго и как качественно оно будет поддерживаться).

Ubuntu неплохой дистрибутив, но управление пакетами с помощью Apt — последнее, чем мне бы хотелось заниматься. Слава Богиням, практически все графические программы поставляются в виде Flatpak/Snap/AppImage, чего не сказать о CLI, демонах и средствах разработки. Но и тут повезло: и эту нишу закрывает ещё один пакетный менеджер — Nix, не заставляя устанавливать целую NixOS, разработчики которой сами признают, что оно пока непригодно для десктопа. Nix прекрасен: опакечено и собрано всё на свете, а чего нет — скорее всего присутствует в оверлеях (практически как в Gentoo!).

Установка буквально в одну команду (в этом примере для единственного пользователя):

sh <(curl -L https://nixos.org/nix/install) --no-daemon

Что нам сразу установит Nix с нестабильным каналом пакетов.

А чтобы не возиться с nix-env -Ai package вручную, есть Nix Home Manager:

nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
nix-channel --update home-manager
nix-shell '<home-manager>' -A install`

После установки которого у нас в $HOME/.config/nixpkgs/home.nix появляется нечто похожее на configuration.nix из NixOS, где можно централизованно описать состояние своей домашней директории. Моя свежеустановленная конфигурация выглядит так:

{ config, pkgs, ... }:


let
  nixGLIntel = (pkgs.callPackage "${builtins.fetchTarball {
    url = https://github.com/guibou/nixGL/archive/master.tar.gz;
  }}/nixGL.nix" {}).nixGLIntel;
  pkgsNixOS = import <nixos> {};
in
{
  # Let Home Manager install and manage itself.
  programs.home-manager.enable = true;

  home.packages = with pkgs; [
    youtube-dl
    fd
    ripgrep
    docker-compose
#    emacs
  ];

  programs.mpv = {
    enable = true;
    package =
      pkgs.writeShellScriptBin "mpv" ''
        #!/bin/sh

        ${nixGLIntel}/bin/nixGLIntel ${pkgs.mpv}/bin/mpv "$@"
      '';
  };

  programs.emacs = {
    enable = true;
    package = pkgsNixOS.emacsPgtkGcc;
  };

  services.syncthing.enable = true;

  # Home Manager needs a bit of information about you and the
  # paths it should manage.
  home.username = "commagray";
  home.homeDirectory = "/home/commagray";

  # This value determines the Home Manager release that your
  # configuration is compatible with. This helps avoid breakage
  # when a new Home Manager release introduces backwards
  # incompatible changes.
  #
  # You can update Home Manager without changing this value. See
  # the Home Manager release notes for a list of state version
  # changes in each release.
  home.stateVersion = "21.05";
}

В ней можно отметить несколько моментов.

  • Наличие nixGL. К сожалению, Nix всё ещё плохо работает с программами, которым нужно графическое ускорение. Этот небольшой враппер чинит GPU-ускорение, позволяя программам, вроде mpv, корректно использовать GPU и VA-API.
  • Странный пакет Emacs под названием emacsPgtkGcc. PGTK и native-comp — это патчи для Emacs, превращающие Emacs в правильную GTK-программу и включающие компилирование Elisp-кода в натив с помощью libgccjit. Мой выбор пал на Nix именно из-за того, что с помощью него можно легко установить данный патчсет, даже ничего не компилируя.
    • Установите Cachix — с помощью этой программы можно указать адрес кэша уже собранных Nix-пакетов.
      • nix-env -iA cachix -f https://cachix.org/api/v1/install
    • Добавьте оверлей для Emacs, где хэш — последний удачно собранный коммит.
    • Включите нужные репозитории с кэшем пакетов для оверлея.
      • cachix use nix-community
      • cachix use mjlbach
    • После очередного home-manager switch у вас появится Emacs.
    • Для отображения ярлыков в меню добавьте export XDG_DATA_DIRS="$HOME/.nix-profile/share:$XDG_DATA_DIRS" в свой $HOME/.profile.
commagray@Cloudsdale:~$ cat ~/.config/nixpkgs/overlays/emacs.nix 
import (builtins.fetchTarball {
  url = https://github.com/nix-community/emacs-overlay/archive/2438466b9a4f496191838457d208c09ebbe97991.tar.gz;
})

В таком виде у меня практически девственно чистая Ubuntu, коротая вряд ли сломается из-за конфликта установленных пакетов. Такой способ сработает со всеми дистрибутивами и даже macOS. Пользоваться приятно, не говоря уже о таких великих вещах, как nix-shell.

К чему я это всё вообще пишу? Управление программами в Linux в заднице, но компромиссные варианты вроде Flatpak и Nix упрощают жизнь.

 , , , ,

commagray
()

Сгенерить плоский календарь на основе расписания crontab

Форум — General

Камрады!

Как-то возможно визуализировать расписание кронаба чтобы это было в виде обычного календаря? Ну в смысле обычный плоский календарь с днями-клеточками, в которых строчки шириной, скажем, в полчаса, в которых задачи.

Спасибо.

 ,

targitaj
()

Вы верите в любовь с первого взгляда?

Форум — Talks

Господи, господи, господи. Десять.. нет, десять с половиной из десяти!

Установил Debian и решил опропобовать что вендор прописал, тобишь Gnome 3. Оно работает! http://i.imgur.com/0bAvzrq.png

До этого ставил Ubuntu, LTS и последний релиз включая бету, но не смог настроить смену раскладки клавиатуры по нажатию Alt / Alt Gr (правого Alt). Вместо этого в Ubuntu выскакивает какой-то HUD, в случае Debian с Gnome 3, — Debian ещё на этапе установки предложил установить сочетание клавиш для смены раскладки. И в Gnome 3 работает мой любимый правый Alt! Или вот, скачал ISO-образ чтобы записать на флешку, подключаею флешку, Ubuntu её монтирует автоматически, жмёшь Eject чтобы нормально записать образ через dd, а он флешку от питания отключает, лол.

Система была установлена на ноутбук, где жёсткий диск (да, нету денег на SSD) любит парковаться каждые 10 секунд. В Gnome 3 даже настройки есть для этого, парковка просто настраивается! Никакого hdparm даже ставить не нужно. Я, домохозяйка, впервые в глаза вижу Gnome 3 и сразу нашёл эту опцию. http://i.imgur.com/hWjmWNc.png

Вы видели всплывающие уведомления? Это не просто уведомления, можно писать ответы в них! Экая диковинка! http://i.imgur.com/3QxzvHh.png nickserv предлагает ввести пароль.

С Gnome 3 я наконец-то забыл, что такое пердолинг в консоли, что такое «реально удобно, реально ПОД СЕБЯ». Это просто няшнота. http://i.imgur.com/TCWFInu.png

Типа как знаете, предвзято, берёшь новенькую DE, изучаешь, сразу сходу видешь — это не так, это не нравится, это криво, а это вообще не работает, КГ/АМ. В Gnome 3 даже придраться ни к чему не могу, всё идеально, всё работает из коробки.

CRUX останется моим дистрибутивом «для души», домашний сервер, маршрутизатор на нём, ванильный софт из сорцов для ощущения полного контроля над системой.

А для десктопа... Я ещё не уверен с дистрибутивом, может есть что-то лучше Debian для десктопа? А DE — только Gnome 3. Это судьба!

 , ,

Spoofing
()

Славянофилов тред

Форум — Talks

http://www.youtube.com/watch?v=0JQ0xnJyb0A

http://www.youtube.com/watch?v=HNpLuXOg7xQ

Посоветуйте ещё что-нибудь подобное. =)

 

Spoofing
()

Perl 5.20

Новости — Open Source
Группа Open Source

Несколько часов назад состоялся релиз новой мажорной версии языка программирования Perl. Разработка Perl 5.20.0 заняла примерно 12 месяцев с момента выпуска Perl 5.18.0 и содержит около 470 000 строк изменений в 2 900 файлах от 124 авторов.

В этой версии достаточно много новшеств:

  • Subroutine signatures
    То, чего многие так ждали, а другие возражали привычным «ненужно»
    sub foo($bar, $baz) {
      print "\$bar=$bar, \$baz=$baz"
    }
    
    Таким образом теперь можно определять параметры функции в скобках после её имени. Есть и возможность задать значение по умолчанию
    sub bar($foo, $baz=10) {
      print '$foo+$baz=', $foo+$baz
    }
    
    О других особенностях новой экспериментальной возможности можно прочитать в perldoc perlsub. Стоит отметить, что старый механизм получения параметров функции из @_ также остаётся в силе.
  • Новый синтаксис для получения среза ключей-значений/индексов-значений для хешей/массивов
    %hash{...} и %array[...] соответственно
    %h = (blonk => 2, foo => 3, squink => 5, bar => 8);
    %subset = %h{'foo', 'bar'}; # срез ключ-значения для хеша
    # %subset теперь (foo => 3, bar => 8)
    
    @a = "a".."z";
    @list = %a[3,4,6]; # срез индекс-значения для массива
    # @list теперь (3, "d", 4, "e", 6, "g")
    
  • Постфиксное разыменовывание
    К старому доброму разыменовыванию ссылок, навроде @$foo и %$bar, был добавлен вариант постфиксного разыменовывания: $foo->@* и $bar->%* соответственно. Синтаксис для других типов ссылок можно посмотреть в perldoc perlref
  • Механизм копирования при записи (copy-on-write) для строк
    Теперь при присвоении переменной значения другой строковой переменной не создаётся копии буфера вплоть до тех пор, пока значение одной из переменных не будет изменено. Это увеличивает скорость присвоения и снижает потребление памяти. Теперь не потребуется передавать в функцию строковую переменную по ссылке, чтобы увеличить производительность.

>>> Подробности

 ,

Olegymous
()

Рабочее утро

Галерея — Скриншоты

На скрине:
ОС: openSUSE 12.2
ДЕ: KDE 4.9.2
Тема: qtcurve square с подправленными цветами
Тема plasma: full flat
Значки: Old oxygen

Окна так выстроены только для скрина. Обычно все развернуто на полный экран. Почти весь день провожу в Konsole фулскрин

>>> Просмотр (1680x1050, 1022 Kb)

 ,

Difrex
()

Предложены радикальные изменения в работу сети в Linux

Новости — Linux General
Группа Linux General

Olaf Kirch, участник коммьюнити SUSE, матерый Linux-хакер (с начала 1990х) и автор неоднократно переиздававшихся книг по настройке и администрированию сети в Linux, предложил сегодня на рассмотрение сообщества Fedora свою давно вынашиваемую идею — полностью переписать userspace стек управления сетью в Linux, учитывая накопленный за два десятка лет опыт. Новая архитектура сетевой подсистемы позволит, как считает Olaf, полностью отказаться как от неподдерживаемой мешанины bash-скриптов (давным-давно устаревших ifup/ifdown и прочего), так и от критикуемого за сложность и такую же неподдерживаемость NetworkManager. В предложенной им архитектуре сетевой стек четко разделяется на несколько слоев, сущности внутри которых конфигурируются с помощью XML.

Предложение уже получило как критические отзывы (от инженера Red Hat и текущего мэйнтейнера busybox, Denys Vlasenko), так и сдержанно заинтересованные ответы.

P.S. Olaf работает в Novell, и если вы нашли в его предложении архитектурные проблемы, или у вас есть идеи, как сделать лучше, то присылайте ему ваше резюме. Ваш шанс на трудоустройство, аналитики!

>>> Подробности

 , ,

r0ck3r
()