Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

treewide: move "unstable" from version to pname #110442

Closed
wants to merge 1 commit into from

Conversation

davidak
Copy link
Member

@davidak davidak commented Jan 22, 2021

Motivation for this change

Fix #68518

This PR mainly moves "unstable" from version to pname. That's how it should be according to the rules in https://nixos.org/manual/nixpkgs/unstable/#sec-package-naming

Also

  • fixed some version formatting
  • changed name to pname
  • fixed some style issues
  • in some cases it was needed to replace ${pname} with the actual string, so it does not contain "unstable"
  • in tmux-plugins, the pluginName was changed. i don't know what issues that could cause. can the plugins still be installed?
  • in one case (ppx_tools) the "unstable" part was lost. i don't see how it can be added to pname. would it better be part of version than not have it?

I have done everything with some shell magic and reviewed every single file and did some manual clean ups.

# Replace pname variable with actual string
for file in $(egrep -lR "version.+=.+unstable" pkgs/); do pname=$(grep -oP '\s*pname = "\K[\w-]+(?=")' $file) && sed -i -E "s/[$]\{pname\}|[$]pname/$pname/g" $file; done

# Add '-unstable' to any pname
for file in $(egrep -lR "version.+=.+unstable" pkgs/); do sed -i '/pname =/s/";$/-unstable&/' $file; done

# Remove '-unstable' from any version
for file in $(egrep -lR "version.+=.+unstable" pkgs/); do sed -i '/version/s/unstable-//' $file; done

Since the name attribute was not changed in most cases, this should not trigger a mass rebuild to my understanding.

Please review carefully as this could cause a lot of trouble. I'm still brave enough to try it.

Things done

i'm testing it right now and fixing issues

  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

@ofborg ofborg bot added 6.topic: GNOME GNOME desktop environment and its underlying platform 6.topic: lua 6.topic: pantheon The Pantheon desktop environment 6.topic: printing 6.topic: python 6.topic: TeX Issues regarding texlive and TeX in general 8.has: documentation This PR adds or changes documentation 2.status: merge conflict This PR has merge conflicts with the target branch labels Jan 22, 2021
@ofborg ofborg bot removed the 2.status: merge conflict This PR has merge conflicts with the target branch label Jan 22, 2021
@davidak davidak force-pushed the unstable-name branch 3 times, most recently from 2750893 to 8c46cbb Compare January 22, 2021 07:23
Copy link
Contributor

@jonringer jonringer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not a big fan of including unsable in the pname. If I have "package a", it will still be a "package a" if I select a different release or commit. The package name should stay the same, but declare the difference through the version tag.

I wasn't around when the unstable convention began, but my guess is that it was because we didn't have a good way to distinguish between a stable or unstable release. However, I think we have better conventions now (zfs vs zfsUnstable), and the differences can be determined by the version, which could have part of the rev, date of commit, or a pre-release tag.

EDIT: Grammar

pkgs/applications/audio/dsf2flac/default.nix Show resolved Hide resolved
@davidak
Copy link
Member Author

davidak commented Jan 22, 2021

I'm not a big fan of including unsable in the pname. If I have "package a", it will still be a "package a" if I select a different release or commit. The package name should stay the same, but declare the difference through the version tag.

i agree that it would make sense that pname match the upstream name, but that is currently the official documented rule

i think this change was needed for repology. not sure if it is still needed @jtojnar

@davidak davidak force-pushed the unstable-name branch 2 times, most recently from b5e3168 to b979379 Compare January 22, 2021 08:15
@FRidh
Copy link
Member

FRidh commented Jan 22, 2021

When a revision is used instead of a reference or explicit release, it not always means it corresponds to an unstable version. The unstable' addition to the name is to indicate the unstable variant, as @jonringer points out, to differentiate from the stable version. Sometimes, we need to fetch a revision because using patches is not workable. Changing the pname affects nix-env users.

@jonringer
Copy link
Contributor

Changing the pname affects nix-env users.

nix-env users are already in a tough spot, even from something like many similar packages being available. For example:

nix-env -i python37
nix-env -u '*'

will get you python3.10 installed.

@davidak
Copy link
Member Author

davidak commented Jan 22, 2021

Changing the pname affects nix-env users.

so they don't get updates for installed packages, because the name does not exist anymore? that would be indeed very bad.

with the current rules, that would happen every time a package switches from stable to unstable release and the other way around

and i'm not sure if nix would update a package if the version changes from 0.5 to 2021-01-05

this one time i didn't question the existing rules, but it looks like i should 😬

so, how can we get to a consistent state from here. nixpkgs is a mess

@davidak davidak changed the base branch from master to staging January 22, 2021 09:16
according to the current rules https://nixos.org/manual/nixpkgs/stable/#sec-package-naming

Also

- fixed some version formatting
- changed `name` to `pname`
- fixed some style issues
- in some cases it was needed to replace `${pname}` with the actual string, so it does not contain "unstable"
- in tmux-plugins, the `pluginName` was changed
- in one case (ppx_tools) the "unstable" part was lost
@SuperSandro2000 SuperSandro2000 marked this pull request as draft January 22, 2021 09:28
@SuperSandro2000
Copy link
Member

Until we have no consent how to do this I don't think we should change it. I am still for changing nix to fit this usecase.

@jtojnar
Copy link
Member

jtojnar commented Jan 22, 2021

i think this change was needed for repology. not sure if it is still needed @jtojnar

Repology currently uses value nix-env parses from name. So the only way to make it work is to make -unstable suffix of version. See #100833

When a revision is used instead of a reference or explicit release, it not always means it corresponds to an unstable version. The unstable' addition to the name is to indicate the unstable variant, as @jonringer points out, to differentiate from the stable version. Sometimes, we need to fetch a revision because using patches is not workable. Changing the pname affects nix-env users.

nix-env only uses name so it does not matter for it whether unstable is a suffix of pname or prefix of version. The reason why we started moving unstable to version is to be able to get project name programmatically and because it makes more sense when we interpret pname as project name.

so they don't get updates for installed packages, because the name does not exist anymore? that would be indeed very bad.

with the current rules, that would happen every time a package switches from stable to unstable release and the other way around

Yes, that is correct.

and i'm not sure if nix would update a package if the version changes from 0.5 to 2021-01-05

If parseDrvName returns the same name component then it should. 2012-01-05 is lexicographically greater than 0.5, AFAICT. The other way around probably will not work, unless user explicitly specifies update policy flag #100833 (comment)

this one time i didn't question the existing rules, but it looks like i should grimacing

so, how can we get to a consistent state from here. nixpkgs is a mess

We need policy change along the lines of #100833 (comment) and #100833 (comment). That works for both nix-env and repology (if unstable is part of pname there is another, stable package with pname matching the project name). Of course, that requires consensus, which requires patience.

@davidak
Copy link
Member Author

davidak commented Jan 22, 2021

Result of nixpkgs-review pr 110442 1

69 packages marked as broken and skipped:
  • bonfire
  • foo-yc20
  • frogatto
  • gnomeExtensions.window-corner-preview
  • linuxPackages_4_4.asus-wmi-sensors
  • linuxPackages_4_9.asus-wmi-sensors
  • lua53Packages.ljsyscall
  • openmodelica
  • pbpst
  • purePackages.faust
  • python37Packages.arviz
  • python37Packages.dm-sonnet
  • python37Packages.graph_nets
  • python37Packages.optuna
  • python37Packages.pymc3
  • python37Packages.rl-coach
  • python37Packages.tensorflow-probability
  • python38Packages.arviz
  • python38Packages.dm-sonnet
  • python38Packages.graph_nets
  • python38Packages.optuna
  • python38Packages.pymc3
  • python38Packages.rl-coach
  • python38Packages.tensorflow-probability
  • python39Packages.apprise
  • python39Packages.atlassian-python-api
  • python39Packages.baselines
  • python39Packages.django-allauth
  • python39Packages.django-mailman3
  • python39Packages.dm-sonnet
  • python39Packages.edward
  • python39Packages.exchangelib
  • python39Packages.fitbit
  • python39Packages.flickrapi
  • python39Packages.google-auth-oauthlib
  • python39Packages.graph_nets
  • python39Packages.gspread
  • python39Packages.hyperkitty
  • python39Packages.ignite
  • python39Packages.jira
  • python39Packages.kubernetes
  • python39Packages.mailman-web
  • python39Packages.mwclient
  • python39Packages.mwoauth
  • python39Packages.postorius
  • python39Packages.pyalgotrade
  • python39Packages.pyatmo
  • python39Packages.pyro-ppl
  • python39Packages.python-twitter
  • python39Packages.pytorch
  • python39Packages.pytorch-lightning
  • python39Packages.pytorch-metric-learning
  • python39Packages.pytorchWithCuda
  • python39Packages.pytorchWithoutCuda
  • python39Packages.requests_oauthlib
  • python39Packages.rising
  • python39Packages.tensorflow
  • python39Packages.tensorflow-probability
  • python39Packages.tensorflow-tensorboard
  • python39Packages.tensorflowWithCuda
  • python39Packages.tensorflowWithoutCuda
  • python39Packages.tflearn
  • python39Packages.torchgpipe
  • python39Packages.torchvision
  • python39Packages.tweepy
  • python39Packages.vdirsyncer
  • rustracerd
  • xmonad_log_applet
  • xmonad_log_applet_gnome3
1219 packages failed to build:
  • EBTKS
  • Literate
  • SDL2_mixer
  • Sylk
  • _1oom
  • _20kly
  • abbaye-des-morts
  • adapta-gtk-theme
  • alacritty
  • alure2
  • ams
  • amule
  • amuleDaemon
  • amuleGui
  • anarchism
  • anbox
  • anki-bin
  • antfs-cli
  • anydesk
  • appcsxcad
  • appdaemon
  • appimage-run
  • apprise (python38Packages.apprise)
  • artyFX
  • assaultcube
  • augustus
  • autospotting
  • avrdudess
  • azure-cli
  • b2sum
  • bash-supergenpass
  • bctoolbox
  • bcunit
  • beets
  • beignet
  • belcard
  • belle-sip
  • belr
  • beluga
  • betterlockscreen
  • bibata-cursors-translucent
  • bicgl
  • bicon
  • bicpl
  • bitwig-studio
  • bitwig-studio1
  • bitwig-studio2
  • blackmagic
  • blueman
  • bluespec
  • bluetooth_battery
  • boxfort
  • brave
  • breezy (python38Packages.breezy)
  • browsh
  • bzrtp
  • c3d
  • cabal2nix
  • caffeine-ng
  • calibre
  • calibre-py2
  • cantoolz
  • carps-cups
  • cataclysm-dda
  • cataclysm-dda-git
  • cataract-unstable
  • catfish (xfce.catfish)
  • catfs
  • cc-tool
  • celestia
  • cheesecutter
  • chocolateDoom
  • chrome-gnome-shell
  • chromium
  • chromiumBeta
  • chromiumDev
  • chrysalis
  • cht-sh
  • cinnamon.cinnamon-screensaver
  • cinnamon.iso-flags-png-320x420
  • cinnamon.iso-flags-svg
  • citrix_workspace
  • citrix_workspace_20_04_0
  • citrix_workspace_20_06_0
  • citrix_workspace_20_09_0
  • citrix_workspace_20_10_0
  • cloud-init
  • cod
  • codebraid
  • coin3d
  • commandergenius
  • conglomerate
  • coz
  • craftos-pc
  • crawlTiles
  • crispyDoom
  • criterion
  • crowbar
  • csound-manual
  • csxcad
  • cura
  • deco
  • dee
  • deltachat-electron
  • demoit
  • dep2nix
  • desmume
  • devdocs-desktop
  • devilutionx
  • devpi-client
  • diskrsync
  • docbookrx
  • docker-machine-kvm2
  • documize-community
  • dpt-rp1-py
  • driversi686Linux.beignet
  • dropbox
  • dropbox-cli
  • dsf2flac
  • duckstation
  • dvc-with-remotes
  • easyjson
  • easyrpg-player
  • easysnap
  • echoip
  • edid-generator
  • eduke32
  • electron-cash
  • electronplayer
  • electrum
  • electrum-ltc
  • elf-dissector
  • emscriptenPackages.xmlmirror
  • endgame-singularity
  • ensemble-chorus
  • eureka-editor
  • ezminc
  • factor-lang
  • far2l
  • faust
  • faust2alqt
  • faust2alsa
  • faust2csound
  • faust2firefox
  • faust2jack
  • faust2jackrust
  • faust2jaqt
  • faust2ladspa
  • faust2lv2
  • faustlive
  • fbpanel
  • fdroidserver
  • feh
  • ferdi
  • fff
  • filezilla
  • firefox (firefox-wrapper ,firefoxWrapper)
  • firefox-beta-bin
  • firefox-bin
  • firefox-devedition-bin
  • firefox-esr (firefox-esr-wrapper)
  • firefox-wayland
  • flare
  • flatpak-builder
  • flips
  • fondo
  • fparser
  • fped
  • franz
  • freecad
  • freeswitch
  • freqtweak
  • frescobaldi
  • friture
  • fusee-launcher
  • g933-utils
  • gajim
  • gambit-unstable
  • ganv
  • gawk-with-extensions
  • gawkextlib.abort
  • gawkextlib.aregex
  • gawkextlib.csv
  • gawkextlib.errno
  • gawkextlib.gawkextlib
  • gawkextlib.gd
  • gawkextlib.haru
  • gawkextlib.json
  • gawkextlib.lmdb
  • gawkextlib.mbs
  • gawkextlib.mpfr
  • gawkextlib.nl_langinfo
  • gawkextlib.pgsql
  • gawkextlib.redis
  • gawkextlib.select
  • gawkextlib.timex
  • gawkextlib.xml
  • gdk-pixbuf-xlib
  • gemrb
  • genymotion
  • gerbil-unstable
  • ghdl
  • ghdl-llvm
  • gifticlib
  • gimp-with-plugins
  • gimpPlugins.gimplensfun
  • git-open
  • git-remote-hg
  • git-reparent
  • git-vanity-hash
  • glasgow (python38Packages.glasgow)
  • global
  • glpaper
  • gnash
  • gnome-desktop-testing
  • gnome-hexgl
  • gnome-keysign
  • gnome2.gtkglext
  • gnome3.aisleriot
  • gnome3.gnome-control-center
  • gnome3.gnome-session
  • gnome3.gnome-shell
  • gnome3.gnome-terminal
  • gnome3.gnome-tweak-tool
  • gnome3.gpaste
  • gnome3.mutter
  • networkmanager-iodine (gnome3.networkmanager-iodine ,networkmanager_iodine)
  • gnome3.pomodoro
  • gnomeExtensions.drop-down-terminal
  • gnomeExtensions.easyScreenCast
  • gnomeExtensions.gsconnect
  • gnomeExtensions.impatience
  • gnomeExtensions.night-theme-switcher
  • gnomeExtensions.system-monitor
  • gnomeExtensions.tilingnome
  • go-bindata
  • go-neb
  • go-outline
  • go2nix
  • gojsontoyaml
  • google-amber
  • google-chrome
  • google-chrome-beta
  • google-chrome-dev
  • google-music-scripts
  • graphene
  • grsync
  • gscrabble
  • gsmlib
  • gtg
  • gthree
  • gtimelog
  • guile-sdl2
  • gweled
  • gwyddion
  • hash_extender
  • haxor-news
  • hedgewars
  • herqq (libsForQt5.herqq)
  • hime
  • hipchat
  • hivelytracker
  • hobbes
  • http-getter
  • https-dns-proxy
  • hydra-unstable
  • i3-layout-manager
  • i3pystatus
  • iannix
  • iceshelf
  • icewm
  • icon-lang
  • impressive
  • industrializer
  • ingen
  • inormalize
  • instead
  • instead-launcher
  • intel-compute-runtime
  • intel-graphics-compiler
  • ion
  • ipfs-cluster
  • ipxe
  • irccloud
  • iso-flags
  • isso
  • istioctl
  • itm-tools
  • ivan
  • jackline
  • jira-cli
  • joplin-desktop
  • julius
  • jumpnbump
  • k3d
  • kapitonov-plugins-pack
  • kbdd
  • keepkey_agent (python38Packages.keepkey_agent)
  • keeweb
  • khal
  • kmscon
  • kodiPlugins.steam-launcher
  • kops
  • kops_1_16
  • kops_1_17
  • kotatogram-desktop
  • lab
  • latexrun
  • ledger-live-desktop
  • lens
  • lexicon
  • lguf-brightness
  • libelfin
  • liberal-crime-squad
  • liberio
  • libevdevplus
  • liblinphone
  • libminc
  • libnest2d
  • libraspberrypi
  • qcsxcad (libsForQt5.qcsxcad)
  • libsForQt5.soqt
  • libsForQt512.herqq
  • libsForQt512.qcsxcad
  • libsForQt512.soqt
  • libsForQt514.herqq
  • libsForQt514.qcsxcad
  • libsForQt514.soqt
  • libtgvoip
  • libubox
  • libunity
  • libuvc
  • libykclient
  • libzra
  • lifelines
  • lightspark
  • lime
  • linkchecker
  • linphone
  • linuxPackages-libre.asus-wmi-sensors
  • linuxPackages-libre.digimend
  • linuxPackages-libre.facetimehd
  • linuxPackages-libre.rtl8821cu
  • linuxPackages-libre.rtl88x2bu
  • linuxPackages.asus-wmi-sensors
  • linuxPackages.digimend
  • linuxPackages.facetimehd
  • linuxPackages.rtl8821cu
  • linuxPackages.rtl88x2bu
  • linuxPackages_4_14.asus-wmi-sensors
  • linuxPackages_4_14.digimend
  • linuxPackages_4_14.facetimehd
  • linuxPackages_4_14.rtl8821cu
  • linuxPackages_4_14.rtl88x2bu
  • linuxPackages_4_19.asus-wmi-sensors
  • linuxPackages_4_19.digimend
  • linuxPackages_4_19.facetimehd
  • linuxPackages_4_19.rtl8821cu
  • linuxPackages_4_19.rtl88x2bu
  • linuxPackages_4_4.digimend
  • linuxPackages_4_4.facetimehd
  • linuxPackages_4_4.rtl8821cu
  • linuxPackages_4_4.rtl88x2bu
  • linuxPackages_4_9.digimend
  • linuxPackages_4_9.facetimehd
  • linuxPackages_4_9.rtl8821cu
  • linuxPackages_4_9.rtl88x2bu
  • linuxPackages_5_10.asus-wmi-sensors
  • linuxPackages_5_10.digimend
  • linuxPackages_5_10.facetimehd
  • linuxPackages_5_10.rtl8821cu
  • linuxPackages_5_10.rtl88x2bu
  • linuxPackages_5_9.asus-wmi-sensors
  • linuxPackages_5_9.digimend
  • linuxPackages_5_9.facetimehd
  • linuxPackages_5_9.rtl8821cu
  • linuxPackages_5_9.rtl88x2bu
  • linuxPackages_hardened.asus-wmi-sensors
  • linuxPackages_hardened.digimend
  • linuxPackages_hardened.facetimehd
  • linuxPackages_hardened.rtl8821cu
  • linuxPackages_hardened.rtl88x2bu
  • linuxPackages_latest-libre.asus-wmi-sensors
  • linuxPackages_latest-libre.digimend
  • linuxPackages_latest-libre.facetimehd
  • linuxPackages_latest-libre.rtl8821cu
  • linuxPackages_latest-libre.rtl88x2bu
  • linuxPackages_latest_hardened.asus-wmi-sensors
  • linuxPackages_latest_hardened.digimend
  • linuxPackages_latest_hardened.facetimehd
  • linuxPackages_latest_hardened.rtl8821cu
  • linuxPackages_latest_hardened.rtl88x2bu
  • linuxPackages_latest_xen_dom0.asus-wmi-sensors
  • linuxPackages_latest_xen_dom0.digimend
  • linuxPackages_latest_xen_dom0.facetimehd
  • linuxPackages_latest_xen_dom0.rtl8821cu
  • linuxPackages_latest_xen_dom0.rtl88x2bu
  • linuxPackages_latest_xen_dom0_hardened.asus-wmi-sensors
  • linuxPackages_latest_xen_dom0_hardened.digimend
  • linuxPackages_latest_xen_dom0_hardened.facetimehd
  • linuxPackages_latest_xen_dom0_hardened.rtl8821cu
  • linuxPackages_latest_xen_dom0_hardened.rtl88x2bu
  • linuxPackages_lqx.asus-wmi-sensors
  • linuxPackages_lqx.digimend
  • linuxPackages_lqx.facetimehd
  • linuxPackages_lqx.rtl8821cu
  • linuxPackages_lqx.rtl88x2bu
  • linuxPackages_testing_bcachefs.asus-wmi-sensors
  • linuxPackages_testing_bcachefs.digimend
  • linuxPackages_testing_bcachefs.facetimehd
  • linuxPackages_testing_bcachefs.rtl8821cu
  • linuxPackages_testing_bcachefs.rtl88x2bu
  • linuxPackages_xen_dom0.asus-wmi-sensors
  • linuxPackages_xen_dom0.digimend
  • linuxPackages_xen_dom0.facetimehd
  • linuxPackages_xen_dom0.rtl8821cu
  • linuxPackages_xen_dom0.rtl88x2bu
  • linuxPackages_xen_dom0_hardened.asus-wmi-sensors
  • linuxPackages_xen_dom0_hardened.digimend
  • linuxPackages_xen_dom0_hardened.facetimehd
  • linuxPackages_xen_dom0_hardened.rtl8821cu
  • linuxPackages_xen_dom0_hardened.rtl88x2bu
  • linuxPackages_zen.asus-wmi-sensors
  • linuxPackages_zen.digimend
  • linuxPackages_zen.facetimehd
  • linuxPackages_zen.rtl8821cu
  • linuxPackages_zen.rtl88x2bu
  • littlegptracker
  • lobster
  • loop
  • lua51Packages.ljsyscall
  • lua52Packages.ljsyscall
  • luajitPackages.ljsyscall
  • lumina.lumina
  • lunar-client
  • lutris
  • lutris-free
  • lxpanel
  • magnetico
  • mailman-web (python38Packages.mailman-web)
  • manaplus
  • manim
  • marktext
  • mate.caja-dropbox
  • matrix-dl
  • mcomix3
  • mdctags
  • mediastreamer
  • mediastreamer-openh264
  • meme
  • midori (midoriWrapper)
  • minc_tools
  • minc_widgets
  • minetime
  • minikube
  • minishift
  • mjpg-streamer
  • mkvtoolnix
  • mkvtoolnix-cli
  • mmixware
  • mmsd
  • mni_autoreg
  • molly-brown
  • molot-lite
  • molotov
  • monado
  • monitor
  • mooSpace
  • morph
  • mpris-scrobbler
  • mps-youtube
  • mpvScripts.convert
  • mpvScripts.sponsorblock
  • msilbc
  • multilockscreen
  • mumlib
  • mumsi
  • musly
  • mutest
  • mycrypto
  • mytetra
  • n3
  • nestopia
  • netifd
  • networkmanager-sstp
  • ngadmin
  • ngrok-1
  • nix-prefetch-bzr
  • nix-prefetch-scripts
  • nix-update-source
  • notable
  • noweb
  • np2kai
  • nrfutil
  • nuclear
  • nvidia-texture-tools
  • nxengine-evo
  • oberon-risc-emu
  • ocamlPackages.npy
  • ocamlPackages.owl
  • ocamlPackages.phylogenetics
  • ocamlPackages.torch
  • ofono-phonesim
  • ola
  • oobicpl
  • open-vm-tools
  • opencl-clang
  • openconnect_pa
  • opendune
  • openems
  • openshift
  • ortp
  • p3x-onenote
  • packetdrill
  • panopticon
  • pantheon.elementary-dock
  • pantheon.elementary-files
  • pantheon.elementary-greeter
  • pantheon.elementary-gsettings-schemas
  • pantheon.elementary-notifications
  • pantheon.elementary-photos
  • pantheon.elementary-session-settings
  • pantheon.gala
  • pantheon.switchboard-plug-notifications
  • pantheon.switchboard-plug-pantheon-shell
  • pantheon.switchboard-with-plugs
  • pantheon.wingpanel
  • pantheon.wingpanel-applications-menu
  • pantheon.wingpanel-indicator-bluetooth
  • pantheon.wingpanel-indicator-datetime
  • pantheon.wingpanel-indicator-keyboard
  • pantheon.wingpanel-indicator-network
  • pantheon.wingpanel-indicator-nightlight
  • pantheon.wingpanel-indicator-notifications
  • pantheon.wingpanel-indicator-power
  • pantheon.wingpanel-indicator-session
  • pantheon.wingpanel-indicator-sound
  • pantheon.wingpanel-with-indicators
  • pass-secret-service
  • patchage
  • patroni
  • pcb
  • pcsx2
  • perkeep
  • pev
  • pick-colour-picker
  • piglit
  • pim6sd
  • pingus
  • planner
  • plexamp
  • pplatex
  • prometheus-lnd-exporter
  • prometheus-varnish-exporter
  • protontricks
  • pulseaudio-dlna
  • puppeteer-cli
  • purple-discord
  • pysolfc
  • python37Packages.apprise
  • python37Packages.atlassian-python-api
  • python37Packages.azure-appconfiguration
  • python37Packages.azure-applicationinsights
  • python37Packages.azure-batch
  • python37Packages.azure-core
  • python37Packages.azure-eventgrid
  • python37Packages.azure-functions-devops-build
  • python37Packages.azure-graphrbac
  • python37Packages.azure-identity
  • python37Packages.azure-keyvault
  • python37Packages.azure-keyvault-administration
  • python37Packages.azure-keyvault-certificates
  • python37Packages.azure-keyvault-keys
  • python37Packages.azure-keyvault-secrets
  • python37Packages.azure-loganalytics
  • python37Packages.azure-mgmt-advisor
  • python37Packages.azure-mgmt-apimanagement
  • python37Packages.azure-mgmt-appconfiguration
  • python37Packages.azure-mgmt-applicationinsights
  • python37Packages.azure-mgmt-authorization
  • python37Packages.azure-mgmt-batch
  • python37Packages.azure-mgmt-batchai
  • python37Packages.azure-mgmt-billing
  • python37Packages.azure-mgmt-botservice
  • python37Packages.azure-mgmt-cdn
  • python37Packages.azure-mgmt-cognitiveservices
  • python37Packages.azure-mgmt-commerce
  • python37Packages.azure-mgmt-common
  • python37Packages.azure-mgmt-compute
  • python37Packages.azure-mgmt-consumption
  • python37Packages.azure-mgmt-containerinstance
  • python37Packages.azure-mgmt-containerregistry
  • python37Packages.azure-mgmt-containerservice
  • python37Packages.azure-mgmt-core
  • python37Packages.azure-mgmt-cosmosdb
  • python37Packages.azure-mgmt-databoxedge
  • python37Packages.azure-mgmt-datafactory
  • python37Packages.azure-mgmt-datalake-analytics
  • python37Packages.azure-mgmt-datalake-store
  • python37Packages.azure-mgmt-datamigration
  • python37Packages.azure-mgmt-deploymentmanager
  • python37Packages.azure-mgmt-devspaces
  • python37Packages.azure-mgmt-devtestlabs
  • python37Packages.azure-mgmt-dns
  • python37Packages.azure-mgmt-eventgrid
  • python37Packages.azure-mgmt-eventhub
  • python37Packages.azure-mgmt-hanaonazure
  • python37Packages.azure-mgmt-hdinsight
  • python37Packages.azure-mgmt-imagebuilder
  • python37Packages.azure-mgmt-iotcentral
  • python37Packages.azure-mgmt-iothub
  • python37Packages.azure-mgmt-iothubprovisioningservices
  • python37Packages.azure-mgmt-keyvault
  • python37Packages.azure-mgmt-kusto
  • python37Packages.azure-mgmt-loganalytics
  • python37Packages.azure-mgmt-logic
  • python37Packages.azure-mgmt-machinelearningcompute
  • python37Packages.azure-mgmt-managedservices
  • python37Packages.azure-mgmt-managementgroups
  • python37Packages.azure-mgmt-managementpartner
  • python37Packages.azure-mgmt-maps
  • python37Packages.azure-mgmt-marketplaceordering
  • python37Packages.azure-mgmt-media
  • python37Packages.azure-mgmt-monitor
  • python37Packages.azure-mgmt-msi
  • python37Packages.azure-mgmt-netapp
  • python37Packages.azure-mgmt-network
  • python37Packages.azure-mgmt-notificationhubs
  • python37Packages.azure-mgmt-policyinsights
  • python37Packages.azure-mgmt-powerbiembedded
  • python37Packages.azure-mgmt-privatedns
  • python37Packages.azure-mgmt-rdbms
  • python37Packages.azure-mgmt-recoveryservices
  • python37Packages.azure-mgmt-recoveryservicesbackup
  • python37Packages.azure-mgmt-redhatopenshift
  • python37Packages.azure-mgmt-redis
  • python37Packages.azure-mgmt-relay
  • python37Packages.azure-mgmt-reservations
  • python37Packages.azure-mgmt-resource
  • python37Packages.azure-mgmt-scheduler
  • python37Packages.azure-mgmt-search
  • python37Packages.azure-mgmt-security
  • python37Packages.azure-mgmt-servicebus
  • python37Packages.azure-mgmt-servicefabric
  • python37Packages.azure-mgmt-signalr
  • python37Packages.azure-mgmt-sql
  • python37Packages.azure-mgmt-sqlvirtualmachine
  • python37Packages.azure-mgmt-storage
  • python37Packages.azure-mgmt-subscription
  • python37Packages.azure-mgmt-synapse
  • python37Packages.azure-mgmt-trafficmanager
  • python37Packages.azure-mgmt-web
  • python37Packages.azure-multiapi-storage
  • python37Packages.azure-servicebus
  • python37Packages.azure-servicefabric
  • python37Packages.azure-storage-blob
  • python37Packages.azure-storage-file-share
  • python37Packages.azure-synapse-accesscontrol
  • python37Packages.azure-synapse-artifacts
  • python37Packages.azure-synapse-spark
  • python37Packages.baselines
  • python37Packages.batchspawner
  • python37Packages.breezy
  • python37Packages.bt_proximity
  • python37Packages.bugwarrior
  • python37Packages.check-manifest
  • python37Packages.discogs_client
  • python37Packages.django-allauth
  • python37Packages.django-mailman3
  • python37Packages.django-oauth-toolkit
  • python37Packages.dockerspawner
  • python37Packages.edward
  • python37Packages.exchangelib
  • python37Packages.fitbit
  • python37Packages.flickrapi
  • python37Packages.glasgow
  • python37Packages.google-auth-oauthlib
  • python37Packages.google-music
  • python37Packages.gpyopt
  • python37Packages.gspread
  • python37Packages.gtimelog
  • python37Packages.gumath
  • python37Packages.hyperkitty
  • python37Packages.ignite
  • python37Packages.ipydatawidgets
  • python37Packages.jira
  • python37Packages.jupyterhub
  • python37Packages.jupyterhub-ldapauthenticator
  • python37Packages.jupyterhub-systemdspawner
  • python37Packages.jupyterhub-tmpauthenticator
  • python37Packages.keepkey
  • python37Packages.keepkey_agent
  • python37Packages.kinparse
  • python37Packages.kubernetes
  • python37Packages.launchpadlib
  • python37Packages.lazr-restfulclient
  • python37Packages.mailman-web
  • python37Packages.mask-rcnn
  • python37Packages.mido
  • python37Packages.msrest
  • python37Packages.msrestazure
  • python37Packages.mwclient
  • python37Packages.mwoauth
  • python37Packages.nbmerge
  • python37Packages.ndtypes
  • python37Packages.nix-kernel
  • python37Packages.nmigen
  • python37Packages.nmigen-boards
  • python37Packages.nmigen-soc
  • python37Packages.oauthenticator
  • python37Packages.oauthlib
  • python37Packages.papis
  • python37Packages.pivy
  • python37Packages.postorius
  • python37Packages.privacyidea
  • python37Packages.ptable
  • python37Packages.py3buddy
  • python37Packages.pyads
  • python37Packages.pyalgotrade
  • python37Packages.pyatmo
  • python37Packages.pybluez
  • python37Packages.pyfantom
  • python37Packages.pygame
  • python37Packages.pygame_sdl2
  • python37Packages.pymaging
  • python37Packages.pymaging_png
  • python37Packages.pynest2d
  • python37Packages.pyro-ppl
  • python37Packages.pysdl2
  • python37Packages.pysnow
  • python37Packages.pyspinel
  • python37Packages.pytest-ordering
  • python37Packages.python-csxcad
  • python37Packages.python-mapnik
  • python37Packages.python-openems
  • python37Packages.python-twitter
  • python37Packages.python-unshare
  • python37Packages.pytmx
  • python37Packages.pytorch (python37Packages.pytorchWithoutCuda)
  • python37Packages.pytorch-lightning
  • python37Packages.pytorch-metric-learning
  • python37Packages.pytorchWithCuda
  • python37Packages.pytricia
  • python37Packages.pywal
  • python37Packages.pywick
  • python37Packages.qrcode
  • python37Packages.requests_oauthlib
  • python37Packages.rising
  • python37Packages.scikit-fuzzy
  • python37Packages.shap
  • python37Packages.skidl
  • python37Packages.skorch
  • python37Packages.slicer
  • python37Packages.slob
  • python37Packages.snowflake-connector-python
  • python37Packages.snowflake-sqlalchemy
  • python37Packages.softlayer
  • python37Packages.tensorboardx
  • python37Packages.tensorflow (python37Packages.tensorflowWithoutCuda)
  • python37Packages.tensorflow-bin
  • python37Packages.tensorflow-tensorboard
  • python37Packages.tensorflowWithCuda
  • python37Packages.tess
  • python37Packages.test-tube
  • python37Packages.tflearn
  • python37Packages.toggl-cli
  • python37Packages.torchgpipe
  • python37Packages.torchvision
  • python37Packages.traittypes
  • python37Packages.transforms3d
  • python37Packages.trezor
  • python37Packages.trezor_agent
  • python37Packages.tweepy
  • python37Packages.vdirsyncer
  • python37Packages.vsts
  • python37Packages.vsts-cd-manager
  • python37Packages.xnd
  • python38Packages.atlassian-python-api
  • python38Packages.azure-appconfiguration
  • python38Packages.azure-applicationinsights
  • python38Packages.azure-batch
  • python38Packages.azure-core
  • python38Packages.azure-eventgrid
  • python38Packages.azure-functions-devops-build
  • python38Packages.azure-graphrbac
  • python38Packages.azure-identity
  • python38Packages.azure-keyvault
  • python38Packages.azure-keyvault-administration
  • python38Packages.azure-keyvault-certificates
  • python38Packages.azure-keyvault-keys
  • python38Packages.azure-keyvault-secrets
  • python38Packages.azure-loganalytics
  • python38Packages.azure-mgmt-advisor
  • python38Packages.azure-mgmt-apimanagement
  • python38Packages.azure-mgmt-appconfiguration
  • python38Packages.azure-mgmt-applicationinsights
  • python38Packages.azure-mgmt-authorization
  • python38Packages.azure-mgmt-batch
  • python38Packages.azure-mgmt-batchai
  • python38Packages.azure-mgmt-billing
  • python38Packages.azure-mgmt-botservice
  • python38Packages.azure-mgmt-cdn
  • python38Packages.azure-mgmt-cognitiveservices
  • python38Packages.azure-mgmt-commerce
  • python38Packages.azure-mgmt-common
  • python38Packages.azure-mgmt-compute
  • python38Packages.azure-mgmt-consumption
  • python38Packages.azure-mgmt-containerinstance
  • python38Packages.azure-mgmt-containerregistry
  • python38Packages.azure-mgmt-containerservice
  • python38Packages.azure-mgmt-core
  • python38Packages.azure-mgmt-cosmosdb
  • python38Packages.azure-mgmt-databoxedge
  • python38Packages.azure-mgmt-datafactory
  • python38Packages.azure-mgmt-datalake-analytics
  • python38Packages.azure-mgmt-datalake-store
  • python38Packages.azure-mgmt-datamigration
  • python38Packages.azure-mgmt-deploymentmanager
  • python38Packages.azure-mgmt-devspaces
  • python38Packages.azure-mgmt-devtestlabs
  • python38Packages.azure-mgmt-dns
  • python38Packages.azure-mgmt-eventgrid
  • python38Packages.azure-mgmt-eventhub
  • python38Packages.azure-mgmt-hanaonazure
  • python38Packages.azure-mgmt-hdinsight
  • python38Packages.azure-mgmt-imagebuilder
  • python38Packages.azure-mgmt-iotcentral
  • python38Packages.azure-mgmt-iothub
  • python38Packages.azure-mgmt-iothubprovisioningservices
  • python38Packages.azure-mgmt-keyvault
  • python38Packages.azure-mgmt-kusto
  • python38Packages.azure-mgmt-loganalytics
  • python38Packages.azure-mgmt-logic
  • python38Packages.azure-mgmt-machinelearningcompute
  • python38Packages.azure-mgmt-managedservices
  • python38Packages.azure-mgmt-managementgroups
  • python38Packages.azure-mgmt-managementpartner
  • python38Packages.azure-mgmt-maps
  • python38Packages.azure-mgmt-marketplaceordering
  • python38Packages.azure-mgmt-media
  • python38Packages.azure-mgmt-monitor
  • python38Packages.azure-mgmt-msi
  • python38Packages.azure-mgmt-netapp
  • python38Packages.azure-mgmt-network
  • python38Packages.azure-mgmt-notificationhubs
  • python38Packages.azure-mgmt-policyinsights
  • python38Packages.azure-mgmt-powerbiembedded
  • python38Packages.azure-mgmt-privatedns
  • python38Packages.azure-mgmt-rdbms
  • python38Packages.azure-mgmt-recoveryservices
  • python38Packages.azure-mgmt-recoveryservicesbackup
  • python38Packages.azure-mgmt-redhatopenshift
  • python38Packages.azure-mgmt-redis
  • python38Packages.azure-mgmt-relay
  • python38Packages.azure-mgmt-reservations
  • python38Packages.azure-mgmt-resource
  • python38Packages.azure-mgmt-scheduler
  • python38Packages.azure-mgmt-search
  • python38Packages.azure-mgmt-security
  • python38Packages.azure-mgmt-servicebus
  • python38Packages.azure-mgmt-servicefabric
  • python38Packages.azure-mgmt-signalr
  • python38Packages.azure-mgmt-sql
  • python38Packages.azure-mgmt-sqlvirtualmachine
  • python38Packages.azure-mgmt-storage
  • python38Packages.azure-mgmt-subscription
  • python38Packages.azure-mgmt-synapse
  • python38Packages.azure-mgmt-trafficmanager
  • python38Packages.azure-mgmt-web
  • python38Packages.azure-multiapi-storage
  • python38Packages.azure-servicebus
  • python38Packages.azure-servicefabric
  • python38Packages.azure-storage-blob
  • python38Packages.azure-storage-file-share
  • python38Packages.azure-synapse-accesscontrol
  • python38Packages.azure-synapse-artifacts
  • python38Packages.azure-synapse-spark
  • python38Packages.baselines
  • python38Packages.batchspawner
  • python38Packages.bt_proximity
  • python38Packages.bugwarrior
  • python38Packages.check-manifest
  • python38Packages.discogs_client
  • python38Packages.django-allauth
  • python38Packages.django-mailman3
  • python38Packages.django-oauth-toolkit
  • python38Packages.dockerspawner
  • python38Packages.edward
  • python38Packages.exchangelib
  • python38Packages.fitbit
  • python38Packages.flickrapi
  • python38Packages.google-auth-oauthlib
  • python38Packages.google-music
  • python38Packages.gpyopt
  • python38Packages.gspread
  • python38Packages.gtimelog
  • python38Packages.gumath
  • python38Packages.hyperkitty
  • python38Packages.ignite
  • python38Packages.ipydatawidgets
  • python38Packages.jira
  • python38Packages.jupyterhub
  • python38Packages.jupyterhub-ldapauthenticator
  • python38Packages.jupyterhub-systemdspawner
  • python38Packages.jupyterhub-tmpauthenticator
  • python38Packages.keepkey
  • python38Packages.kinparse
  • python38Packages.kubernetes
  • python38Packages.launchpadlib
  • python38Packages.lazr-restfulclient
  • python38Packages.mask-rcnn
  • python38Packages.mido
  • python38Packages.msrest
  • python38Packages.msrestazure
  • python38Packages.mwclient
  • python38Packages.mwoauth
  • python38Packages.nbmerge
  • python38Packages.ndtypes
  • python38Packages.nix-kernel
  • python38Packages.nmigen
  • python38Packages.nmigen-boards
  • python38Packages.nmigen-soc
  • python38Packages.oauthenticator
  • python38Packages.oauthlib
  • python38Packages.pivy
  • python38Packages.postorius
  • python38Packages.privacyidea
  • python38Packages.ptable
  • python38Packages.py3buddy
  • python38Packages.pyads
  • python38Packages.pyalgotrade
  • python38Packages.pyatmo
  • python38Packages.pybluez
  • python38Packages.pyfantom
  • python38Packages.pygame
  • python38Packages.pygame_sdl2
  • python38Packages.pymaging
  • python38Packages.pymaging_png
  • python38Packages.pynest2d
  • python38Packages.pyro-ppl
  • python38Packages.pysdl2
  • python38Packages.pysnow
  • python38Packages.pyspinel
  • python38Packages.pytest-ordering
  • python38Packages.python-csxcad
  • python38Packages.python-mapnik
  • python38Packages.python-openems
  • python38Packages.python-twitter
  • python38Packages.python-unshare
  • python38Packages.pytmx
  • python38Packages.pytorch (python38Packages.pytorchWithoutCuda)
  • python38Packages.pytorch-lightning
  • python38Packages.pytorch-metric-learning
  • python38Packages.pytorchWithCuda
  • python38Packages.pytricia
  • pywal (python38Packages.pywal)
  • python38Packages.pywick
  • python38Packages.qrcode
  • python38Packages.requests_oauthlib
  • python38Packages.rising
  • python38Packages.scikit-fuzzy
  • python38Packages.shap
  • python38Packages.skidl
  • python38Packages.skorch
  • python38Packages.slicer
  • python38Packages.slob
  • python38Packages.snowflake-connector-python
  • python38Packages.snowflake-sqlalchemy
  • python38Packages.softlayer
  • python38Packages.tensorboardx
  • python38Packages.tensorflow (python38Packages.tensorflowWithoutCuda)
  • python38Packages.tensorflow-tensorboard
  • python38Packages.tensorflowWithCuda
  • python38Packages.tess
  • python38Packages.test-tube
  • python38Packages.tflearn
  • python38Packages.toggl-cli
  • python38Packages.torchgpipe
  • python38Packages.torchvision
  • python38Packages.traittypes
  • python38Packages.transforms3d
  • python38Packages.trezor
  • trezor_agent (python38Packages.trezor_agent)
  • python38Packages.tweepy
  • vdirsyncer (python38Packages.vdirsyncer ,vdirsyncerStable)
  • python38Packages.vsts
  • python38Packages.vsts-cd-manager
  • python38Packages.xnd
  • python39Packages.batchspawner
  • python39Packages.bt_proximity
  • python39Packages.discogs_client
  • python39Packages.django-oauth-toolkit
  • python39Packages.dockerspawner
  • python39Packages.glasgow
  • python39Packages.gpyopt
  • python39Packages.gtimelog
  • python39Packages.gumath
  • python39Packages.jupyterhub
  • python39Packages.jupyterhub-ldapauthenticator
  • python39Packages.jupyterhub-systemdspawner
  • python39Packages.jupyterhub-tmpauthenticator
  • python39Packages.keepkey
  • python39Packages.kinparse
  • python39Packages.lazr-restfulclient
  • python39Packages.mido
  • python39Packages.nbmerge
  • python39Packages.ndtypes
  • python39Packages.nix-kernel
  • python39Packages.nmigen
  • python39Packages.nmigen-boards
  • python39Packages.nmigen-soc
  • python39Packages.oauthenticator
  • python39Packages.oauthlib
  • python39Packages.pivy
  • python39Packages.privacyidea
  • python39Packages.ptable
  • python39Packages.py3buddy
  • python39Packages.pyads
  • python39Packages.pybluez
  • python39Packages.pyfantom
  • python39Packages.pygame
  • python39Packages.pygame_sdl2
  • python39Packages.pymaging
  • python39Packages.pymaging_png
  • python39Packages.pynest2d
  • python39Packages.pysdl2
  • python39Packages.pyspinel
  • python39Packages.pytest-ordering
  • python39Packages.python-csxcad
  • python39Packages.python-mapnik
  • python39Packages.python-openems
  • python39Packages.python-unshare
  • python39Packages.pytmx
  • python39Packages.pytricia
  • python39Packages.pywal
  • python39Packages.qrcode
  • python39Packages.scikit-fuzzy
  • python39Packages.skidl
  • python39Packages.slob
  • python39Packages.softlayer
  • python39Packages.tess
  • python39Packages.transforms3d
  • python39Packages.trezor
  • python39Packages.xnd
  • qdirstat
  • qgo
  • qlcplus
  • qt-box-editor
  • rabbitvcs
  • radicle-upstream
  • rambox
  • rambox-pro
  • rapidcheck
  • rappel
  • raul
  • rdocker
  • rdrview
  • real_time_config_quick_scan
  • reaper
  • redeclipse
  • renpy
  • retrofe
  • rhvoice
  • rkdeveloptool
  • rocksndiamonds
  • rootbar
  • rosie
  • rpiboot-unstable
  • rr-unstable
  • runwayml
  • s3ql
  • sauerbraten
  • sawfish
  • sc68
  • sfrotz
  • simplenes
  • siril
  • slack (slack-dark)
  • slimerjs
  • slstatus
  • sm64ex
  • smpeg2
  • solanum
  • soldat-unstable
  • sourcehut.metasrht
  • soxt
  • sparkleshare
  • spasm-ng
  • speech-denoiser
  • spek
  • ssb-patchwork
  • ssocr
  • sta
  • standardnotes
  • starspace
  • station
  • steam
  • steam-run
  • steam-run-native
  • steamcmd
  • string-machine
  • styx
  • subtitleeditor
  • surf (surf-webkit2)
  • surf-display
  • sycl-info
  • syslinux
  • taisei
  • tambura
  • tdesktop
  • tdrop
  • teams
  • teamviewer
  • ticpp
  • tilix
  • timeular
  • tipp10
  • tmuxPlugins.battery
  • tmuxPlugins.continuum
  • tmuxPlugins.copycat
  • tmuxPlugins.cpu
  • tmuxPlugins.dracula
  • tmuxPlugins.fpp
  • tmuxPlugins.fzf-tmux-url
  • tmuxPlugins.gruvbox
  • tmuxPlugins.logging
  • tmuxPlugins.maildir-counter
  • tmuxPlugins.net-speed
  • tmuxPlugins.onedark-theme
  • tmuxPlugins.online-status
  • tmuxPlugins.open
  • tmuxPlugins.pain-control
  • tmuxPlugins.power-theme
  • tmuxPlugins.prefix-highlight
  • tmuxPlugins.resurrect
  • tmuxPlugins.sensible
  • tmuxPlugins.sessionist
  • tmuxPlugins.sidebar
  • tmuxPlugins.sysstat
  • tmuxPlugins.tmux-colors-solarized
  • tmuxPlugins.tmux-fzf
  • tmuxPlugins.urlview
  • tmuxPlugins.vim-tmux-focus-events
  • tmuxPlugins.vim-tmux-navigator
  • tmuxPlugins.yank
  • torrential
  • trackballs
  • traefik
  • trezor-udev-rules
  • trezord
  • trojita
  • trx
  • tts
  • tuijam
  • tunefish
  • turses
  • tusk
  • u9fs
  • ubidump
  • ubus
  • uci
  • ultrastardx (ultrastardx-beta)
  • unetbootin
  • ungoogled-chromium
  • unityhub
  • universal-ctags
  • uq
  • uqmi
  • urn-timer
  • utsushi
  • vcstool
  • venus
  • vgo2nix
  • vhd2vl
  • video2midi
  • vimb (vimbWrapper)
  • vimv
  • viw
  • vocal
  • warmux
  • wavebox
  • waypoint
  • wayst
  • webmetro
  • wego
  • wesnoth
  • wezterm
  • widelands
  • wimlib
  • wio
  • wootility
  • worldofgoo
  • wpgtk
  • wxformbuilder
  • x2goclient
  • xcape
  • xdg_utils
  • xdxf2slob
  • xilinx-bootgen
  • xmonad_log_applet_mate
  • xmonad_log_applet_xfce
  • xrgears
  • xscreensaver
  • xsecurelock
  • yabar-unstable
  • yaml2json
  • yaxg
  • ydotool
  • yeshup
  • yoshimi
  • yosys-bluespec
  • yosys-ghdl
  • yubico-pam
  • zabbixctl
  • zalgo
  • zettlr
  • zfsbackup
  • zsa-udev-rules
  • zulip
27 packages built:
  • acme
  • adslib
  • doona
  • emu2
  • exifprobe
  • fverb
  • gnomeExtensions.noannoyance
  • gnomeExtensions.timepp
  • iodine
  • jpegexiforient
  • kjv
  • ledger-udev-rules
  • libgumath
  • libndtypes
  • libxnd
  • ltunify
  • multipart-parser-c
  • numworks-udev-rules
  • onesixtyone
  • openspin
  • pantheon.elementary-redacted-script
  • pcimem
  • pgjwt (postgresql11Packages.pgjwt)
  • ps2client
  • qbe
  • srt-to-vtt-cl
  • tecoc

@davidak
Copy link
Member Author

davidak commented Jan 22, 2021

OK, pausing the work on this until we have consensus how it should be.

[682 built (32 failed), 6845 copied (42866.2 MiB), 23537.2 MiB DL]
error: creating directory '/tmp/nix-build-perl5.32.0-Compress-Raw-Zlib-2.096.drv-0': No space left on device

@davidak
Copy link
Member Author

davidak commented Jan 22, 2021

FYI: There are already 120 packages following this convention.

[davidak@gaming:~/code/nixpkgs]$ egrep -R "pname.+=.+unstable" pkgs/ | wc -l
120

After this change it's 479 (unstable packages).

@jonringer
Copy link
Contributor

If I had to make a rule for unstable releases, it would be <previous stable release>post-<version control system>.<short version control reference>

E.g.

version = "unstable-2020-01-09";
....
   rev = "77ca3aab2ae....";

would be

version = "0.1.0post-git.77ca3aab"
...
  rev = "77ca3aab2ae...";

unfortunate, builtins.parseDrvName deliminates on a number, so we can't just do <pkg>-git.789392

nix-repl> builtins.parseDrvName "name-1"
{ name = "name"; version = "1"; }

nix-repl> builtins.parseDrvName "pkgname-ab42"
{ name = "pkgname-ab42"; version = ""; }

nix-repl> builtins.parseDrvName "pkgname-git.3242"
{ name = "pkgname-git.3242"; version = ""; }

nix-repl> builtins.parseDrvName "pkgname-1git.3242"
{ name = "pkgname"; version = "1git.3242"; }

another option would be, to do the current paradigm, but just drop unstable altogether

nix-repl> builtins.parseDrvName "pkgname-2020-01-22"
{ name = "pkgname"; version = "2020-01-22"; }

this is what vimPlugins does already, as vim plugins usually just track the latest default branch

nix-repl> vimPlugins.vim-css-color.name
"vimplugin-vim-css-color-2020-08-16"

nix-repl> vimPlugins.vim-css-color.pname
"vim-css-color"

nix-repl> vimPlugins.vim-css-color.version
"2020-08-16"

@jtojnar
Copy link
Member

jtojnar commented Jan 22, 2021

I would not consider having parseDrvName results match pname and version necessary. Ideally, we would deprecate this function in favour of lib.getName and lib.getVersion.

We need unstable or some other tag so that repology can filter it out easily.

@peterhoeg
Copy link
Member

What exactly is the problem we are trying to solve by including unstable? I see the point about repology, but there are ways around that.

How about this.

Last released version followed by a release date such as 0.5.4.20200108

Pros:

  1. no messing around with the pname
  2. upgrades continue to work as expected for all cases
  3. it's clear to a human reader that this is a snapshot
  4. parseDrv and friends continue to work as normal

Cons:

  1. Not easy to determine in a programmatic manner that this isn't a formally released version

For repology, we would then presumably show as being up to date as we are > latest official release. As soon as version 0.5.5 is released we are back to showing out of date as expected.

@peterhoeg
Copy link
Member

In case a project hasn't made a formal release ever, we could still do 0.0.0.releasedate

@jtojnar
Copy link
Member

jtojnar commented Jan 25, 2021

It is not about appearing up to date on repology. Repology uses version data from distros as a proxy for project versions so if we used version that is greater than the latest stable version and cannot be filtered out, it would actually mark other distros as outdated. That could only lead to nixpkgs being blacklisted as a whole.

Also note that your proposed format is actually used by some projects for their official releases so we still would not be able to distinguish VCS snapshots from official releases. (first one I found by greping)

@SuperSandro2000
Copy link
Member

I think we need a new variable which tells you that the version we use is unreleased and picked from master.

@jtojnar
Copy link
Member

jtojnar commented Jan 25, 2021

I think that would be even harder to push through – we would still need to teach nix-env and Repology about it and I do not see that very likely given that unstable tag already does the same job quite well.

@rycee
Copy link
Member

rycee commented Feb 14, 2021

I absolutely agree with @peterhoeg but propose following Debians model of extended version numbers and using a format along the lines of 0.5.4+nix.20200108 with 0.0.0+nix.20200108 being used for packages without upstream releases.

I think it would be very unfortunate if the notion of package name and version differs between Nix and Nixpkgs. It is already difficult enough to understand how things interact in the Nix ecosystem and moving away from

getName = s: (builtins.parseDrvName s).name
getVersion = s: (builtins.parseDrvName s).version

is simply confounding when the documentation for builtins.parseDrvName says

Split the string s into a package name and version.

Edit: I would be willing to participate in, but not drive, an RFC for a change in this direction since it's been a pain point for many years.

@rycee rycee mentioned this pull request Feb 14, 2021
10 tasks
@SuperSandro2000
Copy link
Member

SuperSandro2000 commented Feb 14, 2021

propose following Debians model of extended version numbers and using a format along the lines of 0.5.4+nix.20200108 with 0.0.0+nix.20200108 being used for packages without upstream releases.

That would require manually reviewing hundreds of packages and researching if they have a release at all and after which version number we are currently.

I don't think that is feasible. We only have the date right now and we can shuffle that together with the package name and unstable or any other string how we want. Changing pname when fetching unstable versions is not an option because pname is used in thousands of places to refer to the package name. This leaves us with two options: unstable or any other string before or after the date in the version number. Either way needs a fix in the builtin to fully function if I remember correctly.

@AndersonTorres
Copy link
Member

Related: #68518

@jonringer
Copy link
Contributor

Repology uses version data from distros as a proxy for project versions so if we used version that is greater than the latest stable version and cannot be filtered out, it would actually mark other distros as outdated.

I believe a version is only considered valid if more than one distro has the same version. Otherwise it's first considered a "unique" version.

However, I think in principle we should still try to avoid polluting repology with bad information.

@AndersonTorres
Copy link
Member

I believe a version is only considered valid if more than one distro has the same version. Otherwise it's first considered a "unique" version.

Not so much. higan is outdated in almost all distros (because they changed the build system radically), but the new version was taken from... Wikidata.

@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/brainstorming-for-rfc-pname-and-version/12873/1

@stale
Copy link

stale bot commented Nov 9, 2021

I marked this as stale due to inactivity. → More info

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Nov 9, 2021
@AndersonTorres
Copy link
Member

Closing due to huge conflicts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md 6.topic: GNOME GNOME desktop environment and its underlying platform 6.topic: lua 6.topic: pantheon The Pantheon desktop environment 6.topic: printing 6.topic: python 6.topic: TeX Issues regarding texlive and TeX in general 8.has: documentation This PR adds or changes documentation 10.rebuild-darwin: 501-1000 10.rebuild-darwin: 501+ 10.rebuild-linux: 501+ 10.rebuild-linux: 1001-2500
Projects
None yet
Development

Successfully merging this pull request may close these issues.

unstable part of version instead of pname
9 participants