summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/installer/tools/nix-fallback-paths.nix8
-rw-r--r--pkgs/data/fonts/inconsolata-nerdfont/default.nix28
-rw-r--r--pkgs/data/fonts/nerdfonts/default.nix69
-rw-r--r--pkgs/data/fonts/nerdfonts/shas.nix49
-rwxr-xr-xpkgs/data/fonts/nerdfonts/update.sh73
-rw-r--r--pkgs/data/fonts/nerdfonts/version.nix1
-rw-r--r--pkgs/data/fonts/terminus-nerdfont/default.nix28
-rw-r--r--pkgs/development/python-modules/casttube/default.nix6
-rw-r--r--pkgs/development/tools/doctl/default.nix53
-rw-r--r--pkgs/development/tools/rust/maturin/Cargo.lock.patch13
-rw-r--r--pkgs/development/tools/rust/maturin/default.nix11
-rw-r--r--pkgs/games/alephone/default.nix8
-rw-r--r--pkgs/misc/emulators/citra/default.nix10
-rw-r--r--pkgs/servers/home-assistant/0001-setup.py-relax-dependencies.patch46
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix19
-rw-r--r--pkgs/servers/home-assistant/default.nix19
-rw-r--r--pkgs/servers/home-assistant/frontend.nix4
-rwxr-xr-xpkgs/servers/home-assistant/parse-requirements.py5
-rw-r--r--pkgs/servers/home-assistant/relax-deps.patch13
-rw-r--r--pkgs/shells/xonsh/default.nix4
-rw-r--r--pkgs/tools/package-management/nix/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix8
22 files changed, 323 insertions, 156 deletions
diff --git a/nixos/modules/installer/tools/nix-fallback-paths.nix b/nixos/modules/installer/tools/nix-fallback-paths.nix
index 2068f27f1c9..9038bfbe3bd 100644
--- a/nixos/modules/installer/tools/nix-fallback-paths.nix
+++ b/nixos/modules/installer/tools/nix-fallback-paths.nix
@@ -1,6 +1,6 @@
 {
-  x86_64-linux = "/nix/store/ddmmzn4ggz1f66lwxjy64n89864yj9w9-nix-2.3.3";
-  i686-linux = "/nix/store/5axys7hsggb4282dsbps5k5p0v59yv13-nix-2.3.3";
-  aarch64-linux = "/nix/store/k80nwvi19hxwbz3c9cxgp24f1jjxwmcc-nix-2.3.3";
-  x86_64-darwin = "/nix/store/lrnvapsqmf0ja6zfyx4cpxr7ahdr7f9b-nix-2.3.3";
+  x86_64-linux = "/nix/store/3swr40kk8ll7pi9dd7b4npr25hyn5qhv-nix-2.3.4-debug";
+  i686-linux = "/nix/store/b5cx3nmba9ahx3wk5ybxa67k40pdpdxn-nix-2.3.4";
+  aarch64-linux = "/nix/store/lz9s7vi1kvgqzvrcjwwdszx8an61n266-nix-2.3.4-debug";
+  x86_64-darwin = "/nix/store/aizhr07dljmlbf17wfrj40x3s0b5iv3d-nix-2.3.4";
 }
diff --git a/pkgs/data/fonts/inconsolata-nerdfont/default.nix b/pkgs/data/fonts/inconsolata-nerdfont/default.nix
deleted file mode 100644
index b4356e73d5c..00000000000
--- a/pkgs/data/fonts/inconsolata-nerdfont/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, fetchzip }:
-
-let
-  version = "2.0.0";
-in fetchzip {
-  name = "inconsolata-nerdfont-${version}";
-
-  url = "https://github.com/ryanoasis/nerd-fonts/releases/download/v${version}/Inconsolata.zip";
-
-  postFetch = ''
-    mkdir -p $out/share/fonts/inconsolata-nerdfont
-    unzip -j $downloadedFile -d $out/share/fonts/inconsolata-nerdfont
-  '';
-
-  sha256 = "06i1akjblqd038cn5lvz67lwp6afpv31vqcfdihp66qisgbgm4w9";
-
-  meta = with lib; {
-    description = ''
-      Nerd Fonts is a project that attempts to patch as many developer targeted
-      and/or used fonts as possible. The patch is to specifically add a high
-      number of additional glyphs from popular 'iconic fonts' such as Font
-      Awesome, Devicons, Octicons, and others.
-    '';
-    homepage = https://github.com/ryanoasis/nerd-fonts;
-    license = licenses.mit;
-    platforms = platforms.all;
-  };
-}
diff --git a/pkgs/data/fonts/nerdfonts/default.nix b/pkgs/data/fonts/nerdfonts/default.nix
index 8ffd0e3e43f..35f43c14df4 100644
--- a/pkgs/data/fonts/nerdfonts/default.nix
+++ b/pkgs/data/fonts/nerdfonts/default.nix
@@ -1,35 +1,68 @@
-{ stdenv, fetchFromGitHub, which, withFont ? "" }:
+{ stdenv
+, fetchurl
+, lib
+, unzip
+# To select only certain fonts, put a list of strings to `fonts`: every key in
+# ./shas.nix is an optional font
+, fonts ? []
+}:
+
+let
+  # both of these files are generated via ./update.sh
+  version = import ./version.nix;
+  fontsShas = import ./shas.nix;
+  knownFonts = builtins.attrNames fontsShas;
+  selectedFonts = if (fonts == []) then
+    knownFonts
+  else
+    let unknown = lib.subtractLists knownFonts fonts; in
+    if (unknown != []) then
+      throw "Unknown font(s): ${lib.concatStringsSep " " unknown}"
+    else
+      fonts
+  ;
+  selectedFontsShas = lib.attrsets.genAttrs selectedFonts (
+    fName:
+    fontsShas."${fName}"
+  );
+  srcs = lib.attrsets.mapAttrsToList (
+    fName:
+    fSha:
+    (fetchurl {
+      url = "https://github.com/ryanoasis/nerd-fonts/releases/download/v${version}/${fName}.zip";
+      sha256 = fSha;
+    })
+  ) selectedFontsShas;
+in
 
 stdenv.mkDerivation rec {
-  version = "2.1.0";
+  inherit version;
+  inherit srcs;
   pname = "nerdfonts";
-  src = fetchFromGitHub {
-    owner = "ryanoasis";
-    repo = "nerd-fonts";
-    rev = version;
-    sha256 = "1la79y16k9rwcl2zsxk73c0kgdms2ma43kpjfqnq5jlbfdj0niwg";
-  };
-  dontPatchShebangs = true;
-  buildInputs = [ which ];
-  patchPhase = ''
-    patchShebangs install.sh
-    sed -i -e 's|font_dir="\$HOME/.local/share/fonts|font_dir="$out/share/fonts/truetype|g' install.sh
+  nativeBuildInputs = [
+    unzip
+  ];
+  sourceRoot = ".";
+  buildPhase = ''
+    echo "selected fonts are ${toString selectedFonts}"
+    ls *.otf *.ttf
   '';
   installPhase = ''
-    mkdir -p $out/share/fonts/truetype
-    ./install.sh ${withFont}
+    find -name \*.otf -exec mkdir -p $out/share/fonts/opentype/NerdFonts \; -exec mv {} $out/share/fonts/opentype/NerdFonts \;
+    find -name \*.ttf -exec mkdir -p $out/share/fonts/truetype/NerdFonts \; -exec mv {} $out/share/fonts/truetype/NerdFonts \;
   '';
 
   meta = with stdenv.lib; {
-    description = ''
+    description = "Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts";
+    longDescription = ''
       Nerd Fonts is a project that attempts to patch as many developer targeted
       and/or used fonts as possible. The patch is to specifically add a high
       number of additional glyphs from popular 'iconic fonts' such as Font
       Awesome, Devicons, Octicons, and others.
     '';
-    homepage = https://github.com/ryanoasis/nerd-fonts;
+    homepage = "https://nerdfonts.com/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ doronbehar ];
     hydraPlatforms = []; # 'Output limit exceeded' on Hydra
   };
 }
diff --git a/pkgs/data/fonts/nerdfonts/shas.nix b/pkgs/data/fonts/nerdfonts/shas.nix
new file mode 100644
index 00000000000..3436042f5f6
--- /dev/null
+++ b/pkgs/data/fonts/nerdfonts/shas.nix
@@ -0,0 +1,49 @@
+{
+	"3270" = "1k71zsijasn6013c58pgf52xw3h9gkqdjlsa177wlldz8qxb16xk";
+	"Agave" = "0jgm31wvmckb71qc9l0nj3sg4zq2vw67piaxr6h8zkakcl2mysha";
+	"AnonymousPro" = "0s3n8rrr9kfqd8gxjxksp7p8bc3q7qhcrpyq8090dksvmbcks6xm";
+	"Arimo" = "1k7ldfx6dmy9sigzsvi9qwms510nddw634g8xrn0vwnw6d7infk8";
+	"AurulentSansMono" = "0q35948dai8qc7gfvas8sfn5s7b64b2y4f9psz6xslrv7nw8lcaz";
+	"BigBlueTerminal" = "0ymw2m2xjsx77brm79aws26icwcf2a1d7q3p3ipsd25g4cgqcd2v";
+	"BitstreamVeraSansMono" = "1n2298g1fn8jb1fbvw74289n7nnmjddn7zxh88gnl58pwz8ra5dk";
+	"CascadiaCode" = "1q4l5a7b7ab6h1bs5pq734r9pp3fw9b59gdk1g4hyn2w61h0kdcj";
+	"CodeNewRoman" = "1mgxawj3pblaxy0y9w0hzlfgipiskmc5p028m82zh1wyaplmh2pa";
+	"Cousine" = "0jr0gxrsba3dhchp53vd67qq2pgfnvmvcwbv99l1700p539bcvy1";
+	"DaddyTimeMono" = "1n6vwykz084fxgylayizxc210f4ms2ijfws5b2hvl2kqmy2q6jk4";
+	"DejaVuSansMono" = "03qfrkzmhnn8dwgx4qhiigbz4dxs3957hydlr0j8vxl89j8c9g1z";
+	"DroidSansMono" = "187cbcn4a2whrl8dag1ix6j1v3jgv5z2jdfw1w1z9llm1znvpp7z";
+	"FantasqueSansMono" = "147h15k3ni0w6chxkrah2fk4klhdhq8y1d3nbx763h9ia3mnggv6";
+	"FiraCode" = "1rx7zrkq0584k6hrh6dx30xrnz5nq379xyw73pfd4gxaxnh9mpi1";
+	"FiraMono" = "0f2daidakhmbbd5ph6985rghjmr87k7xzmmmf9n851dxvfyndsgl";
+	"Go-Mono" = "1bzh3pgyn87j27kw7x5h02rqzhh21pm6d0zhxd5iqi5qq5mj0nvm";
+	"Gohu" = "1rlkprjg9nz1s69s4ancmxii6l907qachl116gngbj8gjv3g1x21";
+	"Hack" = "052mav170lwxkgzg3hij4zvnmfwyrddn45gn07a33gpzzicjx1bh";
+	"Hasklig" = "0vyb0z0m04pn8477d6a711vjwb3nhvpn5fxfwnz37av9jmz3i9vk";
+	"HeavyData" = "065rhq7z52dp211inw3vszwc5zrd5s0w1kmgnrh68bxc0js0xqyb";
+	"Hermit" = "1ij9pjr517jxk3dlsrzmnqivsfq5i5ai6pd8hznmrkb3360cn7sm";
+	"iA-Writer" = "0clksrxw6xcv5c1pbd8rl2rc3r15iak1qv8v6bn0j2mccjcss64z";
+	"IBMPlexMono" = "0xkfkpnkkrvjfiv624l7lpmfji107y7645w6ah47ijyg47yxkmsg";
+	"Inconsolata" = "14gbwc0k3d1j496w6pv9kry1pglswzd0armsdb0g1mqgzfdf1ci1";
+	"Iosevka" = "1qqd4xh98vxb99rh2a2qv9gjclilhaw84pyqdpbx225qhvw9xlkb";
+	"JetBrainsMono" = "1kc8fyk1aczxkmn8dzv1gy6xfi2jywgahd8np576v2dn8kx16844";
+	"Lekton" = "0mny5j9bns9104wg2wmabdw0sl80c7i3dzp4j5mxh8jybx929d3i";
+	"LiberationMono" = "19bpm893assmmnfvlvhz8df54c9pr2kfv2b6anlr4g64hliy1c1h";
+	"Meslo" = "08zm8nqskhrqkw80wl460zbvsrvs5fp2njlcv867phpqna9hyqzh";
+	"Monofur" = "0f5khqgdxi4g0qm5n48r1sk4pd2wlk987d8yxwks2mcsqa6fraqj";
+	"Monoid" = "0m7i82jfiwqmi9lhv8lmq2n723ihn0isxi5559478qbdy5b104dd";
+	"Mononoki" = "074avnvfl260pcrli4h5bc55yqr4mgd54paf80qcnh101qsz325w";
+	"MPlus" = "03mrfhzfmmqjfl7fa81v1ih3fdr3q2k439w6pjbd2zvl806l92yq";
+	"Noto" = "1jmycnf4fflijs730vbyj258kajkxv0j42655a7hvpapym7z940z";
+	"OpenDyslexic" = "0ma62xg6cy8l4chfhqvm64zzhx3mrzdj6gxwnvx8plqy3j4dn3by";
+	"Overpass" = "1xs2z3ch7dd32zb5l1axzd78hyskimqglcjcrb7n4ic85qm55xxm";
+	"ProFont" = "0ck4rprj0w29pv3qm4n1zg6cdq76m3kaag0ka4q1qqcnhga67zr7";
+	"ProggyClean" = "0sk3gk6zj61nbv94xv6z8y67sr5blg9n079d8srv7bbw9dv96i8g";
+	"RobotoMono" = "1nhbr9zc0cz81pdj95rrb56bwdkmmbqmk429nf60j35pkcqmvk8x";
+	"ShareTechMono" = "1h79myy0my3jyrvqcrgfdsjqrwwm5fdy2nmzp3ynyi769p7z1dwr";
+	"SourceCodePro" = "06cnsdmm84kzjlwwcmhwpj7pyfqinqpmww1c13i21l611fg6hwd7";
+	"SpaceMono" = "1xmmf2gdsa3ycl3pgpr3zr919qh702wjvc5k4hsdivvs2lzfdgmk";
+	"Terminus" = "0g2ybs225fwxmvwfnanc32jc2lfnag3agmliv1vrb5mxyqzm53gj";
+	"Tinos" = "077n4k6yh4qbirfkl02zqn3057kymspr10zcbfkf4ldvifa36pjd";
+	"Ubuntu" = "1lzdrgb8vk5dwicxhvkgbain5phf88g3zgv5ya2ihh052xsl3qih";
+	"VictorMono" = "18z92kwggfqwrd5m09yda55hcb4b159278lps6f9hr8icwki6v9q";
+}
diff --git a/pkgs/data/fonts/nerdfonts/update.sh b/pkgs/data/fonts/nerdfonts/update.sh
new file mode 100755
index 00000000000..e3d0c27933e
--- /dev/null
+++ b/pkgs/data/fonts/nerdfonts/update.sh
@@ -0,0 +1,73 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p rsstail nix-prefetch
+
+# NOTE: Before running this script, please make sure this list is up-to-date -
+# meaning there are no new fonts they provide at https://github.com/ryanoasis/nerd-fonts/releases/
+fonts=(
+	"3270"
+	Agave
+	AnonymousPro
+	Arimo
+	AurulentSansMono
+	BigBlueTerminal
+	BitstreamVeraSansMono
+	CascadiaCode
+	CodeNewRoman
+	Cousine
+	DaddyTimeMono
+	DejaVuSansMono
+	DroidSansMono
+	FantasqueSansMono
+	FiraCode
+	FiraMono
+	Go-Mono
+	Gohu
+	Hack
+	Hasklig
+	HeavyData
+	Hermit
+	iA-Writer
+	IBMPlexMono
+	Inconsolata
+	Iosevka
+	JetBrainsMono
+	Lekton
+	LiberationMono
+	Meslo
+	Monofur
+	Monoid
+	Mononoki
+	MPlus
+	Noto
+	OpenDyslexic
+	Overpass
+	ProFont
+	ProggyClean
+	RobotoMono
+	ShareTechMono
+	SourceCodePro
+	SpaceMono
+	Terminus
+	Tinos
+	Ubuntu
+	VictorMono
+)
+
+releases_url="https://github.com/ryanoasis/nerd-fonts/releases.atom"
+
+version="$(rsstail -1 -u "$releases_url" -H -l -r | sed -e '/^Title: /d' -e 's:.*/::' -e 's/^v//g' | sort -V | tail -1)"
+
+echo Using version "$version"
+
+dirname="$(dirname "$0")"
+echo \""$version"\" > "$dirname/version.nix"
+
+base_url="https://github.com/ryanoasis/nerd-fonts/releases/download/v${version}"
+
+printf '{\n' > "$dirname/shas.nix"
+
+for font in "${fonts[@]}"; do
+	printf '\t"%s" = "%s";\n' "$font" "$(nix-prefetch-url "${base_url}/${font}.zip")" >> "$dirname/shas.nix"
+done
+
+printf '}\n' >> "$dirname/shas.nix"
diff --git a/pkgs/data/fonts/nerdfonts/version.nix b/pkgs/data/fonts/nerdfonts/version.nix
new file mode 100644
index 00000000000..8320adbf025
--- /dev/null
+++ b/pkgs/data/fonts/nerdfonts/version.nix
@@ -0,0 +1 @@
+"2.1.0"
diff --git a/pkgs/data/fonts/terminus-nerdfont/default.nix b/pkgs/data/fonts/terminus-nerdfont/default.nix
deleted file mode 100644
index 3c1730146b3..00000000000
--- a/pkgs/data/fonts/terminus-nerdfont/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, fetchzip }:
-
-let
-  version = "2.0.0";
-in fetchzip {
-  name = "terminus-nerdfont-${version}";
-
-  url = "https://github.com/ryanoasis/nerd-fonts/releases/download/v${version}/Terminus.zip";
-
-  postFetch = ''
-    mkdir -p $out/share/fonts/terminus-nerdfont
-    unzip -j $downloadedFile -d $out/share/fonts/terminus-nerdfont
-  '';
-
-  sha256 = "036i1qwwrb0r8hvcjf3h34w0g7mbsmngvrjic98jgikbz3i2f46c";
-
-  meta = with lib; {
-    description = ''
-      Nerd Fonts is a project that attempts to patch as many developer targeted
-      and/or used fonts as possible. The patch is to specifically add a high
-      number of additional glyphs from popular 'iconic fonts' such as Font
-      Awesome, Devicons, Octicons, and others.
-    '';
-    homepage = https://github.com/ryanoasis/nerd-fonts;
-    license = licenses.mit;
-    platforms = platforms.all;
-  };
-}
diff --git a/pkgs/development/python-modules/casttube/default.nix b/pkgs/development/python-modules/casttube/default.nix
index 5d3b80aeb16..ff8e5614ceb 100644
--- a/pkgs/development/python-modules/casttube/default.nix
+++ b/pkgs/development/python-modules/casttube/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "casttube";
-  version = "0.2.0";
+  version = "0.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0g7mksfl341vfsxqvw8h15ci2qwd1rczg41n4fb2hw7y9rikqnzj";
+    sha256 = "10pw2sjy648pvp42lbbdmkkx79bqlkq1xcbzp1frraj9g66azljl";
   };
 
   propagatedBuildInputs = [ requests ];
@@ -16,7 +16,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Interact with the Youtube Chromecast api";
-    homepage = https://github.com/ur1katz/casttube;
+    homepage = "https://github.com/ur1katz/casttube";
     license = licenses.mit;
     maintainers = with maintainers; [ fpletz ];
   };
diff --git a/pkgs/development/tools/doctl/default.nix b/pkgs/development/tools/doctl/default.nix
index 2aead3940ad..f84167afca8 100644
--- a/pkgs/development/tools/doctl/default.nix
+++ b/pkgs/development/tools/doctl/default.nix
@@ -1,34 +1,43 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoPackage, fetchFromGitHub, installShellFiles }:
 
 buildGoPackage rec {
   pname = "doctl";
-  version = "${major}.${minor}.${patch}";
-  major = "1";
-  minor = "35";
-  patch = "0";
+  version = "1.40.0";
+
   goPackagePath = "github.com/digitalocean/doctl";
 
-  excludedPackages = ''\(doctl-gen-doc\|install-doctl\|release-doctl\)'';
-  buildFlagsArray = let t = goPackagePath; in ''
-     -ldflags=
-        -X ${t}.Major=${major}
-        -X ${t}.Minor=${minor}
-        -X ${t}.Patch=${patch}
-        -X ${t}.Label=release
-   '';
+  subPackages = [ "cmd/doctl" ];
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X ${goPackagePath}.Major=${lib.versions.major version}
+    -X ${goPackagePath}.Minor=${lib.versions.minor version}
+    -X ${goPackagePath}.Patch=${lib.versions.patch version}
+    -X ${goPackagePath}.Label=release
+  '';
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall = ''
+    export HOME=$(mktemp -d) # attempts to write to /homeless-shelter
+    for shell in bash fish zsh; do
+      $bin/bin/doctl completion $shell > doctl.$shell
+      installShellCompletion doctl.$shell
+    done
+  '';
 
   src = fetchFromGitHub {
-    owner  = "digitalocean";
-    repo   = "doctl";
-    rev    = "v${version}";
-    sha256 = "1blg4xd01vvr8smpii60jlk7rg1cg64115azixw9q022f7cnfiyw";
+    owner = "digitalocean";
+    repo = "doctl";
+    rev = "v${version}";
+    sha256 = "1x8rr3707mmbfnjn3ck0953xkkrfq5r8zflbxpkqlfz9k978z835";
   };
 
-  meta = {
+  meta = with lib; {
     description = "A command line tool for DigitalOcean services";
-    homepage = https://github.com/digitalocean/doctl;
-    license = stdenv.lib.licenses.asl20;
-    platforms = stdenv.lib.platforms.all;
-    maintainers = [ stdenv.lib.maintainers.siddharthist ];
+    homepage = "https://github.com/digitalocean/doctl";
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = [ maintainers.siddharthist ];
   };
 }
diff --git a/pkgs/development/tools/rust/maturin/Cargo.lock.patch b/pkgs/development/tools/rust/maturin/Cargo.lock.patch
new file mode 100644
index 00000000000..9f7d46d4901
--- /dev/null
+++ b/pkgs/development/tools/rust/maturin/Cargo.lock.patch
@@ -0,0 +1,13 @@
+diff --git a/Cargo.lock b/Cargo.lock
+index 09ecb81..c37c646 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -733,7 +733,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
+ 
+ [[package]]
+ name = "maturin"
+-version = "0.8.0-beta.1"
++version = "0.8.0"
+ dependencies = [
+  "base64 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
+  "bytesize 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/pkgs/development/tools/rust/maturin/default.nix b/pkgs/development/tools/rust/maturin/default.nix
index 70c424ee008..30c74447109 100644
--- a/pkgs/development/tools/rust/maturin/default.nix
+++ b/pkgs/development/tools/rust/maturin/default.nix
@@ -5,16 +5,21 @@ let
   inherit (darwin.apple_sdk.frameworks) Security;
 in rustPlatform.buildRustPackage rec {
   name = "maturin-${version}";
-  version = "0.7.9";
+  version = "0.8.0";
 
   src = fetchFromGitHub {
     owner = "PyO3";
     repo = "maturin";
     rev = "v${version}";
-    sha256 = "1l8i1mz97zsc8kayvryv6xznwpby9k9jxy7lsx45acs5yksqchrv";
+    sha256 = "1fjai0c0j8zzaj4c186dkbvx6cpj0vi3sc1qbjbgn2cm8azsd6m6";
   };
 
-  cargoSha256 = "0ly0f64acn1hxnj7vg1m860xpl06rklwqh545c386nnxaj839b0r";
+  # The maturin 0.8.0 lockfile has an incorrect version for maturin
+  # itself. The upstream lockfiles are normally correct, so this
+  # should be removed post-0.8.0.
+  cargoPatches = [ ./Cargo.lock.patch ];
+
+  cargoSha256 = "01sh523fi46k5xwdslhnmjz128jkdw47gp9bd8gim3ay13zkcn1i";
 
   nativeBuildInputs = [ pkgconfig ];
 
diff --git a/pkgs/games/alephone/default.nix b/pkgs/games/alephone/default.nix
index d45bb984547..879571df7a1 100644
--- a/pkgs/games/alephone/default.nix
+++ b/pkgs/games/alephone/default.nix
@@ -90,7 +90,9 @@ in self // {
           --add-flags $out/data/$pname
       '';
 
-    } // extraArgs) // {
-      meta = alephone.meta // meta;
-    };
+      meta = alephone.meta // {
+        license = stdenv.lib.licenses.free;
+        hydraPlatforms = [ ];
+      } // meta;
+    });
 }
diff --git a/pkgs/misc/emulators/citra/default.nix b/pkgs/misc/emulators/citra/default.nix
index ca6ad37b5aa..efe4770a7b0 100644
--- a/pkgs/misc/emulators/citra/default.nix
+++ b/pkgs/misc/emulators/citra/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchgit, cmake, SDL2, qtbase, qtmultimedia, boost }:
+{ stdenv, mkDerivation, lib, fetchgit, cmake, SDL2, qtbase, qtmultimedia, boost }:
 
-stdenv.mkDerivation {
+mkDerivation {
   pname = "citra";
-  version = "2019-10-05";
+  version = "2020-03-21";
 
   # Submodules
   src = fetchgit {
     url = "https://github.com/citra-emu/citra";
-    rev = "35690e3ac7a340d941d3bf56080cf5aa6187c5c3";
-    sha256 = "11a4mdjabn3qrh0nn4pjl5fxs9nhf1k27wd486csfx88q2q9jvq8";
+    rev = "8722b970c52f2c0d8e82561477edb62a53ae9dbb";
+    sha256 = "0c1zn1f84h4f6n6p0aqz905yvv5qpdmkj2z58yla6bfgbzabfyrj";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/servers/home-assistant/0001-setup.py-relax-dependencies.patch b/pkgs/servers/home-assistant/0001-setup.py-relax-dependencies.patch
new file mode 100644
index 00000000000..52d2daf80b0
--- /dev/null
+++ b/pkgs/servers/home-assistant/0001-setup.py-relax-dependencies.patch
@@ -0,0 +1,46 @@
+From 80f39643bb4d25f8ffcbd92804844961b303f4d0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io>
+Date: Thu, 9 Apr 2020 07:20:46 +0100
+Subject: [PATCH] setup.py: relax dependencies
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Jörg Thalheim <joerg@thalheim.io>
+---
+ setup.py | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index f53af0ee1..ff4227487 100755
+--- a/setup.py
++++ b/setup.py
+@@ -32,10 +32,10 @@ PROJECT_URLS = {
+ PACKAGES = find_packages(exclude=["tests", "tests.*"])
+ 
+ REQUIRES = [
+-    "aiohttp==3.6.1",
++    "aiohttp>=3.6.1",
+     "astral==1.10.1",
+     "async_timeout==3.0.1",
+-    "attrs==19.3.0",
++    "attrs>=19.3.0",
+     "bcrypt==3.1.7",
+     "certifi>=2019.11.28",
+     "ciso8601==2.1.3",
+@@ -47,9 +47,9 @@ REQUIRES = [
+     "pip>=8.0.3",
+     "python-slugify==4.0.0",
+     "pytz>=2019.03",
+-    "pyyaml==5.3.1",
+-    "requests==2.23.0",
+-    "ruamel.yaml==0.15.100",
++    "pyyaml>=5.2",
++    "requests>=2.22",
++    "ruamel.yaml>=0.15.100",
+     "voluptuous==0.11.7",
+     "voluptuous-serialize==2.3.0",
+ ]
+-- 
+2.25.1
+
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index 8cf5f5a3755..906ba777a6b 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -2,7 +2,7 @@
 # Do not edit!
 
 {
-  version = "0.107.7";
+  version = "0.108.2";
   components = {
     "abode" = ps: with ps; [ ]; # missing inputs: abodepy
     "acer_projector" = ps: with ps; [ pyserial];
@@ -16,7 +16,6 @@
     "aladdin_connect" = ps: with ps; [ ]; # missing inputs: aladdin_connect
     "alarm_control_panel" = ps: with ps; [ ];
     "alarmdecoder" = ps: with ps; [ alarmdecoder];
-    "alarmdotcom" = ps: with ps; [ ]; # missing inputs: pyalarmdotcom
     "alert" = ps: with ps; [ ];
     "alexa" = ps: with ps; [ aiohttp-cors];
     "almond" = ps: with ps; [ aiohttp-cors]; # missing inputs: pyalmond
@@ -84,6 +83,7 @@
     "bluetooth_tracker" = ps: with ps; [ bt_proximity]; # missing inputs: pybluez
     "bme280" = ps: with ps; [ ]; # missing inputs: i2csense smbus-cffi
     "bme680" = ps: with ps; [ ]; # missing inputs: bme680 smbus-cffi
+    "bmp280" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-bmp280
     "bmw_connected_drive" = ps: with ps; [ ]; # missing inputs: bimmer_connected
     "bom" = ps: with ps; [ ]; # missing inputs: bomradarloop
     "braviatv" = ps: with ps; [ bravia-tv getmac];
@@ -156,7 +156,7 @@
     "dialogflow" = ps: with ps; [ aiohttp-cors];
     "digital_ocean" = ps: with ps; [ digital-ocean];
     "digitalloggers" = ps: with ps; [ ]; # missing inputs: dlipower
-    "directv" = ps: with ps; [ ]; # missing inputs: directpy
+    "directv" = ps: with ps; [ ]; # missing inputs: directv
     "discogs" = ps: with ps; [ discogs_client];
     "discord" = ps: with ps; [ discordpy];
     "discovery" = ps: with ps; [ netdisco];
@@ -372,6 +372,7 @@
     "iota" = ps: with ps; [ ]; # missing inputs: pyota
     "iperf3" = ps: with ps; [ ]; # missing inputs: iperf3
     "ipma" = ps: with ps; [ ]; # missing inputs: pyipma
+    "ipp" = ps: with ps; [ ]; # missing inputs: pyipp
     "iqvia" = ps: with ps; [ numpy]; # missing inputs: pyiqvia
     "irish_rail_transport" = ps: with ps; [ ]; # missing inputs: pyirishrail
     "islamic_prayer_times" = ps: with ps; [ ]; # missing inputs: prayer_times_calculator
@@ -431,7 +432,7 @@
     "london_underground" = ps: with ps; [ ]; # missing inputs: london-tube-status
     "loopenergy" = ps: with ps; [ ]; # missing inputs: pyloopenergy
     "lovelace" = ps: with ps; [ ];
-    "luci" = ps: with ps; [ ]; # missing inputs: openwrt-luci-rpc
+    "luci" = ps: with ps; [ openwrt-luci-rpc];
     "luftdaten" = ps: with ps; [ luftdaten];
     "lupusec" = ps: with ps; [ ]; # missing inputs: lupupy
     "lutron" = ps: with ps; [ ]; # missing inputs: pylutron
@@ -470,7 +471,7 @@
     "mikrotik" = ps: with ps; [ ]; # missing inputs: librouteros
     "mill" = ps: with ps; [ ]; # missing inputs: millheater
     "min_max" = ps: with ps; [ ];
-    "minecraft_server" = ps: with ps; [ getmac]; # missing inputs: mcstatus
+    "minecraft_server" = ps: with ps; [ aiodns getmac]; # missing inputs: mcstatus
     "minio" = ps: with ps; [ minio];
     "mitemp_bt" = ps: with ps; [ ]; # missing inputs: mitemp_bt
     "mjpeg" = ps: with ps; [ ];
@@ -481,7 +482,6 @@
     "mold_indicator" = ps: with ps; [ ];
     "monoprice" = ps: with ps; [ ]; # missing inputs: pymonoprice
     "moon" = ps: with ps; [ ];
-    "mopar" = ps: with ps; [ ]; # missing inputs: motorparts
     "mpchc" = ps: with ps; [ ];
     "mpd" = ps: with ps; [ mpd2];
     "mqtt" = ps: with ps; [ aiohttp-cors hbmqtt paho-mqtt];
@@ -512,7 +512,9 @@
     "netgear_lte" = ps: with ps; [ ]; # missing inputs: eternalegypt
     "netio" = ps: with ps; [ aiohttp-cors]; # missing inputs: pynetio
     "neurio_energy" = ps: with ps; [ ]; # missing inputs: neurio
+    "nexia" = ps: with ps; [ ]; # missing inputs: nexia
     "nextbus" = ps: with ps; [ ]; # missing inputs: py_nextbusnext
+    "nextcloud" = ps: with ps; [ ]; # missing inputs: nextcloudmonitor
     "nfandroidtv" = ps: with ps; [ ];
     "niko_home_control" = ps: with ps; [ ]; # missing inputs: niko-home-control
     "nilu" = ps: with ps; [ ]; # missing inputs: niluclient
@@ -588,6 +590,7 @@
     "plum_lightpad" = ps: with ps; [ ]; # missing inputs: plumlightpad
     "pocketcasts" = ps: with ps; [ ]; # missing inputs: pocketcasts
     "point" = ps: with ps; [ aiohttp-cors]; # missing inputs: pypoint
+    "powerwall" = ps: with ps; [ ]; # missing inputs: tesla-powerwall
     "prezzibenzina" = ps: with ps; [ ]; # missing inputs: prezzibenzina-py
     "proliphix" = ps: with ps; [ ]; # missing inputs: proliphix
     "prometheus" = ps: with ps; [ aiohttp-cors prometheus_client];
@@ -604,6 +607,7 @@
     "pushover" = ps: with ps; [ pushover-complete];
     "pushsafer" = ps: with ps; [ ];
     "pvoutput" = ps: with ps; [ ];
+    "pvpc_hourly_pricing" = ps: with ps; [ ]; # missing inputs: aiopvpc
     "pyload" = ps: with ps; [ ];
     "python_script" = ps: with ps; [ restrictedpython];
     "qbittorrent" = ps: with ps; [ ]; # missing inputs: python-qbittorrent
@@ -660,6 +664,7 @@
     "samsungtv" = ps: with ps; [ ]; # missing inputs: samsungctl[websocket] samsungtvws[websocket]
     "satel_integra" = ps: with ps; [ ]; # missing inputs: satel_integra
     "scene" = ps: with ps; [ ];
+    "schluter" = ps: with ps; [ ]; # missing inputs: py-schluter
     "scrape" = ps: with ps; [ beautifulsoup4];
     "script" = ps: with ps; [ ];
     "scsgate" = ps: with ps; [ ]; # missing inputs: scsgate
@@ -692,7 +697,7 @@
     "sky_hub" = ps: with ps; [ ];
     "skybeacon" = ps: with ps; [ ]; # missing inputs: pygatt[GATTTOOL]
     "skybell" = ps: with ps; [ ]; # missing inputs: skybellpy
-    "slack" = ps: with ps; [ ]; # missing inputs: slacker
+    "slack" = ps: with ps; [ ]; # missing inputs: slackclient
     "sleepiq" = ps: with ps; [ ]; # missing inputs: sleepyq
     "slide" = ps: with ps; [ ]; # missing inputs: goslide-api
     "sma" = ps: with ps; [ ]; # missing inputs: pysma
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 877c03cb19e..1cc64c2a0d7 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -67,7 +67,7 @@ let
   extraBuildInputs = extraPackages py.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "0.107.7";
+  hassVersion = "0.108.2";
 
 in with py.pkgs; buildPythonApplication rec {
   pname = "homeassistant";
@@ -76,7 +76,7 @@ in with py.pkgs; buildPythonApplication rec {
   disabled = pythonOlder "3.5";
 
   patches = [
-    ./relax-deps.patch
+    ./0001-setup.py-relax-dependencies.patch
   ];
 
   inherit availableComponents;
@@ -86,7 +86,7 @@ in with py.pkgs; buildPythonApplication rec {
     owner = "home-assistant";
     repo = "home-assistant";
     rev = version;
-    sha256 = "1sr7vzsd4hpaix37bb10vbnnqs1v8ll2wb8m713qrvcp3crs6snk";
+    sha256 = "0v4i1ak7pkpycas0mzdmxgc42xgfymwx2b0a2a4h13c4z46pbs2l";
   };
 
   propagatedBuildInputs = [
@@ -99,23 +99,16 @@ in with py.pkgs; buildPythonApplication rec {
   ] ++ componentBuildInputs ++ extraBuildInputs;
 
   checkInputs = [
-    asynctest pytest pytest-aiohttp requests-mock pydispatcher aiohue netdisco
-    hass-nabucasa defusedxml zeroconf
+    asynctest pytest pytest-aiohttp requests-mock hass-nabucasa netdisco pydispatcher
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "aiohttp==3.6.1" "aiohttp" \
-      --replace "attrs==19.2.0" "attrs" \
-      --replace "ruamel.yaml==0.15.100" "ruamel.yaml"
-  '';
-
   checkPhase = ''
     # - components' dependencies are not included, so they cannot be tested
     # - test_merge_id_schema requires pyqwikswitch
+    # - test_loader.py tries to load not-packaged dependencies
     # - unclear why test_merge fails: assert merge_log_err.call_count != 0
     # - test_setup_safe_mode_if_no_frontend: requires dependencies for components we have not packaged
-    py.test --ignore tests/components -k "not test_setup_safe_mode_if_no_frontend and not test_merge_id_schema and not test_merge"
+    py.test --ignore tests/components --ignore tests/test_loader.py -k "not test_setup_safe_mode_if_no_frontend and not test_merge_id_schema and not test_merge"
 
     # Some basic components should be tested however
     py.test \
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index 04cef9fa6d7..70d91dc9554 100644
--- a/pkgs/servers/home-assistant/frontend.nix
+++ b/pkgs/servers/home-assistant/frontend.nix
@@ -4,11 +4,11 @@ buildPythonPackage rec {
   # the frontend version corresponding to a specific home-assistant version can be found here
   # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
   pname = "home-assistant-frontend";
-  version = "20200318.0";
+  version = "20200407.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "15by4wd3lpq1pd0hpx04v827i3xywsvxziqb1qrbsraxh1rvsbhz";
+    sha256 = "0krwn67bkybjb69daik6dki5hm36xs4nbfwqkh0q7ami1xr1f56d";
   };
 
   # no Python tests implemented
diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/parse-requirements.py
index a5c6e9d0961..1467c3b528c 100755
--- a/pkgs/servers/home-assistant/parse-requirements.py
+++ b/pkgs/servers/home-assistant/parse-requirements.py
@@ -36,7 +36,9 @@ PKG_PREFERENCES = {
     # Use python3Packages.youtube-dl-light instead of python3Packages.youtube-dl
     "youtube-dl": "youtube-dl-light",
     "tensorflow-bin": "tensorflow",
+    "tensorflow-bin_2": "tensorflow",
     "tensorflowWithoutCuda": "tensorflow",
+    "tensorflow-build_2": "tensorflow",
 }
 
 
@@ -79,7 +81,8 @@ def parse_components(version: str = "master"):
 # Recursively get the requirements of a component and its dependencies
 def get_reqs(components, component):
     requirements = set(components[component]["requirements"])
-    for dependency in components[component]["dependencies"]:
+    deps = components[component].get("dependencies", [])
+    for dependency in deps:
         requirements.update(get_reqs(components, dependency))
     return requirements
 
diff --git a/pkgs/servers/home-assistant/relax-deps.patch b/pkgs/servers/home-assistant/relax-deps.patch
deleted file mode 100644
index 5d9716f0683..00000000000
--- a/pkgs/servers/home-assistant/relax-deps.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/setup.py	2020-03-18 15:34:35.474693786 +0000
-+++ b/setup.py	2020-03-18 15:49:07.185801916 +0000
-@@ -47,8 +47,8 @@
-     "pip>=8.0.3",
-     "python-slugify==4.0.0",
-     "pytz>=2019.03",
--    "pyyaml==5.3",
--    "requests==2.23.0",
-+    "pyyaml>=5.2",
-+    "requests>=2.22.0",
-     "ruamel.yaml==0.15.100",
-     "voluptuous==0.11.7",
-     "voluptuous-serialize==2.3.0",
diff --git a/pkgs/shells/xonsh/default.nix b/pkgs/shells/xonsh/default.nix
index 2ae4abcb8ea..dc0a45c3e52 100644
--- a/pkgs/shells/xonsh/default.nix
+++ b/pkgs/shells/xonsh/default.nix
@@ -8,14 +8,14 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "xonsh";
-  version = "0.9.16";
+  version = "0.9.17";
 
   # fetch from github because the pypi package ships incomplete tests
   src = fetchFromGitHub {
     owner  = "xonsh";
     repo   = "xonsh";
     rev    = version;
-    sha256 = "12k6flj9lzmriy7xhhsi2cgdk75p9mhvhdndwbn50mh2ff4wbkyj";
+    sha256 = "0ynfnphbp69am390m5zfzk5rzj1749vs7rzyq310f6mk7xdq6j4v";
   };
 
   LC_ALL = "en_US.UTF-8";
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index 8260f2e83c3..b907cced6d9 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -175,10 +175,10 @@ in rec {
   nix = nixStable;
 
   nixStable = callPackage common (rec {
-    name = "nix-2.3.3";
+    name = "nix-2.3.4";
     src = fetchurl {
       url = "http://nixos.org/releases/nix/${name}/${name}.tar.xz";
-      sha256 = "332fffb8dfc33eab854c136ef162a88cec15b701def71fa63714d160831ba224";
+      sha256 = "1c626a0de0acc69830b1891ec4d3c96aabe673b2a9fd04cef84f2304d05ad00d";
     };
 
     inherit storeDir stateDir confDir boehmgc;
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 836e668e9ec..c277e9ae98d 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -17808,7 +17808,9 @@ in
 
   inconsolata-lgc = callPackage ../data/fonts/inconsolata/lgc.nix {};
 
-  inconsolata-nerdfont = callPackage ../data/fonts/inconsolata-nerdfont {};
+  inconsolata-nerdfont = nerdfonts.override {
+    fonts = [ "Inconsolata" ];
+  };
 
   input-fonts = callPackage ../data/fonts/input-fonts { };
 
@@ -18212,7 +18214,9 @@ in
 
   terminus_font_ttf = callPackage ../data/fonts/terminus-font-ttf { };
 
-  terminus-nerdfont = callPackage ../data/fonts/terminus-nerdfont { };
+  terminus-nerdfont = nerdfonts.override {
+    fonts = [ "Terminus" ];
+  };
 
   termtekst = callPackage ../misc/emulators/termtekst { };