diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index 0d249968402d..4b2e5afc1d60 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -132,6 +132,16 @@ runTests { expected = [ 1 1 0 ]; }; + testFunctionArgsFunctor = { + expr = functionArgs { __functor = self: { a, b }: null; }; + expected = { a = false; b = false; }; + }; + + testFunctionArgsSetFunctionArgs = { + expr = functionArgs (setFunctionArgs (args: args.x) { x = false; }); + expected = { x = false; }; + }; + # STRINGS testConcatMapStrings = { diff --git a/lib/trivial.nix b/lib/trivial.nix index c8ef5599ccde..7956ba4bde6f 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -334,7 +334,10 @@ rec { has the same return type and semantics as builtins.functionArgs. setFunctionArgs : (a → b) → Map String Bool. */ - functionArgs = f: f.__functionArgs or (builtins.functionArgs f); + functionArgs = f: + if f ? __functor + then f.__functionArgs or (lib.functionArgs (f.__functor f)) + else builtins.functionArgs f; /* Check whether something is a function or something annotated with function args. diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml index 2874039e3f0c..15b4e2b4d049 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml @@ -624,6 +624,14 @@ move all files to the new directory. + + + Deprecated package aliases in emacs.pkgs.* + have been removed. These aliases were remnants of the old + Emacs package infrastructure. We now use exact upstream names + wherever possible. + +
diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index fe7a7326a402..c0b0cb5973b6 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -157,6 +157,8 @@ pt-services.clipcat.enable). - `services.uptimed` now uses `/var/lib/uptimed` as its stateDirectory instead of `/var/spool/uptimed`. Make sure to move all files to the new directory. +- Deprecated package aliases in `emacs.pkgs.*` have been removed. These aliases were remnants of the old Emacs package infrastructure. We now use exact upstream names wherever possible. + ## Other Notable Changes {#sec-release-21.11-notable-changes} - The setting [`services.openssh.logLevel`](options.html#opt-services.openssh.logLevel) `"VERBOSE"` `"INFO"`. This brings NixOS in line with upstream and other Linux distributions, and reduces log spam on servers due to bruteforcing botnets. diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index a7a31ba85768..a6839e02c4fc 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -348,6 +348,7 @@ in #mailman = 316; # removed 2019-08-30 zigbee2mqtt = 317; # shadow = 318; # unused + hqplayer = 319; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -650,6 +651,7 @@ in #mailman = 316; # removed 2019-08-30 zigbee2mqtt = 317; shadow = 318; + hqplayer = 319; # When adding a gid, make sure it doesn't match an existing # uid. Users and groups with the same name should have equal diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 9bcd8b463111..64b0c83bbae9 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -244,13 +244,15 @@ ./services/amqp/rabbitmq.nix ./services/audio/alsa.nix ./services/audio/botamusique.nix - ./services/audio/jack.nix + ./services/audio/hqplayerd.nix ./services/audio/icecast.nix + ./services/audio/jack.nix ./services/audio/jmusicbot.nix ./services/audio/liquidsoap.nix ./services/audio/mpd.nix ./services/audio/mpdscribble.nix ./services/audio/mopidy.nix + ./services/audio/networkaudiod.nix ./services/audio/roon-bridge.nix ./services/audio/roon-server.nix ./services/audio/slimserver.nix diff --git a/nixos/modules/services/audio/hqplayerd.nix b/nixos/modules/services/audio/hqplayerd.nix new file mode 100644 index 000000000000..3a703c97c0f7 --- /dev/null +++ b/nixos/modules/services/audio/hqplayerd.nix @@ -0,0 +1,166 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.hqplayerd; + pkg = pkgs.hqplayerd; + # XXX: This is hard-coded in the distributed binary, don't try to change it. + stateDir = "/var/lib/hqplayer"; + configDir = "/etc/hqplayer"; +in +{ + options = { + services.hqplayerd = { + enable = mkEnableOption "HQPlayer Embedded"; + + licenseFile = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + Path to the HQPlayer license key file. + + Without this, the service will run in trial mode and restart every 30 + minutes. + ''; + }; + + auth = { + username = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + Username used for HQPlayer's WebUI. + + Without this you will need to manually create the credentials after + first start by going to http://your.ip/8088/auth + ''; + }; + + password = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + Password used for HQPlayer's WebUI. + + Without this you will need to manually create the credentials after + first start by going to http://your.ip/8088/auth + ''; + }; + }; + + openFirewall = mkOption { + type = types.bool; + default = false; + description = '' + Open TCP port 8088 in the firewall for the server. + ''; + }; + + user = mkOption { + type = types.str; + default = "hqplayer"; + description = '' + User account under which hqplayerd runs. + ''; + }; + + group = mkOption { + type = types.str; + default = "hqplayer"; + description = '' + Group account under which hqplayerd runs. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + assertions = [ + { + assertion = (cfg.auth.username != null -> cfg.auth.password != null) + && (cfg.auth.password != null -> cfg.auth.username != null); + message = "You must set either both services.hqplayer.auth.username and password, or neither."; + } + ]; + + environment = { + etc = { + "hqplayer/hqplayerd4-key.xml" = mkIf (cfg.licenseFile != null) { source = cfg.licenseFile; }; + "modules-load.d/taudio2.conf".source = "${pkg}/etc/modules-load.d/taudio2.conf"; + }; + systemPackages = [ pkg ]; + }; + + networking.firewall = mkIf cfg.openFirewall { + allowedTCPPorts = [ 8088 ]; + }; + + services.udev.packages = [ pkg ]; + + systemd = { + tmpfiles.rules = [ + "d ${configDir} 0755 ${cfg.user} ${cfg.group} - -" + "d ${stateDir} 0755 ${cfg.user} ${cfg.group} - -" + ]; + + services.hqplayerd = { + description = "HQPlayer daemon"; + wantedBy = [ "multi-user.target" ]; + requires = [ "network-online.target" "sound.target" "systemd-udev-settle.service" ]; + after = [ "network-online.target" "sound.target" "systemd-udev-settle.service" "local-fs.target" "remote-fs.target" "systemd-tmpfiles-setup.service" ]; + + unitConfig.ConditionPathExists = [ configDir stateDir ]; + + preStart = + let + blankCfg = pkgs.writeText "hqplayerd.xml" '' + + + + ''; + in + '' + cp -r "${pkg}/var/lib/hqplayer/web" "${stateDir}" + chmod -R u+wX "${stateDir}/web" + + if [ ! -f "${configDir}/hqplayerd.xml" ]; then + echo "creating blank config file" + install -m 0644 "${blankCfg}" "${configDir}/hqplayerd.xml" + fi + '' + optionalString (cfg.auth.username != null && cfg.auth.password != null) '' + ${pkg}/bin/hqplayerd -s ${cfg.auth.username} ${cfg.auth.password} + ''; + + serviceConfig = { + ExecStart = "${pkg}/bin/hqplayerd"; + + User = cfg.user; + Group = cfg.group; + + Restart = "on-failure"; + RestartSec = 5; + + Nice = -10; + IOSchedulingClass = "realtime"; + LimitMEMLOCK = "1G"; + LimitNICE = -10; + LimitRTPRIO = 98; + }; + }; + }; + + users.groups = mkIf (cfg.group == "hqplayer") { + hqplayer.gid = config.ids.gids.hqplayer; + }; + + users.users = mkIf (cfg.user == "hqplayer") { + hqplayer = { + description = "hqplayer daemon user"; + extraGroups = [ "audio" ]; + group = cfg.group; + uid = config.ids.uids.hqplayer; + }; + }; + }; +} diff --git a/nixos/modules/services/audio/networkaudiod.nix b/nixos/modules/services/audio/networkaudiod.nix new file mode 100644 index 000000000000..265a4e1d95d6 --- /dev/null +++ b/nixos/modules/services/audio/networkaudiod.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + name = "networkaudiod"; + cfg = config.services.networkaudiod; +in { + options = { + services.networkaudiod = { + enable = mkEnableOption "Networkaudiod (NAA)"; + }; + }; + + config = mkIf cfg.enable { + systemd.packages = [ pkgs.networkaudiod ]; + systemd.services.networkaudiod.wantedBy = [ "multi-user.target" ]; + }; +} diff --git a/pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix b/pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix index fdb28f447192..3cea9ae4ef09 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix @@ -1,6 +1,6 @@ -{ fetchurl, lib, melpaBuild, writeText }: +{ fetchurl, lib, trivialBuild, writeText }: -melpaBuild { +trivialBuild { pname = "font-lock+"; version = "20180101.25"; @@ -10,8 +10,6 @@ melpaBuild { name = "font-lock+.el"; }; - recipe = writeText "recipe" "(font-lock+ :fetcher github :repo \"\")"; - meta = { homepage = "https://melpa.org/#/font-lock+"; license = lib.licenses.gpl2Plus; diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix index b2a66c92aea2..00cc118a7030 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix @@ -1,25 +1,33 @@ { lib, pkgs }: self: with self; with lib.licenses; { - elisp-ffi = melpaBuild rec { + elisp-ffi = let + rev = "da37c516a0e59bdce63fb2dc006a231dee62a1d9"; + in melpaBuild { pname = "elisp-ffi"; - version = "1.0.0"; + version = "20170518.0"; + + commit = rev; src = pkgs.fetchFromGitHub { owner = "skeeto"; repo = "elisp-ffi"; - rev = version; - sha256 = "0z2n3h5l5fj8wl8i1ilfzv11l3zba14sgph6gz7dx7q12cnp9j22"; + inherit rev; + sha256 = "sha256-StOezQEnNTjRmjY02ub5FRh59aL6gWfw+qgboz0wF94="; }; + nativeBuildInputs = [ pkgs.pkg-config ]; + buildInputs = [ pkgs.libffi ]; - preBuild = "make"; + preBuild = '' + mv ffi.el elisp-ffi.el + make + ''; recipe = pkgs.writeText "recipe" '' (elisp-ffi :repo "skeeto/elisp-ffi" - :fetcher github - :files ("ffi-glue" "ffi.el")) + :fetcher github) ''; meta = { @@ -94,19 +102,23 @@ git-undo = callPackage ./git-undo { }; - haskell-unicode-input-method = melpaBuild { - pname = "emacs-haskell-unicode-input-method"; + haskell-unicode-input-method = let + rev = "d8d168148c187ed19350bb7a1a190217c2915a63"; + in melpaBuild { + pname = "haskell-unicode-input-method"; version = "20110905.2307"; + commit = rev; + src = pkgs.fetchFromGitHub { owner = "roelvandijk"; repo = "emacs-haskell-unicode-input-method"; - rev = "d8d168148c187ed19350bb7a1a190217c2915a63"; + inherit rev; sha256 = "09b7bg2s9aa4s8f2kdqs4xps3jxkq5wsvbi87ih8b6id38blhf78"; }; recipe = pkgs.writeText "recipe" '' - (emacs-haskell-unicode-input-method + (haskell-unicode-input-method :repo "roelvandijk/emacs-haskell-unicode-input-method" :fetcher github) ''; @@ -134,14 +146,19 @@ }; }; - matrix-client = melpaBuild { + matrix-client = let + rev = "d2ac55293c96d4c95971ed8e2a3f6f354565c5ed"; + in melpaBuild + { pname = "matrix-client"; version = "0.3.0"; + commit = rev; + src = pkgs.fetchFromGitHub { owner = "alphapapa"; repo = "matrix-client.el"; - rev = "d2ac55293c96d4c95971ed8e2a3f6f354565c5ed"; + inherit rev; sha256 = "1scfv1502yg7x4bsl253cpr6plml1j4d437vci2ggs764sh3rcqq"; }; @@ -250,38 +267,4 @@ rectMark = rect-mark; sunriseCommander = sunrise-commander; - # Legacy aliases, these try to mostly map to melpa stable because it's - # closer to the old outdated package infra. - # - # Ideally this should be dropped some time during/after 20.03 - - autoComplete = self.melpaStablePackages.auto-complete; - bbdb3 = self.melpaStablePackages.bbdb; - colorTheme = self.color-theme; - cryptol = self.melpaStablePackages.cryptol-mode; - d = self.melpaStablePackages.d-mode; - emacsw3m = self.w3m; - erlangMode = self.melpaStablePackages.erlang; - flymakeCursor = self.melpaStablePackages.flymake-cursor; - graphvizDot = self.melpaStablePackages.graphviz-dot-mode; - haskellMode = self.melpaStablePackages.haskell-mode; - hsc3Mode = self.hsc3-mode; - idris = self.melpaStablePackages.idris-mode; - jade = self.jade-mode; - js2 = self.melpaStablePackages.js2-mode; - loremIpsum = self.lorem-ipsum; - markdownMode = self.melpaStablePackages.markdown-mode; - maudeMode = self.maude-mode; - phpMode = self.melpaStablePackages.php-mode; - prologMode = self.prolog-mode; - proofgeneral = self.melpaStablePackages.proof-general; - proofgeneral_HEAD = self.proof-general; - rainbowDelimiters = self.melpaStablePackages.rainbow-delimiters; - sbtMode = self.melpaStablePackages.sbt-mode; - scalaMode1 = self.melpaStablePackages.scala-mode; - # scalaMode2 = null; # No clear mapping as of now - structuredHaskellMode = self.melpaStablePackages.shm; - tuaregMode = self.melpaStablePackages.tuareg; - writeGood = self.melpaStablePackages.writegood-mode; - xmlRpc = self.melpaStablePackages.xml-rpc; } diff --git a/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix index 051759cb8c74..8ea98c2c3a7f 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix @@ -325,14 +325,6 @@ let buildInputs = old.buildInputs ++ [ pkgs.tdlib ]; nativeBuildInputs = [ pkgs.pkg-config ]; - patches = [ - (pkgs.fetchpatch { - name = "telega-server-bin-store-prefer.patch"; - url = "https://github.com/zevlg/telega.el/commit/72550f984ca869309d197203ef7de99182d71729.patch"; - sha256 = "18xvz53bygksak6h5f8cz79y83p2va15i8qz7n4s3g9gsklmkj2p"; - }) - ]; - postPatch = '' substituteInPlace telega-customize.el \ --replace 'defcustom telega-server-command "telega-server"' \ @@ -517,24 +509,7 @@ let }); }; - # Deprecated legacy aliases for backwards compat - aliases = lib.listToAttrs (lib.attrValues (lib.mapAttrs (n: v: { name = v; value = builtins.trace "Melpa attribute '${v}' is a legacy alias that will be removed in 21.05, use '${n}' instead" melpaPackages.${n}; }) (lib.filterAttrs (n: v: lib.hasAttr n melpaPackages) { - "auto-complete-clang-async" = "emacsClangCompleteAsync"; - "vterm" = "emacs-libvterm"; - "0xc" = "_0xc"; - "2048-game" = "_2048-game"; - "4clojure" = "_4clojure"; - "@" = "at"; - "term+" = "term-plus"; - "term+key-intercept" = "term-plus-key-intercept"; - "term+mux" = "term-plus-mux"; - "xml+" = "xml-plus"; - }))); - - melpaPackages = lib.mapAttrs (n: v: if lib.hasAttr n overrides then overrides.${n} else v) super; - - in - melpaPackages // aliases); + in lib.mapAttrs (n: v: if lib.hasAttr n overrides then overrides.${n} else v) super); in generateMelpa { } diff --git a/pkgs/applications/editors/quilter/default.nix b/pkgs/applications/editors/quilter/default.nix deleted file mode 100644 index 2d04ad1629c0..000000000000 --- a/pkgs/applications/editors/quilter/default.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ lib, stdenv, fetchFromGitHub, nix-update-script, pkg-config, meson, ninja, python3, vala -, gtk3, desktop-file-utils, gtksourceview, webkitgtk, gtkspell3, pantheon -, libgee, discount, wrapGAppsHook }: - -stdenv.mkDerivation rec { - pname = "quilter"; - version = "2.5.4"; - - src = fetchFromGitHub { - owner = "lainsce"; - repo = pname; - rev = version; - sha256 = "sha256-A8Ov0rITHuMLDYTueeDO89KtxlP0pNk1pA7O4x3Q9fE="; - }; - - nativeBuildInputs = [ - desktop-file-utils - meson - ninja - vala - pkg-config - python3 - wrapGAppsHook - ]; - - buildInputs = [ - discount - gtk3 - gtksourceview - gtkspell3 - libgee - pantheon.elementary-icon-theme - pantheon.granite - webkitgtk - ]; - - postPatch = '' - chmod +x meson/post_install.py - patchShebangs meson/post_install.py - ''; - - passthru = { - updateScript = nix-update-script { - attrPath = pname; - }; - }; - - meta = with lib; { - description = "Focus on your writing - designed for elementary OS"; - homepage = "https://github.com/lainsce/quilter"; - license = licenses.gpl2Plus; - maintainers = pantheon.maintainers; - platforms = platforms.linux; - }; -} diff --git a/pkgs/applications/networking/browsers/chromium/update.py b/pkgs/applications/networking/browsers/chromium/update.py index d6788fa41927..4f9f53bd02ac 100755 --- a/pkgs/applications/networking/browsers/chromium/update.py +++ b/pkgs/applications/networking/browsers/chromium/update.py @@ -3,6 +3,7 @@ """This script automatically updates chromium, google-chrome, chromedriver, and ungoogled-chromium via upstream-info.json.""" +# Usage: ./update.py [--commit] import csv import json @@ -22,6 +23,7 @@ DEB_URL = 'https://dl.google.com/linux/chrome/deb/pool/main/g' BUCKET_URL = 'https://commondatastorage.googleapis.com/chromium-browser-official' JSON_PATH = dirname(abspath(__file__)) + '/upstream-info.json' +COMMIT_MESSAGE_SCRIPT = dirname(abspath(__file__)) + '/get-commit-message.py' def load_json(path): @@ -117,6 +119,21 @@ def channel_name_to_attr_name(channel_name): sys.exit(1) +def get_channel_key(item): + """Orders Chromium channels by their name.""" + channel_name = item[0] + if channel_name == 'stable': + return 0 + if channel_name == 'beta': + return 1 + if channel_name == 'dev': + return 2 + if channel_name == 'ungoogled-chromium': + return 3 + print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr) + sys.exit(1) + + def print_updates(channels_old, channels_new): """Print a summary of the updates.""" print('Updates:') @@ -192,21 +209,31 @@ with urlopen(HISTORY_URL) as resp: channels[channel_name] = channel -with open(JSON_PATH, 'w') as out: - def get_channel_key(item): - """Orders Chromium channels by their name.""" - channel_name = item[0] - if channel_name == 'stable': - return 0 - if channel_name == 'beta': - return 1 - if channel_name == 'dev': - return 2 - if channel_name == 'ungoogled-chromium': - return 3 - print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr) - sys.exit(1) - sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key)) - json.dump(sorted_channels, out, indent=2) - out.write('\n') +sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key)) +if len(sys.argv) == 2 and sys.argv[1] == '--commit': + for channel_name in sorted_channels.keys(): + version_old = last_channels[channel_name]['version'] + version_new = sorted_channels[channel_name]['version'] + if LooseVersion(version_old) < LooseVersion(version_new): + last_channels[channel_name] = sorted_channels[channel_name] + with open(JSON_PATH, 'w') as out: + json.dump(last_channels, out, indent=2) + out.write('\n') + attr_name = channel_name_to_attr_name(channel_name) + commit_message = f'{attr_name}: {version_old} -> {version_new}' + if channel_name == 'stable': + body = subprocess.check_output([COMMIT_MESSAGE_SCRIPT]).decode('utf-8') + prefix = f'chromium: TODO -> {version_new}' + if not body.startswith(prefix): + print("Error: Couldn't fetch the the release notes for the following update:") + print(commit_message) + sys.exit(1) + body = body.removeprefix(prefix) + commit_message += body + subprocess.run(['git', 'add', JSON_PATH], check=True) + subprocess.run(['git', 'commit', '--file=-'], input=commit_message.encode(), check=True) +else: + with open(JSON_PATH, 'w') as out: + json.dump(sorted_channels, out, indent=2) + out.write('\n') print_updates(last_channels, sorted_channels) diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.json b/pkgs/applications/networking/browsers/chromium/upstream-info.json index a0a8fd23e6bc..1066d322bad0 100644 --- a/pkgs/applications/networking/browsers/chromium/upstream-info.json +++ b/pkgs/applications/networking/browsers/chromium/upstream-info.json @@ -31,15 +31,15 @@ } }, "dev": { - "version": "93.0.4577.18", - "sha256": "1h1ppyizj5vbnrv11iy9vlcpcv8mgb9r8m2zmz6vp7q1ch6w0w4x", - "sha256bin64": "14cw0k4gsilybg7gbbbmck62i0prq5rm6hwqalmmmiqcldrw05mq", + "version": "94.0.4595.0", + "sha256": "0ksd7vqpbiplbg2xpm566z7p7qp57r27a3pk6ss1qz8v18490092", + "sha256bin64": "1kibyhgwcgby3hnhjdg2vrgbj4dvvbicqlcj4id9761zw1jhz8r4", "deps": { "gn": { - "version": "2021-07-08", + "version": "2021-07-31", "url": "https://gn.googlesource.com/gn", - "rev": "24e2f7df92641de0351a96096fb2c490b2436bb8", - "sha256": "1lwkyhfhw0zd7daqz466n7x5cddf0danr799h4jg3s0yvd4galjl" + "rev": "eea3906f0e2a8d3622080127d2005ff214d51383", + "sha256": "1wc969jrivb502c45wdcbgh0c5888nqxla05is9bimkrk9rqppw3" } } }, diff --git a/pkgs/applications/terminal-emulators/alacritty/default.nix b/pkgs/applications/terminal-emulators/alacritty/default.nix index e4c5eb752d73..0a23d63e3eab 100644 --- a/pkgs/applications/terminal-emulators/alacritty/default.nix +++ b/pkgs/applications/terminal-emulators/alacritty/default.nix @@ -53,16 +53,16 @@ let in rustPlatform.buildRustPackage rec { pname = "alacritty"; - version = "0.8.0"; + version = "0.9.0"; src = fetchFromGitHub { owner = "alacritty"; repo = pname; rev = "v${version}"; - sha256 = "sha256-9pQqnsLMkzhKTs7WGhf6lac/LGot6EmJQxgFBTrHA4E="; + sha256 = "sha256-kgZEbOGmO+uRKaWR+oQBiGkBzDSuCznUyWNUoMICHhk="; }; - cargoSha256 = "sha256-NtDeXS2g+5RzKHJdDrbzL5oReS42SzuEubkfZ4gbkFc="; + cargoSha256 = "sha256-JqnYMDkagWNGliUxi5eqJN92ULsvT7Fwmah8um1xaRw="; nativeBuildInputs = [ cmake @@ -99,6 +99,7 @@ rustPlatform.buildRustPackage rec { ln -s $out/bin $out/Applications/Alacritty.app/Contents/MacOS '' else '' install -D extra/linux/Alacritty.desktop -t $out/share/applications/ + install -D extra/linux/io.alacritty.Alacritty.appdata.xml -t $out/share/appdata/ install -D extra/logo/compat/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg # patchelf generates an ELF that binutils' "strip" doesn't like: diff --git a/pkgs/applications/video/manim/default.nix b/pkgs/applications/video/manim/default.nix index 0f224a5b1057..5da81eff50e6 100644 --- a/pkgs/applications/video/manim/default.nix +++ b/pkgs/applications/video/manim/default.nix @@ -44,7 +44,7 @@ buildPythonApplication rec { python3 manim.py example_scenes.py $scene -l tail -n 20 files/Tex/*.log # Print potential LaTeX erorrs ${file}/bin/file videos/example_scenes/480p15/$scene.mp4 \ - | tee | grep -F "ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]" + | tee | grep -F "ISO Media, MP4 Base Media v1 [ISO 14496-12:2003]" done ''; diff --git a/pkgs/development/compilers/emscripten/default.nix b/pkgs/development/compilers/emscripten/default.nix index 47ae2f76b750..84520ca52e08 100644 --- a/pkgs/development/compilers/emscripten/default.nix +++ b/pkgs/development/compilers/emscripten/default.nix @@ -92,9 +92,11 @@ stdenv.mkDerivation rec { # wasm2c doesn't work with PIC $out/bin/emcc -s WASM2C -s STANDALONE_WASM $LTO test.c - for MT in "" "-s USE_PTHREADS"; do - for RELOCATABLE in "" "-s RELOCATABLE"; do - $out/bin/emcc $RELOCATABLE $MT $LTO test.c + for BIND in "" "--bind"; do + for MT in "" "-s USE_PTHREADS"; do + for RELOCATABLE in "" "-s RELOCATABLE"; do + $out/bin/emcc $RELOCATABLE $BIND $MT $LTO test.c + done done done done diff --git a/pkgs/development/python-modules/sqlmap/default.nix b/pkgs/development/python-modules/sqlmap/default.nix index 762df0ab7e3a..e66cdd8967d0 100644 --- a/pkgs/development/python-modules/sqlmap/default.nix +++ b/pkgs/development/python-modules/sqlmap/default.nix @@ -7,11 +7,11 @@ buildPythonPackage rec { pname = "sqlmap"; - version = "1.5.7"; + version = "1.5.8"; src = fetchPypi { inherit pname version; - sha256 = "sha256-HTayAlXehm3Azmbi+ar/Vav5bPYmGu9gflzZCwWZihw="; + sha256 = "01wyhmvg9yh5q86z7kahbvj2xnkjyvi1h2qj7clgz5yd76sh8ygn"; }; postPatch = '' diff --git a/pkgs/development/tools/misc/act/default.nix b/pkgs/development/tools/misc/act/default.nix index 38520b4b3e56..88f75d70fccc 100644 --- a/pkgs/development/tools/misc/act/default.nix +++ b/pkgs/development/tools/misc/act/default.nix @@ -2,20 +2,20 @@ buildGoModule rec { pname = "act"; - version = "0.2.23"; + version = "0.2.24"; src = fetchFromGitHub { owner = "nektos"; repo = pname; rev = "v${version}"; - sha256 = "sha256-PBhlBWycAYuczfP0D+Gf1pDvrfI9gz3JyGe5FBq782Y="; + sha256 = "sha256-BWSw1yELxLDMUg2LxXuy+N0IRxLQYtVdzny1FGYVXEY="; }; vendorSha256 = "sha256-dLIsVWN/PjcH0CUYRmn4YaF8Pczf/gaWhD3lulqGiuA="; doCheck = false; - buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ]; + ldflags = [ "-s" "-w" "-X main.version=${version}" ]; meta = with lib; { description = "Run your GitHub Actions locally"; diff --git a/pkgs/development/tools/rust/probe-run/default.nix b/pkgs/development/tools/rust/probe-run/default.nix index dcbff79a3c80..4980baf85e2a 100644 --- a/pkgs/development/tools/rust/probe-run/default.nix +++ b/pkgs/development/tools/rust/probe-run/default.nix @@ -3,16 +3,16 @@ rustPlatform.buildRustPackage rec { pname = "probe-run"; - version = "0.2.4"; + version = "0.2.5"; src = fetchFromGitHub { owner = "knurling-rs"; repo = pname; rev = "v${version}"; - sha256 = "069f4vai1cw69xw3q7xyd81k3rklyb0bs77jfsrwq97vy7b78i92"; + sha256 = "0bj5arngc49mdz1i7bbg4l7rb741x7dhalpdxrn55vzlvgbig8fv"; }; - cargoSha256 = "0j5bl1sh3hcx38qckrjlfggsfsczzw2vbb3ks5x59dqakqh5fb7v"; + cargoSha256 = "1kqgl1f91aa7kz1yprpyf9pl1vp4ahhw8ka5hrvfvk5i5i54pigz"; nativeBuildInputs = [ pkg-config ]; buildInputs = [ libusb1 ] diff --git a/pkgs/games/90secondportraits/default.nix b/pkgs/games/90secondportraits/default.nix index a5b504995f79..07458cc64463 100644 --- a/pkgs/games/90secondportraits/default.nix +++ b/pkgs/games/90secondportraits/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ makeWrapper ]; buildInputs = [ lua love ]; - phases = "installPhase"; + dontUnpack = true; installPhase = '' diff --git a/pkgs/games/anki/default.nix b/pkgs/games/anki/default.nix index 6edddfeed5c7..d1def3740097 100644 --- a/pkgs/games/anki/default.nix +++ b/pkgs/games/anki/default.nix @@ -48,7 +48,7 @@ let rev = rev-manual; sha256 = sha256-manual; }; - phases = [ "unpackPhase" "patchPhase" "buildPhase" ]; + dontInstall = true; nativeBuildInputs = [ asciidoc ]; patchPhase = '' # rsync isnt needed diff --git a/pkgs/games/duckmarines/default.nix b/pkgs/games/duckmarines/default.nix index ca2a74391416..af34742b9fd8 100644 --- a/pkgs/games/duckmarines/default.nix +++ b/pkgs/games/duckmarines/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper ]; buildInputs = [ lua love ]; - phases = [ "installPhase" ]; + dontUnpack = true; installPhase = '' diff --git a/pkgs/games/dwarf-fortress/soundsense.nix b/pkgs/games/dwarf-fortress/soundsense.nix index 5202c13b5b8a..8ed1e7be1b20 100644 --- a/pkgs/games/dwarf-fortress/soundsense.nix +++ b/pkgs/games/dwarf-fortress/soundsense.nix @@ -22,7 +22,6 @@ stdenv.mkDerivation rec { url = "http://df.zweistein.cz/soundsense/soundSense_${version}.zip"; sha256 = "1gkrs69l3xsh858yjp204ddp29m668j630akm7arssc9359wxqkk"; }; - phases = [ "unpackPhase" "buildPhase" "installPhase" ]; nativeBuildInputs = [ dos2unix ]; buildPhase = '' dos2unix soundSense.sh diff --git a/pkgs/games/flightgear/default.nix b/pkgs/games/flightgear/default.nix index 0996d4bd512b..bfbb705da387 100644 --- a/pkgs/games/flightgear/default.nix +++ b/pkgs/games/flightgear/default.nix @@ -17,7 +17,7 @@ let sha256 = "sha256-/KFumHRkmRvsU/L1i11jG/KbqobnOEP7l4lyPMKHycA="; }; - phases = [ "installPhase" ]; + dontUnpack = true; installPhase = '' mkdir -p "$out/share/FlightGear" diff --git a/pkgs/games/mari0/default.nix b/pkgs/games/mari0/default.nix index cb3349960f02..55ef9f51d5b3 100644 --- a/pkgs/games/mari0/default.nix +++ b/pkgs/games/mari0/default.nix @@ -28,8 +28,6 @@ stdenv.mkDerivation { nativeBuildInputs = [ makeWrapper ]; buildInputs = [ lua love_11 zip ]; - phases = [ "unpackPhase" "installPhase" ]; - installPhase = '' mkdir -p $out/bin $out/share/games/lovegames $out/share/applications diff --git a/pkgs/games/mrrescue/default.nix b/pkgs/games/mrrescue/default.nix index ae7519c948ba..2328c20ef91d 100644 --- a/pkgs/games/mrrescue/default.nix +++ b/pkgs/games/mrrescue/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ lua love makeWrapper ]; - phases = "installPhase"; + dontUnpack = true; installPhase = '' diff --git a/pkgs/games/nottetris2/default.nix b/pkgs/games/nottetris2/default.nix index 42e5a33cad79..179673c05b63 100644 --- a/pkgs/games/nottetris2/default.nix +++ b/pkgs/games/nottetris2/default.nix @@ -28,8 +28,6 @@ stdenv.mkDerivation { nativeBuildInputs = [ zip makeWrapper ]; buildInputs = [ love_0_7 ]; - phases = [ "unpackPhase" "installPhase" ]; - installPhase = '' mkdir -p $out/bin $out/share/games/lovegames $out/share/applications diff --git a/pkgs/games/randtype/default.nix b/pkgs/games/randtype/default.nix new file mode 100644 index 000000000000..0eaf2c092160 --- /dev/null +++ b/pkgs/games/randtype/default.nix @@ -0,0 +1,31 @@ +{ lib, stdenv, fetchzip, zlib }: + +stdenv.mkDerivation rec { + pname = "randtype"; + version = "1.13"; + + src = fetchzip { + url = "mirror://sourceforge/randtype/${pname}-${version}.tar.gz"; + sha256 = "055xs02qwpgbkn2l57bwghbsrsysg1zhm2asp0byvjpz4sc4w1rd"; + }; + + buildInputs = [ zlib ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/man/man1 $out/bin + install -cp randtype.1.gz $out/share/man/man1 + install -cps randtype $out/bin + + runHook postInstall + ''; + + meta = with lib; { + description = "semi-random text typer"; + homepage = "https://benkibbey.wordpress.com/randtype/"; + maintainers = with maintainers; [ dandellion ]; + license = licenses.gpl2Only; + platforms = platforms.unix; + }; +} diff --git a/pkgs/games/rimshot/default.nix b/pkgs/games/rimshot/default.nix index 1f4efa5097bd..997da768c6d4 100644 --- a/pkgs/games/rimshot/default.nix +++ b/pkgs/games/rimshot/default.nix @@ -27,8 +27,6 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper unzip ]; buildInputs = [ lua love ]; - phases = [ "unpackPhase" "installPhase" ]; - unpackPhase = '' unzip -j $src ''; diff --git a/pkgs/games/scrolls/default.nix b/pkgs/games/scrolls/default.nix index cdeab7b10d35..fad783571c5d 100644 --- a/pkgs/games/scrolls/default.nix +++ b/pkgs/games/scrolls/default.nix @@ -29,7 +29,6 @@ stdenv.mkDerivation { libpulseaudio ]; - phases = [ "unpackPhase" "installPhase" ]; installPhase = '' mkdir -p "$out/opt/Scrolls" cp -r ../Scrolls "$out/opt/Scrolls/" diff --git a/pkgs/games/sienna/default.nix b/pkgs/games/sienna/default.nix index 24f5fc088769..59f01f6a2c47 100644 --- a/pkgs/games/sienna/default.nix +++ b/pkgs/games/sienna/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper ]; buildInputs = [ lua love ]; - phases = "installPhase"; + dontUnpack = true; installPhase = '' diff --git a/pkgs/games/vapor/default.nix b/pkgs/games/vapor/default.nix index 710280652636..2fa7ca189270 100644 --- a/pkgs/games/vapor/default.nix +++ b/pkgs/games/vapor/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ makeWrapper ]; buildInputs = [ lua love ]; - phases = "installPhase"; + dontUnpack = true; installPhase = '' diff --git a/pkgs/servers/hqplayerd/default.nix b/pkgs/servers/hqplayerd/default.nix index 594085d422ef..76f8bde3e4ed 100644 --- a/pkgs/servers/hqplayerd/default.nix +++ b/pkgs/servers/hqplayerd/default.nix @@ -17,11 +17,11 @@ stdenv.mkDerivation rec { pname = "hqplayerd"; - version = "4.24.2-63"; + version = "4.25.0-64"; src = fetchurl { url = "https://www.signalyst.eu/bins/${pname}/fc34/${pname}-${version}.fc34.x86_64.rpm"; - sha256 = "sha256-6JUgHDO+S73n/IVQhkmC0Nw4GQVzTLtiBbz/wZiflRg="; + sha256 = "sha256-KLP7g1SQzVKu9Hnptb6s0FwmLSjhlAINJoJskja+bDM="; }; unpackPhase = '' @@ -70,8 +70,8 @@ stdenv.mkDerivation rec { cp ./usr/share/doc/hqplayerd/* $out/share/doc/hqplayerd # misc service support files - mkdir -p $out/var/lib/hqplayerd - cp -r ./var/lib/hqplayer/web $out/var/lib/hqplayer + mkdir -p $out/var/lib/hqplayer + cp -r ./var/lib/hqplayer/web $out/var/lib/hqplayer/web runHook postInstall ''; diff --git a/pkgs/servers/networkaudiod/default.nix b/pkgs/servers/networkaudiod/default.nix new file mode 100644 index 000000000000..fcf713d9fe88 --- /dev/null +++ b/pkgs/servers/networkaudiod/default.nix @@ -0,0 +1,71 @@ +{ stdenv +, autoPatchelfHook +, dpkg +, fetchurl +, lib +, alsa-lib +}: +let + inherit (stdenv.targetPlatform) system; + throwSystem = throw "Unsupported system: ${system}"; +in +stdenv.mkDerivation rec { + pname = "networkaudiod"; + version = "4.1.1-46"; + + src = { + x86_64-linux = fetchurl { + url = "https://www.signalyst.eu/bins/naa/linux/buster/${pname}_${version}_amd64.deb"; + sha256 = "sha256-un5VcCnvCCS/KWtW991Rt9vz3flYilERmRNooEsKCkA="; + }; + aarch64-linux = fetchurl { + url = "https://www.signalyst.eu/bins/naa/linux/buster/${pname}_${version}_arm64.deb"; + sha256 = "sha256-fjSCWX9VYhVJ43N2kSqd5gfTtDJ1UiH4j5PJ9I5Skag="; + }; + }.${system} or throwSystem; + + unpackPhase = '' + dpkg -x $src . + ''; + + nativeBuildInputs = [ autoPatchelfHook dpkg ]; + + buildInputs = [ + alsa-lib + stdenv.cc.cc.lib + ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + # main executable + mkdir -p $out/bin + cp ./usr/sbin/networkaudiod $out/bin + + # systemd service file + mkdir -p $out/lib/systemd/system + cp ./lib/systemd/system/networkaudiod.service $out/lib/systemd/system + + # documentation + mkdir -p $out/share/doc/networkaudiod + cp -r ./usr/share/doc/networkaudiod $out/share/doc/ + + runHook postInstall + ''; + + postInstall = '' + substituteInPlace $out/lib/systemd/system/networkaudiod.service \ + --replace /usr/sbin/networkaudiod $out/bin/networkaudiod + ''; + + meta = with lib; { + homepage = "https://www.signalyst.com/index.html"; + description = "Network Audio Adapter daemon"; + license = licenses.unfree; + maintainers = with maintainers; [ lovesegfault ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/tools/backup/restic/default.nix b/pkgs/tools/backup/restic/default.nix index 65ff53bf677d..0cf25941e907 100644 --- a/pkgs/tools/backup/restic/default.nix +++ b/pkgs/tools/backup/restic/default.nix @@ -3,13 +3,13 @@ buildGoModule rec { pname = "restic"; - version = "0.12.0"; + version = "0.12.1"; src = fetchFromGitHub { owner = "restic"; repo = "restic"; rev = "v${version}"; - sha256 = "07gxf56g45gj2arvdnrr9656i9ykhy1y6k6zdlni1sa3aa2x2bbf"; + sha256 = "19lzccipbpxdkay60zdqfq8dgah0sbxzjcfcx285c28js2zpp85m"; }; patches = [ @@ -17,7 +17,7 @@ buildGoModule rec { ./0001-Skip-testing-restore-with-permission-failure.patch ]; - vendorSha256 = "14z22lmdd681rn61alpqbn3i9fn0kcc74321vjvhz2ix2mch3c1z"; + vendorSha256 = "0sdswihiy4r3lw9a87xj2qm3nf28cw56yfm56mva6b8lr3vk93l6"; subPackages = [ "cmd/restic" ]; diff --git a/pkgs/tools/misc/less/default.nix b/pkgs/tools/misc/less/default.nix index d63861ace331..9c5a4b1568be 100644 --- a/pkgs/tools/misc/less/default.nix +++ b/pkgs/tools/misc/less/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "less"; - version = "581.2"; + version = "590"; src = fetchurl { url = "https://www.greenwoodsoftware.com/${pname}/${pname}-${version}.tar.gz"; - sha256 = "0fyqslvrasv19qjvqrwfwz2n7mnm93y61x9bcx09ga90mxyb8d6f"; + sha256 = "044fl3izmsi8n1vqzsqdp65q0qyyn5kmsg4sk7id0mxzx15zbbba"; }; configureFlags = [ "--sysconfdir=/etc" ] # Look for ‘sysless’ in /etc. @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { homepage = "https://www.greenwoodsoftware.com/less/"; description = "A more advanced file pager than ‘more’"; platforms = platforms.unix; - license = licenses.gpl3; + license = licenses.gpl3Plus; maintainers = with maintainers; [ eelco dtzWill ]; }; } diff --git a/pkgs/tools/misc/svtplay-dl/default.nix b/pkgs/tools/misc/svtplay-dl/default.nix index 5514fd4e30f0..157b0fe63764 100644 --- a/pkgs/tools/misc/svtplay-dl/default.nix +++ b/pkgs/tools/misc/svtplay-dl/default.nix @@ -8,13 +8,13 @@ let in stdenv.mkDerivation rec { pname = "svtplay-dl"; - version = "4.1"; + version = "4.2"; src = fetchFromGitHub { owner = "spaam"; repo = "svtplay-dl"; rev = version; - sha256 = "0b0q4k5aacw2nna5higr6sk5lsdn62lw2l9lccfy5s3m530banni"; + sha256 = "1bsinf2r07g8c03mcw4gprl92wmysyaa81s8wyck0c6wdq3hcsnp"; }; pythonPaths = [ cryptography pyyaml requests ]; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index c7a5617cb0a5..3f977123d29e 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -682,6 +682,7 @@ mapAliases ({ qmk_firmware = throw "qmk_firmware has been removed because it was broken"; # added 2021-04-02 qr-filetransfer = throw ''"qr-filetransfer" has been renamed to "qrcp"''; # added 2020-12-02 quake3game = ioquake3; # added 2016-01-14 + quilter = throw "quilter has been removed from nixpkgs, as it was unmaintained."; # added 2021-08-03 qvim = throw "qvim has been removed."; # added 2020-08-31 qweechat = throw "qweechat has been removed because it was broken"; # added 2021-03-08 qwt6 = libsForQt5.qwt; # added 2015-12-19 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 54dea1bd98d2..d4f0c1d8f2c2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19861,6 +19861,8 @@ in neard = callPackage ../servers/neard { }; + networkaudiod = callPackage ../servers/networkaudiod { }; + unit = callPackage ../servers/http/unit { }; ncdns = callPackage ../servers/dns/ncdns { }; @@ -26863,8 +26865,6 @@ in quirc = callPackage ../tools/graphics/quirc {}; - quilter = callPackage ../applications/editors/quilter { }; - quisk = python38Packages.callPackage ../applications/radio/quisk { }; quiterss = libsForQt514.callPackage ../applications/networking/newsreaders/quiterss {}; @@ -29508,6 +29508,8 @@ in racer = callPackage ../games/racer { }; + randtype = callPackage ../games/randtype { }; + redeclipse = callPackage ../games/redeclipse { }; residualvm = callPackage ../games/residualvm { }; diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index a7905d0db299..b2e717fda67c 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -169,6 +169,7 @@ let # so we don't need to check hostPlatform != buildPlatform. crossSystem = stdenv.hostPlatform // { useLLVM = true; + linker = "lld"; }; };