diff --git a/lib/licenses.nix b/lib/licenses.nix index d79ac9004396..9baaba022bf5 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -734,6 +734,12 @@ lib.mapAttrs (n: v: v // { shortName = n; }) ({ free = false; }; + stk = { + shortName = "stk"; + fullName = "Synthesis Tool Kit 4.3"; + url = https://github.com/thestk/stk/blob/master/LICENSE; + }; + tcltk = spdx { spdxId = "TCL"; fullName = "TCL/TK License"; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 42f0471c4cff..fc04997bd2ee 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -139,6 +139,7 @@ ./programs/flexoptix-app.nix ./programs/freetds.nix ./programs/fuse.nix + ./programs/gamemode.nix ./programs/geary.nix ./programs/gnome-disks.nix ./programs/gnome-documents.nix @@ -553,6 +554,7 @@ ./services/misc/siproxd.nix ./services/misc/snapper.nix ./services/misc/sonarr.nix + ./services/misc/sourcehut ./services/misc/spice-vdagentd.nix ./services/misc/ssm-agent.nix ./services/misc/sssd.nix diff --git a/nixos/modules/programs/gamemode.nix b/nixos/modules/programs/gamemode.nix new file mode 100644 index 000000000000..03949bf98df6 --- /dev/null +++ b/nixos/modules/programs/gamemode.nix @@ -0,0 +1,96 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.programs.gamemode; + settingsFormat = pkgs.formats.ini { }; + configFile = settingsFormat.generate "gamemode.ini" cfg.settings; +in +{ + options = { + programs.gamemode = { + enable = mkEnableOption "GameMode to optimise system performance on demand"; + + enableRenice = mkEnableOption "CAP_SYS_NICE on gamemoded to support lowering process niceness" // { + default = true; + }; + + settings = mkOption { + type = settingsFormat.type; + default = {}; + description = '' + System-wide configuration for GameMode (/etc/gamemode.ini). + See gamemoded(8) man page for available settings. + ''; + example = literalExample '' + { + general = { + renice = 10; + }; + + # Warning: GPU optimisations have the potential to damage hardware + gpu = { + apply_gpu_optimisations = "accept-responsibility"; + gpu_device = 0; + amd_performance_level = "high"; + }; + + custom = { + start = "''${pkgs.libnotify}/bin/notify-send 'GameMode started'"; + end = "''${pkgs.libnotify}/bin/notify-send 'GameMode ended'"; + }; + } + ''; + }; + }; + }; + + config = mkIf cfg.enable { + environment = { + systemPackages = [ pkgs.gamemode ]; + etc."gamemode.ini".source = configFile; + }; + + security = { + polkit.enable = true; + wrappers = mkIf cfg.enableRenice { + gamemoded = { + source = "${pkgs.gamemode}/bin/gamemoded"; + capabilities = "cap_sys_nice+ep"; + }; + }; + }; + + systemd = { + packages = [ pkgs.gamemode ]; + user.services.gamemoded = { + # The upstream service already defines this, but doesn't get applied. + # See https://github.com/NixOS/nixpkgs/issues/81138 + wantedBy = [ "default.target" ]; + + # Use pkexec from the security wrappers to allow users to + # run libexec/cpugovctl & libexec/gpuclockctl as root with + # the the actions defined in share/polkit-1/actions. + # + # This uses a link farm to make sure other wrapped executables + # aren't included in PATH. + environment.PATH = mkForce (pkgs.linkFarm "pkexec" [ + { + name = "pkexec"; + path = "${config.security.wrapperDir}/pkexec"; + } + ]); + + serviceConfig.ExecStart = mkIf cfg.enableRenice [ + "" # Tell systemd to clear the existing ExecStart list, to prevent appending to it. + "${config.security.wrapperDir}/gamemoded" + ]; + }; + }; + }; + + meta = { + maintainers = with maintainers; [ kira-bruneau ]; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/builds.nix b/nixos/modules/services/misc/sourcehut/builds.nix new file mode 100644 index 000000000000..e228665784e0 --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/builds.nix @@ -0,0 +1,220 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + scfg = cfg.builds; + rcfg = config.services.redis; + iniKey = "builds.sr.ht"; + + drv = pkgs.sourcehut.buildsrht; +in +{ + options.services.sourcehut.builds = { + user = mkOption { + type = types.str; + default = "buildsrht"; + description = '' + User for builds.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5002; + description = '' + Port on which the "builds" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "builds.sr.ht"; + description = '' + PostgreSQL database name for builds.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/buildsrht"; + description = '' + State path for builds.sr.ht. + ''; + }; + + enableWorker = mkOption { + type = types.bool; + default = false; + description = '' + Run workers for builds.sr.ht. + Perform manually on machine: `cd ${scfg.statePath}/images; docker build -t qemu -f qemu/Dockerfile .` + ''; + }; + + images = mkOption { + type = types.attrsOf (types.attrsOf (types.attrsOf types.package)); + default = { }; + example = lib.literalExample ''(let + # Pinning unstable to allow usage with flakes and limit rebuilds. + pkgs_unstable = builtins.fetchGit { + url = "https://github.com/NixOS/nixpkgs"; + rev = "ff96a0fa5635770390b184ae74debea75c3fd534"; + ref = "nixos-unstable"; + }; + image_from_nixpkgs = pkgs_unstable: (import ("${pkgs.sourcehut.buildsrht}/lib/images/nixos/image.nix") { + pkgs = (import pkgs_unstable {}); + }); + in + { + nixos.unstable.x86_64 = image_from_nixpkgs pkgs_unstable; + } + )''; + description = '' + Images for builds.sr.ht. Each package should be distro.release.arch and point to a /nix/store/package/root.img.qcow2. + ''; + }; + + }; + + config = with scfg; let + image_dirs = lib.lists.flatten ( + lib.attrsets.mapAttrsToList + (distro: revs: + lib.attrsets.mapAttrsToList + (rev: archs: + lib.attrsets.mapAttrsToList + (arch: image: + pkgs.runCommandNoCC "buildsrht-images" { } '' + mkdir -p $out/${distro}/${rev}/${arch} + ln -s ${image}/*.qcow2 $out/${distro}/${rev}/${arch}/root.img.qcow2 + '') + archs) + revs) + scfg.images); + image_dir_pre = pkgs.symlinkJoin { + name = "builds.sr.ht-worker-images-pre"; + paths = image_dirs ++ [ + "${pkgs.sourcehut.buildsrht}/lib/images" + ]; + }; + image_dir = pkgs.runCommandNoCC "builds.sr.ht-worker-images" { } '' + mkdir -p $out/images + cp -Lr ${image_dir_pre}/* $out/images + ''; + in + lib.mkIf (cfg.enable && elem "builds" cfg.services) { + users = { + users = { + "${user}" = { + isSystemUser = true; + group = user; + extraGroups = lib.optionals cfg.builds.enableWorker [ "docker" ]; + description = "builds.sr.ht user"; + }; + }; + + groups = { + "${user}" = { }; + }; + }; + + services.postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + + systemd = { + tmpfiles.rules = [ + "d ${statePath} 0755 ${user} ${user} -" + ] ++ (lib.optionals cfg.builds.enableWorker + [ "d ${statePath}/logs 0775 ${user} ${user} - -" ] + ); + + services = { + buildsrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey + { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "builds.sr.ht website service"; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + + # Hack to bypass this hack: https://git.sr.ht/~sircmpwn/core.sr.ht/tree/master/item/srht-update-profiles#L6 + } // { preStart = " "; }; + + buildsrht-worker = { + enable = scfg.enableWorker; + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + partOf = [ "buildsrht.service" ]; + description = "builds.sr.ht worker service"; + path = [ pkgs.openssh pkgs.docker ]; + serviceConfig = { + Type = "simple"; + User = user; + Group = "nginx"; + Restart = "always"; + }; + serviceConfig.ExecStart = "${pkgs.sourcehut.buildsrht}/bin/builds.sr.ht-worker"; + }; + }; + }; + + services.sourcehut.settings = { + # URL builds.sr.ht is being served at (protocol://domain) + "builds.sr.ht".origin = mkDefault "http://builds.${cfg.originBase}"; + # Address and port to bind the debug server to + "builds.sr.ht".debug-host = mkDefault "0.0.0.0"; + "builds.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "builds.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # Set to "yes" to automatically run migrations on package upgrade. + "builds.sr.ht".migrate-on-upgrade = mkDefault "yes"; + # builds.sr.ht's OAuth client ID and secret for meta.sr.ht + # Register your client at meta.example.org/oauth + "builds.sr.ht".oauth-client-id = mkDefault null; + "builds.sr.ht".oauth-client-secret = mkDefault null; + # The redis connection used for the celery worker + "builds.sr.ht".redis = mkDefault "redis://${rcfg.bind}:${toString rcfg.port}/3"; + # The shell used for ssh + "builds.sr.ht".shell = mkDefault "runner-shell"; + # Register the builds.sr.ht dispatcher + "git.sr.ht::dispatch".${builtins.unsafeDiscardStringContext "${pkgs.sourcehut.buildsrht}/bin/buildsrht-keys"} = mkDefault "${user}:${user}"; + + # Location for build logs, images, and control command + } // lib.attrsets.optionalAttrs scfg.enableWorker { + # Default worker stores logs that are accessible via this address:port + "builds.sr.ht::worker".name = mkDefault "127.0.0.1:5020"; + "builds.sr.ht::worker".buildlogs = mkDefault "${scfg.statePath}/logs"; + "builds.sr.ht::worker".images = mkDefault "${image_dir}/images"; + "builds.sr.ht::worker".controlcmd = mkDefault "${image_dir}/images/control"; + "builds.sr.ht::worker".timeout = mkDefault "3m"; + }; + + services.nginx.virtualHosts."logs.${cfg.originBase}" = + if scfg.enableWorker then { + listen = with builtins; let address = split ":" cfg.settings."builds.sr.ht::worker".name; + in [{ addr = elemAt address 0; port = lib.toInt (elemAt address 2); }]; + locations."/logs".root = "${scfg.statePath}"; + } else { }; + + services.nginx.virtualHosts."builds.${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.buildsrht}/${pkgs.sourcehut.python.sitePackages}/buildsrht"; + }; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/default.nix b/nixos/modules/services/misc/sourcehut/default.nix new file mode 100644 index 000000000000..9c812d6b043c --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/default.nix @@ -0,0 +1,198 @@ +{ config, pkgs, lib, ... }: + +with lib; +let + cfg = config.services.sourcehut; + cfgIni = cfg.settings; + settingsFormat = pkgs.formats.ini { }; + + # Specialized python containing all the modules + python = pkgs.sourcehut.python.withPackages (ps: with ps; [ + gunicorn + # Sourcehut services + srht + buildsrht + dispatchsrht + gitsrht + hgsrht + hubsrht + listssrht + mansrht + metasrht + pastesrht + todosrht + ]); +in +{ + imports = + [ + ./git.nix + ./hg.nix + ./hub.nix + ./todo.nix + ./man.nix + ./meta.nix + ./paste.nix + ./builds.nix + ./lists.nix + ./dispatch.nix + (mkRemovedOptionModule [ "services" "sourcehut" "nginx" "enable" ] '' + The sourcehut module supports `nginx` as a local reverse-proxy by default and doesn't + support other reverse-proxies officially. + + However it's possible to use an alternative reverse-proxy by + + * disabling nginx + * adjusting the relevant settings for server addresses and ports directly + + Further details about this can be found in the `Sourcehut`-section of the NixOS-manual. + '') + ]; + + options.services.sourcehut = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enable sourcehut - git hosting, continuous integration, mailing list, ticket tracking, + task dispatching, wiki and account management services + ''; + }; + + services = mkOption { + type = types.nonEmptyListOf (types.enum [ "builds" "dispatch" "git" "hub" "hg" "lists" "man" "meta" "paste" "todo" ]); + default = [ "man" "meta" "paste" ]; + example = [ "builds" "dispatch" "git" "hub" "hg" "lists" "man" "meta" "paste" "todo" ]; + description = '' + Services to enable on the sourcehut network. + ''; + }; + + originBase = mkOption { + type = types.str; + default = with config.networking; hostName + lib.optionalString (domain != null) ".${domain}"; + description = '' + Host name used by reverse-proxy and for default settings. Will host services at git."''${originBase}". For example: git.sr.ht + ''; + }; + + address = mkOption { + type = types.str; + default = "127.0.0.1"; + description = '' + Address to bind to. + ''; + }; + + python = mkOption { + internal = true; + type = types.package; + default = python; + description = '' + The python package to use. It should contain references to the *srht modules and also + gunicorn. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "/var/lib/sourcehut"; + description = '' + Root state path for the sourcehut network. If left as the default value + this directory will automatically be created before the sourcehut server + starts, otherwise the sysadmin is responsible for ensuring the + directory exists with appropriate ownership and permissions. + ''; + }; + + settings = mkOption { + type = lib.types.submodule { + freeformType = settingsFormat.type; + }; + default = { }; + description = '' + The configuration for the sourcehut network. + ''; + }; + }; + + config = mkIf cfg.enable { + assertions = + [ + { + assertion = with cfgIni.webhooks; private-key != null && stringLength private-key == 44; + message = "The webhook's private key must be defined and of a 44 byte length."; + } + + { + assertion = hasAttrByPath [ "meta.sr.ht" "origin" ] cfgIni && cfgIni."meta.sr.ht".origin != null; + message = "meta.sr.ht's origin must be defined."; + } + ]; + + virtualisation.docker.enable = true; + environment.etc."sr.ht/config.ini".source = + settingsFormat.generate "sourcehut-config.ini" (mapAttrsRecursive + ( + path: v: if v == null then "" else v + ) + cfg.settings); + + environment.systemPackages = [ pkgs.sourcehut.coresrht ]; + + # PostgreSQL server + services.postgresql.enable = mkOverride 999 true; + # Mail server + services.postfix.enable = mkOverride 999 true; + # Cron daemon + services.cron.enable = mkOverride 999 true; + # Redis server + services.redis.enable = mkOverride 999 true; + services.redis.bind = mkOverride 999 "127.0.0.1"; + + services.sourcehut.settings = { + # The name of your network of sr.ht-based sites + "sr.ht".site-name = mkDefault "sourcehut"; + # The top-level info page for your site + "sr.ht".site-info = mkDefault "https://sourcehut.org"; + # {{ site-name }}, {{ site-blurb }} + "sr.ht".site-blurb = mkDefault "the hacker's forge"; + # If this != production, we add a banner to each page + "sr.ht".environment = mkDefault "development"; + # Contact information for the site owners + "sr.ht".owner-name = mkDefault "Drew DeVault"; + "sr.ht".owner-email = mkDefault "sir@cmpwn.com"; + # The source code for your fork of sr.ht + "sr.ht".source-url = mkDefault "https://git.sr.ht/~sircmpwn/srht"; + # A secret key to encrypt session cookies with + "sr.ht".secret-key = mkDefault null; + "sr.ht".global-domain = mkDefault null; + + # Outgoing SMTP settings + mail.smtp-host = mkDefault null; + mail.smtp-port = mkDefault null; + mail.smtp-user = mkDefault null; + mail.smtp-password = mkDefault null; + mail.smtp-from = mkDefault null; + # Application exceptions are emailed to this address + mail.error-to = mkDefault null; + mail.error-from = mkDefault null; + # Your PGP key information (DO NOT mix up pub and priv here) + # You must remove the password from your secret key, if present. + # You can do this with gpg --edit-key [key-id], then use the passwd + # command and do not enter a new password. + mail.pgp-privkey = mkDefault null; + mail.pgp-pubkey = mkDefault null; + mail.pgp-key-id = mkDefault null; + + # base64-encoded Ed25519 key for signing webhook payloads. This should be + # consistent for all *.sr.ht sites, as we'll use this key to verify signatures + # from other sites in your network. + # + # Use the srht-webhook-keygen command to generate a key. + webhooks.private-key = mkDefault null; + }; + }; + meta.doc = ./sourcehut.xml; + meta.maintainers = with maintainers; [ tomberek ]; +} diff --git a/nixos/modules/services/misc/sourcehut/dispatch.nix b/nixos/modules/services/misc/sourcehut/dispatch.nix new file mode 100644 index 000000000000..a9db17bebe8e --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/dispatch.nix @@ -0,0 +1,125 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + cfgIni = cfg.settings; + scfg = cfg.dispatch; + iniKey = "dispatch.sr.ht"; + + drv = pkgs.sourcehut.dispatchsrht; +in +{ + options.services.sourcehut.dispatch = { + user = mkOption { + type = types.str; + default = "dispatchsrht"; + description = '' + User for dispatch.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5005; + description = '' + Port on which the "dispatch" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "dispatch.sr.ht"; + description = '' + PostgreSQL database name for dispatch.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/dispatchsrht"; + description = '' + State path for dispatch.sr.ht. + ''; + }; + }; + + config = with scfg; lib.mkIf (cfg.enable && elem "dispatch" cfg.services) { + + users = { + users = { + "${user}" = { + isSystemUser = true; + group = user; + description = "dispatch.sr.ht user"; + }; + }; + + groups = { + "${user}" = { }; + }; + }; + + services.postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + + systemd = { + tmpfiles.rules = [ + "d ${statePath} 0750 ${user} ${user} -" + ]; + + services.dispatchsrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "dispatch.sr.ht website service"; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + }; + }; + + services.sourcehut.settings = { + # URL dispatch.sr.ht is being served at (protocol://domain) + "dispatch.sr.ht".origin = mkDefault "http://dispatch.${cfg.originBase}"; + # Address and port to bind the debug server to + "dispatch.sr.ht".debug-host = mkDefault "0.0.0.0"; + "dispatch.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "dispatch.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # Set to "yes" to automatically run migrations on package upgrade. + "dispatch.sr.ht".migrate-on-upgrade = mkDefault "yes"; + # dispatch.sr.ht's OAuth client ID and secret for meta.sr.ht + # Register your client at meta.example.org/oauth + "dispatch.sr.ht".oauth-client-id = mkDefault null; + "dispatch.sr.ht".oauth-client-secret = mkDefault null; + + # Github Integration + "dispatch.sr.ht::github".oauth-client-id = mkDefault null; + "dispatch.sr.ht::github".oauth-client-secret = mkDefault null; + + # Gitlab Integration + "dispatch.sr.ht::gitlab".enabled = mkDefault null; + "dispatch.sr.ht::gitlab".canonical-upstream = mkDefault "gitlab.com"; + "dispatch.sr.ht::gitlab".repo-cache = mkDefault "./repo-cache"; + # "dispatch.sr.ht::gitlab"."gitlab.com" = mkDefault "GitLab:application id:secret"; + }; + + services.nginx.virtualHosts."dispatch.${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.dispatchsrht}/${pkgs.sourcehut.python.sitePackages}/dispatchsrht"; + }; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/git.nix b/nixos/modules/services/misc/sourcehut/git.nix new file mode 100644 index 000000000000..99b9aec06123 --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/git.nix @@ -0,0 +1,214 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + scfg = cfg.git; + iniKey = "git.sr.ht"; + + rcfg = config.services.redis; + drv = pkgs.sourcehut.gitsrht; +in +{ + options.services.sourcehut.git = { + user = mkOption { + type = types.str; + visible = false; + internal = true; + readOnly = true; + default = "git"; + description = '' + User for git.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5001; + description = '' + Port on which the "git" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "git.sr.ht"; + description = '' + PostgreSQL database name for git.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/gitsrht"; + description = '' + State path for git.sr.ht. + ''; + }; + + package = mkOption { + type = types.package; + default = pkgs.git; + example = literalExample "pkgs.gitFull"; + description = '' + Git package for git.sr.ht. This can help silence collisions. + ''; + }; + }; + + config = with scfg; lib.mkIf (cfg.enable && elem "git" cfg.services) { + # sshd refuses to run with `Unsafe AuthorizedKeysCommand ... bad ownership or modes for directory /nix/store` + environment.etc."ssh/gitsrht-dispatch" = { + mode = "0755"; + text = '' + #! ${pkgs.stdenv.shell} + ${cfg.python}/bin/gitsrht-dispatch "$@" + ''; + }; + + # Needs this in the $PATH when sshing into the server + environment.systemPackages = [ cfg.git.package ]; + + users = { + users = { + "${user}" = { + isSystemUser = true; + group = user; + # https://stackoverflow.com/questions/22314298/git-push-results-in-fatal-protocol-error-bad-line-length-character-this + # Probably could use gitsrht-shell if output is restricted to just parameters... + shell = pkgs.bash; + description = "git.sr.ht user"; + }; + }; + + groups = { + "${user}" = { }; + }; + }; + + services = { + cron.systemCronJobs = [ "*/20 * * * * ${cfg.python}/bin/gitsrht-periodic" ]; + fcgiwrap.enable = true; + + openssh.authorizedKeysCommand = ''/etc/ssh/gitsrht-dispatch "%u" "%h" "%t" "%k"''; + openssh.authorizedKeysCommandUser = "root"; + openssh.extraConfig = '' + PermitUserEnvironment SRHT_* + ''; + + postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + }; + + systemd = { + tmpfiles.rules = [ + # /var/log is owned by root + "f /var/log/git-srht-shell 0644 ${user} ${user} -" + + "d ${statePath} 0750 ${user} ${user} -" + "d ${cfg.settings."${iniKey}".repos} 2755 ${user} ${user} -" + ]; + + services = { + gitsrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "redis.service" "postgresql.service" "network.target" ]; + requires = [ "redis.service" "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + # Needs internally to create repos at the very least + path = [ pkgs.git ]; + description = "git.sr.ht website service"; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + }; + + gitsrht-webhooks = { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "git.sr.ht webhooks service"; + serviceConfig = { + Type = "simple"; + User = user; + Restart = "always"; + }; + + serviceConfig.ExecStart = "${cfg.python}/bin/celery -A ${drv.pname}.webhooks worker --loglevel=info"; + }; + }; + }; + + services.sourcehut.settings = { + # URL git.sr.ht is being served at (protocol://domain) + "git.sr.ht".origin = mkDefault "http://git.${cfg.originBase}"; + # Address and port to bind the debug server to + "git.sr.ht".debug-host = mkDefault "0.0.0.0"; + "git.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "git.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # Set to "yes" to automatically run migrations on package upgrade. + "git.sr.ht".migrate-on-upgrade = mkDefault "yes"; + # The redis connection used for the webhooks worker + "git.sr.ht".webhooks = mkDefault "redis://${rcfg.bind}:${toString rcfg.port}/1"; + + # A post-update script which is installed in every git repo. + "git.sr.ht".post-update-script = mkDefault "${pkgs.sourcehut.gitsrht}/bin/gitsrht-update-hook"; + + # git.sr.ht's OAuth client ID and secret for meta.sr.ht + # Register your client at meta.example.org/oauth + "git.sr.ht".oauth-client-id = mkDefault null; + "git.sr.ht".oauth-client-secret = mkDefault null; + # Path to git repositories on disk + "git.sr.ht".repos = mkDefault "/var/lib/git"; + + "git.sr.ht".outgoing-domain = mkDefault "http://git.${cfg.originBase}"; + + # The authorized keys hook uses this to dispatch to various handlers + # The format is a program to exec into as the key, and the user to match as the + # value. When someone tries to log in as this user, this program is executed + # and is expected to omit an AuthorizedKeys file. + # + # Discard of the string context is in order to allow derivation-derived strings. + # This is safe if the relevant package is installed which will be the case if the setting is utilized. + "git.sr.ht::dispatch".${builtins.unsafeDiscardStringContext "${pkgs.sourcehut.gitsrht}/bin/gitsrht-keys"} = mkDefault "${user}:${user}"; + }; + + services.nginx.virtualHosts."git.${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.gitsrht}/${pkgs.sourcehut.python.sitePackages}/gitsrht"; + extraConfig = '' + location = /authorize { + proxy_pass http://${cfg.address}:${toString port}; + proxy_pass_request_body off; + proxy_set_header Content-Length ""; + proxy_set_header X-Original-URI $request_uri; + } + location ~ ^/([^/]+)/([^/]+)/(HEAD|info/refs|objects/info/.*|git-upload-pack).*$ { + auth_request /authorize; + root /var/lib/git; + fastcgi_pass unix:/run/fcgiwrap.sock; + fastcgi_param SCRIPT_FILENAME ${pkgs.git}/bin/git-http-backend; + fastcgi_param PATH_INFO $uri; + fastcgi_param GIT_PROJECT_ROOT $document_root; + fastcgi_read_timeout 500s; + include ${pkgs.nginx}/conf/fastcgi_params; + gzip off; + } + ''; + + }; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/hg.nix b/nixos/modules/services/misc/sourcehut/hg.nix new file mode 100644 index 000000000000..5cd36bb04550 --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/hg.nix @@ -0,0 +1,173 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + scfg = cfg.hg; + iniKey = "hg.sr.ht"; + + rcfg = config.services.redis; + drv = pkgs.sourcehut.hgsrht; +in +{ + options.services.sourcehut.hg = { + user = mkOption { + type = types.str; + internal = true; + readOnly = true; + default = "hg"; + description = '' + User for hg.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5010; + description = '' + Port on which the "hg" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "hg.sr.ht"; + description = '' + PostgreSQL database name for hg.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/hgsrht"; + description = '' + State path for hg.sr.ht. + ''; + }; + + cloneBundles = mkOption { + type = types.bool; + default = false; + description = '' + Generate clonebundles (which require more disk space but dramatically speed up cloning large repositories). + ''; + }; + }; + + config = with scfg; lib.mkIf (cfg.enable && elem "hg" cfg.services) { + # In case it ever comes into being + environment.etc."ssh/hgsrht-dispatch" = { + mode = "0755"; + text = '' + #! ${pkgs.stdenv.shell} + ${cfg.python}/bin/gitsrht-dispatch $@ + ''; + }; + + environment.systemPackages = [ pkgs.mercurial ]; + + users = { + users = { + "${user}" = { + isSystemUser = true; + group = user; + # Assuming hg.sr.ht needs this too + shell = pkgs.bash; + description = "hg.sr.ht user"; + }; + }; + + groups = { + "${user}" = { }; + }; + }; + + services = { + cron.systemCronJobs = [ "*/20 * * * * ${cfg.python}/bin/hgsrht-periodic" ] + ++ optional cloneBundles "0 * * * * ${cfg.python}/bin/hgsrht-clonebundles"; + + openssh.authorizedKeysCommand = ''/etc/ssh/hgsrht-dispatch "%u" "%h" "%t" "%k"''; + openssh.authorizedKeysCommandUser = "root"; + openssh.extraConfig = '' + PermitUserEnvironment SRHT_* + ''; + + postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + }; + + systemd = { + tmpfiles.rules = [ + # /var/log is owned by root + "f /var/log/hg-srht-shell 0644 ${user} ${user} -" + + "d ${statePath} 0750 ${user} ${user} -" + "d ${cfg.settings."${iniKey}".repos} 2755 ${user} ${user} -" + ]; + + services.hgsrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "redis.service" "postgresql.service" "network.target" ]; + requires = [ "redis.service" "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + path = [ pkgs.mercurial ]; + description = "hg.sr.ht website service"; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + }; + }; + + services.sourcehut.settings = { + # URL hg.sr.ht is being served at (protocol://domain) + "hg.sr.ht".origin = mkDefault "http://hg.${cfg.originBase}"; + # Address and port to bind the debug server to + "hg.sr.ht".debug-host = mkDefault "0.0.0.0"; + "hg.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "hg.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # The redis connection used for the webhooks worker + "hg.sr.ht".webhooks = mkDefault "redis://${rcfg.bind}:${toString rcfg.port}/1"; + # A post-update script which is installed in every mercurial repo. + "hg.sr.ht".changegroup-script = mkDefault "${cfg.python}/bin/hgsrht-hook-changegroup"; + # hg.sr.ht's OAuth client ID and secret for meta.sr.ht + # Register your client at meta.example.org/oauth + "hg.sr.ht".oauth-client-id = mkDefault null; + "hg.sr.ht".oauth-client-secret = mkDefault null; + # Path to mercurial repositories on disk + "hg.sr.ht".repos = mkDefault "/var/lib/hg"; + # Path to the srht mercurial extension + # (defaults to where the hgsrht code is) + # "hg.sr.ht".srhtext = mkDefault null; + # .hg/store size (in MB) past which the nightly job generates clone bundles. + # "hg.sr.ht".clone_bundle_threshold = mkDefault 50; + # Path to hg-ssh (if not in $PATH) + # "hg.sr.ht".hg_ssh = mkDefault /path/to/hg-ssh; + + # The authorized keys hook uses this to dispatch to various handlers + # The format is a program to exec into as the key, and the user to match as the + # value. When someone tries to log in as this user, this program is executed + # and is expected to omit an AuthorizedKeys file. + # + # Uncomment the relevant lines to enable the various sr.ht dispatchers. + "hg.sr.ht::dispatch"."/run/current-system/sw/bin/hgsrht-keys" = mkDefault "${user}:${user}"; + }; + + # TODO: requires testing and addition of hg-specific requirements + services.nginx.virtualHosts."hg.${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.hgsrht}/${pkgs.sourcehut.python.sitePackages}/hgsrht"; + }; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/hub.nix b/nixos/modules/services/misc/sourcehut/hub.nix new file mode 100644 index 000000000000..be3ea21011c7 --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/hub.nix @@ -0,0 +1,118 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + cfgIni = cfg.settings; + scfg = cfg.hub; + iniKey = "hub.sr.ht"; + + drv = pkgs.sourcehut.hubsrht; +in +{ + options.services.sourcehut.hub = { + user = mkOption { + type = types.str; + default = "hubsrht"; + description = '' + User for hub.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5014; + description = '' + Port on which the "hub" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "hub.sr.ht"; + description = '' + PostgreSQL database name for hub.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/hubsrht"; + description = '' + State path for hub.sr.ht. + ''; + }; + }; + + config = with scfg; lib.mkIf (cfg.enable && elem "hub" cfg.services) { + users = { + users = { + "${user}" = { + isSystemUser = true; + group = user; + description = "hub.sr.ht user"; + }; + }; + + groups = { + "${user}" = { }; + }; + }; + + services.postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + + systemd = { + tmpfiles.rules = [ + "d ${statePath} 0750 ${user} ${user} -" + ]; + + services.hubsrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "hub.sr.ht website service"; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + }; + }; + + services.sourcehut.settings = { + # URL hub.sr.ht is being served at (protocol://domain) + "hub.sr.ht".origin = mkDefault "http://hub.${cfg.originBase}"; + # Address and port to bind the debug server to + "hub.sr.ht".debug-host = mkDefault "0.0.0.0"; + "hub.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "hub.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # Set to "yes" to automatically run migrations on package upgrade. + "hub.sr.ht".migrate-on-upgrade = mkDefault "yes"; + # hub.sr.ht's OAuth client ID and secret for meta.sr.ht + # Register your client at meta.example.org/oauth + "hub.sr.ht".oauth-client-id = mkDefault null; + "hub.sr.ht".oauth-client-secret = mkDefault null; + }; + + services.nginx.virtualHosts."${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.hubsrht}/${pkgs.sourcehut.python.sitePackages}/hubsrht"; + }; + services.nginx.virtualHosts."hub.${cfg.originBase}" = { + globalRedirect = "${cfg.originBase}"; + forceSSL = true; + }; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/lists.nix b/nixos/modules/services/misc/sourcehut/lists.nix new file mode 100644 index 000000000000..7b1fe9fd4630 --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/lists.nix @@ -0,0 +1,185 @@ +# Email setup is fairly involved, useful references: +# https://drewdevault.com/2018/08/05/Local-mail-server.html + +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + cfgIni = cfg.settings; + scfg = cfg.lists; + iniKey = "lists.sr.ht"; + + rcfg = config.services.redis; + drv = pkgs.sourcehut.listssrht; +in +{ + options.services.sourcehut.lists = { + user = mkOption { + type = types.str; + default = "listssrht"; + description = '' + User for lists.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5006; + description = '' + Port on which the "lists" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "lists.sr.ht"; + description = '' + PostgreSQL database name for lists.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/listssrht"; + description = '' + State path for lists.sr.ht. + ''; + }; + }; + + config = with scfg; lib.mkIf (cfg.enable && elem "lists" cfg.services) { + users = { + users = { + "${user}" = { + isSystemUser = true; + group = user; + extraGroups = [ "postfix" ]; + description = "lists.sr.ht user"; + }; + }; + groups = { + "${user}" = { }; + }; + }; + + services.postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + + systemd = { + tmpfiles.rules = [ + "d ${statePath} 0750 ${user} ${user} -" + ]; + + services = { + listssrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "lists.sr.ht website service"; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + }; + + listssrht-process = { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "lists.sr.ht process service"; + serviceConfig = { + Type = "simple"; + User = user; + Restart = "always"; + ExecStart = "${cfg.python}/bin/celery -A ${drv.pname}.process worker --loglevel=info"; + }; + }; + + listssrht-lmtp = { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "lists.sr.ht process service"; + serviceConfig = { + Type = "simple"; + User = user; + Restart = "always"; + ExecStart = "${cfg.python}/bin/listssrht-lmtp"; + }; + }; + + + listssrht-webhooks = { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "lists.sr.ht webhooks service"; + serviceConfig = { + Type = "simple"; + User = user; + Restart = "always"; + ExecStart = "${cfg.python}/bin/celery -A ${drv.pname}.webhooks worker --loglevel=info"; + }; + }; + }; + }; + + services.sourcehut.settings = { + # URL lists.sr.ht is being served at (protocol://domain) + "lists.sr.ht".origin = mkDefault "http://lists.${cfg.originBase}"; + # Address and port to bind the debug server to + "lists.sr.ht".debug-host = mkDefault "0.0.0.0"; + "lists.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "lists.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # Set to "yes" to automatically run migrations on package upgrade. + "lists.sr.ht".migrate-on-upgrade = mkDefault "yes"; + # lists.sr.ht's OAuth client ID and secret for meta.sr.ht + # Register your client at meta.example.org/oauth + "lists.sr.ht".oauth-client-id = mkDefault null; + "lists.sr.ht".oauth-client-secret = mkDefault null; + # Outgoing email for notifications generated by users + "lists.sr.ht".notify-from = mkDefault "CHANGEME@example.org"; + # The redis connection used for the webhooks worker + "lists.sr.ht".webhooks = mkDefault "redis://${rcfg.bind}:${toString rcfg.port}/2"; + # The redis connection used for the celery worker + "lists.sr.ht".redis = mkDefault "redis://${rcfg.bind}:${toString rcfg.port}/4"; + # Network-key + "lists.sr.ht".network-key = mkDefault null; + # Allow creation + "lists.sr.ht".allow-new-lists = mkDefault "no"; + # Posting Domain + "lists.sr.ht".posting-domain = mkDefault "lists.${cfg.originBase}"; + + # Path for the lmtp daemon's unix socket. Direct incoming mail to this socket. + # Alternatively, specify IP:PORT and an SMTP server will be run instead. + "lists.sr.ht::worker".sock = mkDefault "/tmp/lists.sr.ht-lmtp.sock"; + # The lmtp daemon will make the unix socket group-read/write for users in this + # group. + "lists.sr.ht::worker".sock-group = mkDefault "postfix"; + "lists.sr.ht::worker".reject-url = mkDefault "https://man.sr.ht/lists.sr.ht/etiquette.md"; + "lists.sr.ht::worker".reject-mimetypes = mkDefault "text/html"; + + }; + + services.nginx.virtualHosts."lists.${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.listssrht}/${pkgs.sourcehut.python.sitePackages}/listssrht"; + }; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/man.nix b/nixos/modules/services/misc/sourcehut/man.nix new file mode 100644 index 000000000000..7693396d187c --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/man.nix @@ -0,0 +1,122 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + cfgIni = cfg.settings; + scfg = cfg.man; + iniKey = "man.sr.ht"; + + drv = pkgs.sourcehut.mansrht; +in +{ + options.services.sourcehut.man = { + user = mkOption { + type = types.str; + default = "mansrht"; + description = '' + User for man.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5004; + description = '' + Port on which the "man" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "man.sr.ht"; + description = '' + PostgreSQL database name for man.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/mansrht"; + description = '' + State path for man.sr.ht. + ''; + }; + }; + + config = with scfg; lib.mkIf (cfg.enable && elem "man" cfg.services) { + assertions = + [ + { + assertion = hasAttrByPath [ "git.sr.ht" "oauth-client-id" ] cfgIni; + message = "man.sr.ht needs access to git.sr.ht."; + } + ]; + + users = { + users = { + "${user}" = { + isSystemUser = true; + group = user; + description = "man.sr.ht user"; + }; + }; + + groups = { + "${user}" = { }; + }; + }; + + services.postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + + systemd = { + tmpfiles.rules = [ + "d ${statePath} 0750 ${user} ${user} -" + ]; + + services.mansrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "man.sr.ht website service"; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + }; + }; + + services.sourcehut.settings = { + # URL man.sr.ht is being served at (protocol://domain) + "man.sr.ht".origin = mkDefault "http://man.${cfg.originBase}"; + # Address and port to bind the debug server to + "man.sr.ht".debug-host = mkDefault "0.0.0.0"; + "man.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "man.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # Set to "yes" to automatically run migrations on package upgrade. + "man.sr.ht".migrate-on-upgrade = mkDefault "yes"; + # man.sr.ht's OAuth client ID and secret for meta.sr.ht + # Register your client at meta.example.org/oauth + "man.sr.ht".oauth-client-id = mkDefault null; + "man.sr.ht".oauth-client-secret = mkDefault null; + }; + + services.nginx.virtualHosts."man.${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.mansrht}/${pkgs.sourcehut.python.sitePackages}/mansrht"; + }; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/meta.nix b/nixos/modules/services/misc/sourcehut/meta.nix new file mode 100644 index 000000000000..56127a824eb4 --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/meta.nix @@ -0,0 +1,211 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + cfgIni = cfg.settings; + scfg = cfg.meta; + iniKey = "meta.sr.ht"; + + rcfg = config.services.redis; + drv = pkgs.sourcehut.metasrht; +in +{ + options.services.sourcehut.meta = { + user = mkOption { + type = types.str; + default = "metasrht"; + description = '' + User for meta.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5000; + description = '' + Port on which the "meta" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "meta.sr.ht"; + description = '' + PostgreSQL database name for meta.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/metasrht"; + description = '' + State path for meta.sr.ht. + ''; + }; + }; + + config = with scfg; lib.mkIf (cfg.enable && elem "meta" cfg.services) { + assertions = + [ + { + assertion = with cfgIni."meta.sr.ht::billing"; enabled == "yes" -> (stripe-public-key != null && stripe-secret-key != null); + message = "If meta.sr.ht::billing is enabled, the keys should be defined."; + } + ]; + + users = { + users = { + ${user} = { + isSystemUser = true; + group = user; + description = "meta.sr.ht user"; + }; + }; + + groups = { + "${user}" = { }; + }; + }; + + services.cron.systemCronJobs = [ "0 0 * * * ${cfg.python}/bin/metasrht-daily" ]; + services.postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + + systemd = { + tmpfiles.rules = [ + "d ${statePath} 0750 ${user} ${user} -" + ]; + + services = { + metasrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "meta.sr.ht website service"; + + preStart = '' + # Configure client(s) as "preauthorized" + ${concatMapStringsSep "\n\n" + (attr: '' + if ! test -e "${statePath}/${attr}.oauth" || [ "$(cat ${statePath}/${attr}.oauth)" != "${cfgIni."${attr}".oauth-client-id}" ]; then + # Configure ${attr}'s OAuth client as "preauthorized" + psql ${database} \ + -c "UPDATE oauthclient SET preauthorized = true WHERE client_id = '${cfgIni."${attr}".oauth-client-id}'" + + printf "%s" "${cfgIni."${attr}".oauth-client-id}" > "${statePath}/${attr}.oauth" + fi + '') + (builtins.attrNames (filterAttrs + (k: v: !(hasInfix "::" k) && builtins.hasAttr "oauth-client-id" v && v.oauth-client-id != null) + cfg.settings))} + ''; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + }; + + metasrht-api = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "meta.sr.ht api service"; + + preStart = '' + # Configure client(s) as "preauthorized" + ${concatMapStringsSep "\n\n" + (attr: '' + if ! test -e "${statePath}/${attr}.oauth" || [ "$(cat ${statePath}/${attr}.oauth)" != "${cfgIni."${attr}".oauth-client-id}" ]; then + # Configure ${attr}'s OAuth client as "preauthorized" + psql ${database} \ + -c "UPDATE oauthclient SET preauthorized = true WHERE client_id = '${cfgIni."${attr}".oauth-client-id}'" + + printf "%s" "${cfgIni."${attr}".oauth-client-id}" > "${statePath}/${attr}.oauth" + fi + '') + (builtins.attrNames (filterAttrs + (k: v: !(hasInfix "::" k) && builtins.hasAttr "oauth-client-id" v && v.oauth-client-id != null) + cfg.settings))} + ''; + + serviceConfig.ExecStart = "${pkgs.sourcehut.metasrht}/bin/metasrht-api -b :${toString (port + 100)}"; + }; + + metasrht-webhooks = { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "meta.sr.ht webhooks service"; + serviceConfig = { + Type = "simple"; + User = user; + Restart = "always"; + ExecStart = "${cfg.python}/bin/celery -A ${drv.pname}.webhooks worker --loglevel=info"; + }; + + }; + }; + }; + + services.sourcehut.settings = { + # URL meta.sr.ht is being served at (protocol://domain) + "meta.sr.ht".origin = mkDefault "https://meta.${cfg.originBase}"; + # Address and port to bind the debug server to + "meta.sr.ht".debug-host = mkDefault "0.0.0.0"; + "meta.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "meta.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # Set to "yes" to automatically run migrations on package upgrade. + "meta.sr.ht".migrate-on-upgrade = mkDefault "yes"; + # If "yes", the user will be sent the stock sourcehut welcome emails after + # signup (requires cron to be configured properly). These are specific to the + # sr.ht instance so you probably want to patch these before enabling this. + "meta.sr.ht".welcome-emails = mkDefault "no"; + + # The redis connection used for the webhooks worker + "meta.sr.ht".webhooks = mkDefault "redis://${rcfg.bind}:${toString rcfg.port}/6"; + + # If "no", public registration will not be permitted. + "meta.sr.ht::settings".registration = mkDefault "no"; + # Where to redirect new users upon registration + "meta.sr.ht::settings".onboarding-redirect = mkDefault "https://meta.${cfg.originBase}"; + # How many invites each user is issued upon registration (only applicable if + # open registration is disabled) + "meta.sr.ht::settings".user-invites = mkDefault 5; + + # Origin URL for API, 100 more than web + "meta.sr.ht".api-origin = mkDefault "http://localhost:5100"; + + # You can add aliases for the client IDs of commonly used OAuth clients here. + # + # Example: + "meta.sr.ht::aliases" = mkDefault { }; + # "meta.sr.ht::aliases"."git.sr.ht" = 12345; + + # "yes" to enable the billing system + "meta.sr.ht::billing".enabled = mkDefault "no"; + # Get your keys at https://dashboard.stripe.com/account/apikeys + "meta.sr.ht::billing".stripe-public-key = mkDefault null; + "meta.sr.ht::billing".stripe-secret-key = mkDefault null; + }; + + services.nginx.virtualHosts."meta.${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.metasrht}/${pkgs.sourcehut.python.sitePackages}/metasrht"; + }; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/paste.nix b/nixos/modules/services/misc/sourcehut/paste.nix new file mode 100644 index 000000000000..b2d5151969ea --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/paste.nix @@ -0,0 +1,133 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + cfgIni = cfg.settings; + scfg = cfg.paste; + iniKey = "paste.sr.ht"; + + rcfg = config.services.redis; + drv = pkgs.sourcehut.pastesrht; +in +{ + options.services.sourcehut.paste = { + user = mkOption { + type = types.str; + default = "pastesrht"; + description = '' + User for paste.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5011; + description = '' + Port on which the "paste" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "paste.sr.ht"; + description = '' + PostgreSQL database name for paste.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/pastesrht"; + description = '' + State path for pastesrht.sr.ht. + ''; + }; + }; + + config = with scfg; lib.mkIf (cfg.enable && elem "paste" cfg.services) { + users = { + users = { + "${user}" = { + isSystemUser = true; + group = user; + description = "paste.sr.ht user"; + }; + }; + + groups = { + "${user}" = { }; + }; + }; + + services.postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + + systemd = { + tmpfiles.rules = [ + "d ${statePath} 0750 ${user} ${user} -" + ]; + + services = { + pastesrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "paste.sr.ht website service"; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + }; + + pastesrht-webhooks = { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "paste.sr.ht webhooks service"; + serviceConfig = { + Type = "simple"; + User = user; + Restart = "always"; + ExecStart = "${cfg.python}/bin/celery -A ${drv.pname}.webhooks worker --loglevel=info"; + }; + + }; + }; + }; + + services.sourcehut.settings = { + # URL paste.sr.ht is being served at (protocol://domain) + "paste.sr.ht".origin = mkDefault "http://paste.${cfg.originBase}"; + # Address and port to bind the debug server to + "paste.sr.ht".debug-host = mkDefault "0.0.0.0"; + "paste.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "paste.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # Set to "yes" to automatically run migrations on package upgrade. + "paste.sr.ht".migrate-on-upgrade = mkDefault "yes"; + # paste.sr.ht's OAuth client ID and secret for meta.sr.ht + # Register your client at meta.example.org/oauth + "paste.sr.ht".oauth-client-id = mkDefault null; + "paste.sr.ht".oauth-client-secret = mkDefault null; + "paste.sr.ht".webhooks = mkDefault "redis://${rcfg.bind}:${toString rcfg.port}/5"; + }; + + services.nginx.virtualHosts."paste.${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.pastesrht}/${pkgs.sourcehut.python.sitePackages}/pastesrht"; + }; + }; +} diff --git a/nixos/modules/services/misc/sourcehut/service.nix b/nixos/modules/services/misc/sourcehut/service.nix new file mode 100644 index 000000000000..65b4ad020f9a --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/service.nix @@ -0,0 +1,66 @@ +{ config, pkgs, lib }: +serviceCfg: serviceDrv: iniKey: attrs: +let + cfg = config.services.sourcehut; + cfgIni = cfg.settings."${iniKey}"; + pgSuperUser = config.services.postgresql.superUser; + + setupDB = pkgs.writeScript "${serviceDrv.pname}-gen-db" '' + #! ${cfg.python}/bin/python + from ${serviceDrv.pname}.app import db + db.create() + ''; +in +with serviceCfg; with lib; recursiveUpdate +{ + environment.HOME = statePath; + path = [ config.services.postgresql.package ] ++ (attrs.path or [ ]); + restartTriggers = [ config.environment.etc."sr.ht/config.ini".source ]; + serviceConfig = { + Type = "simple"; + User = user; + Group = user; + Restart = "always"; + WorkingDirectory = statePath; + } // (if (cfg.statePath == "/var/lib/sourcehut/${serviceDrv.pname}") then { + StateDirectory = [ "sourcehut/${serviceDrv.pname}" ]; + } else {}) + ; + + preStart = '' + if ! test -e ${statePath}/db; then + # Setup the initial database + ${setupDB} + + # Set the initial state of the database for future database upgrades + if test -e ${cfg.python}/bin/${serviceDrv.pname}-migrate; then + # Run alembic stamp head once to tell alembic the schema is up-to-date + ${cfg.python}/bin/${serviceDrv.pname}-migrate stamp head + fi + + printf "%s" "${serviceDrv.version}" > ${statePath}/db + fi + + # Update copy of each users' profile to the latest + # See https://lists.sr.ht/~sircmpwn/sr.ht-admins/<20190302181207.GA13778%40cirno.my.domain> + if ! test -e ${statePath}/webhook; then + # Update ${iniKey}'s users' profile copy to the latest + ${cfg.python}/bin/srht-update-profiles ${iniKey} + + touch ${statePath}/webhook + fi + + ${optionalString (builtins.hasAttr "migrate-on-upgrade" cfgIni && cfgIni.migrate-on-upgrade == "yes") '' + if [ "$(cat ${statePath}/db)" != "${serviceDrv.version}" ]; then + # Manage schema migrations using alembic + ${cfg.python}/bin/${serviceDrv.pname}-migrate -a upgrade head + + # Mark down current package version + printf "%s" "${serviceDrv.version}" > ${statePath}/db + fi + ''} + + ${attrs.preStart or ""} + ''; +} + (builtins.removeAttrs attrs [ "path" "preStart" ]) diff --git a/nixos/modules/services/misc/sourcehut/sourcehut.xml b/nixos/modules/services/misc/sourcehut/sourcehut.xml new file mode 100644 index 000000000000..ab9a8c6cb4be --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/sourcehut.xml @@ -0,0 +1,115 @@ + + Sourcehut + + Sourcehut is an open-source, + self-hostable software development platform. The server setup can be automated using + services.sourcehut. + + +
+ Basic usage + + Sourcehut is a Python and Go based set of applications. + services.sourcehut + by default will use + services.nginx, + services.redis, + services.cron, + and + services.postgresql. + + + + A very basic configuration may look like this: + +{ pkgs, ... }: +let + fqdn = + let + join = hostName: domain: hostName + optionalString (domain != null) ".${domain}"; + in join config.networking.hostName config.networking.domain; +in { + + networking = { + hostName = "srht"; + domain = "tld"; + firewall.allowedTCPPorts = [ 22 80 443 ]; + }; + + services.sourcehut = { + enable = true; + originBase = fqdn; + services = [ "meta" "man" "git" ]; + settings = { + "sr.ht" = { + environment = "production"; + global-domain = fqdn; + origin = "https://${fqdn}"; + # Produce keys with srht-keygen from sourcehut.coresrht. + network-key = "SECRET"; + service-key = "SECRET"; + }; + webhooks.private-key= "SECRET"; + }; + }; + + security.acme.certs."${fqdn}".extraDomainNames = [ + "meta.${fqdn}" + "man.${fqdn}" + "git.${fqdn}" + ]; + + services.nginx = { + enable = true; + # only recommendedProxySettings are strictly required, but the rest make sense as well. + recommendedTlsSettings = true; + recommendedOptimisation = true; + recommendedGzipSettings = true; + recommendedProxySettings = true; + + # Settings to setup what certificates are used for which endpoint. + virtualHosts = { + "${fqdn}".enableACME = true; + "meta.${fqdn}".useACMEHost = fqdn: + "man.${fqdn}".useACMEHost = fqdn: + "git.${fqdn}".useACMEHost = fqdn: + }; + }; +} + + + + + The hostName option is used internally to configure the nginx + reverse-proxy. The settings attribute set is + used by the configuration generator and the result is placed in /etc/sr.ht/config.ini. + +
+ +
+ Configuration + + + All configuration parameters are also stored in + /etc/sr.ht/config.ini which is generated by + the module and linked from the store to ensure that all values from config.ini + can be modified by the module. + + +
+ +
+ Using an alternative webserver as reverse-proxy (e.g. <literal>httpd</literal>) + + By default, nginx is used as reverse-proxy for sourcehut. + However, it's possible to use e.g. httpd by explicitly disabling + nginx using and fixing the + settings. + +
+ +
diff --git a/nixos/modules/services/misc/sourcehut/todo.nix b/nixos/modules/services/misc/sourcehut/todo.nix new file mode 100644 index 000000000000..aec773b06692 --- /dev/null +++ b/nixos/modules/services/misc/sourcehut/todo.nix @@ -0,0 +1,161 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.sourcehut; + cfgIni = cfg.settings; + scfg = cfg.todo; + iniKey = "todo.sr.ht"; + + rcfg = config.services.redis; + drv = pkgs.sourcehut.todosrht; +in +{ + options.services.sourcehut.todo = { + user = mkOption { + type = types.str; + default = "todosrht"; + description = '' + User for todo.sr.ht. + ''; + }; + + port = mkOption { + type = types.port; + default = 5003; + description = '' + Port on which the "todo" module should listen. + ''; + }; + + database = mkOption { + type = types.str; + default = "todo.sr.ht"; + description = '' + PostgreSQL database name for todo.sr.ht. + ''; + }; + + statePath = mkOption { + type = types.path; + default = "${cfg.statePath}/todosrht"; + description = '' + State path for todo.sr.ht. + ''; + }; + }; + + config = with scfg; lib.mkIf (cfg.enable && elem "todo" cfg.services) { + users = { + users = { + "${user}" = { + isSystemUser = true; + group = user; + extraGroups = [ "postfix" ]; + description = "todo.sr.ht user"; + }; + }; + groups = { + "${user}" = { }; + }; + }; + + services.postgresql = { + authentication = '' + local ${database} ${user} trust + ''; + ensureDatabases = [ database ]; + ensureUsers = [ + { + name = user; + ensurePermissions = { "DATABASE \"${database}\"" = "ALL PRIVILEGES"; }; + } + ]; + }; + + systemd = { + tmpfiles.rules = [ + "d ${statePath} 0750 ${user} ${user} -" + ]; + + services = { + todosrht = import ./service.nix { inherit config pkgs lib; } scfg drv iniKey { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "todo.sr.ht website service"; + + serviceConfig.ExecStart = "${cfg.python}/bin/gunicorn ${drv.pname}.app:app -b ${cfg.address}:${toString port}"; + }; + + todosrht-lmtp = { + after = [ "postgresql.service" "network.target" ]; + bindsTo = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "todo.sr.ht process service"; + serviceConfig = { + Type = "simple"; + User = user; + Restart = "always"; + ExecStart = "${cfg.python}/bin/todosrht-lmtp"; + }; + }; + + todosrht-webhooks = { + after = [ "postgresql.service" "network.target" ]; + requires = [ "postgresql.service" ]; + wantedBy = [ "multi-user.target" ]; + + description = "todo.sr.ht webhooks service"; + serviceConfig = { + Type = "simple"; + User = user; + Restart = "always"; + ExecStart = "${cfg.python}/bin/celery -A ${drv.pname}.webhooks worker --loglevel=info"; + }; + + }; + }; + }; + + services.sourcehut.settings = { + # URL todo.sr.ht is being served at (protocol://domain) + "todo.sr.ht".origin = mkDefault "http://todo.${cfg.originBase}"; + # Address and port to bind the debug server to + "todo.sr.ht".debug-host = mkDefault "0.0.0.0"; + "todo.sr.ht".debug-port = mkDefault port; + # Configures the SQLAlchemy connection string for the database. + "todo.sr.ht".connection-string = mkDefault "postgresql:///${database}?user=${user}&host=/var/run/postgresql"; + # Set to "yes" to automatically run migrations on package upgrade. + "todo.sr.ht".migrate-on-upgrade = mkDefault "yes"; + # todo.sr.ht's OAuth client ID and secret for meta.sr.ht + # Register your client at meta.example.org/oauth + "todo.sr.ht".oauth-client-id = mkDefault null; + "todo.sr.ht".oauth-client-secret = mkDefault null; + # Outgoing email for notifications generated by users + "todo.sr.ht".notify-from = mkDefault "CHANGEME@example.org"; + # The redis connection used for the webhooks worker + "todo.sr.ht".webhooks = mkDefault "redis://${rcfg.bind}:${toString rcfg.port}/1"; + # Network-key + "todo.sr.ht".network-key = mkDefault null; + + # Path for the lmtp daemon's unix socket. Direct incoming mail to this socket. + # Alternatively, specify IP:PORT and an SMTP server will be run instead. + "todo.sr.ht::mail".sock = mkDefault "/tmp/todo.sr.ht-lmtp.sock"; + # The lmtp daemon will make the unix socket group-read/write for users in this + # group. + "todo.sr.ht::mail".sock-group = mkDefault "postfix"; + + "todo.sr.ht::mail".posting-domain = mkDefault "todo.${cfg.originBase}"; + }; + + services.nginx.virtualHosts."todo.${cfg.originBase}" = { + forceSSL = true; + locations."/".proxyPass = "http://${cfg.address}:${toString port}"; + locations."/query".proxyPass = "http://${cfg.address}:${toString (port + 100)}"; + locations."/static".root = "${pkgs.sourcehut.todosrht}/${pkgs.sourcehut.python.sitePackages}/todosrht"; + }; + }; +} diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix index 9fcfe7b52e08..212ba06ef757 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters.nix @@ -51,6 +51,7 @@ let "pihole" "postfix" "postgres" + "process" "py-air-control" "redis" "rspamd" diff --git a/nixos/modules/services/monitoring/prometheus/exporters/process.nix b/nixos/modules/services/monitoring/prometheus/exporters/process.nix new file mode 100644 index 000000000000..e3b3d18367fd --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/process.nix @@ -0,0 +1,48 @@ +{ config, lib, pkgs, options }: + +with lib; + +let + cfg = config.services.prometheus.exporters.process; + configFile = pkgs.writeText "process-exporter.yaml" (builtins.toJSON cfg.settings); +in +{ + port = 9256; + extraOpts = { + settings.process_names = mkOption { + type = types.listOf types.anything; + default = {}; + example = literalExample '' + { + process_names = [ + # Remove nix store path from process name + { name = "{{.Matches.Wrapped}} {{ .Matches.Args }}"; cmdline = [ "^/nix/store[^ ]*/(?P[^ /]*) (?P.*)" ]; } + ]; + } + ''; + description = '' + All settings expressed as an Nix attrset. + + Check the official documentation for the corresponding YAML + settings that can all be used here: + ''; + }; + }; + serviceOpts = { + serviceConfig = { + DynamicUser = false; + ExecStart = '' + ${pkgs.prometheus-process-exporter}/bin/process-exporter \ + --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ + --config.path ${configFile} \ + ${concatStringsSep " \\\n " cfg.extraFlags} + ''; + NoNewPrivileges = true; + ProtectHome = true; + ProtectSystem = true; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + }; + }; +} diff --git a/nixos/modules/virtualisation/openvswitch.nix b/nixos/modules/virtualisation/openvswitch.nix index c6a3ceddc3e0..ccf32641df62 100644 --- a/nixos/modules/virtualisation/openvswitch.nix +++ b/nixos/modules/virtualisation/openvswitch.nix @@ -66,9 +66,7 @@ in { }; in (mkMerge [{ - - environment.systemPackages = [ cfg.package pkgs.ipsecTools ]; - + environment.systemPackages = [ cfg.package ]; boot.kernelModules = [ "tun" "openvswitch" ]; boot.extraModulePackages = [ cfg.package ]; @@ -146,6 +144,8 @@ in { } (mkIf (cfg.ipsec && (versionOlder cfg.package.version "2.6.0")) { + environment.systemPackages = [ pkgs.ipsecTools ]; + services.racoon.enable = true; services.racoon.configPath = "${runDir}/ipsec/etc/racoon/racoon.conf"; diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix index e3bfff218adb..d13058dff4c3 100644 --- a/nixos/tests/prometheus-exporters.nix +++ b/nixos/tests/prometheus-exporters.nix @@ -864,6 +864,25 @@ let ''; }; + process = { + exporterConfig = { + enable = true; + settings.process_names = [ + # Remove nix store path from process name + { name = "{{.Matches.Wrapped}} {{ .Matches.Args }}"; cmdline = [ "^/nix/store[^ ]*/(?P[^ /]*) (?P.*)" ]; } + ]; + }; + exporterTest = '' + wait_for_unit("prometheus-process-exporter.service") + wait_for_open_port(9256) + wait_until_succeeds( + "curl -sSf localhost:9256/metrics | grep -q '{}'".format( + 'namedprocess_namegroup_cpu_seconds_total{groupname="process-exporter ' + ) + ) + ''; + }; + py-air-control = { nodeName = "py_air_control"; exporterConfig = { diff --git a/nixos/tests/rss2email.nix b/nixos/tests/rss2email.nix index d62207a417b8..f32326feb50f 100644 --- a/nixos/tests/rss2email.nix +++ b/nixos/tests/rss2email.nix @@ -1,5 +1,5 @@ import ./make-test-python.nix { - name = "opensmtpd"; + name = "rss2email"; nodes = { server = { pkgs, ... }: { diff --git a/nixos/tests/sourcehut.nix b/nixos/tests/sourcehut.nix new file mode 100644 index 000000000000..b56a14ebf85e --- /dev/null +++ b/nixos/tests/sourcehut.nix @@ -0,0 +1,29 @@ +import ./make-test-python.nix ({ pkgs, ... }: + +{ + name = "sourcehut"; + + meta.maintainers = [ pkgs.lib.maintainers.tomberek ]; + + machine = { config, pkgs, ... }: { + virtualisation.memorySize = 2048; + networking.firewall.allowedTCPPorts = [ 80 ]; + + services.sourcehut = { + enable = true; + services = [ "meta" ]; + originBase = "sourcehut"; + settings."sr.ht".service-key = "8888888888888888888888888888888888888888888888888888888888888888"; + settings."sr.ht".network-key = "0000000000000000000000000000000000000000000="; + settings.webhooks.private-key = "0000000000000000000000000000000000000000000="; + }; + }; + + testScript = '' + start_all() + machine.wait_for_unit("multi-user.target") + machine.wait_for_unit("metasrht.service") + machine.wait_for_open_port(5000) + machine.succeed("curl -sL http://localhost:5000 | grep meta.sourcehut") + ''; +}) diff --git a/pkgs/applications/audio/boops/default.nix b/pkgs/applications/audio/boops/default.nix index ce6c4d1723fc..b1b91aaf9de0 100644 --- a/pkgs/applications/audio/boops/default.nix +++ b/pkgs/applications/audio/boops/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "boops"; - version = "1.4.0"; + version = "1.6.0"; src = fetchFromGitHub { owner = "sjaehn"; repo = "BOops"; rev = version; - sha256 = "1kkp6s431pjb1qrg1dq8ak3lj0ksqnxsij9jg6biscpfgbmaqdcq"; + sha256 = "sha256-7eNvt8PxIZCp83Y5XX5fBolBon4j+HPtu8wrgG8Miok="; }; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/applications/audio/faustPhysicalModeling/default.nix b/pkgs/applications/audio/faustPhysicalModeling/default.nix new file mode 100644 index 000000000000..f55cee957c77 --- /dev/null +++ b/pkgs/applications/audio/faustPhysicalModeling/default.nix @@ -0,0 +1,39 @@ +{ stdenv, lib, fetchFromGitHub, faust2jaqt, faust2lv2 }: +stdenv.mkDerivation rec { + pname = "faustPhysicalModeling"; + version = "2.20.2"; + + src = fetchFromGitHub { + owner = "grame-cncm"; + repo = "faust"; + rev = version; + sha256 = "1mm93ba26b7q69hvabzalg30dh8pl858nj4m2bb57pznnp09lq9a"; + }; + + buildInputs = [ faust2jaqt faust2lv2 ]; + + buildPhase = '' + cd examples/physicalModeling + + for f in *MIDI.dsp; do + faust2jaqt -time -vec -double -midi -nvoices 16 -t 99999 $f + faust2lv2 -time -vec -double -gui -nvoices 16 -t 99999 $f + done + ''; + + installPhase = '' + mkdir -p $out/lib/lv2 $out/bin + mv *.lv2/ $out/lib/lv2 + for f in $(find . -executable -type f); do + cp $f $out/bin/ + done + ''; + + meta = with lib; { + description = "The physical models included with faust compiled as jack standalone and lv2 instruments"; + homepage = "https://github.com/grame-cncm/faust/tree/master-dev/examples/physicalModeling"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ magnetophon ]; + }; +} diff --git a/pkgs/applications/audio/faustStk/default.nix b/pkgs/applications/audio/faustStk/default.nix new file mode 100644 index 000000000000..85ebb1d9a021 --- /dev/null +++ b/pkgs/applications/audio/faustStk/default.nix @@ -0,0 +1,39 @@ +{ stdenv, lib, fetchFromGitHub, faust2jaqt, faust2lv2 }: + +stdenv.mkDerivation rec { + pname = "faustPhhysicalModeling"; + version = "2.20.2"; + + src = fetchFromGitHub { + owner = "grame-cncm"; + repo = "faust"; + rev = version; + sha256 = "1mm93ba26b7q69hvabzalg30dh8pl858nj4m2bb57pznnp09lq9a"; + }; + + buildInputs = [ faust2jaqt faust2lv2 ]; + + buildPhase = '' + cd examples/physicalModeling/faust-stk + + for f in *.dsp; do + faust2jaqt -time -vec -midi -nvoices 8 -t 99999 $f + faust2lv2 -time -vec -double -gui -nvoices 32 -t 99999 $f + done + ''; + + installPhase = '' + mkdir -p $out/lib/lv2 $out/bin + mv *.lv2/ $out/lib/lv2 + for f in $(find . -executable -type f); do + cp $f $out/bin/ + done + ''; + meta = with lib; { + description = "The physical modeling instruments included with faust, compiled as jack standalone and lv2 instruments"; + homepage = "https://ccrma.stanford.edu/~rmichon/faustSTK/"; + license = licenses.stk; + platforms = platforms.linux; + maintainers = with maintainers; [ magnetophon ]; + }; +} diff --git a/pkgs/applications/audio/helvum/default.nix b/pkgs/applications/audio/helvum/default.nix index 1c2acb36f00d..1ecf9c56e861 100644 --- a/pkgs/applications/audio/helvum/default.nix +++ b/pkgs/applications/audio/helvum/default.nix @@ -1,5 +1,7 @@ { lib , fetchFromGitLab +, makeDesktopItem +, copyDesktopItems , rustPlatform , pkg-config , clang @@ -23,11 +25,19 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "sha256-uNTSU06Fz/ud04K40e98rb7o/uAht0DsiJOXeHX72vw="; - nativeBuildInputs = [ clang pkg-config ]; + nativeBuildInputs = [ clang copyDesktopItems pkg-config ]; buildInputs = [ glib gtk4 pipewire ]; LIBCLANG_PATH = "${libclang.lib}/lib"; + desktopItems = makeDesktopItem { + name = "Helvum"; + exec = pname; + desktopName = "Helvum"; + genericName = "Helvum"; + categories = "AudioVideo;"; + }; + meta = with lib; { description = "A GTK patchbay for pipewire"; homepage = "https://gitlab.freedesktop.org/ryuukyu/helvum"; diff --git a/pkgs/applications/audio/stochas/default.nix b/pkgs/applications/audio/stochas/default.nix index 0c50cda8e6c0..aa4b4acf5145 100644 --- a/pkgs/applications/audio/stochas/default.nix +++ b/pkgs/applications/audio/stochas/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "stochas"; - version = "1.3.4"; + version = "1.3.5"; src = fetchFromGitHub { owner = "surge-synthesizer"; repo = pname; rev = "v${version}"; - sha256 = "0b26mbj727dnygavz4kihnhmnnvwsr9l145w6kydq7bd7nwiw7lq"; + sha256 = "1z8q53qfigw6wwbvpca92b9pf9d0mv3nyb0fmszz5ikj3pcybi7m"; fetchSubmodules = true; }; diff --git a/pkgs/applications/misc/logseq/default.nix b/pkgs/applications/misc/logseq/default.nix index e8e69cd787b2..1900b92e3bbe 100644 --- a/pkgs/applications/misc/logseq/default.nix +++ b/pkgs/applications/misc/logseq/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "logseq"; - version = "0.0.16"; + version = "0.1.3"; src = fetchurl { url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage"; - sha256 = "dmgwFHJRy5qE71naRJKX0HCrVG0qQBOIM9TvCh4j/lY="; + sha256 = "1akg3xjbh01nb7l06qpvz3xsjj64kf042xjnapn60jlgg5y34vbm"; name = "${pname}-${version}.AppImage"; }; diff --git a/pkgs/applications/misc/moonlight-qt/default.nix b/pkgs/applications/misc/moonlight-qt/default.nix index 2393fe09b37d..ad9baec8f992 100644 --- a/pkgs/applications/misc/moonlight-qt/default.nix +++ b/pkgs/applications/misc/moonlight-qt/default.nix @@ -15,6 +15,7 @@ , openssl , libopus , ffmpeg +, wayland }: stdenv.mkDerivation rec { @@ -47,6 +48,7 @@ stdenv.mkDerivation rec { openssl libopus ffmpeg + wayland ]; meta = with lib; { diff --git a/pkgs/applications/misc/nimbo/default.nix b/pkgs/applications/misc/nimbo/default.nix index 1bc45bc6aee0..802a9f9a32c1 100644 --- a/pkgs/applications/misc/nimbo/default.nix +++ b/pkgs/applications/misc/nimbo/default.nix @@ -1,5 +1,6 @@ -{ lib, setuptools, boto3, requests, click, pyyaml, pydantic, buildPythonApplication -, pythonOlder, fetchFromGitHub, awscli }: +{ lib, setuptools, boto3, requests, click, pyyaml, pydantic +, buildPythonApplication, pythonOlder, installShellFiles, fetchFromGitHub +, awscli }: buildPythonApplication rec { pname = "nimbo"; @@ -12,13 +13,20 @@ buildPythonApplication rec { rev = "v${version}"; sha256 = "1fs28s9ynfxrb4rzba6cmik0kl0q0vkpb4zdappsq62jqf960k24"; }; - + nativeBuildInputs = [ installShellFiles ]; propagatedBuildInputs = [ setuptools boto3 awscli requests click pyyaml pydantic ]; # nimbo tests require an AWS instance doCheck = false; pythonImportsCheck = [ "nimbo" ]; + postInstall = '' + installShellCompletion --cmd nimbo \ + --zsh <(_NIMBO_COMPLETE=source_zsh $out/bin/nimbo) \ + --bash <(_NIMBO_COMPLETE=source_bash $out/bin/nimbo) \ + --fish <(_NIMBO_COMPLETE=source_fish $out/bin/nimbo) + ''; + meta = with lib; { description = "Run machine learning jobs on AWS with a single command"; homepage = "https://github.com/nimbo-sh/nimbo"; diff --git a/pkgs/applications/networking/gns3/server.nix b/pkgs/applications/networking/gns3/server.nix index b0d215c47bb4..47bf0eb106bf 100644 --- a/pkgs/applications/networking/gns3/server.nix +++ b/pkgs/applications/networking/gns3/server.nix @@ -24,7 +24,8 @@ in python.pkgs.buildPythonPackage { postPatch = '' substituteInPlace requirements.txt \ - --replace "aiohttp==3.6.2" "aiohttp>=3.6.2" + --replace "aiohttp==3.6.2" "aiohttp>=3.6.2" \ + --replace "py-cpuinfo==7.0.0" "py-cpuinfo>=8.0.0" ''; propagatedBuildInputs = with python.pkgs; [ diff --git a/pkgs/applications/networking/instant-messengers/viber/default.nix b/pkgs/applications/networking/instant-messengers/viber/default.nix index 0224edc652fa..7496063c58ee 100644 --- a/pkgs/applications/networking/instant-messengers/viber/default.nix +++ b/pkgs/applications/networking/instant-messengers/viber/default.nix @@ -9,7 +9,8 @@ stdenv.mkDerivation { version = "13.3.1.22"; src = fetchurl { - url = "https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb"; + # Official link: https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb + url = "http://web.archive.org/web/20210602004133/https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb"; sha256 = "0rs26x0lycavybn6k1hbb5kzms0zzcmxlrmi4g8k7vyafj6s8dqh"; }; diff --git a/pkgs/applications/networking/p2p/retroshare/default.nix b/pkgs/applications/networking/p2p/retroshare/default.nix new file mode 100644 index 000000000000..e69155d4c2f4 --- /dev/null +++ b/pkgs/applications/networking/p2p/retroshare/default.nix @@ -0,0 +1,53 @@ +{ lib, mkDerivation, fetchFromGitHub, qmake, cmake, pkg-config, miniupnpc, bzip2 +, speex, libmicrohttpd, libxml2, libxslt, sqlcipher, rapidjson, libXScrnSaver +, qtbase, qtx11extras, qtmultimedia, libgnome-keyring3 +}: + +mkDerivation rec { + pname = "retroshare"; + version = "0.6.6"; + + src = fetchFromGitHub { + owner = "RetroShare"; + repo = "RetroShare"; + rev = "v${version}"; + sha256 = "1hsymbhsfgycj39mdkrdp2hgq8irmvxa4a6jx2gg339m1fgf2xmh"; + fetchSubmodules = true; + }; + + patches = [ + # The build normally tries to get git sub-modules during build + # but we already have them checked out + ./no-submodules.patch + ]; + + nativeBuildInputs = [ pkg-config qmake cmake ]; + buildInputs = [ + speex miniupnpc qtmultimedia qtx11extras qtbase libgnome-keyring3 + bzip2 libXScrnSaver libxml2 libxslt sqlcipher libmicrohttpd rapidjson + ]; + + qmakeFlags = [ + # Upnp library autodetection doesn't work + "RS_UPNP_LIB=miniupnpc" + + # These values are normally found from the .git folder + "RS_MAJOR_VERSION=${lib.versions.major version}" + "RS_MINOR_VERSION=${lib.versions.minor version}" + "RS_MINI_VERSION=${lib.versions.patch version}" + "RS_EXTRA_VERSION=" + ]; + + postInstall = '' + # BT DHT bootstrap + cp libbitdht/src/bitdht/bdboot.txt $out/share/retroshare + ''; + + meta = with lib; { + description = "Decentralized peer to peer chat application."; + homepage = "http://retroshare.sourceforge.net/"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ StijnDW ]; + }; +} diff --git a/pkgs/applications/networking/p2p/retroshare/no-submodules.patch b/pkgs/applications/networking/p2p/retroshare/no-submodules.patch new file mode 100644 index 000000000000..d47268003090 --- /dev/null +++ b/pkgs/applications/networking/p2p/retroshare/no-submodules.patch @@ -0,0 +1,62 @@ +diff --git a/libretroshare/src/libretroshare.pro b/libretroshare/src/libretroshare.pro +index 84d18944e..71aeb67d2 100644 +--- a/libretroshare/src/libretroshare.pro ++++ b/libretroshare/src/libretroshare.pro +@@ -870,20 +870,14 @@ rs_jsonapi { + genrestbedlib.variable_out = PRE_TARGETDEPS + win32-g++:isEmpty(QMAKE_SH) { + genrestbedlib.commands = \ +- cd /D $$shell_path($${RS_SRC_PATH}) && git submodule update --init supportlibs/restbed || cd . $$escape_expand(\\n\\t) \ +- cd /D $$shell_path($${RESTBED_SRC_PATH}) && git submodule update --init dependency/asio || cd . $$escape_expand(\\n\\t) \ +- cd /D $$shell_path($${RESTBED_SRC_PATH}) && git submodule update --init dependency/catch || cd . $$escape_expand(\\n\\t )\ +- cd /D $$shell_path($${RESTBED_SRC_PATH}) && git submodule update --init dependency/kashmir || cd . $$escape_expand(\\n\\t) \ ++ cd /D $$shell_path($${RS_SRC_PATH}) && cd . $$escape_expand(\\n\\t) \ ++ cd /D $$shell_path($${RESTBED_SRC_PATH}) && cd . $$escape_expand(\\n\\t) \ ++ cd /D $$shell_path($${RESTBED_SRC_PATH}) && cd . $$escape_expand(\\n\\t )\ ++ cd /D $$shell_path($${RESTBED_SRC_PATH}) && cd . $$escape_expand(\\n\\t) \ + $(CHK_DIR_EXISTS) $$shell_path($$UDP_DISCOVERY_BUILD_PATH) $(MKDIR) $$shell_path($${UDP_DISCOVERY_BUILD_PATH}) $$escape_expand(\\n\\t) + } else { + genrestbedlib.commands = \ +- cd $${RS_SRC_PATH} && ( \ +- git submodule update --init supportlibs/restbed ; \ +- cd $${RESTBED_SRC_PATH} ; \ +- git submodule update --init dependency/asio ; \ +- git submodule update --init dependency/catch ; \ +- git submodule update --init dependency/kashmir ; \ +- true ) && \ ++ cd $${RS_SRC_PATH} && \ + mkdir -p $${RESTBED_BUILD_PATH} && + } + genrestbedlib.commands += \ +@@ -991,14 +985,9 @@ rs_broadcast_discovery { + udpdiscoverycpplib.variable_out = PRE_TARGETDEPS + win32-g++:isEmpty(QMAKE_SH) { + udpdiscoverycpplib.commands = \ +- cd /D $$shell_path($${RS_SRC_PATH}) && git submodule update --init supportlibs/udp-discovery-cpp || cd . $$escape_expand(\\n\\t) \ + $(CHK_DIR_EXISTS) $$shell_path($$UDP_DISCOVERY_BUILD_PATH) $(MKDIR) $$shell_path($${UDP_DISCOVERY_BUILD_PATH}) $$escape_expand(\\n\\t) + } else { +- udpdiscoverycpplib.commands = \ +- cd $${RS_SRC_PATH} && ( \ +- git submodule update --init supportlibs/udp-discovery-cpp || \ +- true ) && \ +- mkdir -p $${UDP_DISCOVERY_BUILD_PATH} && ++ udpdiscoverycpplib.commands = mkdir -p $${UDP_DISCOVERY_BUILD_PATH} && + } + udpdiscoverycpplib.commands += \ + cd $$shell_path($${UDP_DISCOVERY_BUILD_PATH}) && \ +diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro +index 654efd170..06cba9ba3 100644 +--- a/retroshare-gui/src/retroshare-gui.pro ++++ b/retroshare-gui/src/retroshare-gui.pro +@@ -66,10 +66,7 @@ rs_gui_cmark { + gencmarklib.CONFIG += target_predeps combine + gencmarklib.variable_out = PRE_TARGETDEPS + gencmarklib.commands = \ +- cd $${RS_SRC_PATH} && ( \ +- git submodule update --init supportlibs/cmark ; \ +- cd $${CMARK_SRC_PATH} ; \ +- true ) && \ ++ cd $${RS_SRC_PATH} && \ + mkdir -p $${CMARK_BUILD_PATH} && cd $${CMARK_BUILD_PATH} && \ + cmake \ + -DCMAKE_CXX_COMPILER=$$QMAKE_CXX \ diff --git a/pkgs/applications/science/electronics/dsview/default.nix b/pkgs/applications/science/electronics/dsview/default.nix index ab16866fe01c..eb8246a584d3 100644 --- a/pkgs/applications/science/electronics/dsview/default.nix +++ b/pkgs/applications/science/electronics/dsview/default.nix @@ -25,6 +25,17 @@ mkDerivation rec { # Using local file instead of content of commit #33e3d896a47 because # sourceRoot make it unappliable ./qt515.patch + + # Change from upstream master that removes extern-C scopes which + # cause failures with modern glib. This can likely be removed if + # there is an upstream release >1.12 + (fetchpatch { + name = "fix-extern-c.patch"; + url = "https://github.com/DreamSourceLab/DSView/commit/33cc733abe19872bf5ed08540a94b798d0d4ecf4.patch"; + sha256 = "sha256-TLfLQa3sdyNHTpMMvId/V6uUuOFihOZMFJOj9frnDoY="; + stripLen = 2; + extraPrefix = ""; + }) ]; nativeBuildInputs = [ cmake pkg-config ]; diff --git a/pkgs/applications/version-management/git-and-tools/tig/default.nix b/pkgs/applications/version-management/git-and-tools/tig/default.nix index 753a3443c315..fd57eb22186f 100644 --- a/pkgs/applications/version-management/git-and-tools/tig/default.nix +++ b/pkgs/applications/version-management/git-and-tools/tig/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "tig"; - version = "2.5.3"; + version = "2.5.4"; src = fetchFromGitHub { owner = "jonas"; repo = pname; rev = "${pname}-${version}"; - sha256 = "sha256-BXs7aKUYiU5L2OjhhmJ+dkHvNcrnw5qREwOTB6npLnw="; + sha256 = "sha256-dZqqUydZ4q/mDEjtojpMGfzAmW3yCNDvT9oCEmhq1hg="; }; nativeBuildInputs = [ makeWrapper autoreconfHook asciidoc xmlto docbook_xsl docbook_xml_dtd_45 findXMLCatalogs pkg-config ]; diff --git a/pkgs/applications/version-management/sourcehut/default.nix b/pkgs/applications/version-management/sourcehut/default.nix index 43d783e1934d..401a1437b7d9 100644 --- a/pkgs/applications/version-management/sourcehut/default.nix +++ b/pkgs/applications/version-management/sourcehut/default.nix @@ -31,6 +31,7 @@ let in with python.pkgs; recurseIntoAttrs { inherit python; + coresrht = toPythonApplication srht; buildsrht = toPythonApplication buildsrht; dispatchsrht = toPythonApplication dispatchsrht; gitsrht = toPythonApplication gitsrht; diff --git a/pkgs/data/fonts/edwin/default.nix b/pkgs/data/fonts/edwin/default.nix new file mode 100644 index 000000000000..4b1688dbc55e --- /dev/null +++ b/pkgs/data/fonts/edwin/default.nix @@ -0,0 +1,29 @@ +{ lib, fetchurl }: + +let + version = "0.52"; +in fetchurl { + name = "edwin-${version}"; + + url = "https://github.com/MuseScoreFonts/Edwin/archive/refs/tags/v${version}.tar.gz"; + + downloadToTemp = true; + + recursiveHash = true; + + sha256 = "sha256-e0ADK72ECl+QMvLWtFJfeHBmuEwzr9M+Kqvkd5Z2mmo="; + + postFetch = '' + tar xzf $downloadedFile + mkdir -p $out/share/fonts/opentype + install Edwin-${version}/*.otf $out/share/fonts/opentype + ''; + + meta = with lib; { + description = "A text font for musical scores"; + homepage = "https://github.com/MuseScoreFonts/Edwin"; + license = licenses.ofl; + platforms = platforms.all; + maintainers = with maintainers; [ fortuneteller2k ]; + }; +} diff --git a/pkgs/development/beam-modules/rebar3-release.nix b/pkgs/development/beam-modules/rebar3-release.nix index e8e2aecc460c..d2c9da6414fa 100644 --- a/pkgs/development/beam-modules/rebar3-release.nix +++ b/pkgs/development/beam-modules/rebar3-release.nix @@ -80,11 +80,22 @@ let dir=${if releaseType == "escript" then "bin" else "rel"} - mkdir -p "$out/$dir" + mkdir -p "$out/$dir" "$out/bin" cp -R --preserve=mode "_build/${profile}/$dir" "$out" + ${lib.optionalString (releaseType == "release") + "find $out/rel/*/bin -type f -executable -exec ln -s -t $out/bin {} \\;"} runHook postInstall ''; + postInstall = '' + for dir in $out/rel/*/erts-*; do + echo "ERTS found in $dir - removing references to erlang to reduce closure size" + for f in $dir/bin/{erl,start}; do + substituteInPlace "$f" --replace "${erlang}/lib/erlang" "''${dir/\/erts-*/}" + done + done + ''; + meta = { inherit (erlang.meta) platforms; } // meta; diff --git a/pkgs/development/compilers/ponyc/default.nix b/pkgs/development/compilers/ponyc/default.nix index 9fc8188daa10..36a83d47d6fd 100644 --- a/pkgs/development/compilers/ponyc/default.nix +++ b/pkgs/development/compilers/ponyc/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation (rec { pname = "ponyc"; - version = "0.38.3"; + version = "0.41.1"; src = fetchFromGitHub { owner = "ponylang"; repo = pname; rev = version; - sha256 = "14kivmyphi7gbd7mgd4cnsiwl4cl7wih8kwzh7n79s2s4c5hj4ak"; + sha256 = "02wx070cy1193xzv58vh79yzwgpqiayqlwd3i285698fppbcg69a"; # Due to a bug in LLVM 9.x, ponyc has to include its own vendored patched # LLVM. (The submodule is a specific tag in the LLVM source tree). @@ -23,34 +23,33 @@ stdenv.mkDerivation (rec { fetchSubmodules = true; }; - ponygbenchmark = fetchurl { - url = "https://github.com/google/benchmark/archive/v1.5.0.tar.gz"; - sha256 = "06i2cr4rj126m1zfz0x1rbxv1mw1l7a11mzal5kqk56cdrdicsiw"; - name = "v1.5.0.tar.gz"; + ponygbenchmark = fetchFromGitHub { + owner = "google"; + repo = "benchmark"; + rev = "v1.5.2"; + sha256 = "13rxagpzw6bal6ajlmrxlh9kgfvcixn6j734b2bvfqz7lch8n0pa"; }; nativeBuildInputs = [ cmake makeWrapper which ]; buildInputs = [ libxml2 z3 ]; - propagatedBuildInputs = [ cc ]; # Sandbox disallows network access, so disabling problematic networking tests patches = [ ./disable-tests.patch + ./fix-libstdcpp-path.patch (substituteAll { src = ./make-safe-for-sandbox.patch; googletest = fetchurl { url = "https://github.com/google/googletest/archive/release-1.8.1.tar.gz"; sha256 = "17147961i01fl099ygxjx4asvjanwdd446nwbq9v8156h98zxwcv"; - name = "release-1.8.1.tar.gz"; }; }) ]; postUnpack = '' mkdir -p source/build/build_libs/gbenchmark-prefix/src - tar -C source/build/build_libs/gbenchmark-prefix/src -zxvf "$ponygbenchmark" - mv source/build/build_libs/gbenchmark-prefix/src/benchmark-1.5.0 \ - source/build/build_libs/gbenchmark-prefix/src/benchmark + cp -r "$ponygbenchmark"/ source/build/build_libs/gbenchmark-prefix/src/benchmark + chmod -R u+w source/build/build_libs/gbenchmark-prefix/src/benchmark ''; dontConfigure = true; @@ -61,7 +60,6 @@ stdenv.mkDerivation (rec { patch -d lib/llvm/src/ -p1 < lib/llvm/patches/2020-09-01-is-trivially-copyable.diff patch -d lib/llvm/src/ -p1 < lib/llvm/patches/2020-01-07-01-c-exports.diff patch -d lib/llvm/src/ -p1 < lib/llvm/patches/2019-12-23-01-jit-eh-frames.diff - substituteInPlace packages/process/_test.pony \ --replace '"/bin/' '"${coreutils}/bin/' \ --replace '=/bin' "${coreutils}/bin" @@ -91,7 +89,6 @@ stdenv.mkDerivation (rec { + lib.optionalString stdenv.isDarwin "bits=64 " + lib.optionalString (stdenv.isDarwin && (!lto)) "lto=no " + '' install - wrapProgram $out/bin/ponyc \ --prefix PATH ":" "${stdenv.cc}/bin" \ --set-default CC "$CC" \ diff --git a/pkgs/development/compilers/ponyc/fix-libstdcpp-path.patch b/pkgs/development/compilers/ponyc/fix-libstdcpp-path.patch new file mode 100644 index 000000000000..63b0fa699129 --- /dev/null +++ b/pkgs/development/compilers/ponyc/fix-libstdcpp-path.patch @@ -0,0 +1,14 @@ +diff --git a/src/libponyc/CMakeLists.txt b/src/libponyc/CMakeLists.txt +index bf2c385e..11d0d619 100644 +--- a/src/libponyc/CMakeLists.txt ++++ b/src/libponyc/CMakeLists.txt +@@ -136,7 +136,7 @@ elseif(${CMAKE_HOST_SYSTEM_NAME} MATCHES "DragonFly") + else() + # add a rule to generate the standalone library if needed + add_custom_command(OUTPUT libponyc-standalone.a +- COMMAND cp `find /usr/lib/ -name 'libstdc++.a' -print -quit` libstdcpp.a ++ COMMAND cp `${CMAKE_CXX_COMPILER} --print-file-name='libstdc++.a'` libstdcpp.a + COMMAND echo "create libponyc-standalone.a" > standalone.mri + COMMAND echo "addlib ${PROJECT_SOURCE_DIR}/../../build/libs/lib/libblake2.a" >> standalone.mri + COMMAND echo "addlib libstdcpp.a" >> standalone.mri + diff --git a/pkgs/development/compilers/ponyc/make-safe-for-sandbox.patch b/pkgs/development/compilers/ponyc/make-safe-for-sandbox.patch index b07763a475d2..49addcbc616e 100644 --- a/pkgs/development/compilers/ponyc/make-safe-for-sandbox.patch +++ b/pkgs/development/compilers/ponyc/make-safe-for-sandbox.patch @@ -1,10 +1,10 @@ ---- a/lib/CMakeLists.txt 2020-09-27 02:39:12.862940179 +0000 -+++ b/lib/CMakeLists.txt 2020-09-27 02:39:16.451957865 +0000 +--- a/lib/CMakeLists.txt 2021-05-27 15:58:36.819331229 -0400 ++++ b/lib/CMakeLists.txt 2021-05-27 16:00:19.768268649 -0400 @@ -10,12 +10,12 @@ endif() ExternalProject_Add(gbenchmark -- URL https://github.com/google/benchmark/archive/v1.5.0.tar.gz +- URL https://github.com/google/benchmark/archive/v1.5.2.tar.gz + SOURCE_DIR gbenchmark-prefix/src/benchmark CMAKE_ARGS -DCMAKE_BUILD_TYPE=${PONYC_LIBS_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DBENCHMARK_ENABLE_GTEST_TESTS=OFF -DCMAKE_CXX_FLAGS=-fpic --no-warn-unused-cli ) @@ -30,12 +30,12 @@ - option(GIT_SUBMODULE "Check submodules during build" ON) - if(GIT_SUBMODULE) - message(STATUS "Updating submodules...") -- execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive +- execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive --depth 1 - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - RESULT_VARIABLE git_submod_result) - #message("git_submod_result ${git_submod_result}") - if(NOT git_submod_result EQUAL "0") -- message(FATAL_ERROR "git submodule update --init --recursive failed with ${git_submod_result}, please checkout submodules") +- message(FATAL_ERROR "git submodule update --init --recursive --depth 1 failed with ${git_submod_result}, please checkout submodules") - endif() - - # we check to make sure the submodule hash matches diff --git a/pkgs/development/interpreters/evcxr/default.nix b/pkgs/development/interpreters/evcxr/default.nix index a6e995c9bcc4..7dabff3d2e5e 100644 --- a/pkgs/development/interpreters/evcxr/default.nix +++ b/pkgs/development/interpreters/evcxr/default.nix @@ -3,16 +3,16 @@ rustPlatform.buildRustPackage rec { pname = "evcxr"; - version = "0.9.0"; + version = "0.10.0"; src = fetchFromGitHub { owner = "google"; repo = "evcxr"; rev = "v${version}"; - sha256 = "sha256-89+RZrG/QUo3JY9N5eTiMigUnlUP+wZWRW8PSnCcsrY="; + sha256 = "sha256-EPxWLPw+V5eIm+eL8m8Xw14adgshthJSDRyWohsJH88="; }; - cargoSha256 = "sha256-gZLSTWS5cLfJvk4/tv8FG2I2vH3PKljWbJDOflNDmTQ="; + cargoSha256 = "sha256-5jGrv0YRVMo2X9p/WPgjYV3z193hl2+NiFTZr3v0Iik="; RUST_SRC_PATH = "${rustPlatform.rustLibSrc}"; diff --git a/pkgs/development/libraries/aws-c-common/default.nix b/pkgs/development/libraries/aws-c-common/default.nix index 580eaec2ebe7..9913631e8548 100644 --- a/pkgs/development/libraries/aws-c-common/default.nix +++ b/pkgs/development/libraries/aws-c-common/default.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation rec { pname = "aws-c-common"; - version = "0.5.5"; + version = "0.5.11"; src = fetchFromGitHub { owner = "awslabs"; repo = pname; rev = "v${version}"; - sha256 = "sha256-rGv+fa+UF/f6mY8CmZpkjP98CAcAQCTjL3OI7HsUHcU="; + sha256 = "sha256-4CYbL+ICabKvpfjlALJ0wRbuwgy+JKJnKqYbQFsHQsI="; }; nativeBuildInputs = [ cmake ]; @@ -22,9 +22,6 @@ stdenv.mkDerivation rec { "-DCMAKE_SKIP_BUILD_RPATH=OFF" # for tests ]; - NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin - "-Wno-nullability-extension -Wno-typedef-redefinition"; - doCheck = true; meta = with lib; { diff --git a/pkgs/development/libraries/box2d/default.nix b/pkgs/development/libraries/box2d/default.nix index 47a1c0917f07..1b6ede9b3101 100644 --- a/pkgs/development/libraries/box2d/default.nix +++ b/pkgs/development/libraries/box2d/default.nix @@ -6,11 +6,11 @@ stdenv.mkDerivation rec { version = "2.3.1"; src = fetchurl { - url = "https://github.com/erincatto/Box2D/archive/v${version}.tar.gz"; - sha256 = "0llpcifl8zbjbpxdwz87drd01m3lwnv82xb4av6kca1xn4w2gmkm"; + url = "https://github.com/erincatto/box2d/archive/v${version}.tar.gz"; + sha256 = "0p03ngsmyz0r5kbpiaq10ns4fxwkjvvawi8k6pfall46b93wizsq"; }; - sourceRoot = "Box2D-${version}/Box2D"; + sourceRoot = "box2d-${version}/Box2D"; nativeBuildInputs = [ cmake unzip pkg-config ]; buildInputs = [ libGLU libGL freeglut libX11 xorgproto libXi ]; diff --git a/pkgs/development/libraries/gupnp/default.nix b/pkgs/development/libraries/gupnp/default.nix index bd8151d603e9..c91d25123f61 100644 --- a/pkgs/development/libraries/gupnp/default.nix +++ b/pkgs/development/libraries/gupnp/default.nix @@ -1,5 +1,6 @@ { lib, stdenv , fetchurl +, fetchpatch , meson , ninja , pkg-config @@ -28,6 +29,14 @@ stdenv.mkDerivation rec { sha256 = "sha256-96AwfqUfXkTRuDL0k92QRURKOk4hHvhd/Zql3W6up9E="; }; + patches = [ + (fetchpatch { + name = "CVE-2021-33516.patch"; + url = "https://gitlab.gnome.org/GNOME/gupnp/-/commit/ca6ec9dcb26fd7a2a630eb6a68118659b589afac.patch"; + sha256 = "sha256-G7e/xNQB7Kp2fPzqVeD/cH3h1co9hZXh55QOUBnAnvU="; + }) + ]; + nativeBuildInputs = [ meson ninja diff --git a/pkgs/development/libraries/mvapich/default.nix b/pkgs/development/libraries/mvapich/default.nix new file mode 100644 index 000000000000..71c6ce38f952 --- /dev/null +++ b/pkgs/development/libraries/mvapich/default.nix @@ -0,0 +1,73 @@ +{ lib, stdenv, fetchurl, pkg-config, bison, numactl, libxml2 +, perl, gfortran, slurm, openssh, hwloc, zlib, makeWrapper +# InfiniBand dependencies +, opensm, rdma-core +# OmniPath dependencies +, libpsm2, libfabric +# Compile with slurm as a process manager +, useSlurm ? false +# Network type for MVAPICH2 +, network ? "ethernet" +} : + +assert builtins.elem network [ "ethernet" "infiniband" "omnipath" ]; + +stdenv.mkDerivation rec { + pname = "mvapich"; + version = "2.3.6"; + + src = fetchurl { + url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-${version}.tar.gz"; + sha256 = "0jd28vy9ivl3rcpkxmhw73b6krzm0pd9jps8asw92wa00lm2z9mk"; + }; + + nativeBuildInputs = [ pkg-config bison makeWrapper ]; + propagatedBuildInputs = [ numactl rdma-core zlib opensm ]; + buildInputs = with lib; [ + numactl + libxml2 + perl + gfortran + openssh + hwloc + ] ++ optionals (network == "infiniband") [ rdma-core opensm ] + ++ optionals (network == "omnipath") [ libpsm2 libfabric ] + ++ optional useSlurm slurm; + + configureFlags = with lib; [ + "--with-pm=hydra" + "--enable-fortran=all" + "--enable-cxx" + "--enable-threads=multiple" + "--enable-hybrid" + "--enable-shared" + ] ++ optional useSlurm "--with-pm=slurm" + ++ optional (network == "ethernet") "--with-device=ch3:sock" + ++ optionals (network == "infiniband") [ "--with-device=ch3:mrail" "--with-rdma=gen2" ] + ++ optionals (network == "omnipath") ["--with-device=ch3:psm" "--with-psm2=${libpsm2}"]; + + doCheck = true; + + preFixup = '' + # /tmp/nix-build... ends up in the RPATH, fix it manually + for entry in $out/bin/mpichversion $out/bin/mpivars; do + echo "fix rpath: $entry" + patchelf --set-rpath "$out/lib" $entry + done + + # Ensure the default compilers are the ones mvapich was built with + substituteInPlace $out/bin/mpicc --replace 'CC="gcc"' 'CC=${stdenv.cc}/bin/gcc' + substituteInPlace $out/bin/mpicxx --replace 'CXX="g++"' 'CC=${stdenv.cc}/bin/g++' + substituteInPlace $out/bin/mpifort --replace 'FC="gfortran"' 'CC=${gfortran}/bin/gfortran' + ''; + + enableParallelBuilding = true; + + meta = with lib; { + description = "MPI-3.1 implementation optimized for Infiband transport"; + homepage = "https://mvapich.cse.ohio-state.edu"; + license = licenses.bsd3; + maintainers = [ maintainers.markuskowa ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/development/libraries/sundials/default.nix b/pkgs/development/libraries/sundials/default.nix index 3536ebd586e4..f04b22abe8c6 100644 --- a/pkgs/development/libraries/sundials/default.nix +++ b/pkgs/development/libraries/sundials/default.nix @@ -17,8 +17,8 @@ stdenv.mkDerivation rec { outputs = [ "out" "examples" ]; src = fetchurl { - url = "https://computation.llnl.gov/projects/${pname}/download/${pname}-${version}.tar.gz"; - sha256 = "jW3QlP7Mu41uzEE0DsFqZfq6yC7UQVAj9tfBwjkOovM="; + url = "https://github.com/LLNL/sundials/releases/download/v${version}/sundials-${version}.tar.gz"; + hash = "sha256-SNp7qoFS3bIq7RsC2C0du0+/6iKs9nY0ARqgMDoQCkM="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/libraries/xtensor/default.nix b/pkgs/development/libraries/xtensor/default.nix new file mode 100644 index 000000000000..fe978998d637 --- /dev/null +++ b/pkgs/development/libraries/xtensor/default.nix @@ -0,0 +1,36 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, gtest +, xsimd +, xtl +}: +stdenv.mkDerivation rec { + pname = "xtensor"; + version = "0.23.10"; + + src = fetchFromGitHub { + owner = "xtensor-stack"; + repo = "xtensor"; + rev = version; + sha256 = "1ayrhyh9x33b87ic01b4jzxc8x27yxpxzya5x54ikazvz8p71n14"; + }; + + nativeBuildInputs = [ cmake ]; + propagatedBuildInputs = [ xtl xsimd ]; + + cmakeFlags = [ "-DBUILD_TESTS=ON" ]; + + doCheck = true; + checkInputs = [ gtest ]; + checkTarget = "xtest"; + + meta = with lib; { + description = "Multi-dimensional arrays with broadcasting and lazy computing."; + homepage = "https://github.com/xtensor-stack/xtensor"; + license = licenses.bsd3; + maintainers = with maintainers; [ cpcloud ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/development/php-packages/deployer/default.nix b/pkgs/development/php-packages/deployer/default.nix index 2e24a98b0bfb..7679fb5ea51b 100644 --- a/pkgs/development/php-packages/deployer/default.nix +++ b/pkgs/development/php-packages/deployer/default.nix @@ -1,4 +1,4 @@ -{ mkDerivation, fetchurl, makeWrapper, lib, php }: +{ mkDerivation, fetchurl, makeWrapper, installShellFiles, lib, php }: mkDerivation rec { pname = "deployer"; @@ -11,12 +11,17 @@ mkDerivation rec { dontUnpack = true; - nativeBuildInputs = [ makeWrapper ]; + nativeBuildInputs = [ makeWrapper installShellFiles ]; installPhase = '' mkdir -p $out/bin install -D $src $out/libexec/deployer/deployer.phar makeWrapper ${php}/bin/php $out/bin/dep --add-flags "$out/libexec/deployer/deployer.phar" + + # fish support currently broken: https://github.com/deployphp/deployer/issues/2527 + installShellCompletion --cmd dep \ + --bash <($out/bin/dep autocomplete --install) \ + --zsh <($out/bin/dep autocomplete --install) ''; meta = with lib; { diff --git a/pkgs/development/python-modules/aio-georss-client/default.nix b/pkgs/development/python-modules/aio-georss-client/default.nix new file mode 100644 index 000000000000..1ac37e8b602a --- /dev/null +++ b/pkgs/development/python-modules/aio-georss-client/default.nix @@ -0,0 +1,51 @@ +{ lib +, aiohttp +, aresponses +, asynctest +, buildPythonPackage +, dateparser +, fetchFromGitHub +, haversine +, pytest-asyncio +, pytestCheckHook +, pythonOlder +, requests +, xmltodict +}: + +buildPythonPackage rec { + pname = "aio-georss-client"; + version = "0.7"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-aio-georss-client"; + rev = "v${version}"; + sha256 = "1nhw2sf92dbizxdcil1wdmbaa3hbmsiriy8jfzpqxsliw5dc0kmh"; + }; + + propagatedBuildInputs = [ + aiohttp + haversine + xmltodict + requests + dateparser + ]; + + checkInputs = [ + aresponses + asynctest + pytest-asyncio + pytestCheckHook + ]; + + pythonImportsCheck = [ "aio_georss_client" ]; + + meta = with lib; { + description = "Python library for accessing GeoRSS feeds"; + homepage = "https://github.com/exxamalte/python-aio-georss-client"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/aio-georss-gdacs/default.nix b/pkgs/development/python-modules/aio-georss-gdacs/default.nix new file mode 100644 index 000000000000..75894aa0e7a7 --- /dev/null +++ b/pkgs/development/python-modules/aio-georss-gdacs/default.nix @@ -0,0 +1,43 @@ +{ lib +, aio-georss-client +, aresponses +, buildPythonPackage +, dateparser +, fetchFromGitHub +, pytest-asyncio +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "aio-georss-gdacs"; + version = "0.4"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-aio-georss-gdacs"; + rev = "v${version}"; + sha256 = "0rcrhdpgj84hfifx9rzxz15ajzsk069iknb28gicw1cm1qv4vfxm"; + }; + + propagatedBuildInputs = [ + aio-georss-client + dateparser + ]; + + checkInputs = [ + aresponses + pytest-asyncio + pytestCheckHook + ]; + + pythonImportsCheck = [ "aio_georss_gdacs" ]; + + meta = with lib; { + description = "Python library for accessing GeoRSS feeds"; + homepage = "https://github.com/exxamalte/python-aio-georss-gdacs"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/aiokafka/default.nix b/pkgs/development/python-modules/aiokafka/default.nix index ba32976b96b1..61ff78a3428e 100644 --- a/pkgs/development/python-modules/aiokafka/default.nix +++ b/pkgs/development/python-modules/aiokafka/default.nix @@ -1,7 +1,8 @@ { lib , buildPythonPackage , fetchFromGitHub -, isPy27 +, pythonOlder +, dataclasses , kafka-python , cython , zlib @@ -9,15 +10,14 @@ buildPythonPackage rec { pname = "aiokafka"; - version = "0.7.0"; - - disabled = isPy27; + version = "0.7.1"; + disabled = pythonOlder "3.6"; src = fetchFromGitHub { owner = "aio-libs"; - repo = "aiokafka"; + repo = pname; rev = "v${version}"; - sha256 = "16pcgv38syqy6sj3w7zx95zgynpd642n3i95dpiw0ivhpqrxxhrf"; + sha256 = "sha256-D89ppIUliJJMDuCySrZUyN6Rlm01gFskz6ayHmqploc="; }; nativeBuildInputs = [ @@ -30,16 +30,15 @@ buildPythonPackage rec { propagatedBuildInputs = [ kafka-python + ] ++ lib.optionals (pythonOlder "3.7") [ + dataclasses ]; - postPatch = '' - substituteInPlace setup.py \ - --replace "kafka-python==1.4.6" "kafka-python" - ''; - # checks require running kafka server doCheck = false; + pythonImportsCheck = [ "aiokafka" ]; + meta = with lib; { description = "Kafka integration with asyncio"; homepage = "https://aiokafka.readthedocs.org"; diff --git a/pkgs/development/python-modules/aioswitcher/default.nix b/pkgs/development/python-modules/aioswitcher/default.nix index 1ab0db664f54..2535253dc2a3 100644 --- a/pkgs/development/python-modules/aioswitcher/default.nix +++ b/pkgs/development/python-modules/aioswitcher/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "aioswitcher"; - version = "1.2.3"; + version = "1.2.5"; format = "pyproject"; src = fetchFromGitHub { owner = "TomerFi"; repo = pname; rev = version; - sha256 = "sha256-Qp5iVk71JxhPVrytWuXkzpqPNPmMQubO0t9sgeQfO8c="; + sha256 = "sha256-eiWmB2DVNAYHPHfnVwv0+4A/wYLgtAa1ReGsmwiIvAk="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/clldutils/default.nix b/pkgs/development/python-modules/clldutils/default.nix index 2271337dc986..318354786b56 100644 --- a/pkgs/development/python-modules/clldutils/default.nix +++ b/pkgs/development/python-modules/clldutils/default.nix @@ -15,14 +15,14 @@ buildPythonPackage rec { pname = "clldutils"; - version = "3.8.0"; + version = "3.9.0"; disabled = isPy27; src = fetchFromGitHub { owner = "clld"; repo = pname; rev = "v${version}"; - sha256 = "18sjcqzprf96s7bkn5zm3lh83hxfxj56nycxyldrwz7ndgkgxxx2"; + sha256 = "07ljq7v1zvaxyl6xn4a2p4097lgd5j9bz71lf05y5bz8k024mxbr"; }; patchPhase = '' @@ -48,6 +48,6 @@ buildPythonPackage rec { description = "CSV on the Web"; homepage = "https://github.com/cldf/csvw"; license = licenses.asl20; - maintainers = with maintainers; [ hexa ]; + maintainers = with maintainers; [ ]; }; } diff --git a/pkgs/development/python-modules/georss-client/default.nix b/pkgs/development/python-modules/georss-client/default.nix new file mode 100644 index 000000000000..e142942f9394 --- /dev/null +++ b/pkgs/development/python-modules/georss-client/default.nix @@ -0,0 +1,43 @@ +{ lib +, buildPythonPackage +, dateparser +, fetchFromGitHub +, haversine +, pytestCheckHook +, pythonOlder +, requests +, xmltodict +}: + +buildPythonPackage rec { + pname = "georss-client"; + version = "0.13"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-georss-client"; + rev = "v${version}"; + sha256 = "1pvx2qb8gs2f7bb8xxq689ydxirsl3bcgsbi5qv5klc4c051dj8i"; + }; + + propagatedBuildInputs = [ + haversine + xmltodict + requests + dateparser + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "georss_client" ]; + + meta = with lib; { + description = "Python library for accessing GeoRSS feeds"; + homepage = "https://github.com/exxamalte/python-georss-client"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/georss-generic-client/default.nix b/pkgs/development/python-modules/georss-generic-client/default.nix new file mode 100644 index 000000000000..e01d7fa789f7 --- /dev/null +++ b/pkgs/development/python-modules/georss-generic-client/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, georss-client +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "georss-generic-client"; + version = "0.4"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-georss-generic-client"; + rev = "v${version}"; + sha256 = "0i4shx6fvwibx0hlfmd0dyq2n5lkrqwmlm0l476fdb9bw5lkaiy0"; + }; + + propagatedBuildInputs = [ + georss-client + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "georss_generic_client" ]; + + meta = with lib; { + description = "Python library for accessing generic GeoRSS feeds"; + homepage = "https://github.com/exxamalte/python-georss-generic-client"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix b/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix new file mode 100644 index 000000000000..4ce833668474 --- /dev/null +++ b/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, georss-client +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "georss-ign-sismologia-client"; + version = "0.2"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-georss-ign-sismologia-client"; + rev = "v${version}"; + sha256 = "1xylgvbdrpl3wxa6qqc8jma4c9520rld0pv28y3b6b0m07ab6ijl"; + }; + + propagatedBuildInputs = [ + georss-client + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "georss_ign_sismologia_client" ]; + + meta = with lib; { + description = "Python library for accessing the IGN Sismologia GeoRSS feed"; + homepage = "https://github.com/exxamalte/python-georss-ign-sismologia-client"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix b/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix new file mode 100644 index 000000000000..a4b317407ea2 --- /dev/null +++ b/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, georss-client +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "georss-ingv-centro-nazionale-terremoti-client"; + version = "0.4"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-georss-ingv-centro-nazionale-terremoti-client"; + rev = "v${version}"; + sha256 = "06qhxczznckb208bnfly0q5099scq1yj5rk67a6fqczpsmzcln6x"; + }; + + propagatedBuildInputs = [ + georss-client + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "georss_ingv_centro_nazionale_terremoti_client" ]; + + meta = with lib; { + description = "Python library for accessing the INGV Centro Nazionale Terremoti GeoRSS feed"; + homepage = "https://github.com/exxamalte/python-georss-ingv-centro-nazionale-terremoti-client"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix b/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix new file mode 100644 index 000000000000..fc482e220c9b --- /dev/null +++ b/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, georss-client +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "georss-nrcan-earthquakes-client"; + version = "0.2"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-georss-nrcan-earthquakes-client"; + rev = "v${version}"; + sha256 = "0d5cdvi35wj30yvql1sr5n4vz0g4ydrslhql3bya1b7pndfs0h3y"; + }; + + propagatedBuildInputs = [ + georss-client + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "georss_nrcan_earthquakes_client" ]; + + meta = with lib; { + description = "Python library for accessing Natural Resources Canada Earthquakes feed"; + homepage = "https://github.com/exxamalte/python-georss-nrcan-earthquakes-client"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix b/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix new file mode 100644 index 000000000000..f95e0a4702bf --- /dev/null +++ b/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, georss-client +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "georss-qld-bushfire-alert-client"; + version = "0.4"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-georss-qld-bushfire-alert-client"; + rev = "v${version}"; + sha256 = "14k7q0ynray1fj0lhxvgxpbdh4pmsqqk9gzmv38p9i7ijx8h1sc8"; + }; + + propagatedBuildInputs = [ + georss-client + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "georss_qld_bushfire_alert_client" ]; + + meta = with lib; { + description = "Python library for accessing Queensland Bushfire Alert feed"; + homepage = "https://github.com/exxamalte/python-georss-qld-bushfire-alert-client"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix b/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix new file mode 100644 index 000000000000..27d43d900fd6 --- /dev/null +++ b/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, georss-client +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "georss-tfs-incidents-client"; + version = "0.2"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-georss-tfs-incidents-client"; + rev = "v${version}"; + sha256 = "10qscn7kncb7h0b8mjykkf5kmm3ga9l8gss4acb888iaigcjgavf"; + }; + + propagatedBuildInputs = [ + georss-client + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "georss_tfs_incidents_client" ]; + + meta = with lib; { + description = "Python library for accessing Tasmania Fire Service Incidents feed"; + homepage = "https://github.com/exxamalte/python-georss-tfs-incidents-client"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/georss-wa-dfes-client/default.nix b/pkgs/development/python-modules/georss-wa-dfes-client/default.nix new file mode 100644 index 000000000000..1f478151bb3e --- /dev/null +++ b/pkgs/development/python-modules/georss-wa-dfes-client/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, georss-client +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "georss-wa-dfes-client"; + version = "0.2"; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "exxamalte"; + repo = "python-georss-wa-dfes-client"; + rev = "v${version}"; + sha256 = "0zfjq6yyrss61vwgdrykwkikb009q63kg9ab6ryb2509wiwwfwvk"; + }; + + propagatedBuildInputs = [ + georss-client + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "georss_wa_dfes_client" ]; + + meta = with lib; { + description = "Python library for accessing WA Department of Fire and Emergency Services (DFES) feed"; + homepage = "https://github.com/exxamalte/python-georss-wa-dfes-client"; + license = with licenses; [ asl20 ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/icmplib/default.nix b/pkgs/development/python-modules/icmplib/default.nix index 2718b6340540..fdbf45edaaeb 100644 --- a/pkgs/development/python-modules/icmplib/default.nix +++ b/pkgs/development/python-modules/icmplib/default.nix @@ -4,24 +4,22 @@ , pbr , pythonOlder , requests -, six }: buildPythonPackage rec { pname = "icmplib"; - version = "2.1.1"; - disabled = pythonOlder "3.6"; + version = "3.0.0"; + disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "ValentinBELYN"; repo = pname; rev = "v${version}"; - sha256 = "06xx9854yzxa7x1mjfzbhhw5rfzgjnw269j5k0rshyqh3qvw1nwv"; + sha256 = "sha256-i5cmL8kOrehldOwX2RfVAfL4HdzJ+9S3BojJI2raUSA="; }; propagatedBuildInputs = [ pbr - six requests ]; diff --git a/pkgs/development/python-modules/motioneye-client/default.nix b/pkgs/development/python-modules/motioneye-client/default.nix index 44de5318787f..a769128fd861 100644 --- a/pkgs/development/python-modules/motioneye-client/default.nix +++ b/pkgs/development/python-modules/motioneye-client/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "motioneye-client"; - version = "0.3.8"; + version = "0.3.9"; format = "pyproject"; disabled = pythonOlder "3.8"; @@ -19,7 +19,7 @@ buildPythonPackage rec { owner = "dermotduffy"; repo = pname; rev = "v${version}"; - sha256 = "sha256-vTTjH4LhUcbh+/838wR0vnvml2y78Ro8SGwSZ6aApdQ="; + sha256 = "sha256-pLdAxBipmr+HUr9NSupm7h/68PK95r3zY/qZTBs1m54="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/sanic/default.nix b/pkgs/development/python-modules/sanic/default.nix index 8c18380c3bad..5f610f6feab0 100644 --- a/pkgs/development/python-modules/sanic/default.nix +++ b/pkgs/development/python-modules/sanic/default.nix @@ -42,6 +42,8 @@ buildPythonPackage rec { "test_zero_downtime" # flaky "test_keep_alive_client_timeout" + "test_check_timeouts_request_timeout" + "test_check_timeouts_response_timeout" "test_reloader_live" ]; diff --git a/pkgs/development/python-modules/sphinxcontrib-excel-table/default.nix b/pkgs/development/python-modules/sphinxcontrib-excel-table/default.nix new file mode 100644 index 000000000000..e48b24c3644f --- /dev/null +++ b/pkgs/development/python-modules/sphinxcontrib-excel-table/default.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, fetchPypi +, sphinx +, openpyxl +}: + +buildPythonPackage rec { + pname = "sphinxcontrib-excel-table"; + version = "1.0.8"; + + src = fetchPypi { + inherit pname version; + hash = "sha256:1q79byn3k3ribvwqafbpixwabjhymk46ns8ym0hxcn8vhf5nljzd"; + }; + + propagatedBuildInputs = [ sphinx openpyxl ]; + + pythonImportsCheck = [ "sphinxcontrib.excel_table" ]; + + # No tests present upstream + doCheck = false; + + meta = with lib; { + description = "Sphinx excel-table extension"; + homepage = "https://github.com/hackerain/sphinxcontrib-excel-table"; + maintainers = with maintainers; [ raboof ]; + license = licenses.asl20; + }; +} diff --git a/pkgs/development/python-modules/subliminal/default.nix b/pkgs/development/python-modules/subliminal/default.nix index 77ddb125a94b..cedbb7bcf786 100644 --- a/pkgs/development/python-modules/subliminal/default.nix +++ b/pkgs/development/python-modules/subliminal/default.nix @@ -1,7 +1,6 @@ { lib , fetchPypi , buildPythonPackage -, isPy3k , guessit , babelfish , enzyme @@ -16,7 +15,6 @@ , appdirs , rarfile , pytz -, futures , sympy , vcrpy , pytest @@ -38,7 +36,7 @@ buildPythonPackage rec { guessit babelfish enzyme beautifulsoup4 requests click dogpile_cache stevedore chardet pysrt six appdirs rarfile pytz - ] ++ lib.optional (!isPy3k) futures; + ]; checkInputs = [ sympy vcrpy pytest pytest-flakes @@ -47,6 +45,7 @@ buildPythonPackage rec { # https://github.com/Diaoul/subliminal/pull/963 doCheck = false; + pythonImportsCheck = [ "subliminal" ]; meta = with lib; { homepage = "https://github.com/Diaoul/subliminal"; diff --git a/pkgs/development/r-modules/default.nix b/pkgs/development/r-modules/default.nix index f16a6d0bb4aa..254dfbb1788b 100644 --- a/pkgs/development/r-modules/default.nix +++ b/pkgs/development/r-modules/default.nix @@ -375,6 +375,7 @@ let affyio = [ pkgs.zlib.dev ]; VariantAnnotation = [ pkgs.zlib.dev pkgs.curl.dev ]; snpStats = [ pkgs.zlib.dev ]; + hdf5r = [ pkgs.hdf5.dev ]; }; packagesWithBuildInputs = { diff --git a/pkgs/development/tools/f2c/default.nix b/pkgs/development/tools/f2c/default.nix new file mode 100644 index 000000000000..f235296308fc --- /dev/null +++ b/pkgs/development/tools/f2c/default.nix @@ -0,0 +1,32 @@ +{ lib, stdenv, fetchurl }: + +stdenv.mkDerivation { + pname = "f2c"; + version = "20200916"; + + src = fetchurl { + url = "https://www.netlib.org/f2c/src.tgz"; + sha256 = "0d8xfbv6dk4dz95qds7sd44b5hvara07f2g2c5g4xiwim9b7916l"; + }; + + makeFlags = [ "-f" "makefile.u" ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin $out/share/man/man1 + install -m755 f2c $out/bin + install -m755 xsum $out/bin + install f2c.1t $out/share/man/man1 + + runHook postInstall + ''; + + meta = with lib; { + description = "Convert Fortran 77 source code to C"; + homepage = "https://www.netlib.org/f2c/"; + license = licenses.mit; + maintainers = [ maintainers.markuskowa ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/games/fheroes2/default.nix b/pkgs/games/fheroes2/default.nix new file mode 100644 index 000000000000..b9802bd81b5f --- /dev/null +++ b/pkgs/games/fheroes2/default.nix @@ -0,0 +1,45 @@ +{ stdenv, lib, fetchFromGitHub +, gettext, libpng, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, zlib +}: + +stdenv.mkDerivation rec { + pname = "fheroes2"; + version = "0.9.4"; + + src = fetchFromGitHub { + owner = "ihhub"; + repo = "fheroes2"; + rev = version; + sha256 = "sha256-z+88tVsf4uyMFzNfZDKXo0cYqBCYn1ehX+A+e+aIfSg="; + }; + + buildInputs = [ gettext libpng SDL2 SDL2_image SDL2_mixer SDL2_ttf zlib ]; + + makeFlags = [ + "FHEROES2_STRICT_COMPILATION=1" + "RELEASE=1" + ]; + + enableParallelBuilding = true; + + installPhase = '' + runHook preInstall + + install -Dm755 $PWD/src/dist/fheroes2 $out/bin/fheroes2 + + runHook postInstall + ''; + + meta = with lib; { + homepage = "https://github.com/ihhub/fheroes2"; + description = "Free implementation of Heroes of Might and Magic II game engine"; + longDescription = '' + In order to play this game, an original game data is required. + Please refer to README of the project for instructions. + On linux, the data can be placed in ~/.local/share/fheroes2 folder. + ''; + license = licenses.gpl2Plus; + maintainers = [ maintainers.karolchmist ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/games/lunar-client/default.nix b/pkgs/games/lunar-client/default.nix index 8ca8c3f85529..df361c69b049 100644 --- a/pkgs/games/lunar-client/default.nix +++ b/pkgs/games/lunar-client/default.nix @@ -2,7 +2,7 @@ let name = "lunar-client"; - version = "2.6.0"; + version = "2.7.3"; desktopItem = makeDesktopItem { name = "Lunar Client"; @@ -21,7 +21,7 @@ let src = fetchurl { url = "https://launcherupdates.lunarclientcdn.com/Lunar%20Client-${version}.AppImage"; name = "lunar-client.AppImage"; - sha256 = "1pmblnnvs5jv5v7y5nnxr3liw9xfp5h6l44x7pln8kr9zg85dzma"; + sha256 = "0ihi937rrj677y9b377b4hhp9wsarbqwrdrd6k3lhzx3jyh2fynf"; }; in appimageTools.wrapType1 rec { inherit name src; diff --git a/pkgs/games/torus-trooper/default.nix b/pkgs/games/torus-trooper/default.nix new file mode 100644 index 000000000000..441cffbdf04d --- /dev/null +++ b/pkgs/games/torus-trooper/default.nix @@ -0,0 +1,104 @@ +{ lib +, stdenv +, fetchpatch +, fetchurl +, unzip +, gdc +, SDL +, SDL_mixer +, bulletml +}: + +let +debianPatch = patchname: hash: fetchpatch { + name = "${patchname}.patch"; + url = "https://sources.debian.org/data/main/t/torus-trooper/0.22.dfsg1-12/debian/patches/${patchname}.patch"; + sha256 = hash; +}; + +in stdenv.mkDerivation { + pname = "torus-trooper"; + version = "0.22"; + + src = fetchurl { + url = "http://abagames.sakura.ne.jp/windows/tt0_22.zip"; + sha256 = "1yhki1fdp3fi4y2iq12vca69f6k38dqjaw9z4lwcxky5kbgb7jvg"; + }; + + patches = [ + (debianPatch + "imports" + "0mifw0mj66zljpq6iqnh0rhkgs2sky8rz0p32k98vxfnsb39ibsf") + (debianPatch + "fixes" + "05f93zq2v14lymq748c9g646ckbh9mqpr5rrahb63s90x8hlcqil") + (debianPatch + "directories" + "0y5xvf26v9fk0rx6ncrxx4czckhjbi891hp3pixlmv568pg9cihd") + (debianPatch + "windowed" + "1d8ghj4shvpb0s8l16kscz4l7rz1fxmfdpddy1ikz3678pw1sc8p") + (debianPatch + "dotfile" + "17yirmnjhbd1clzhmdd2mfdhbxkyinaahd6v3yz5kzbcylvjz2r2") + (debianPatch + "window-resizing" + "1n64gbhabl6vis7s294wxlj2k8s3ypxljpdg71icwz1m9jjx59df") + (debianPatch + "save-score-444372" + "1skny6s3hjxkh8w4fq86vp51j7z40fvn80b8myl4i1zzlwag3x17") + (debianPatch + "level-select-444948" + "008248s55188plggg2kg01nimjgc7w0sqd3c22sl6lzd1fjsflv8") + (debianPatch + "avoid-segfault-when-sdl-fails" + "1yp758gi4i15gqk6wiqp815rqcmlyqx62ir1sw20hn6zb3j97bmc") + (debianPatch + "dlang_v2" + "1lxsbckhvl8a8j43pw2dyl5nlavvdbgxb5zlb2450a0vml55nswd") + (debianPatch + "lowest-level-position-602808" + "19r48wirc9zssjmv57drn2fd0f56dcgyqqaz3j49cvv6yd74qf20") + (debianPatch + "libbulletml0v5-segfault" + "0pad2daz60hswkhkdpssxaqc9p9ca0sw1nraqzr453x0zdwwq0hn") + (debianPatch + "std.math.fabs" + "18xnnqlj20bxv2h9fa8dn4rmxwi3k6y3g50kwvh8i8p3b4hgag3r") + (debianPatch + "gdc-8" + "10z702y75c48hjcnvv8m7f3ka52cj3r3jqafdbby85nb0p2lbssx") + ]; + + postPatch = '' + for f in src/abagames/tt/barrage.d src/abagames/util/sdl/sound.d src/abagames/util/sdl/texture.d; do + substituteInPlace $f \ + --replace "/usr/" "$out/" + done + ''; + + nativeBuildInputs = [ + unzip + gdc + ]; + + buildInputs = [ + SDL + SDL_mixer + bulletml + ]; + + installPhase = '' + install -Dm755 torus-trooper $out/bin/torus-trooper + mkdir -p $out/share/games/torus-trooper + cp -r barrage sounds images $out/share/games/torus-trooper/ + ''; + + meta = with lib; { + homepage = "http://www.asahi-net.or.jp/~cs8k-cyu/windows/tt_e.html"; + description = "Fast-paced abstract scrolling shooter game"; + license = licenses.bsd2; + maintainers = with maintainers; [ fgaz ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/games/tumiki-fighters/default.nix b/pkgs/games/tumiki-fighters/default.nix new file mode 100644 index 000000000000..2f3cf869f8db --- /dev/null +++ b/pkgs/games/tumiki-fighters/default.nix @@ -0,0 +1,97 @@ +{ lib +, stdenv +, fetchpatch +, fetchurl +, unzip +, gdc +, SDL +, SDL_mixer +, bulletml +}: + +let +debianPatch = patchname: hash: fetchpatch { + name = "${patchname}.patch"; + url = "https://sources.debian.org/data/main/t/tumiki-fighters/0.2.dfsg1-9/debian/patches/${patchname}.patch"; + sha256 = hash; +}; + +in stdenv.mkDerivation { + pname = "tumiki-fighters"; + version = "0.21"; + + src = fetchurl { + url = "http://abagames.sakura.ne.jp/windows/tf0_21.zip"; + sha256 = "0djykfc1r8ysapklm621h89ana1c4qzc1m5nr9bqw4iccnmvwk3p"; + }; + + patches = [ + (debianPatch + "imports" + "1l3kc67b43gdi139cpz5cka1nkn0pjp9mrgrrxlmr0liwx2aryhn") + (debianPatch + "fixes" + "1iy1a5vii6yz9zdlk2bcj6gkj4y25hn9y2fczz15jpqd9r2zm603") + (debianPatch + "directories" + "0kmv0s7jgr693fzrkjsmz4dnicc4w7njanxm2la3cf4vmgdyipmm") + (debianPatch + "windowed" + "1wp74l0bi8wq85pcxnmkwrlfmlf09im95n27pxgz082lhwf2ksy1") + (debianPatch + "dotfile" + "0d8x519bclh41j992qn6ijzfcrgacb79px6zjd1awypkwyc0j2p6") + (debianPatch + "makefile" + "11xf2b31kjyps53jfryv82dv0g6q0smc9xgp8imrbr93mzi51vf0") + (debianPatch + "window-resizing" + "1dm79d0yisa8zs5fr89y3wq2kzd3khcaxs0la8lhncvkqbd4smx8") + (debianPatch + "dlang_v2" + "1isnvbl3bjnpyphji8k3fl0yd1z4869h0lai143vpwgj6518lpg4") + (debianPatch + "gdc-8" + "1md0zwmv50jnak5g9d93bglv9v4z41blinjii6kv3vmgjnajapzj") + ]; + + postPatch = '' + for f in \ + src/abagames/tf/barragemanager.d \ + src/abagames/util/sdl/sound.d \ + src/abagames/util/sdl/texture.d \ + src/abagames/tf/enemyspec.d \ + src/abagames/tf/field.d \ + src/abagames/tf/stagemanager.d \ + src/abagames/tf/tumikiset.d + do + substituteInPlace $f \ + --replace "/usr/" "$out/" + done + ''; + + nativeBuildInputs = [ + unzip + gdc + ]; + + buildInputs = [ + SDL + SDL_mixer + bulletml + ]; + + installPhase = '' + install -Dm755 tumiki-fighters $out/bin/tumiki-fighters + mkdir -p $out/share/games/tumiki-fighters + cp -r barrage sounds enemy field stage tumiki $out/share/games/tumiki-fighters/ + ''; + + meta = with lib; { + homepage = "http://www.asahi-net.or.jp/~cs8k-cyu/windows/tf_e.html"; + description = "Sticky 2D shooter"; + license = licenses.bsd2; + maintainers = with maintainers; [ fgaz ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/misc/vim-plugins/generated.nix b/pkgs/misc/vim-plugins/generated.nix index 13b078f5f1e4..842b2600bd69 100644 --- a/pkgs/misc/vim-plugins/generated.nix +++ b/pkgs/misc/vim-plugins/generated.nix @@ -69,8 +69,8 @@ final: prev: src = fetchFromGitHub { owner = "dense-analysis"; repo = "ale"; - rev = "a02a4f2811f810877f3c3859cca963f9578ff94a"; - sha256 = "0c96zhz8ia1yfgv58jrib49kp250kilv2awr2jgnriqznkl9l4h9"; + rev = "1b08791228f5aca4545a3fba6699b29a003028fe"; + sha256 = "07fmvg4hcri98zxnyjab2inzaapqc2w08rzdkspcgrhibqvp53jk"; }; meta.homepage = "https://github.com/dense-analysis/ale/"; }; @@ -89,24 +89,24 @@ final: prev: aniseed = buildVimPluginFrom2Nix { pname = "aniseed"; - version = "2021-05-15"; + version = "2021-05-31"; src = fetchFromGitHub { owner = "Olical"; repo = "aniseed"; - rev = "d1c07000f95825579f00e24077e65387fc1db0d6"; - sha256 = "1n1vs0n596mg82kmhmscfy983di6h86mhangs6rk3zdyhzyjax5b"; + rev = "4ca3d418eebc0da452b7defc18970c83f7de5070"; + sha256 = "0ax3hfwppbkm7haxvsllac6r4zk2ys9rrj7sj4p3ayl1w8v3n8nq"; }; meta.homepage = "https://github.com/Olical/aniseed/"; }; ansible-vim = buildVimPluginFrom2Nix { pname = "ansible-vim"; - version = "2021-05-24"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "pearofducks"; repo = "ansible-vim"; - rev = "f351f0d36e1c8990d8bb1eb2f1d8c25e76ff99bb"; - sha256 = "1hsyk5zc0nmh0hv0c803giimgmx1nahs1zm4gw61bkq2dkjfb4dn"; + rev = "804099202b72ffd4bf4ea4ce24d8d7bac8b9ae2d"; + sha256 = "0p93g0zi8j6bf5zh0ng9vdl9f76dan524g22jpb8c0xmm6ywns5l"; }; meta.homepage = "https://github.com/pearofducks/ansible-vim/"; }; @@ -185,12 +185,12 @@ final: prev: aurora = buildVimPluginFrom2Nix { pname = "aurora"; - version = "2021-05-10"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "ray-x"; repo = "aurora"; - rev = "bf185b9c5aaaad7cfd20f29f92d3b77164f8f1e7"; - sha256 = "17ir0daw3rsfgprgvrskip2r19g15z05spdk14dz105nrgv4hh4y"; + rev = "8d5601629f123e9553688a6705a1490ee8be9a1c"; + sha256 = "0i2nyk46yvr59hxwc99iaa0zdy0xcnaa1z1q93xf85i2pdyjg99b"; }; meta.homepage = "https://github.com/ray-x/aurora/"; }; @@ -221,12 +221,12 @@ final: prev: auto-session = buildVimPluginFrom2Nix { pname = "auto-session"; - version = "2021-05-26"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "rmagatti"; repo = "auto-session"; - rev = "c051b0d86395c3c4c9db5ddc1b116d43b5dce6c6"; - sha256 = "1006rnpprqh3xsmlas07ay4z743g2zd7z7pqwa4n1bb97y9k89ly"; + rev = "80ddcf26eca11cf4d48a52ffec094fe5a4711f32"; + sha256 = "0kh6a5hm0ppsbfpp7yhr2k4v36mj203q59wy15sgajx08ww0jj3m"; }; meta.homepage = "https://github.com/rmagatti/auto-session/"; }; @@ -269,12 +269,12 @@ final: prev: barbar-nvim = buildVimPluginFrom2Nix { pname = "barbar-nvim"; - version = "2021-05-23"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "romgrk"; repo = "barbar.nvim"; - rev = "fc90a9bceba1ccacf8a5331bb7c508baac7d5110"; - sha256 = "0lwky1zbv4a4ng0bzbpz5v3b7lnk6xzj4sfzm6x5qyhagpw4812v"; + rev = "23b6f64c9523522dd185482c856de492476a760c"; + sha256 = "1ijm4w4nqa037vjpjgjizhzrnpj10hwjc93lhzq29qs3cx85df1q"; }; meta.homepage = "https://github.com/romgrk/barbar.nvim/"; }; @@ -413,12 +413,12 @@ final: prev: chadtree = buildVimPluginFrom2Nix { pname = "chadtree"; - version = "2021-05-27"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "ms-jpq"; repo = "chadtree"; - rev = "77f56c4938b512b20c2da76a54a362dffc5bc7d4"; - sha256 = "1hyadig7f0mjj3vwz6pxyzwa155knbqd9dcpk64p215wagc08nfm"; + rev = "a33387ffed163f922d93f142a908adfda521a224"; + sha256 = "1gs06vs1bgjr76hg1pdkxsd81c12fnaqg8r1lfvwcvph1nzqj7d9"; }; meta.homepage = "https://github.com/ms-jpq/chadtree/"; }; @@ -449,12 +449,12 @@ final: prev: ci_dark = buildVimPluginFrom2Nix { pname = "ci_dark"; - version = "2021-04-24"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "yunlingz"; repo = "ci_dark"; - rev = "4c314000b5a21a1b9f52442a0c80e4b3fd4f0a1f"; - sha256 = "1wxsgaixdmb8v87kavvyyiyqlkn7ck5g39hkq4j19747jnb6lvqf"; + rev = "d50cd0c60ecdaffb779d2acb7ce2bb94df1ed867"; + sha256 = "0pqpvqas1z173c2ngka787d9gp49ai3x85haingkxvir3bf0nbqm"; }; meta.homepage = "https://github.com/yunlingz/ci_dark/"; }; @@ -509,12 +509,12 @@ final: prev: coc-fzf = buildVimPluginFrom2Nix { pname = "coc-fzf"; - version = "2021-04-24"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "antoinemadec"; repo = "coc-fzf"; - rev = "70f0691e14c8e55290e554591c0a2661dea530fa"; - sha256 = "1m3kwgng7xi8xycc0dcx0wr9i7q0anx9lpax0r4p2a26vaqam539"; + rev = "1be2273dc37c07b98b7a1b2b67fd57c80feb85a9"; + sha256 = "06w052x13idb8wfvyasg36hakffxnzfs7paj3wk83qa2m1kiz1n4"; }; meta.homepage = "https://github.com/antoinemadec/coc-fzf/"; }; @@ -557,12 +557,12 @@ final: prev: coc-nvim = buildVimPluginFrom2Nix { pname = "coc-nvim"; - version = "2021-05-24"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "neoclide"; repo = "coc.nvim"; - rev = "1a74bf3c57fec8442f837b3baad0d6fb75d1b97a"; - sha256 = "105jcl74k006dsslplp40yizfdjrj3p7qr23c53dgs2wlbzqc3kj"; + rev = "06d950e547e8fa1a775399ae5eeb70603084b109"; + sha256 = "1fj8v8zm0w04fyxf12ck4lc3gwq6bxh5shmwc24j0sar3ki0i4rz"; }; meta.homepage = "https://github.com/neoclide/coc.nvim/"; }; @@ -652,6 +652,18 @@ final: prev: meta.homepage = "https://github.com/tami5/compe-conjure/"; }; + compe-latex-symbols = buildVimPluginFrom2Nix { + pname = "compe-latex-symbols"; + version = "2021-05-14"; + src = fetchFromGitHub { + owner = "GoldsteinE"; + repo = "compe-latex-symbols"; + rev = "70f58e53e142e3c59fe0f673dd54ce690ae57367"; + sha256 = "0p4xss3zyp6002hsa6dx989zhp672mc30b57w5cjhcgbknw0iy1l"; + }; + meta.homepage = "https://github.com/GoldsteinE/compe-latex-symbols/"; + }; + compe-tabnine = buildVimPluginFrom2Nix { pname = "compe-tabnine"; version = "2021-05-09"; @@ -664,6 +676,30 @@ final: prev: meta.homepage = "https://github.com/tzachar/compe-tabnine/"; }; + compe-tmux = buildVimPluginFrom2Nix { + pname = "compe-tmux"; + version = "2021-05-31"; + src = fetchFromGitHub { + owner = "andersevenrud"; + repo = "compe-tmux"; + rev = "b199db008d07caf7f1d488ac3f171910416528a4"; + sha256 = "1qiir95bz046ppp6pp8k6m00jrjcy2yp098s72lwfnsls6pqsgpf"; + }; + meta.homepage = "https://github.com/andersevenrud/compe-tmux/"; + }; + + compe-zsh = buildVimPluginFrom2Nix { + pname = "compe-zsh"; + version = "2021-04-03"; + src = fetchFromGitHub { + owner = "tamago324"; + repo = "compe-zsh"; + rev = "1a46a0ee661242f6a015b2abead34b606bb97171"; + sha256 = "0m8fmsx4bwmgqgjpwpldckp68hpx6qfschwdg275xsxkzw8pdnbk"; + }; + meta.homepage = "https://github.com/tamago324/compe-zsh/"; + }; + completion-buffers = buildVimPluginFrom2Nix { pname = "completion-buffers"; version = "2021-01-17"; @@ -678,12 +714,12 @@ final: prev: completion-nvim = buildVimPluginFrom2Nix { pname = "completion-nvim"; - version = "2021-04-08"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "nvim-lua"; repo = "completion-nvim"; - rev = "8bca7aca91c947031a8f14b038459e35e1755d90"; - sha256 = "02zqc75p9ggrz6fyiwvzpnzipfd1s5xfr7fli2yypb4kp72mrbaf"; + rev = "c8db953a8e9f4bc8183e31831297cf84d6f521b8"; + sha256 = "0p35msrh7g100ayl0g8285q43v20n6hlv1grdb0rmw8sil0j881a"; }; meta.homepage = "https://github.com/nvim-lua/completion-nvim/"; }; @@ -738,24 +774,24 @@ final: prev: conjure = buildVimPluginFrom2Nix { pname = "conjure"; - version = "2021-05-15"; + version = "2021-05-31"; src = fetchFromGitHub { owner = "Olical"; repo = "conjure"; - rev = "5d3b1afe96d11f059016d0b556f2797b54af916e"; - sha256 = "0f4ms7c3bffak9dpx0c5wgq2asbg7xavr70cwsmxf0fifpacahhs"; + rev = "31820e386ce7a32488ad6b19033c17a8f05c36bf"; + sha256 = "1p35blgnd99kggwyiag6drx3v6zqx50ypxnfvvij102ws50144fk"; }; meta.homepage = "https://github.com/Olical/conjure/"; }; context_filetype-vim = buildVimPluginFrom2Nix { pname = "context_filetype-vim"; - version = "2021-05-13"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "Shougo"; repo = "context_filetype.vim"; - rev = "7f8c2f1340d450951462778b412e3b18038b4e82"; - sha256 = "1zb4d5lk1gygyjqlkkjv46d0cgd2mddhgj7srlh0rcnlw3myswnr"; + rev = "eca5b28dca1bace3b5694eb20b3ab244f65180e0"; + sha256 = "0n0av5x6js5ld4xnlq5nh18cdwhvrljdsx17gq2sf54q342hlwp0"; }; meta.homepage = "https://github.com/Shougo/context_filetype.vim/"; }; @@ -774,12 +810,12 @@ final: prev: Coqtail = buildVimPluginFrom2Nix { pname = "Coqtail"; - version = "2021-05-11"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "whonore"; repo = "Coqtail"; - rev = "2cababf4c1b6cc2e460bbbd63e69ed5d9fc2ee34"; - sha256 = "086gqc76ki8jwhhk4ihawjciwjsrq9k13bgwlnjhsp2rhm0vslb7"; + rev = "5f92ee08b9c0018df244de47dc6e2ed4ba232a64"; + sha256 = "16xfkblsn149v9rgqjcimaw380xv6l8gimfaj368gh9h2icaz9qc"; }; meta.homepage = "https://github.com/whonore/Coqtail/"; }; @@ -930,12 +966,12 @@ final: prev: defx-nvim = buildVimPluginFrom2Nix { pname = "defx-nvim"; - version = "2021-05-05"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "Shougo"; repo = "defx.nvim"; - rev = "e1842ae0020ef53c7ed8f96ab1c51378c3323476"; - sha256 = "1r01lfdk07cybhf957zzkpl6qxiwfladk72qfc525ah2bqcrhik5"; + rev = "27890150286f62d9c2fcb624f6f3bd1fd45c7f3c"; + sha256 = "0fvwdjqiqwhaxwkrnzfai0ay4sksr4ma4akhzqnfqd0blbhc4x2i"; }; meta.homepage = "https://github.com/Shougo/defx.nvim/"; }; @@ -978,24 +1014,24 @@ final: prev: denite-nvim = buildVimPluginFrom2Nix { pname = "denite-nvim"; - version = "2021-05-17"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "Shougo"; repo = "denite.nvim"; - rev = "fb8174a07c3a19091bfdbfc9439a15466d1649fa"; - sha256 = "041c8hhq76ih0s730zyfx16svfbzqfqyy6pl686aqikixldcz41l"; + rev = "70ca378f399be626020e2994f9604eae35c232a6"; + sha256 = "0njjwa2ixqm792chvkq91fb7dadaf05kws727w1q9r5sp8k000sr"; }; meta.homepage = "https://github.com/Shougo/denite.nvim/"; }; deol-nvim = buildVimPluginFrom2Nix { pname = "deol-nvim"; - version = "2021-05-09"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "Shougo"; repo = "deol.nvim"; - rev = "ca02aa3b59fd3a6674ff6ce471267d1f716a2995"; - sha256 = "15r7wvcchybjp96jw9klr93sdz89qnrw033942kd0q2q19fkbxdj"; + rev = "5d4ca0cab361962a58db6f4a3ad06b00348b743d"; + sha256 = "04ja8ps0vmvg5aggr6lr4qb4pv46hi86x8zw8mwrzav04z8fhxcw"; }; meta.homepage = "https://github.com/Shougo/deol.nvim/"; }; @@ -1220,12 +1256,12 @@ final: prev: deoplete-nvim = buildVimPluginFrom2Nix { pname = "deoplete-nvim"; - version = "2021-05-24"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "Shougo"; repo = "deoplete.nvim"; - rev = "35e27c325ecf0afa28ca42bbda4793eb7ca5f383"; - sha256 = "0an2282ykdsb5v25dhd9r2f2s13pcma0i219nvfaf0qdprip57id"; + rev = "e9bd32d18430ee2c95b154d90533affc3ca6f62b"; + sha256 = "0g5ssg6363552fx7y74hl5wbmpmdz6z7y98jwa5y3dkq3xqh6ykn"; }; meta.homepage = "https://github.com/Shougo/deoplete.nvim/"; }; @@ -1268,12 +1304,12 @@ final: prev: diffview-nvim = buildVimPluginFrom2Nix { pname = "diffview-nvim"; - version = "2021-05-21"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "sindrets"; repo = "diffview.nvim"; - rev = "991d633b162dd3dd03f50d1fde19366ab5943cb2"; - sha256 = "1n24ahzzbf66r6pjklca7ivydaxr8q03w4ib32bh8vmbk6b4x85g"; + rev = "e174aa0a1e8a65fd9699f190c67fd197c2afa09f"; + sha256 = "0skzir27vzg5h8w0c7hj2p2i0540m768i1vbgqwpgz7y7wkgpbcm"; }; meta.homepage = "https://github.com/sindrets/diffview.nvim/"; }; @@ -1304,24 +1340,24 @@ final: prev: dracula-vim = buildVimPluginFrom2Nix { pname = "dracula-vim"; - version = "2021-05-19"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "dracula"; repo = "vim"; - rev = "c0337ceef66f87640ad02fa4e190a370a6ea6a7b"; - sha256 = "1007nq0av5lw1jix0dpw6ryvym7kyzq8088fa7baavdxbs0wyr0s"; + rev = "869f70a7603b77cdb2f63983dd286f3f61b7a966"; + sha256 = "031c000nr2raw0v6bdnisczjz20y5iw0yapj8wih0nc703dirhih"; }; meta.homepage = "https://github.com/dracula/vim/"; }; echodoc-vim = buildVimPluginFrom2Nix { pname = "echodoc-vim"; - version = "2021-05-11"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "Shougo"; repo = "echodoc.vim"; - rev = "7dc1d45d7ffd275c06bf207795cf071ae6c9f1a4"; - sha256 = "1hxywy423ikfkmcyqm467j741mn0ar4c5k7li0liniygjwpiaxjm"; + rev = "d02232ff17517f9bc048f0d4a668ef00d57b5f6c"; + sha256 = "17m9nph5xk1dcd5l89asp2fw6jd97hsmr78ni67id23v9mjyqslk"; }; meta.homepage = "https://github.com/Shougo/echodoc.vim/"; }; @@ -1571,12 +1607,12 @@ final: prev: friendly-snippets = buildVimPluginFrom2Nix { pname = "friendly-snippets"; - version = "2021-05-22"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "rafamadriz"; repo = "friendly-snippets"; - rev = "01a175fb02be0097fbaea20af354e37b0586a5a3"; - sha256 = "03pxfiz2y5n8v1pych1g98k0kziajhwacx2agrr9c4wwf4rv467j"; + rev = "496ccb632e1dd66ab4561304faa431125c0bf0de"; + sha256 = "1rbgji9x0bf8l7kqph77nfnpipy4d1863ml3wx75404q43nld7w8"; }; meta.homepage = "https://github.com/rafamadriz/friendly-snippets/"; }; @@ -1763,12 +1799,12 @@ final: prev: gitsigns-nvim = buildVimPluginFrom2Nix { pname = "gitsigns-nvim"; - version = "2021-05-27"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "lewis6991"; repo = "gitsigns.nvim"; - rev = "f4a4fbe04dd829317b7918367b061b54408049d5"; - sha256 = "15ma584q9s60nbi8nxg3cj10m3a1ly00y2xzxdnpy9ik4n04s911"; + rev = "4e3e2626af9573758a4e8c0d463ff3b733d40644"; + sha256 = "01cr2a6xqzazyapkdlqjbxswsm9y7hnwl3bs7wcp23dwlpdvxc89"; }; meta.homepage = "https://github.com/lewis6991/gitsigns.nvim/"; }; @@ -1787,12 +1823,12 @@ final: prev: glow-nvim = buildVimPluginFrom2Nix { pname = "glow-nvim"; - version = "2021-05-26"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "npxbr"; repo = "glow.nvim"; - rev = "69bc59ab0bb1214234bbf06dbeb6233b21ff2fc5"; - sha256 = "0jqdalmaisj3gjlqa6kfh83va7a1gd7akggmr66vnccvfxfcdc54"; + rev = "d7f5eb0af3f2a51c2f493fec066015dc29184a4e"; + sha256 = "1180g55d6adj9jzx9dxld3345hw80vjjj3r8n7snba1m3c8jd5xm"; }; meta.homepage = "https://github.com/npxbr/glow.nvim/"; }; @@ -1871,12 +1907,12 @@ final: prev: gruvbox-nvim = buildVimPluginFrom2Nix { pname = "gruvbox-nvim"; - version = "2021-05-12"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "npxbr"; repo = "gruvbox.nvim"; - rev = "86bc293204a6c13f1650378c39bf248bd5a5a22f"; - sha256 = "0if2ad8s9r3pwdsqlkl6y82r0a0z86c6vlkdp28m18sxv848psx5"; + rev = "ad076d46c76b884d7b555067d3434b3666c3b80b"; + sha256 = "0m4ks6gxh3clg4vg1rxyvhjjkmmwipb9s38zwbaidfqwifldjriy"; }; meta.homepage = "https://github.com/npxbr/gruvbox.nvim/"; }; @@ -1979,12 +2015,12 @@ final: prev: hop-nvim = buildVimPluginFrom2Nix { pname = "hop-nvim"; - version = "2021-05-08"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "phaazon"; repo = "hop.nvim"; - rev = "3655626906859f572b8c4ce9dd9d69e2e1e43b81"; - sha256 = "1qjg77zkgfvw9y0g9ab0fg52lx223h60r4jmrqnv89i9b0bfmz6f"; + rev = "56727073356756a86c4b1be95d7c565e4ab1f11e"; + sha256 = "00ch6mhcxvqk7kshmi6rfm0n1wna47v5kcxjxwhndm79liq3h91b"; }; meta.homepage = "https://github.com/phaazon/hop.nvim/"; }; @@ -2352,36 +2388,36 @@ final: prev: LeaderF = buildVimPluginFrom2Nix { pname = "LeaderF"; - version = "2021-05-27"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "Yggdroot"; repo = "LeaderF"; - rev = "78bc54d4244854c399447bf9ebd0c8af5f455dc1"; - sha256 = "1wiyqf4h00lf029533byynh6ijz6a4y8al2061wfxp6690hbl488"; + rev = "3849b6440299215e5168d569713d2a5540dfbf2b"; + sha256 = "17if75p3x4lkqncl296f3jdq0rcc69b0mgj0dbz6cl851bmqvy40"; }; meta.homepage = "https://github.com/Yggdroot/LeaderF/"; }; lean-vim = buildVimPluginFrom2Nix { pname = "lean-vim"; - version = "2021-01-02"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "leanprover"; repo = "lean.vim"; - rev = "313fd1e09e7a14352f87d44c82005b6e6316c9bc"; - sha256 = "0f6jq0hliy4jignjc1d30bsvfkb4xl4nzj900hphbc7l2aw7scqr"; + rev = "fdf448398335434f4b5c45aff5f4ee64a3d090fa"; + sha256 = "0wi7837yy4x89w6gw72qkaxbb0vdm3hlxnkjplg2g4ibpayxx3s4"; }; meta.homepage = "https://github.com/leanprover/lean.vim/"; }; lens-vim = buildVimPluginFrom2Nix { pname = "lens-vim"; - version = "2020-04-24"; + version = "2021-05-30"; src = fetchFromGitHub { owner = "camspiers"; repo = "lens.vim"; - rev = "868b195be3cc3000d1d3f875ee0a52a11972e5b9"; - sha256 = "0qpx84k52pz29rx6q0zh3qq4g3a1gyvyfcipx3kaw4lxlld6agd5"; + rev = "099c3502d001f7081edf113de57e8b1cfd121c55"; + sha256 = "1h25isrw96qhfacf37h3anscnrisdxsz6vv7826hpb17r0ygb5ms"; }; meta.homepage = "https://github.com/camspiers/lens.vim/"; }; @@ -2472,12 +2508,12 @@ final: prev: lightline-vim = buildVimPluginFrom2Nix { pname = "lightline-vim"; - version = "2021-05-27"; + version = "2021-05-30"; src = fetchFromGitHub { owner = "itchyny"; repo = "lightline.vim"; - rev = "d5cea5b04841aedd6e3e46c736f2724be03a43e9"; - sha256 = "0yixqn80dh0av0kshz0dw8gbd52096bgdg7gj74rir8hh48bsngx"; + rev = "b06d921023cf6536bcbee5754071d122296e8942"; + sha256 = "1dsqssxgbglq6al6di9grxl24rgwidgd6jrc8d4gk6v6ymgzckl8"; }; meta.homepage = "https://github.com/itchyny/lightline.vim/"; }; @@ -2544,12 +2580,12 @@ final: prev: lsp_signature-nvim = buildVimPluginFrom2Nix { pname = "lsp_signature-nvim"; - version = "2021-05-24"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "ray-x"; repo = "lsp_signature.nvim"; - rev = "1ebfa3e9c9168d7ee9201abdcc86c07a8f9b89db"; - sha256 = "17wqqhi9fslv3b7f79cx33bgvahx9mfl9f04vpm9417b0dc77359"; + rev = "5aca93b10b571a8dfafd2c9e850239dfa2094a6f"; + sha256 = "1k8k7zq03jnvh4328i0s0d87g9s5y2yc94wnpg059clmp1cizcq4"; }; meta.homepage = "https://github.com/ray-x/lsp_signature.nvim/"; }; @@ -2592,12 +2628,12 @@ final: prev: lush-nvim = buildVimPluginFrom2Nix { pname = "lush-nvim"; - version = "2021-05-26"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "rktjmp"; repo = "lush.nvim"; - rev = "b39af94cb4154a3f0887e94d0a4d5f4ae8f92656"; - sha256 = "015q2lkihhb8cgbxxc4f7d4w7sqc67wyaavjany3pj0528rrv97d"; + rev = "684c06d4879a38e50a247ce23b32beaacc75c4d1"; + sha256 = "1khws788sww2dw4s3nqyigyxi7099kqh60dabs66hj9byb84irql"; }; meta.homepage = "https://github.com/rktjmp/lush.nvim/"; }; @@ -2676,24 +2712,24 @@ final: prev: minimap-vim = buildVimPluginFrom2Nix { pname = "minimap-vim"; - version = "2021-04-13"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "wfxr"; repo = "minimap.vim"; - rev = "6afcca86b2274b43de9d39e3c1235f4b0f659129"; - sha256 = "08wabfqhj697qy92jrf6mzbhjbybyil45fsvhn6q3ffl161gvsak"; + rev = "b2c27ca4b25dedef968f3e746533bb973b148c34"; + sha256 = "0wx1hk7ml4r49gdfqnww1002c5aw4dgndlrhwy8fhyvg8117902r"; }; meta.homepage = "https://github.com/wfxr/minimap.vim/"; }; mkdx = buildVimPluginFrom2Nix { pname = "mkdx"; - version = "2021-05-21"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "SidOfc"; repo = "mkdx"; - rev = "b45099a18e88cd61c93a073e2b15cc6025e4774e"; - sha256 = "0yawlfnghbkr3bcqqcf3znsdjjbh13a46dhkn4sj108adc9c4y56"; + rev = "e129e3c7d92477563aeb068628ee0ccdd46ed36e"; + sha256 = "0q0cyigkszw0qsdvg9dxs293sf8hbmwwy6qxlknmrfiy5xyn6ik5"; }; meta.homepage = "https://github.com/SidOfc/mkdx/"; }; @@ -3000,12 +3036,12 @@ final: prev: neogit = buildVimPluginFrom2Nix { pname = "neogit"; - version = "2021-05-17"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "TimUntersberger"; repo = "neogit"; - rev = "4095c328558bfa5c28bbb7b53e921219c45a450f"; - sha256 = "0cw7hfnrw4r25zcvr38sf6i8vjzhd4ndkj7mybyh6ykwjc646pmq"; + rev = "f0a22c4609e6f090afdcb147242a2e96ac763f4a"; + sha256 = "09y03krzg2wl0mlgvc3shvdbvjr8ga69amknbfzvnmplmqyji0g5"; }; meta.homepage = "https://github.com/TimUntersberger/neogit/"; }; @@ -3024,12 +3060,12 @@ final: prev: neomake = buildVimPluginFrom2Nix { pname = "neomake"; - version = "2021-05-24"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "neomake"; repo = "neomake"; - rev = "df653c87bb04753755995579218c3b8bc1639383"; - sha256 = "1kn23xknakxx5r7n92cpzrvng0nh8gnf1kmr63d1gzsk6a3yh5aw"; + rev = "3663e065b4f3d0c4a1144b668129ef43e0d8ff10"; + sha256 = "0l87p48lyx78a9ayqygpba76z04ld64w747m0mrdlgci0x8jnqb7"; }; meta.homepage = "https://github.com/neomake/neomake/"; }; @@ -3060,12 +3096,12 @@ final: prev: neosnippet-vim = buildVimPluginFrom2Nix { pname = "neosnippet-vim"; - version = "2020-09-10"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "Shougo"; repo = "neosnippet.vim"; - rev = "30b6b53b7a86b84371714b4a0f092d5d303c4a35"; - sha256 = "0q06a0wq2aqgkjc5jndccffibr85hf33w2igcah3x6dl203p4ips"; + rev = "5d65a8fde5c3f4dfc0dc1a13639515948d8a28a5"; + sha256 = "1iaapjpx91kcz9h2gp7vzgj7lnjs86g0iqkg3vgr04kj9lsvj3j7"; }; meta.homepage = "https://github.com/Shougo/neosnippet.vim/"; }; @@ -3096,12 +3132,12 @@ final: prev: neovim-fuzzy = buildVimPluginFrom2Nix { pname = "neovim-fuzzy"; - version = "2020-09-16"; + version = "2021-04-24"; src = fetchFromGitHub { owner = "cloudhead"; repo = "neovim-fuzzy"; - rev = "78f4d79f703aff49c9bcee5d527234c2f64425d5"; - sha256 = "1dq79jabyyyphgigqac9jf7hhadfh336fm8hklh1d64xlzyrfp6s"; + rev = "46f908aedef6af039c5134056ad008fe7aae1cbc"; + sha256 = "0mszwcvj61y9jqxc0vgghjl1x0xxvy7mqspmv3ikd8sglg54gz2d"; }; meta.homepage = "https://github.com/cloudhead/neovim-fuzzy/"; }; @@ -3132,12 +3168,12 @@ final: prev: nerdcommenter = buildVimPluginFrom2Nix { pname = "nerdcommenter"; - version = "2021-04-30"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "preservim"; repo = "nerdcommenter"; - rev = "ab475e1325ad6eaec15a3113f201a4e4a3ee2811"; - sha256 = "00zmrgb8f2i0i00xbqnidxln6bkz740q09cj7kysk5142z27435q"; + rev = "a5d1663185bee20bfb120c9ab212144444514982"; + sha256 = "03799774h9f7k52gwjnhjjm2w9s6ip5zdrpljinwp6lfavxd4w8a"; }; meta.homepage = "https://github.com/preservim/nerdcommenter/"; }; @@ -3156,12 +3192,12 @@ final: prev: nerdtree-git-plugin = buildVimPluginFrom2Nix { pname = "nerdtree-git-plugin"; - version = "2021-05-17"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "Xuyuanp"; repo = "nerdtree-git-plugin"; - rev = "4524fb465b11881409482636ae716b4965011550"; - sha256 = "0cvb33drkv3rrgbniw9bz8xkxyr4cf0lyay9waw3lczpl2wmfwbm"; + rev = "bca0ed63883d028e6afc7f11a78c56fcaf34d363"; + sha256 = "1j5llx2l36hgr10mjjdrp8xdv9mhmc6panpjgdxzdg5ncwn4ndzm"; }; meta.homepage = "https://github.com/Xuyuanp/nerdtree-git-plugin/"; }; @@ -3216,12 +3252,12 @@ final: prev: nnn-vim = buildVimPluginFrom2Nix { pname = "nnn-vim"; - version = "2021-05-21"; + version = "2021-05-30"; src = fetchFromGitHub { owner = "mcchrish"; repo = "nnn.vim"; - rev = "065bf84b0b86266b267adfc2584e67eabef49815"; - sha256 = "1v2jckl4gaai77rqnv1hwv4bb0d6vyk7hy63nlyy3fcnc1z1ic8v"; + rev = "fb80ed60c642b1f3666125c3051bd2da34453eeb"; + sha256 = "1p87dc296icb2kpyzlflpzbaq5z2yg106mpsxxzmwzn949smsk7l"; }; meta.homepage = "https://github.com/mcchrish/nnn.vim/"; }; @@ -3240,12 +3276,12 @@ final: prev: nord-nvim = buildVimPluginFrom2Nix { pname = "nord-nvim"; - version = "2021-05-22"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "shaunsingh"; repo = "nord.nvim"; - rev = "6860c64a3002f6dbcf36c0baf7bda8c34c5083c8"; - sha256 = "0a036xgsklqv2zwlcpyhdrip8mvgqhyb4vcsp7gwp5241917bia3"; + rev = "6965333869ca172a18606c93d6f6c1275fb9aabb"; + sha256 = "0nljk4ncxz5syf0wr29j3bdxdw5bjpjn879ls1r910hicn4lg468"; }; meta.homepage = "https://github.com/shaunsingh/nord.nvim/"; }; @@ -3264,12 +3300,12 @@ final: prev: nvcode-color-schemes-vim = buildVimPluginFrom2Nix { pname = "nvcode-color-schemes-vim"; - version = "2021-04-29"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "ChristianChiarulli"; repo = "nvcode-color-schemes.vim"; - rev = "940f2eb232091f970e45232e9c96e5aac7d670de"; - sha256 = "1sxi0dhbqg6fg23n8m069z6issyng18hbq9v7rxnzw90mqp0y5zb"; + rev = "7c85366c9d457ed0e3c3532ee312307476afbbdc"; + sha256 = "02hxjwi8g07zhx6xagma5m3sa0j4ljg79377zfn2vy4snnib452p"; }; meta.homepage = "https://github.com/ChristianChiarulli/nvcode-color-schemes.vim/"; }; @@ -3288,12 +3324,12 @@ final: prev: nvim-autopairs = buildVimPluginFrom2Nix { pname = "nvim-autopairs"; - version = "2021-05-26"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "windwp"; repo = "nvim-autopairs"; - rev = "b5816204bd2f92f1c64dff132fbd67a1530c1751"; - sha256 = "1w0cw7pp7szqsgq734j4zv8c7jcjblpmfa6iw1r0bpi2jgplb5ha"; + rev = "b09ab7495e55f09293500aacf460d176f942504d"; + sha256 = "05w7bjn1iy1qa3ni12vm9p28y4bsz4kkfgmcs44152qmcqj13wp1"; }; meta.homepage = "https://github.com/windwp/nvim-autopairs/"; }; @@ -3312,24 +3348,24 @@ final: prev: nvim-bqf = buildVimPluginFrom2Nix { pname = "nvim-bqf"; - version = "2021-05-21"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "kevinhwang91"; repo = "nvim-bqf"; - rev = "3754935f6c6b9eaae203fe9d4620e2d3e1a8f0ef"; - sha256 = "16rf7i540mahmlb9mdk5g02ax1v5wkh3fyiy9if8zirf47ywcczd"; + rev = "554ae68f404492c8d37381545b9a785fda30c26e"; + sha256 = "0z6xb6wsq5kjcnyiqbp2ik97yl2kb9hxy0rfccfswh5pgmfv2z1i"; }; meta.homepage = "https://github.com/kevinhwang91/nvim-bqf/"; }; nvim-bufferline-lua = buildVimPluginFrom2Nix { pname = "nvim-bufferline-lua"; - version = "2021-05-26"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "akinsho"; repo = "nvim-bufferline.lua"; - rev = "026c12d7e4f85c570acf8be4c69c282acbe18953"; - sha256 = "0l4y15rzhjjgqkdryj399xgnmz1c3ga8li9j8m4qf98isbmqhsws"; + rev = "883cd1b0d8029c97bb6c3358b8e55c040b0c7bcb"; + sha256 = "06mcl11jx56wym2jfinpbklpfn55d6j35yy80dv9dy8072mb5f9f"; }; meta.homepage = "https://github.com/akinsho/nvim-bufferline.lua/"; }; @@ -3360,12 +3396,12 @@ final: prev: nvim-compe = buildVimPluginFrom2Nix { pname = "nvim-compe"; - version = "2021-05-27"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "hrsh7th"; repo = "nvim-compe"; - rev = "c7cd3bf1380ce3c6ef2a55537ace40c3a3897c50"; - sha256 = "0pqka3wi169l8d58hlixhyi9yng62p1ic6fnl2vgbydi72xd1ngd"; + rev = "310488302c6532646adfe8228e40187a80b36ac5"; + sha256 = "1anfrybaliyaxgi8iv55hncnac8xgizqw9b9047lw2grkybmrdn4"; }; meta.homepage = "https://github.com/hrsh7th/nvim-compe/"; }; @@ -3384,24 +3420,24 @@ final: prev: nvim-dap = buildVimPluginFrom2Nix { pname = "nvim-dap"; - version = "2021-05-21"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "mfussenegger"; repo = "nvim-dap"; - rev = "260d13945348966f695c46e4c711001066f47300"; - sha256 = "02nkr4wz63r973myyvvfs5wmdichcxaj0iika0z4j7mh59nqzvha"; + rev = "826a1931fdf1b3b67a0b456aa3abc1b72185a7a7"; + sha256 = "0g8x9vk9qv16zlbvx3h8w2vhnqyycssn5v4y8sdhsnhyjljsjygz"; }; meta.homepage = "https://github.com/mfussenegger/nvim-dap/"; }; nvim-dap-ui = buildVimPluginFrom2Nix { pname = "nvim-dap-ui"; - version = "2021-05-27"; + version = "2021-05-31"; src = fetchFromGitHub { owner = "rcarriga"; repo = "nvim-dap-ui"; - rev = "bb291ba853759f455e421892a955d67cc8e88173"; - sha256 = "0wlfh0mgdhlnvwl7m7bdzj7kks9f5hnm2k3awnyl8a14rjl00i0i"; + rev = "055b143fdd23fee1d86247a8ec7c43c84a2a896b"; + sha256 = "0v9mxpr5m01w948ddh598k1vzaiyq2zl6fkykbpzkijhk8qvjnv9"; }; meta.homepage = "https://github.com/rcarriga/nvim-dap-ui/"; }; @@ -3420,36 +3456,36 @@ final: prev: nvim-gdb = buildVimPluginFrom2Nix { pname = "nvim-gdb"; - version = "2021-05-24"; + version = "2021-05-30"; src = fetchFromGitHub { owner = "sakhnik"; repo = "nvim-gdb"; - rev = "9a6e8268878352b9ea3087ab745b894531e5e335"; - sha256 = "1mbjsab96r99hzjh78dsk7cwmn59mgzkr0y6mm6i81g0zz9d9cya"; + rev = "60994408e6684fb776bcfb80c456cbdf8bc6eb93"; + sha256 = "044bgiyhi4db5avajry9v168gz55xn6yzr83j610k95hh2aam08a"; }; meta.homepage = "https://github.com/sakhnik/nvim-gdb/"; }; nvim-highlite = buildVimPluginFrom2Nix { pname = "nvim-highlite"; - version = "2021-04-01"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "Iron-E"; repo = "nvim-highlite"; - rev = "ff28f2dde464a9e105c7dc041127eb60059d955a"; - sha256 = "089019br0f3massc2sz3l0r8cjc33i5qqwbm4k7cz50x71g89wrq"; + rev = "9c15a789df5af1d3c83c0d680154ca226253eb26"; + sha256 = "0dz3bbyrwgxvsdmix2h6xbgj7wv9zbj08wgy46sjhzdhaxdfjx4z"; }; meta.homepage = "https://github.com/Iron-E/nvim-highlite/"; }; nvim-hlslens = buildVimPluginFrom2Nix { pname = "nvim-hlslens"; - version = "2021-05-26"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "kevinhwang91"; repo = "nvim-hlslens"; - rev = "1ec700d81aae9369ee16b5dfb421153377c4bdee"; - sha256 = "08vi23gaccm0whswg8jsb5pvbcdci51w61m7x079yfarablz1h6c"; + rev = "d5ba4abab33808dbf653cc8270d82561f96b220b"; + sha256 = "0qyb6fjjcgjifkgvcy475gxplbvdvzd51z7xv2m7gshy6m4vlzk6"; }; meta.homepage = "https://github.com/kevinhwang91/nvim-hlslens/"; }; @@ -3468,12 +3504,12 @@ final: prev: nvim-jdtls = buildVimPluginFrom2Nix { pname = "nvim-jdtls"; - version = "2021-05-25"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "mfussenegger"; repo = "nvim-jdtls"; - rev = "f39758c426c9409ff35ef730b324bc8cd267a5ef"; - sha256 = "11md1s3yqyzr4w5ii6d2dqh9njjc6sglpfgh18mgnx8y6fk23r58"; + rev = "8bd4eac08c637961b10ac01c124fb5091484c265"; + sha256 = "0jjsq718m0c1f45k9b68z0inlhy5nas48ff5yd0v29qlcv01w3wf"; }; meta.homepage = "https://github.com/mfussenegger/nvim-jdtls/"; }; @@ -3492,12 +3528,12 @@ final: prev: nvim-lspconfig = buildVimPluginFrom2Nix { pname = "nvim-lspconfig"; - version = "2021-05-25"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "neovim"; repo = "nvim-lspconfig"; - rev = "6a25eb0d3fc77cd1b9ff11446dc52d50bc482155"; - sha256 = "0chb6d3v2n5wka4fgw49rzxqd1vwl7mwwb5z13hvylxbad098n1l"; + rev = "62c04242031ed65a8d29ebefaaf645e8e3375748"; + sha256 = "1g1s85dzz7lr3ky90m27m8f3s06xm4c87z96vwzaaajb28927774"; }; meta.homepage = "https://github.com/neovim/nvim-lspconfig/"; }; @@ -3564,36 +3600,36 @@ final: prev: nvim-toggleterm-lua = buildVimPluginFrom2Nix { pname = "nvim-toggleterm-lua"; - version = "2021-05-26"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "akinsho"; repo = "nvim-toggleterm.lua"; - rev = "9215c1955c30b08779bcf1043964a49a9aaf0da8"; - sha256 = "1w1bxinkn1walx4svjcjwci2h6vwn2jyiyrykvzcr55gnm5dr5kd"; + rev = "53134b08a5a5e66f343c4e431966a0a19ce2d162"; + sha256 = "00gxkl87f8gawil9bdxa5s15yswc1ac4y9c5vx3kmhv6g5ipcrrn"; }; meta.homepage = "https://github.com/akinsho/nvim-toggleterm.lua/"; }; nvim-tree-lua = buildVimPluginFrom2Nix { pname = "nvim-tree-lua"; - version = "2021-05-27"; + version = "2021-06-05"; src = fetchFromGitHub { owner = "kyazdani42"; repo = "nvim-tree.lua"; - rev = "23935ff0036e26dbfe14e6aee96a7653ee704336"; - sha256 = "07pvxjijp1k932i1pzw0szd5dqxrh2g4br70z0h149252hya4fkf"; + rev = "f56ac7884c9b12343d66a2bacf90097af3c58cf6"; + sha256 = "0v2aznndmc5bsipqbj4q40qqmv384z6k5xh17yfcp7a6iak5zzjq"; }; meta.homepage = "https://github.com/kyazdani42/nvim-tree.lua/"; }; nvim-treesitter = buildVimPluginFrom2Nix { pname = "nvim-treesitter"; - version = "2021-05-26"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "nvim-treesitter"; repo = "nvim-treesitter"; - rev = "6c2ff319b311fed0160875b878811431399889cf"; - sha256 = "0vl782k8p5l2gm3y247a70ksrdn863gsv1z47frfnpq30ayxz0mx"; + rev = "b5d603a876fe8c89e96a9cac2dac2dd375479dac"; + sha256 = "1x2cn0v7yyqlwz8g4vqxh0vai372946a1akbg50pldq24jxm8j0q"; }; meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/"; }; @@ -3636,24 +3672,24 @@ final: prev: nvim-treesitter-textobjects = buildVimPluginFrom2Nix { pname = "nvim-treesitter-textobjects"; - version = "2021-05-11"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "nvim-treesitter"; repo = "nvim-treesitter-textobjects"; - rev = "4f1ace57fbeed1f4e5613ea8c9b414ff0833eade"; - sha256 = "1in2q3igq74m900rkchdcgfcy3h60663b58xn2ydlbjsbzhc7vrn"; + rev = "cadb8110817884fff506043497c0f2b92026aacb"; + sha256 = "01f1913r1q1x1qwp6l6xrqxfc9lffngnc8js5n37r7naszc9r7w8"; }; meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects/"; }; nvim-ts-rainbow = buildVimPluginFrom2Nix { pname = "nvim-ts-rainbow"; - version = "2021-05-26"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "p00f"; repo = "nvim-ts-rainbow"; - rev = "de234084fb82ff40ac593410409c77a542456415"; - sha256 = "1nw53jxdll34xml9064cl65p33cnv2pg9bbg4697wqdhs7rm4z27"; + rev = "0fffdcb37cf7d43bc138c89eb002957819c748af"; + sha256 = "0xd79f7a7zyqj6yzkjanli8r4wjhy17gsp1wl7p7vws6axrbgvjl"; }; meta.homepage = "https://github.com/p00f/nvim-ts-rainbow/"; }; @@ -3732,24 +3768,24 @@ final: prev: one-nvim = buildVimPluginFrom2Nix { pname = "one-nvim"; - version = "2021-05-05"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "Th3Whit3Wolf"; repo = "one-nvim"; - rev = "75e845eacc23f544b8990b5b6d10d8edf58cacfe"; - sha256 = "0zwz2kak0hk0kam0klh3ydynlw814g56vrqdn679ca6xqwzcihy3"; + rev = "d6e62bc7cdfae97d1ffc4f508a43955664ad5b73"; + sha256 = "0bna2kpvaxvwglgmdgp1g93bcygvnc1c25w4isawlgmsclzz9cc6"; }; meta.homepage = "https://github.com/Th3Whit3Wolf/one-nvim/"; }; onedark-vim = buildVimPluginFrom2Nix { pname = "onedark-vim"; - version = "2021-05-24"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "joshdick"; repo = "onedark.vim"; - rev = "ff7b30ebd2faed7bf2de599ec9f340cffb29a4a4"; - sha256 = "0irzprhgx5l6il45zw0ivg6fp38h73cd9x10mkn74jxa0djghp76"; + rev = "f209c5b6741e6cf847bf4a77e19f2fbf6ffc5290"; + sha256 = "146ypfx9rxcfp031a4zhzns637bjsf0bznplgyfmz3zjarj85422"; }; meta.homepage = "https://github.com/joshdick/onedark.vim/"; }; @@ -3792,12 +3828,12 @@ final: prev: packer-nvim = buildVimPluginFrom2Nix { pname = "packer-nvim"; - version = "2021-05-27"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "wbthomason"; repo = "packer.nvim"; - rev = "a41f6abb3fd0479aab1957c7891531b933154a5f"; - sha256 = "0khylm6w46gs8j4czvfbgdbh5gdidvlgv4hm2vjglv2dblzm2vdn"; + rev = "3715ce44c0aae69471511bd93789ccf578c9684c"; + sha256 = "1xcfmv7dn975hqa1izn4h80vpn3yksm8ali6nbxv62sij6m9na48"; }; meta.homepage = "https://github.com/wbthomason/packer.nvim/"; }; @@ -3888,24 +3924,24 @@ final: prev: playground = buildVimPluginFrom2Nix { pname = "playground"; - version = "2021-05-07"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "nvim-treesitter"; repo = "playground"; - rev = "79f71e2bd73978dfc7d228042d5e90c8545df623"; - sha256 = "1yrf0bdfn7xqmkzzwkzcf2hbcyaf21va3nd7fr5c9f4cvin3p0vr"; + rev = "1e02dece0daa4bef6a24c7a8b6edd48169885b18"; + sha256 = "182nkdzcviz3ap3vphcks4gzw99d4jsmxxlkmb42m0gzd54k1hwq"; }; meta.homepage = "https://github.com/nvim-treesitter/playground/"; }; plenary-nvim = buildVimPluginFrom2Nix { pname = "plenary-nvim"; - version = "2021-05-08"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "nvim-lua"; repo = "plenary.nvim"; - rev = "3f993308024697186c02d51df1330bf07c12535a"; - sha256 = "0riw3wy94qhbdvx32nmlc1s85n3ykg64n45p7i7mii0cd17mqm27"; + rev = "3834d42236c155bb4240fb4008ea6e62c4a21dae"; + sha256 = "1y9aqpb6j36873kcp8dbv5mm04qccjicrs0z0z9cy53s8sgfx558"; }; meta.homepage = "https://github.com/nvim-lua/plenary.nvim/"; }; @@ -3973,12 +4009,12 @@ final: prev: psc-ide-vim = buildVimPluginFrom2Nix { pname = "psc-ide-vim"; - version = "2019-09-17"; + version = "2021-05-31"; src = fetchFromGitHub { owner = "frigoeu"; repo = "psc-ide-vim"; - rev = "5fb4e329e5c0c7d80f0356ab4028eee9c8bd3465"; - sha256 = "0gzbxsq6wh8d9z9vyrff4hdpc66yg9y8hnxq4kjrz9qrccc75c1f"; + rev = "20ff325813ab114d70573a6768565a36aba796b9"; + sha256 = "1s79rz8rjp9bqw4yn97wbmzkc6jav4nixvnky22vbma2d0ckkcm0"; }; meta.homepage = "https://github.com/frigoeu/psc-ide-vim/"; }; @@ -4129,12 +4165,12 @@ final: prev: registers-nvim = buildVimPluginFrom2Nix { pname = "registers-nvim"; - version = "2021-05-27"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "tversteeg"; repo = "registers.nvim"; - rev = "016d969788bf01dae310570868c4d1e04ab42e31"; - sha256 = "1sifwa97laaijssqnn6b691zckkybaprpschvm983k5awcswy4jd"; + rev = "34bbf868da6ef0225739e7977a4063872cd2b1e8"; + sha256 = "0ghy760dc07xwjaf5ci2di8qfq0qip8jyrp7x0rsl820ryy7rggy"; }; meta.homepage = "https://github.com/tversteeg/registers.nvim/"; }; @@ -4225,12 +4261,12 @@ final: prev: rust-tools-nvim = buildVimPluginFrom2Nix { pname = "rust-tools-nvim"; - version = "2021-05-16"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "simrat39"; repo = "rust-tools.nvim"; - rev = "6f92ba636c06069592c64f85888b452da7e81cfd"; - sha256 = "1ng259hs6l6q17hc3y2iyd7v9xm6mkfg0jbpwgrbk4pf2clpn2aa"; + rev = "177507f1443be150250ce90c18f5f6fb8d798543"; + sha256 = "0wj6pccjbcvj42i4516y6wjrssyl3p060454yjxhgqnnnzxc2dh4"; }; meta.homepage = "https://github.com/simrat39/rust-tools.nvim/"; }; @@ -4273,12 +4309,12 @@ final: prev: scrollbar-nvim = buildVimPluginFrom2Nix { pname = "scrollbar-nvim"; - version = "2020-09-28"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "Xuyuanp"; repo = "scrollbar.nvim"; - rev = "72a4174a47a89b7f89401fc66de0df95580fa48c"; - sha256 = "10kk74pmbzc4v70n8vwb2zk0ayr147xy9zk2sbr78zwqf12gas9y"; + rev = "c338467dd6ef141fa8ce3172097a1f5be6c43779"; + sha256 = "1wvzdrj8gckhh6x4szipjjb6mg0v3ix5cq5dy83lfb28psyznshw"; }; meta.homepage = "https://github.com/Xuyuanp/scrollbar.nvim/"; }; @@ -4441,12 +4477,12 @@ final: prev: sonokai = buildVimPluginFrom2Nix { pname = "sonokai"; - version = "2021-05-22"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "sainnhe"; repo = "sonokai"; - rev = "53e874723f4564a12ca0af30541dca4a9d315556"; - sha256 = "1wbwpawmlc25wdnmhidrj9k591zqc2srszh20xv60p0dg2aylmx5"; + rev = "9dd432b1bce0bd448faf22375fcf6311ff0d4226"; + sha256 = "0asqmnyizcyg5drfhbm52l654q3s5ibvbnd8n45kbcn3cnaqb148"; }; meta.homepage = "https://github.com/sainnhe/sonokai/"; }; @@ -4574,24 +4610,24 @@ final: prev: srcery-vim = buildVimPluginFrom2Nix { pname = "srcery-vim"; - version = "2021-05-25"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "srcery-colors"; repo = "srcery-vim"; - rev = "44eadc74ff42ced89e85300d69f8297ffe11589e"; - sha256 = "1k090cy50z6rsh26z6bqw81h60jl7pnjjdfkv8wmzncy7zna86bs"; + rev = "93711180123b9ba6958bfc682d305ef0a1056fa5"; + sha256 = "1i3hhihlvh5mkn1vl9f1baiz712h8lwp1hfi5arsb36picsmgbfd"; }; meta.homepage = "https://github.com/srcery-colors/srcery-vim/"; }; stan-vim = buildVimPluginFrom2Nix { pname = "stan-vim"; - version = "2021-05-26"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "eigenfoo"; repo = "stan-vim"; - rev = "0216d8eb8fba6c25a960fe940ca419e570789314"; - sha256 = "0xmkpnrn97y7fny90d57zrklyyhmh7q4ppp1dqdb9q74vikhsch5"; + rev = "2adaa984e531e1876f053cacb07d8d181d70fbd1"; + sha256 = "1a826cfmwyn4kfyrj6164425gf2wbjs85cdkhzkqsrj0i924hjqz"; }; meta.homepage = "https://github.com/eigenfoo/stan-vim/"; }; @@ -4658,12 +4694,12 @@ final: prev: swift-vim = buildVimPluginFrom2Nix { pname = "swift-vim"; - version = "2021-05-05"; + version = "2021-05-30"; src = fetchFromGitHub { owner = "keith"; repo = "swift.vim"; - rev = "74af6626f63e331b60524d20dd69c9c5d03dc90c"; - sha256 = "0cizij9lv93yg8fxnh04vfpywaxywprmkcsvwginbi20hz155q4g"; + rev = "7ef452b47f14a2bfed26324793777cf12d2a8d78"; + sha256 = "0s12iv8vmqp8yr8fg7a6yf73kgq84i9zy18fhgb0jcc6cwwwz3iq"; }; meta.homepage = "https://github.com/keith/swift.vim/"; }; @@ -4851,12 +4887,12 @@ final: prev: telescope-nvim = buildVimPluginFrom2Nix { pname = "telescope-nvim"; - version = "2021-05-27"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "nvim-telescope"; repo = "telescope.nvim"; - rev = "904f84942384f988271cd40cc4b195263fe0763a"; - sha256 = "1dgzp5n6kaphhdm87k5vdbq3srj5dcp1rhnzd72d7n16x0xnki8h"; + rev = "2697bcfaf0fac861e08c3a55d9334ec6d823029f"; + sha256 = "0q9kq64y3yrazcks476yplkrhx59z82ij5wj1w8qakidy2i008z1"; }; meta.homepage = "https://github.com/nvim-telescope/telescope.nvim/"; }; @@ -5008,12 +5044,12 @@ final: prev: trouble-nvim = buildVimPluginFrom2Nix { pname = "trouble-nvim"; - version = "2021-05-26"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "folke"; repo = "trouble.nvim"; - rev = "cf87622d661190157dfa7e28a19ee87bb205219b"; - sha256 = "082sd2x6v8ybyy1pa5jm2mm386c1mn23h9p3nd7fmip2cw9snhd0"; + rev = "a7dca6204316b9be7c95d056088c67371151c8ab"; + sha256 = "0b2wha4qmn9gb5fmj57ymhn3jrajq71yk48m8gddr1hx244adknh"; }; meta.homepage = "https://github.com/folke/trouble.nvim/"; }; @@ -5068,12 +5104,12 @@ final: prev: undotree = buildVimPluginFrom2Nix { pname = "undotree"; - version = "2021-05-16"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "mbbill"; repo = "undotree"; - rev = "271c56586196b8e42cdcadc8037aa5d3051071c4"; - sha256 = "1sjsv4zzmkkj3l56gbb5f0ad0g6clh1wc76q4d6qsaqv4qg4nsal"; + rev = "1cc3b9069e4356efd4ce1c3c4bdbb227fb54e1e5"; + sha256 = "0m8wc66ml2h6lsbwq452w8y9s95a4kwp4lfdw94pi4q3h5qhvkxj"; }; meta.homepage = "https://github.com/mbbill/undotree/"; }; @@ -5404,12 +5440,12 @@ final: prev: vim-airline = buildVimPluginFrom2Nix { pname = "vim-airline"; - version = "2021-05-27"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "vim-airline"; repo = "vim-airline"; - rev = "a8b3c254d0e5c43be24298ce16cd01f740fe8d42"; - sha256 = "1rbdmwah7zxjah5c3rx71h1d6skda0y6pyz7ysasyjj1dnb2kcsi"; + rev = "82b1b2e87677b468a3b6140372839654d8c346e7"; + sha256 = "0vvaj84q72z5b473f4823laxdvqb1qqj83n05ixavzpjq2qnlmhq"; }; meta.homepage = "https://github.com/vim-airline/vim-airline/"; }; @@ -5440,12 +5476,12 @@ final: prev: vim-android = buildVimPluginFrom2Nix { pname = "vim-android"; - version = "2021-05-27"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "hsanson"; repo = "vim-android"; - rev = "ae364eb950f6409de820ceb94619a51b724433dc"; - sha256 = "1b8h4qyvsmap8c2arvp2v1cjax5mskkn382s44ppr0s2dwhcg02b"; + rev = "520e29d4dd2c4418e246bc28a3383fefdf501cd2"; + sha256 = "13kdbp6542k2g2vnzvfrijyc3qmkfysn4wyrsq95bai4pqaipraf"; }; meta.homepage = "https://github.com/hsanson/vim-android/"; }; @@ -5680,12 +5716,12 @@ final: prev: vim-clap = buildVimPluginFrom2Nix { pname = "vim-clap"; - version = "2021-05-24"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "liuchengxu"; repo = "vim-clap"; - rev = "ff32ca1e08d3c934aadf21106b1ee623e5544912"; - sha256 = "0gkbav7icvcy411yaiav8vc4g1q6yk5gixbcwlaxib5c70zmvxlh"; + rev = "c743b1171194f85469a64556a1f54882cb73cc17"; + sha256 = "0ws8rvvmszcspwvzns7i82l458sa2mhi0013li8c61g1g2wbpphn"; }; meta.homepage = "https://github.com/liuchengxu/vim-clap/"; }; @@ -5896,12 +5932,12 @@ final: prev: vim-css-color = buildVimPluginFrom2Nix { pname = "vim-css-color"; - version = "2021-05-20"; + version = "2021-05-30"; src = fetchFromGitHub { owner = "ap"; repo = "vim-css-color"; - rev = "47bbd29fedc2c34747ba5ae3a1cdbd62fcf19267"; - sha256 = "0d6qj36qdshw630g86yh5afbq7azaijypnj6ja4y6ryy8cx11q7c"; + rev = "7337c35588e9027b516f80f03c3b9621a271e168"; + sha256 = "05np2fr8q8r8n5mlspjywibl7hx54liy77wxvjya7n2p085n49ks"; }; meta.homepage = "https://github.com/ap/vim-css-color/"; }; @@ -5944,16 +5980,28 @@ final: prev: vim-dadbod = buildVimPluginFrom2Nix { pname = "vim-dadbod"; - version = "2021-05-19"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "tpope"; repo = "vim-dadbod"; - rev = "5198650e81e4f187ab77e1f65bea193d923bc4a1"; - sha256 = "1pl6m3bqginqfsaa5kqvhang5g24lvh9wlsbbdvan9jyslqqdpq7"; + rev = "9e4fdb8ab029c0436728a96e1c92677737c2e784"; + sha256 = "1rmiza1km214mvlrdaqycv5hk8ki35giab11b9ggwcigbh743h01"; }; meta.homepage = "https://github.com/tpope/vim-dadbod/"; }; + vim-dadbod-completion = buildVimPluginFrom2Nix { + pname = "vim-dadbod-completion"; + version = "2021-05-12"; + src = fetchFromGitHub { + owner = "kristijanhusak"; + repo = "vim-dadbod-completion"; + rev = "a3f8ea8e666f4bebe12739d8854a4bd31544dfbb"; + sha256 = "04m7drx86r8zqq7rq29wa9zq5ckzf5bqxzyhdc5hqn82jxcvxmpz"; + }; + meta.homepage = "https://github.com/kristijanhusak/vim-dadbod-completion/"; + }; + vim-dasht = buildVimPluginFrom2Nix { pname = "vim-dasht"; version = "2020-07-11"; @@ -6016,12 +6064,12 @@ final: prev: vim-dirdiff = buildVimPluginFrom2Nix { pname = "vim-dirdiff"; - version = "2020-11-03"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "will133"; repo = "vim-dirdiff"; - rev = "0191693f0d3dfc624c61ac95ec951183a50b3b32"; - sha256 = "0har8iri09nkjsvag4wgsynb9fxan2g8nlvlvd5zsalbnmlmdh9j"; + rev = "84bc8999fde4b3c2d8b228b560278ab30c7ea4c9"; + sha256 = "06qjfz94hqsmg43dpj347cvc72p16xp76zq216js35yphv6sgx65"; }; meta.homepage = "https://github.com/will133/vim-dirdiff/"; }; @@ -6436,12 +6484,12 @@ final: prev: vim-fugitive = buildVimPluginFrom2Nix { pname = "vim-fugitive"; - version = "2021-05-27"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "tpope"; repo = "vim-fugitive"; - rev = "6ae064c5aa1cc24c78abc8d12ec236e99dc01316"; - sha256 = "017dm18dazg3svqyir1pncvnhczxcsnjdq85aypsrggf1mhd9m1a"; + rev = "f7f1413ed9b69eb80c8af07d38ebcc889ed64d96"; + sha256 = "16az604z245bw64dhkgmszifg1ajnf0i9binllixwaifnh6vfnhh"; }; meta.homepage = "https://github.com/tpope/vim-fugitive/"; }; @@ -6508,12 +6556,12 @@ final: prev: vim-gitgutter = buildVimPluginFrom2Nix { pname = "vim-gitgutter"; - version = "2021-05-24"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "airblade"; repo = "vim-gitgutter"; - rev = "10998f303cd85405e51380f6dc406dd756c105e8"; - sha256 = "0520sqya9i2ry5yfryqi1q7h6yg2vgqw1qa042f1b2r8ddgvxibk"; + rev = "68a8cb300c75eb1cd2173b2aac70515e99904ef3"; + sha256 = "0s4c1vb2z3manl2i768f48i2pww2d4dj41plx4mvvi7sczlma30n"; }; meta.homepage = "https://github.com/airblade/vim-gitgutter/"; }; @@ -6556,12 +6604,12 @@ final: prev: vim-go = buildVimPluginFrom2Nix { pname = "vim-go"; - version = "2021-05-27"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "fatih"; repo = "vim-go"; - rev = "696c4a4ef79fc1fb8f090353cf404df95614ce46"; - sha256 = "1z811b62f5pafv3zmqjjcvmphikml8hzspdb7nvkyrr561awzwab"; + rev = "edd8c160e54c2861a617777192a48d0a64704192"; + sha256 = "1xdggzasvv3x1h61yqp2rl30r6kppf6aqdjqsrpzihz809w5zgry"; }; meta.homepage = "https://github.com/fatih/vim-go/"; }; @@ -6604,12 +6652,12 @@ final: prev: vim-gruvbox8 = buildVimPluginFrom2Nix { pname = "vim-gruvbox8"; - version = "2021-05-03"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "lifepillar"; repo = "vim-gruvbox8"; - rev = "68253ac63780918b02669ec15ac5bc3aa36e4641"; - sha256 = "0k355wqh8x8c35qvll494v98gbvvly96w79d94srzarvj4h9as55"; + rev = "66d58b569fdbe0ec389acb66eb4a585f3110e43e"; + sha256 = "0bggkq2p109vc67s0idplrf4sy4j12smwkx2wvsc626bzflzc2fb"; }; meta.homepage = "https://github.com/lifepillar/vim-gruvbox8/"; }; @@ -6688,12 +6736,12 @@ final: prev: vim-hcl = buildVimPluginFrom2Nix { pname = "vim-hcl"; - version = "2021-03-17"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "jvirtanen"; repo = "vim-hcl"; - rev = "d50f93204b606b4ff40a9522be0e8dbf6055b815"; - sha256 = "0sdaldmdrgha5ij02flsqrc77ijjifdvl8b6pdw24xrpd9j5cwhs"; + rev = "6289d1a1424229a8f6523f4ef9441dbf2468250b"; + sha256 = "0x33bdvacmj82m838frr40r16mc0cvb2p9alkr2gw30ls2ym3zdy"; }; meta.homepage = "https://github.com/jvirtanen/vim-hcl/"; }; @@ -6797,12 +6845,12 @@ final: prev: vim-html-template-literals = buildVimPluginFrom2Nix { pname = "vim-html-template-literals"; - version = "2020-09-02"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "jonsmithers"; repo = "vim-html-template-literals"; - rev = "602dba70bdcfc2e280e0c0503e74a8a92519db49"; - sha256 = "0x0sbmcig3r058sg78bfj8dv0lwlgdcwvw9kxviynyhk2qkg9zl9"; + rev = "e6f3f8ffaae9c2f9deea2bbb596b64468041616c"; + sha256 = "1lrkby9m60ccgm35y1z82llgzjd5vmdwfscy7byjd5ycnkhyangi"; }; meta.homepage = "https://github.com/jonsmithers/vim-html-template-literals/"; }; @@ -6857,12 +6905,12 @@ final: prev: vim-illuminate = buildVimPluginFrom2Nix { pname = "vim-illuminate"; - version = "2021-05-18"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "RRethy"; repo = "vim-illuminate"; - rev = "20707bb5ac23536041d34f327649844e631d52bd"; - sha256 = "1gm0rfhhzmb1hv4dzys4w0si9ppaanxn0v68rpjc9yn8ahws426b"; + rev = "daa49da1e7a6d8c8dcbd3a40f91046d1505fd645"; + sha256 = "1qvnij7z48g1m6n2qz5lbgbiwwaqnb626sz6qvhkd5jh556pmfah"; }; meta.homepage = "https://github.com/RRethy/vim-illuminate/"; }; @@ -7254,12 +7302,12 @@ final: prev: vim-lsp = buildVimPluginFrom2Nix { pname = "vim-lsp"; - version = "2021-05-03"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "prabirshrestha"; repo = "vim-lsp"; - rev = "1f98a0656620bfc03dcb8bad87aa76a6304b3b73"; - sha256 = "177l1xbd1039mmxwk2ggbjawvnpqp362w0mnqvqs2655ib4zdbq3"; + rev = "ddd5abb5b6491117c4b7ef4149e47945926eecd8"; + sha256 = "0xv687xzwqhwpmxr65sm3ln74y8mxww1q3fqj57va06ilxzac56c"; }; meta.homepage = "https://github.com/prabirshrestha/vim-lsp/"; }; @@ -7290,12 +7338,12 @@ final: prev: vim-maktaba = buildVimPluginFrom2Nix { pname = "vim-maktaba"; - version = "2021-05-20"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "google"; repo = "vim-maktaba"; - rev = "b7106d83d38116984859eaecabeb8e1d5e21ae55"; - sha256 = "14xds4wfrm2ir7ljv195lxm9zkkxnwbmflzihpj6vai788za5ikc"; + rev = "2b5565881b31ed4e7ac32b4903827ec9c164216d"; + sha256 = "13nzkqhyz8jydrwprw06jqcx3w37xv0qdq0809gx748kfvh1dznw"; }; meta.homepage = "https://github.com/google/vim-maktaba/"; }; @@ -7363,12 +7411,12 @@ final: prev: vim-matchup = buildVimPluginFrom2Nix { pname = "vim-matchup"; - version = "2021-05-20"; + version = "2021-06-02"; src = fetchFromGitHub { owner = "andymass"; repo = "vim-matchup"; - rev = "42e8ef032ae44c6336a7194408de5e9492aa2a07"; - sha256 = "1h1bpylrriq35m4bn4w9ikxq413ack27h35jcmhp1mb1lg5b32y9"; + rev = "fd9f3c09b04725c8042149bfe3fd080b6f6962cb"; + sha256 = "08cqh4b01jl0iqd1nj2sw2jcwxp48m9rdh50sdnfjgdvynnpagik"; }; meta.homepage = "https://github.com/andymass/vim-matchup/"; }; @@ -7555,12 +7603,12 @@ final: prev: vim-nix = buildVimPluginFrom2Nix { pname = "vim-nix"; - version = "2020-11-16"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "LnL7"; repo = "vim-nix"; - rev = "7542a2bf66d72cb86fc80529867accbc787f744b"; - sha256 = "1kgziwckdjg3sb1z4anwsn1c72hny60vhimxpb6424bylk1qy22j"; + rev = "63b47b39c8d481ebca3092822ca8972e08df769b"; + sha256 = "08n9cgphv2m96kk5w996lwlqak011x5xm410hajmc91vy5fws361"; }; meta.homepage = "https://github.com/LnL7/vim-nix/"; }; @@ -7891,12 +7939,12 @@ final: prev: vim-polyglot = buildVimPluginFrom2Nix { pname = "vim-polyglot"; - version = "2021-04-14"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "sheerun"; repo = "vim-polyglot"; - rev = "730dcb02caab60a6ae5d8b4bdc16d290041061ec"; - sha256 = "1pgqw008xy3fn821zxfiwc9xpd0v33wxmk4yf9avm5jgqbkwn1ld"; + rev = "c312d30231f136d2fbb32a2cfea554af5066e6b0"; + sha256 = "1apd860v2xfi3fjgl15j7mgn6nczx10vj324w1vf1ic5nyy4b594"; }; meta.homepage = "https://github.com/sheerun/vim-polyglot/"; }; @@ -8095,12 +8143,12 @@ final: prev: vim-rails = buildVimPluginFrom2Nix { pname = "vim-rails"; - version = "2021-05-25"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "tpope"; repo = "vim-rails"; - rev = "d556429fad4bf24d431be9f75322fd0d1a82bae2"; - sha256 = "0k1ffyy145nhmr9ad56vc10yy3jliyj8aahs0pm30fgi9q7qz7iy"; + rev = "3b3796352a6f1a68e54e5f7ae5e0c1b9103fab0e"; + sha256 = "1f0xns0h55szamms17wi06k1ninvygsc4yw82hr29kfq94hvn57l"; }; meta.homepage = "https://github.com/tpope/vim-rails/"; }; @@ -8407,12 +8455,12 @@ final: prev: vim-snipmate = buildVimPluginFrom2Nix { pname = "vim-snipmate"; - version = "2021-01-22"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "garbas"; repo = "vim-snipmate"; - rev = "cbec960ab558b20281c0634b9b1a45fb16aaf638"; - sha256 = "1k35rh5gq8lv67qx3l31xvl4iz7rlpybls7pwhsbmz4m598w03bm"; + rev = "ed3c5426a20bf1c06d7980946ada34fd9f93320e"; + sha256 = "0bxaalza02sgm045cj4vciy3qhmj7pj1rp9bdwm5837ldq8paj1h"; }; meta.homepage = "https://github.com/garbas/vim-snipmate/"; }; @@ -8503,12 +8551,12 @@ final: prev: vim-startuptime = buildVimPluginFrom2Nix { pname = "vim-startuptime"; - version = "2021-05-04"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "dstein64"; repo = "vim-startuptime"; - rev = "c622725676c179950ea4a789915efc6d53f142c3"; - sha256 = "168bdcbb13mdd40b0xq9i9chgsg6jr8h4f1jpzf05br5fxp09snk"; + rev = "7a97baae32bedbf6f62d5a573777e4d1652787d1"; + sha256 = "1sphykwbjd35kwsibm9wcxbs2iwjkzkg7madqvlxzi7sqh4vkc7y"; }; meta.homepage = "https://github.com/dstein64/vim-startuptime/"; }; @@ -8599,12 +8647,12 @@ final: prev: vim-table-mode = buildVimPluginFrom2Nix { pname = "vim-table-mode"; - version = "2021-05-05"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "dhruvasagar"; repo = "vim-table-mode"; - rev = "5150f1ec06f51b087a11c71b498a4c4497e71e2c"; - sha256 = "1nwcc7didjyd2iw23qhxrg0rr66z93midabkwjdnlw8mzgha7lb7"; + rev = "35e9fbf64c06fddc41651e65b92200f902d8ae0b"; + sha256 = "16p68x4669y4qpg91hmi4gc3f8qc8bzbr8v6w3nc75vm48s64z6k"; }; meta.homepage = "https://github.com/dhruvasagar/vim-table-mode/"; }; @@ -8792,12 +8840,12 @@ final: prev: vim-tmux-navigator = buildVimPluginFrom2Nix { pname = "vim-tmux-navigator"; - version = "2020-11-12"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "christoomey"; repo = "vim-tmux-navigator"; - rev = "6a1e58c3ca3bc7acca36c90521b3dfae83b2a602"; - sha256 = "17219h69vd6b994qrywg1rpx80y1rmycbfsmf9wb6c693sx721sn"; + rev = "0cabb1ef01af0986b7bf6fb7acf631debdbbb470"; + sha256 = "0xxc5wpyfqv7f7sfy6xncy7ipj0cvshw28s12ld3jfgyimjllr62"; }; meta.homepage = "https://github.com/christoomey/vim-tmux-navigator/"; }; @@ -8828,12 +8876,12 @@ final: prev: vim-tpipeline = buildVimPluginFrom2Nix { pname = "vim-tpipeline"; - version = "2021-04-28"; + version = "2021-06-03"; src = fetchFromGitHub { owner = "vimpostor"; repo = "vim-tpipeline"; - rev = "01d4073e7f1319f223c0d5bfd1abe1e292238252"; - sha256 = "1nfwiizd8nk4pqz1jsw9nq5ngmavjdb3jra2xb5kzgjl2fbzvjda"; + rev = "683cf4f2e16149c477a8f5c96b7429932a68d801"; + sha256 = "0gr5k4bzzzvn00plimpkjiavya04jvcgg322k8yblzmm01r6vcr2"; }; meta.homepage = "https://github.com/vimpostor/vim-tpipeline/"; }; @@ -8888,12 +8936,12 @@ final: prev: vim-ultest = buildVimPluginFrom2Nix { pname = "vim-ultest"; - version = "2021-05-27"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "rcarriga"; repo = "vim-ultest"; - rev = "2de66cbec0694da8f29a99e5c3167c7b9c4a7aff"; - sha256 = "0zxici08m9mk8ia1vr4pm0lgw2fg7p1v1dny89nd0x1r1xfwy4w2"; + rev = "17e372f83238d5d85f6574c59d5d210a898e8623"; + sha256 = "084mn6zxc2x8gp938fpi5ylwqy2pgvn046xbsmyq8md36vqb6m7g"; }; meta.homepage = "https://github.com/rcarriga/vim-ultest/"; }; @@ -8948,12 +8996,12 @@ final: prev: vim-visual-multi = buildVimPluginFrom2Nix { pname = "vim-visual-multi"; - version = "2021-05-27"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "mg979"; repo = "vim-visual-multi"; - rev = "8041a909fc3f740e9d110dd2e95980ff4645785b"; - sha256 = "17zf839g8sr3i9amwvxx008m89m9hz3f34pbc90mpl5ksy4isdqv"; + rev = "2b9d104c57aeb612d7f00e1d071d712ed8671949"; + sha256 = "17f92pka2flwnhx8yg7skbp8kyhbb6gmvm0mni2jm7w3iq68nbmw"; }; meta.homepage = "https://github.com/mg979/vim-visual-multi/"; }; @@ -8972,12 +9020,12 @@ final: prev: vim-vsnip = buildVimPluginFrom2Nix { pname = "vim-vsnip"; - version = "2021-04-21"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "hrsh7th"; repo = "vim-vsnip"; - rev = "395d200728b467e141615f53afe564adc26985b9"; - sha256 = "1g0fhdqr6qmqmhvm3amv22fqb1aacmvd0swmk38w25zzcbl4b4gy"; + rev = "552403842b992efde3816a89b20055f7d66d9a0d"; + sha256 = "1pkkysv2mnbzm2bi33l1xccdb6sh06dgyg83dg0dgd0gmp94l7ya"; }; meta.homepage = "https://github.com/hrsh7th/vim-vsnip/"; }; @@ -9056,12 +9104,12 @@ final: prev: vim-wordmotion = buildVimPluginFrom2Nix { pname = "vim-wordmotion"; - version = "2021-04-25"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "chaoren"; repo = "vim-wordmotion"; - rev = "f6a2064444f39ba52161b16ac1429ee87c1af76d"; - sha256 = "0y69jkgh9pf4b0c4pxgqvf43gq8amz9qwhq1cg38zriy2m4kxi7h"; + rev = "dca1a1827513497def6362411d093ae6b3cff7f8"; + sha256 = "1ij2j35bskk20wyiwjg1krqr9fi5fk043gfpxihhlbxd7yxlbpq1"; }; meta.homepage = "https://github.com/chaoren/vim-wordmotion/"; }; @@ -9104,12 +9152,12 @@ final: prev: vim-xtabline = buildVimPluginFrom2Nix { pname = "vim-xtabline"; - version = "2021-01-31"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "mg979"; repo = "vim-xtabline"; - rev = "654675222adde47c9d72caa400e35c7e680fe5a1"; - sha256 = "1f7d4vmr7n5v7h5a1bjcvxaqygrdi33y0vdx4yjfdswi835yd45h"; + rev = "ad80aa67958a31a254d8994c7a517c1123256721"; + sha256 = "07pd7wzyvch400i6kv0ld3bx2x90ycdjaapwc7aaqkwikk2slq3h"; }; meta.homepage = "https://github.com/mg979/vim-xtabline/"; }; @@ -9309,12 +9357,12 @@ final: prev: vimtex = buildVimPluginFrom2Nix { pname = "vimtex"; - version = "2021-05-25"; + version = "2021-06-01"; src = fetchFromGitHub { owner = "lervag"; repo = "vimtex"; - rev = "8d3cbfff3d44e8af93948d3c7785130f54bc2386"; - sha256 = "0gwj70fxbpmwnrd78ralqq2nzk8gwqv6bd267kf64z9rxkwdhrs0"; + rev = "b0d430b80504e847584664d83e879399647cd38f"; + sha256 = "0k44iv5fig0601bc1vglgbphiw0h6gq8379zsk1ca3fgzyi2ic0p"; }; meta.homepage = "https://github.com/lervag/vimtex/"; }; @@ -9357,12 +9405,12 @@ final: prev: vista-vim = buildVimPluginFrom2Nix { pname = "vista-vim"; - version = "2021-04-27"; + version = "2021-05-28"; src = fetchFromGitHub { owner = "liuchengxu"; repo = "vista.vim"; - rev = "3d4e2a80658467af02a6347e3dae8810e6a5f02f"; - sha256 = "05hh9hk5qcn8gd4k3zm8qz077wxamp4rja486nwm9y5p6723vqn9"; + rev = "19cad968d2cd759e7f9de1d662ec680bd93ebebc"; + sha256 = "0r01b6mml6qgyybi6i59bflgqi03w0fnl0wfgwac96ixs2wdvl1l"; }; meta.homepage = "https://github.com/liuchengxu/vista.vim/"; }; @@ -9393,24 +9441,24 @@ final: prev: webapi-vim = buildVimPluginFrom2Nix { pname = "webapi-vim"; - version = "2020-12-02"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "mattn"; repo = "webapi-vim"; - rev = "6f5ffb6f547cda1b6cbc26a06f12d81e6283bd82"; - sha256 = "1144jk4dfqb8pzblqksc1wjgbraxy6pdgr4q567wzcf93bviv81l"; + rev = "b09cbd3a27157a5baf0468403b392f577adefe45"; + sha256 = "17vlzg5dm5phirwyk8xkqnrkplybd8d5rj9kdx7rgla3h7rqn4wg"; }; meta.homepage = "https://github.com/mattn/webapi-vim/"; }; which-key-nvim = buildVimPluginFrom2Nix { pname = "which-key-nvim"; - version = "2021-05-26"; + version = "2021-06-04"; src = fetchFromGitHub { owner = "folke"; repo = "which-key.nvim"; - rev = "db851981595fc360e9b6196a7c3995611aceac3b"; - sha256 = "0y3mq6vrpmpxa8f42cxxf1209ardb3qraf44vgxwdaqqgphm7zk9"; + rev = "9ea98e59ddeeafc9181815dd714bea513b298e33"; + sha256 = "0zhlbbd969p4bg5vrifsi5sgqi2wbp8zxlak3l7zk67akpbb395n"; }; meta.homepage = "https://github.com/folke/which-key.nvim/"; }; @@ -9513,12 +9561,12 @@ final: prev: yats-vim = buildVimPluginFrom2Nix { pname = "yats-vim"; - version = "2021-02-15"; + version = "2021-05-29"; src = fetchFromGitHub { owner = "HerringtonDarkholme"; repo = "yats.vim"; - rev = "11112853180a933574f431cf78cd5a462ee3f473"; - sha256 = "0bnq02dbsqwsizhlldb2pj92gjybr5aaa7a5m786xvb7ljvd82vi"; + rev = "7c5e526f1aac81e4913be72a5a891e8de38925bd"; + sha256 = "1p3rgw1fx6ficzyk7ba9s22aj9xjsf50ipkx4bdmp4a2zskacqcp"; fetchSubmodules = true; }; meta.homepage = "https://github.com/HerringtonDarkholme/yats.vim/"; diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names index 677ebffb8f99..9d150c93c7cd 100644 --- a/pkgs/misc/vim-plugins/vim-plugin-names +++ b/pkgs/misc/vim-plugins/vim-plugin-names @@ -13,6 +13,7 @@ alvan/vim-closetag alx741/vim-hindent alx741/vim-stylishask amiorin/ctrlp-z +andersevenrud/compe-tmux@main andrep/vimacs andreshazard/vim-logreview AndrewRadev/sideways.vim@main @@ -164,6 +165,7 @@ glepnir/zephyr-nvim@main glts/vim-textobj-comment godlygeek/csapprox godlygeek/tabular +GoldsteinE/compe-latex-symbols google/vim-codefmt google/vim-jsonnet google/vim-maktaba @@ -298,6 +300,7 @@ kristijanhusak/defx-git kristijanhusak/defx-icons kristijanhusak/deoplete-phpactor kristijanhusak/vim-carbon-now-sh +kristijanhusak/vim-dadbod-completion kristijanhusak/vim-dirvish-git kristijanhusak/vim-hybrid-material kshenoy/vim-signature @@ -619,6 +622,7 @@ t9md/vim-choosewin t9md/vim-smalls TaDaa/vimade takac/vim-hardtime +tamago324/compe-zsh tami5/compe-conjure tami5/lispdocs.nvim tami5/sql.nvim diff --git a/pkgs/os-specific/linux/mwprocapture/default.nix b/pkgs/os-specific/linux/mwprocapture/default.nix index c21cf2bb6482..e97dcad43db0 100644 --- a/pkgs/os-specific/linux/mwprocapture/default.nix +++ b/pkgs/os-specific/linux/mwprocapture/default.nix @@ -2,9 +2,6 @@ with lib; -# The Magewell Pro Capture drivers are not supported for kernels older than 3.2 -assert versionAtLeast kernel.version "3.2.0"; - let bits = if stdenv.is64bit then "64" @@ -14,15 +11,15 @@ let in stdenv.mkDerivation rec { - name = "mwprocapture-1.2.${version}-${kernel.version}"; - version = "4177"; + name = "mwprocapture-1.3.0.${version}-${kernel.version}"; + version = "4236"; src = fetchurl { - url = "http://www.magewell.com/files/drivers/ProCaptureForLinux_${version}.tar.gz"; - sha256 = "1nf51w9yixpvr767k49sfdb9n9rv5qc72f5yki1mkghbmabw7vys"; + url = "https://www.magewell.com/files/drivers/ProCaptureForLinux_${version}.tar.gz"; + sha256 = "1mfgj84km276sq5i8dny1vqp2ycqpvgplrmpbqwnk230d0w3qs74"; }; - nativeBuildInputs = [ kernel.moduleBuildDependencies ]; + nativeBuildInputs = kernel.moduleBuildDependencies; preConfigure = '' @@ -63,5 +60,6 @@ stdenv.mkDerivation rec { license = licenses.unfreeRedistributable; maintainers = with maintainers; [ MP2E ]; platforms = platforms.linux; + broken = kernel.kernelOlder "3.2.0"; }; } diff --git a/pkgs/servers/consul/default.nix b/pkgs/servers/consul/default.nix index fd1b14e6158c..874b18ef9eb0 100644 --- a/pkgs/servers/consul/default.nix +++ b/pkgs/servers/consul/default.nix @@ -2,7 +2,7 @@ buildGoModule rec { pname = "consul"; - version = "1.9.5"; + version = "1.9.6"; rev = "v${version}"; # Note: Currently only release tags are supported, because they have the Consul UI @@ -17,7 +17,7 @@ buildGoModule rec { owner = "hashicorp"; repo = pname; inherit rev; - sha256 = "sha256-CKezHuCbL1I79gDz7ZQiSgPbSXo0NtssQro2MqqmeXw="; + sha256 = "sha256-SuG/Q5Tjet4etd4Qy5NBQLYEe2QO0K8QHKmgxYMl09U="; }; passthru.tests.consul = nixosTests.consul; @@ -26,7 +26,7 @@ buildGoModule rec { # has a split module structure in one repo subPackages = ["." "connect/certgen"]; - vendorSha256 = "sha256-YqrW3PeFv1Y6lmjVmMMP0SZao57iPqfut3a1afIWkI0="; + vendorSha256 = "sha256-jVhj7pzJ8kxZk3ViA9zhVqD314biih/sP0Ql1GXcoRY="; doCheck = false; diff --git a/pkgs/servers/monitoring/prometheus/process-exporter.nix b/pkgs/servers/monitoring/prometheus/process-exporter.nix index 048a3ff264c4..e4bfed9821b7 100644 --- a/pkgs/servers/monitoring/prometheus/process-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/process-exporter.nix @@ -1,4 +1,4 @@ -{ lib, buildGoModule, fetchFromGitHub }: +{ lib, buildGoModule, fetchFromGitHub, nixosTests }: buildGoModule rec { pname = "process-exporter"; @@ -19,6 +19,8 @@ buildGoModule rec { doCheck = true; + passthru.tests = { inherit (nixosTests.prometheus-exporters) process; }; + meta = with lib; { description = "Prometheus exporter that mines /proc to report on selected processes"; homepage = "https://github.com/ncabatoff/process-exporter"; diff --git a/pkgs/servers/openafs/1.8/module.nix b/pkgs/servers/openafs/1.8/module.nix index 53389db39c9c..2e33e61c0e52 100644 --- a/pkgs/servers/openafs/1.8/module.nix +++ b/pkgs/servers/openafs/1.8/module.nix @@ -49,6 +49,16 @@ in stdenv.mkDerivation { url = "https://github.com/openafs/openafs/commit/ee53dd3bc087a05e22fc4111297a51ddb30013f0.patch"; sha256 = "0dfab3zk0dmf6iksna5n09lf5dn4f8w43q4irl2yf5dgqm35shkr"; }) + # Linux: Create wrapper for setattr_prepare + (fetchpatch { + url = "https://github.com/openafs/openafs/commit/5a5d358b02b88d6d2c7a27a75149e35b1de7db38.patch"; + sha256 = "07gywsg41cz5h6iafr4pb0gb9jnsb58xkwn479lw46b3y5jgz7ki"; + }) + # Linux 5.12: Add user_namespace param to inode ops + (fetchpatch { + url = "https://github.com/openafs/openafs/commit/c747b15dd2877e6d17e3e6b940ae78c1e1ccd3ea.patch"; + sha256 = "0bbqmx4nkmfkapk25zrv9ivhhs91rn9dizb1lkfs7a6937q1kaqh"; + }) ]; hardeningDisable = [ "pic" ]; diff --git a/pkgs/tools/admin/gixy/default.nix b/pkgs/tools/admin/gixy/default.nix index 06656a9e033b..1711792ab2bc 100644 --- a/pkgs/tools/admin/gixy/default.nix +++ b/pkgs/tools/admin/gixy/default.nix @@ -38,6 +38,6 @@ python3.pkgs.buildPythonApplication rec { homepage = "https://github.com/yandex/gixy"; license = licenses.mpl20; maintainers = [ maintainers.willibutz ]; - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/tools/games/gamemode/default.nix b/pkgs/tools/games/gamemode/default.nix new file mode 100644 index 000000000000..e9fdec592204 --- /dev/null +++ b/pkgs/tools/games/gamemode/default.nix @@ -0,0 +1,104 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, libgamemode32 +, meson +, ninja +, pkg-config +, dbus +, inih +, systemd +, appstream +}: + +stdenv.mkDerivation rec { + pname = "gamemode"; + version = "1.6.1"; + + src = fetchFromGitHub { + owner = "FeralInteractive"; + repo = pname; + rev = version; + sha256 = "sha256-P00OnZiPZyxBu9zuG+3JNorXHBhJZy+cKPjX+duZrJ0="; + }; + + outputs = [ "out" "dev" "lib" "man" "static" ]; + + patches = [ + # Run executables from PATH instead of /usr/bin + # See https://github.com/FeralInteractive/gamemode/pull/323 + (fetchpatch { + url = "https://github.com/FeralInteractive/gamemode/commit/be44b7091baa33be6dda60392e4c06c2f398ee72.patch"; + sha256 = "TlDUETs4+N3pvrVd0FQGlGmC+6ByhJ2E7gKXa7suBtE="; + }) + + # Fix loading shipped config when using a prefix other than /usr + # See https://github.com/FeralInteractive/gamemode/pull/324 + (fetchpatch { + url = "https://github.com/FeralInteractive/gamemode/commit/b29aa903ce5acc9141cfd3960c98ccb047eca872.patch"; + sha256 = "LwBzBJQ7dfm2mFVSOSPjJP+skgV5N6h77i66L1Sq+ZM="; + }) + + # Add @libraryPath@ template variable to fix loading the PRELOAD library + ./preload-nix-workaround.patch + ]; + + postPatch = '' + substituteInPlace data/gamemoderun \ + --subst-var-by libraryPath ${lib.makeLibraryPath ([ + (placeholder "lib") + ] ++ lib.optionals (stdenv.hostPlatform.system == "x86_64-linux") [ + # Support wrapping 32bit applications on a 64bit linux system + libgamemode32 + ])} + ''; + + nativeBuildInputs = [ + meson + ninja + pkg-config + ]; + + buildInputs = [ + dbus + inih + systemd + ]; + + mesonFlags = [ + # libexec is just a way to package binaries without including them + # in PATH. It doesn't make sense to install them to $lib + # (the default behaviour in the meson hook). + "--libexecdir=${placeholder "out"}/libexec" + + "-Dwith-systemd-user-unit-dir=lib/systemd/user" + ]; + + doCheck = true; + checkInputs = [ + appstream + ]; + + # Move static libraries to $static so $lib only contains dynamic libraries. + postInstall = '' + moveToOutput lib/*.a "$static" + ''; + + # Add $lib/lib to gamemoded & gamemode-simulate-game's rpath since + # they use dlopen to load libgamemode. Can't use makeWrapper since + # it would break the security wrapper in the NixOS module. + postFixup = '' + for bin in "$out/bin/gamemoded" "$out/bin/gamemode-simulate-game"; do + patchelf --set-rpath "$lib/lib:$(patchelf --print-rpath "$bin")" "$bin" + done + ''; + + meta = with lib; { + description = "Optimise Linux system performance on demand"; + homepage = "https://github.com/FeralInteractive/GameMode"; + license = licenses.bsd3; + maintainers = with maintainers; [ kira-bruneau ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/tools/games/gamemode/preload-nix-workaround.patch b/pkgs/tools/games/gamemode/preload-nix-workaround.patch new file mode 100644 index 000000000000..06989ff984ab --- /dev/null +++ b/pkgs/tools/games/gamemode/preload-nix-workaround.patch @@ -0,0 +1,12 @@ +diff --git a/data/gamemoderun b/data/gamemoderun +index 573b3e4..6f2799e 100755 +--- a/data/gamemoderun ++++ b/data/gamemoderun +@@ -5,5 +5,6 @@ GAMEMODEAUTO_NAME="libgamemodeauto.so.0" + + # ld will find the right path to load the library, including for 32-bit apps. + LD_PRELOAD="${GAMEMODEAUTO_NAME}${LD_PRELOAD:+:$LD_PRELOAD}" ++LD_LIBRARY_PATH="@libraryPath@${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + +-exec env LD_PRELOAD="${LD_PRELOAD}" $GAMEMODERUNEXEC "$@" ++exec env LD_PRELOAD="${LD_PRELOAD}" LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" $GAMEMODERUNEXEC "$@" diff --git a/pkgs/tools/misc/handlr/default.nix b/pkgs/tools/misc/handlr/default.nix index a2dfe7feafc0..e9cd89c5f2dc 100644 --- a/pkgs/tools/misc/handlr/default.nix +++ b/pkgs/tools/misc/handlr/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, rustPlatform, fetchFromGitHub, shared-mime-info, libiconv }: +{ lib, stdenv, rustPlatform, fetchFromGitHub, shared-mime-info, libiconv, installShellFiles }: rustPlatform.buildRustPackage rec { pname = "handlr"; @@ -13,13 +13,19 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "sha256-xDQV8wVlzItz0lzR1nVRPVsg7nSf/khUhevDlGgSO3g="; - nativeBuildInputs = [ shared-mime-info ]; + nativeBuildInputs = [ installShellFiles shared-mime-info ]; buildInputs = lib.optional stdenv.isDarwin libiconv; preCheck = '' export HOME=$TEMPDIR ''; + postInstall = '' + installShellCompletion \ + --zsh completions/_handlr \ + --fish completions/handlr.fish + ''; + meta = with lib; { description = "Alternative to xdg-open to manage default applications with ease"; homepage = "https://github.com/chmln/handlr"; diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix index e5b8d79eeb6d..7bf0c440a37a 100644 --- a/pkgs/tools/misc/youtube-dl/default.nix +++ b/pkgs/tools/misc/youtube-dl/default.nix @@ -18,11 +18,11 @@ buildPythonPackage rec { # The websites youtube-dl deals with are a very moving target. That means that # downloads break constantly. Because of that, updates should always be backported # to the latest stable release. - version = "2021.05.16"; + version = "2021.06.06"; src = fetchurl { url = "https://yt-dl.org/downloads/${version}/${pname}-${version}.tar.gz"; - sha256 = "1z8sdzvkxhscnzy7cnjag308glif0k8jylr11biqwzypm1f2l0fl"; + sha256 = "1hqan9h55x9gfdakw554vic68w9gpvhblchwxlw265zxp56hxjrw"; }; nativeBuildInputs = [ installShellFiles makeWrapper ]; diff --git a/pkgs/tools/security/gpg-tui/default.nix b/pkgs/tools/security/gpg-tui/default.nix index 840907e53d28..756dff04c918 100644 --- a/pkgs/tools/security/gpg-tui/default.nix +++ b/pkgs/tools/security/gpg-tui/default.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage rec { pname = "gpg-tui"; - version = "0.2.0"; + version = "0.3.0"; src = fetchFromGitHub { owner = "orhun"; repo = "gpg-tui"; rev = "v${version}"; - sha256 = "sha256-PwKfsIwGw4aUu8DF9VeuFzafp116E3jetsN4bS5YtRY="; + sha256 = "sha256-5vhFgJZY1yaYFPS2qvrYGX3xyT0PbRKW2jmR4gz12Co="; }; - cargoSha256 = "sha256-6IRjfYntKQXrrl7ix+e6PEQX1bmiAW8Kd79mczCpaUY="; + cargoSha256 = "sha256-g38L/FgqAsFh/ECZnNkJVCC/44z5VW3WK8mgIEEy7BQ="; nativeBuildInputs = [ gpgme # for gpgme-config diff --git a/pkgs/tools/text/replace/default.nix b/pkgs/tools/text/replace/default.nix index 117fb737aa06..a0873d1c8d2b 100644 --- a/pkgs/tools/text/replace/default.nix +++ b/pkgs/tools/text/replace/default.nix @@ -1,11 +1,12 @@ { lib, stdenv, fetchurl }: -stdenv.mkDerivation { - name = "replace-2.24"; +stdenv.mkDerivation rec { + pname = "replace"; + version = "2.24"; src = fetchurl { - url = "ftp://hpux.connect.org.uk/hpux/Users/replace-2.24/replace-2.24-src-11.11.tar.gz"; - sha256 = "1c2nkxx83vmlh1v3ib6r2xqh121gdb1rharwsimcb2h0xwc558dm"; + url = "http://hpux.connect.org.uk/ftp/hpux/Users/replace-${version}/replace-${version}-src-11.31.tar.gz"; + sha256 = "18hkwhaz25s6209n5mpx9hmkyznlzygqj488p2l7nvp9zrlxb9sf"; }; outputs = [ "out" "man" ]; diff --git a/pkgs/tools/wayland/wlrctl/default.nix b/pkgs/tools/wayland/wlrctl/default.nix new file mode 100644 index 000000000000..7cb54d381b0b --- /dev/null +++ b/pkgs/tools/wayland/wlrctl/default.nix @@ -0,0 +1,26 @@ +{ lib, stdenv, fetchFromSourcehut, meson, pkg-config, scdoc, ninja, libxkbcommon, wayland }: + +stdenv.mkDerivation rec { + pname = "wlrctl"; + version = "0.2.1"; + + src = fetchFromSourcehut { + owner = "~brocellous"; + repo = "wlrctl"; + rev = "v${version}"; + sha256 = "039cxc82k7x473n6d65jray90rj35qmfdmr390zy0c7ic7vn4b78"; + }; + + nativeBuildInputs = [ meson pkg-config scdoc ninja ]; + buildInputs = [ libxkbcommon wayland ]; + + NIX_CFLAGS_COMPILE = "-Wno-error=type-limits"; + + meta = with lib; { + description = "Command line utility for miscellaneous wlroots Wayland extensions"; + homepage = "https://git.sr.ht/~brocellous/wlrctl"; + license = licenses.mit; + maintainers = with maintainers; [ puffnfresh artturin ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index cd4ad8b1a7a2..89553642a2da 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -654,7 +654,6 @@ mapAliases ({ rdiff_backup = rdiff-backup; # added 2014-11-23 rdmd = dtools; # added 2017-08-19 readline80 = throw "readline-8.0 is no longer supported in nixpkgs, please use 'readline' for main supported version or 'readline81' for most recent version"; # added 2021-04-22 - retroshare = throw "retroshare was removed because it was broken"; # added 2021-05-17 rhc = throw "rhc was deprecated on 2019-04-09: abandoned by upstream."; rng_tools = rng-tools; # added 2018-10-24 robomongo = robo3t; #added 2017-09-28 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cc228495eeef..dedf8c35599a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -411,6 +411,8 @@ in ebook2cw = callPackage ../applications/radio/ebook2cw { }; + edwin = callPackage ../data/fonts/edwin { }; + etBook = callPackage ../data/fonts/et-book { }; fetchutils = callPackage ../tools/misc/fetchutils { }; @@ -856,6 +858,10 @@ in amidst = callPackage ../tools/games/amidst { }; + gamemode = callPackage ../tools/games/gamemode { + libgamemode32 = pkgsi686Linux.gamemode.lib; + }; + gfshare = callPackage ../tools/security/gfshare { }; gobgp = callPackage ../tools/networking/gobgp { }; @@ -935,7 +941,7 @@ in }; logseq = callPackage ../applications/misc/logseq { - electron = electron_11; + electron = electron_12; }; lxterminal = callPackage ../applications/terminal-emulators/lxterminal { }; @@ -2274,6 +2280,8 @@ in wlr-randr = callPackage ../tools/wayland/wlr-randr { }; + wlrctl = callPackage ../tools/wayland/wlrctl { }; + wlsunset = callPackage ../tools/wayland/wlsunset { }; wob = callPackage ../tools/wayland/wob { }; @@ -11663,7 +11671,7 @@ in ponyc = callPackage ../development/compilers/ponyc { # Upstream pony has dropped support for versions compiled with gcc. - stdenv = clangStdenv; + stdenv = llvmPackages_9.stdenv; }; pony-corral = callPackage ../development/compilers/ponyc/pony-corral.nix { }; @@ -14872,6 +14880,8 @@ in inherit fontconfig fontDirectories; }; + f2c = callPackage ../development/tools/f2c { }; + freealut = callPackage ../development/libraries/freealut { }; freeglut = callPackage ../development/libraries/freeglut { }; @@ -17178,6 +17188,8 @@ in mutest = callPackage ../development/libraries/mutest { }; + mvapich = callPackage ../development/libraries/mvapich { }; + mygpoclient = pythonPackages.mygpoclient; mygui = callPackage ../development/libraries/mygui { @@ -18610,6 +18622,8 @@ in xsimd = callPackage ../development/libraries/xsimd { }; + xtensor = callPackage ../development/libraries/xtensor { }; + xtl = callPackage ../development/libraries/xtl { }; xvidcore = callPackage ../development/libraries/xvidcore { }; @@ -26315,6 +26329,8 @@ in remotebox = callPackage ../applications/virtualization/remotebox { }; + retroshare = libsForQt5.callPackage ../applications/networking/p2p/retroshare { }; + rgp = libsForQt5.callPackage ../development/tools/rgp { }; ricochet = libsForQt5.callPackage ../applications/networking/instant-messengers/ricochet { }; @@ -28343,6 +28359,8 @@ in fava = callPackage ../applications/office/fava {}; + fheroes2 = callPackage ../games/fheroes2 {}; + fish-fillets-ng = callPackage ../games/fish-fillets-ng {}; flightgear = libsForQt5.callPackage ../games/flightgear { }; @@ -28932,12 +28950,16 @@ in toppler = callPackage ../games/toppler { }; + torus-trooper = callPackage ../games/torus-trooper { }; + trackballs = callPackage ../games/trackballs { }; tremulous = callPackage ../games/tremulous { }; tts = callPackage ../tools/audio/tts { }; + tumiki-fighters = callPackage ../games/tumiki-fighters { }; + tuxpaint = callPackage ../games/tuxpaint { }; tuxtype = callPackage ../games/tuxtype { }; @@ -30392,6 +30414,10 @@ in faustlive = callPackage ../applications/audio/faust/faustlive.nix { }; + faustPhysicalModeling = callPackage ../applications/audio/faustPhysicalModeling { }; + + faustStk = callPackage ../applications/audio/faustStk { }; + fceux = callPackage ../misc/emulators/fceux { }; flockit = callPackage ../tools/backup/flockit { }; diff --git a/pkgs/top-level/dotnet-packages.nix b/pkgs/top-level/dotnet-packages.nix index 7b25818dcef9..b26dd1b1e59d 100644 --- a/pkgs/top-level/dotnet-packages.nix +++ b/pkgs/top-level/dotnet-packages.nix @@ -81,6 +81,20 @@ let self = dotnetPackages // overrides; dotnetPackages = with self; { outputFiles = [ "*" ]; }; + FSharpData = fetchNuGet { + baseName = "FSharp.Data"; + version = "4.1.1"; + sha256 = "0ytjiQi8vQQU51JYexnC13Bi7NqVmLRzM75SOZ+hhQU="; + outputFiles = [ "lib/*" ]; + + meta = with lib; { + description = "F# Data: Library for Data Access"; + homepage = "https://fsprojects.github.io/FSharp.Data/"; + license = licenses.asl20; + maintainers = [ maintainers.ratsclub ]; + }; + }; + FSharpData225 = fetchNuGet { baseName = "FSharp.Data"; version = "2.2.5"; @@ -616,50 +630,6 @@ let self = dotnetPackages // overrides; dotnetPackages = with self; { }; }; - FSharpData = buildDotnetPackage rec { - baseName = "FSharp.Data"; - version = "2.2.3"; - - src = fetchFromGitHub { - owner = "fsharp"; - repo = baseName; - rev = version; - sha256 = "1h3v9rc8k0khp61cv5n01larqbxd3xcx3q52sw5zf9l0661vw7qr"; - }; - - buildInputs = [ fsharp ]; - - fileProvidedTypes = fetchurl { - name = "ProvidedTypes.fs"; - url = "https://raw.githubusercontent.com/fsprojects/FSharp.TypeProviders.StarterPack/877014bfa6244ac382642e113d7cd6c9bc27bc6d/src/ProvidedTypes.fs"; - sha256 = "1lb056v1xld1rfx6a8p8i2jz8i6qa2r2823n5izsf1qg1qgf2980"; - }; - - fileDebugProvidedTypes = fetchurl { - name = "DebugProvidedTypes.fs"; - url = "https://raw.githubusercontent.com/fsprojects/FSharp.TypeProviders.StarterPack/877014bfa6244ac382642e113d7cd6c9bc27bc6d/src/DebugProvidedTypes.fs"; - sha256 = "1whyrf2jv6fs7kgysn2086v15ggjsd54g1xfs398mp46m0nxp91f"; - }; - - preConfigure = '' - # Copy single-files-in-git-repos - mkdir -p "paket-files/fsprojects/FSharp.TypeProviders.StarterPack/src" - cp -v "${fileProvidedTypes}" "paket-files/fsprojects/FSharp.TypeProviders.StarterPack/src/ProvidedTypes.fs" - cp -v "${fileDebugProvidedTypes}" "paket-files/fsprojects/FSharp.TypeProviders.StarterPack/src/DebugProvidedTypes.fs" - ''; - - xBuildFiles = [ "src/FSharp.Data.fsproj" "src/FSharp.Data.DesignTime.fsproj" ]; - outputFiles = [ "bin/*.dll" "bin/*.xml" ]; - - meta = { - description = "F# Data: Library for Data Access"; - homepage = "https://fsharp.github.io/FSharp.Data/"; - license = lib.licenses.asl20; - maintainers = with lib.maintainers; [ obadz ]; - platforms = with lib.platforms; linux; - }; - }; - # FSharpxExtras = buildDotnetPackage rec { # baseName = "FSharpx.Extras"; # version = "1.8.41"; @@ -977,4 +947,18 @@ let self = dotnetPackages // overrides; dotnetPackages = with self; { }; }; + YamlDotNet = fetchNuGet { + baseName = "YamlDotNet"; + version = "11.1.1"; + sha256 = "rwZ/QyDVrN3wGrEYKY3QY5Xqo2Tp3FkR6dh4QrC+QS0="; + outputFiles = [ "lib/*" ]; + + meta = with lib; { + description = "YamlDotNet is a .NET library for YAML"; + homepage = "https://github.com/aaubry/YamlDotNet"; + license = licenses.mit; + maintainers = [ maintainers.ratsclub ]; + }; + }; + }; in self diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 14a30b3756b0..35935450e2a9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -223,6 +223,10 @@ in { agent-py = callPackage ../development/python-modules/agent-py { }; + aio-georss-client = callPackage ../development/python-modules/aio-georss-client { }; + + aio-georss-gdacs = callPackage ../development/python-modules/aio-georss-gdacs { }; + aioambient = callPackage ../development/python-modules/aioambient { }; ailment = callPackage ../development/python-modules/ailment { }; @@ -2742,6 +2746,22 @@ in { geopy = callPackage ../development/python-modules/geopy { }; + georss-client = callPackage ../development/python-modules/georss-client { }; + + georss-generic-client = callPackage ../development/python-modules/georss-generic-client { }; + + georss-ign-sismologia-client = callPackage ../development/python-modules/georss-ign-sismologia-client { }; + + georss-ingv-centro-nazionale-terremoti-client = callPackage ../development/python-modules/georss-ingv-centro-nazionale-terremoti-client { }; + + georss-nrcan-earthquakes-client = callPackage ../development/python-modules/georss-nrcan-earthquakes-client { }; + + georss-qld-bushfire-alert-client = callPackage ../development/python-modules/georss-qld-bushfire-alert-client { }; + + georss-tfs-incidents-client = callPackage ../development/python-modules/georss-tfs-incidents-client { }; + + georss-wa-dfes-client = callPackage ../development/python-modules/georss-wa-dfes-client { }; + getmac = callPackage ../development/python-modules/getmac { }; getkey = callPackage ../development/python-modules/getkey { }; @@ -7894,6 +7914,8 @@ in { sphinxcontrib-devhelp = callPackage ../development/python-modules/sphinxcontrib-devhelp { }; + sphinxcontrib-excel-table = callPackage ../development/python-modules/sphinxcontrib-excel-table { }; + sphinxcontrib-fulltoc = callPackage ../development/python-modules/sphinxcontrib-fulltoc { }; sphinxcontrib-htmlhelp = callPackage ../development/python-modules/sphinxcontrib-htmlhelp { }; @@ -8076,6 +8098,8 @@ in { subdownloader = callPackage ../development/python-modules/subdownloader { }; + subliminal = callPackage ../development/python-modules/subliminal { }; + subunit = callPackage ../development/python-modules/subunit { inherit (pkgs) subunit cppunit check; };