From 7ae7179debd00dee32300f5d71d8b43c6aceef93 Mon Sep 17 00:00:00 2001 From: David Birks Date: Wed, 13 Oct 2021 13:07:17 -0400 Subject: [PATCH 01/10] pulumi-bin: fix wrong hashes Re-ran the `update.sh` script. Fixes the error: ``` error: hash mismatch in fixed-output derivation '/nix/store/iy2rx9p1d3jq2w06iafxzi01hhgl48lx-pulumi-resource-gcp-v5.22.0-linux-amd64.tar.gz.drv': specified: sha256-Hs0f7nrAwjxIJgp6DvolMqQY2XntFEcTZfq9xjdJRz0= got: sha256-UP34bDPIUtiWhc3wlu7FxHKicUz7ujTmtuzEhBXEdDk= ``` --- pkgs/tools/admin/pulumi/data.nix | 80 ++++++++++++++++---------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/pkgs/tools/admin/pulumi/data.nix b/pkgs/tools/admin/pulumi/data.nix index 43ef985c41cc..39ee5a67a5d6 100644 --- a/pkgs/tools/admin/pulumi/data.nix +++ b/pkgs/tools/admin/pulumi/data.nix @@ -9,8 +9,8 @@ sha256 = "02s759rm633h4v5a1s3jxwvkahfjrbkz561spijrp3mihrws3xhb"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.8.0-linux-amd64.tar.gz"; - sha256 = "0ainrb9i14wcq64pg99kb0s41bpmczp1h4sz85kj1a4ic0yrfq14"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.8.1-linux-amd64.tar.gz"; + sha256 = "0k67bsqiqalqrifd6r7nm6c2g4ckrfhh7a7nfgfmpvqs7cxx1kfm"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.5.0-linux-amd64.tar.gz"; @@ -21,8 +21,8 @@ sha256 = "1lmy0dmpspzflc9z8p4w1cz47lbqnbkq8dng3v40lpbs75pnprvs"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.21.0-linux-amd64.tar.gz"; - sha256 = "1w7ppcqkhh9k9iw10f4d93glmphyvachrkj6p8b6i93n0k78rxv7"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.22.0-linux-amd64.tar.gz"; + sha256 = "0jl4ic18kf0qcys5mhp6ar4p1bj6ndhi11b51dvzdj5lb39dv43q"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.4.0-linux-amd64.tar.gz"; @@ -37,12 +37,12 @@ sha256 = "1h5159y7xlslnijs8lpi4vqgvj2px6whxk9m17p9n7wiyqbmd5na"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.23.0-linux-amd64.tar.gz"; - sha256 = "0kxwx1lk54kdfw49s719g4vwr2iv6fzr82cxi5siykzpf9gfk7bd"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.24.1-linux-amd64.tar.gz"; + sha256 = "0rmzb3wn5hmx8z8ly85spizinp6ja861k05fhw7l63zhqr8pnls2"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.2.0-linux-amd64.tar.gz"; - sha256 = "02g59jaifyjfcx185ir79d8lqic38dgaa9cb8dpi3xhvv32z0b0q"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-linux-amd64.tar.gz"; + sha256 = "1ixmsxawp0qbyjs37c74gcvj2icpbda6znl17yp9bhiyvnrdvxn7"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.3.0-linux-amd64.tar.gz"; @@ -81,8 +81,8 @@ sha256 = "0bp7ki3slszmy1vh4a5d4y4fhbvafrazj1cjf081xv91gi99xxz6"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.22.0-linux-amd64.tar.gz"; - sha256 = "0ga794vwdggscl9lf57dg7cii91j4px0wyha4r43rhn0gbp1zk8y"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.24.0-linux-amd64.tar.gz"; + sha256 = "1dznd4c8kpy6mwwb170nfl1m2dmrp6f4jalmk3bdfqscm4xhvk3q"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-linux-amd64.tar.gz"; @@ -107,8 +107,8 @@ sha256 = "1lisk9wr5p866x2hxvlz7nhz0xybhag7wgqk23x0lariln9z5na6"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.8.0-darwin-amd64.tar.gz"; - sha256 = "0n5kgmcy4hsg4s4q7jd34z9hz6vcqs64j680jzsxw902cgrj5y9p"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.8.1-darwin-amd64.tar.gz"; + sha256 = "103syjj8vla8lygyl5h7ilwm9kl6vxzyn6fdrkz0xcvlhqm1xr30"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.5.0-darwin-amd64.tar.gz"; @@ -119,8 +119,8 @@ sha256 = "1j7z5dbqzsdq1q8ks9g5pwzyc3ml6avhhp6xj94dzdhskl6pd8w5"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.21.0-darwin-amd64.tar.gz"; - sha256 = "0sjh5wws6k90w2y5f5bm22c4qxamr658mww3zx11qakdygraijly"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.22.0-darwin-amd64.tar.gz"; + sha256 = "15c5rh0ix7zxn128kangd5x2x1n61xv9d443a7cbriibwvdkvv0j"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.4.0-darwin-amd64.tar.gz"; @@ -135,12 +135,12 @@ sha256 = "0r2ykjwam5m2mfiibhq993s8n5pzmks837cwb57jwgwx8lc3ra4x"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.23.0-darwin-amd64.tar.gz"; - sha256 = "0vpkwlihq6pj554qd3csgf25id2q0pjx4mwkpfj74y08lv6d3v83"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.24.1-darwin-amd64.tar.gz"; + sha256 = "06lfimnlns1bfvks0kv5rjcnz6dvdk38npigyigsk9vqs0idcfi3"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.2.0-darwin-amd64.tar.gz"; - sha256 = "0gd3xnl31892qp8ilz9lc1zdps77nf07jgvh0k37mink8f0ppy2z"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-darwin-amd64.tar.gz"; + sha256 = "1dy4n03xvirg6fihiid786d88qlkyqkvk4fq6ggnxc92620x7342"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.3.0-darwin-amd64.tar.gz"; @@ -179,8 +179,8 @@ sha256 = "1i73sxh6vf6adg6as1q1mab3fcjm7ma7gixj2b0y0d2a5d78lhpa"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.22.0-darwin-amd64.tar.gz"; - sha256 = "19w0m6rxf0i996s9hdjym4f1k0jwf8hrlsr0m9x23xzz5r2simar"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.24.0-darwin-amd64.tar.gz"; + sha256 = "1jxrz82cadmqkd1d26bj5r3bphvzz5z20shjai351hlh9aa3bv2h"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-darwin-amd64.tar.gz"; @@ -205,8 +205,8 @@ sha256 = "041lmx5d1c8ls48mv56jchvk714rqw7jywywdgm6d6ipq7h5d67k"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.8.0-linux-arm64.tar.gz"; - sha256 = "06hq79r35bcm7yn8qdvdiy19wsqq3ihbrmjakw2vf6xdglrxxxwr"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.8.1-linux-arm64.tar.gz"; + sha256 = "0rijbqaw584b5c0kihrs80cv46s06yv3a68yz1dwa8sl7adi7n9p"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.5.0-linux-arm64.tar.gz"; @@ -217,8 +217,8 @@ sha256 = "0mddv37k87wiygh6x9bnxpcr721qbmbqf6l5zk3xl61n56j8qyb1"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.21.0-linux-arm64.tar.gz"; - sha256 = "1zlkij96vr3vf071gwdqcwfxlkfvcnkj4q220l3gxzliix0zvfi4"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.22.0-linux-arm64.tar.gz"; + sha256 = "19aiksm4d4jxs9gw7rdr77ag58fy1v7gkk6r730imgq0d8vsacm1"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.4.0-linux-arm64.tar.gz"; @@ -233,12 +233,12 @@ sha256 = "1sc8rf930cz6nkyhqn6p0h7450iqzdsrlw2smhp8yyjjvcjmsksf"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.23.0-linux-arm64.tar.gz"; - sha256 = "0j8dgbfdscp29zj0vd3ial1g87n72jj07afj5lxzgsh8jay1iz2r"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.24.1-linux-arm64.tar.gz"; + sha256 = "1bvzazdis423vb1r30q15q1irh07kgymv5ikzmvrygf4hm3aph06"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.2.0-linux-arm64.tar.gz"; - sha256 = "0y7wysd4j1dp73hrbydzj2bfvpgv8vxiza5m6dbg7nl66w9ng0rc"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-linux-arm64.tar.gz"; + sha256 = "12iv8vjnal2ym70rxmdnvi02x6md7fxi8jbzhzfw526pzqs1dc47"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.3.0-linux-arm64.tar.gz"; @@ -274,8 +274,8 @@ sha256 = "0mwpbvv62k8fg07447wwfigs4li4n78fswpzwi4alsjrkqlmw9dj"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.22.0-linux-arm64.tar.gz"; - sha256 = "0kp13hk57apvqmsn1zw1k7r395wdk1308m0kwx4hmcjy6dzifjsq"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.24.0-linux-arm64.tar.gz"; + sha256 = "1b8fi56wkk753w6ip1nkrksyk8qd5ypdbaq668pk60l3jb0c9mad"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-linux-arm64.tar.gz"; @@ -300,8 +300,8 @@ sha256 = "06qc42gb2w2qjy2mz5shh082607395jq0js34wlqq61jgjzpca5l"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.8.0-darwin-arm64.tar.gz"; - sha256 = "0nwqrg5in05vvj7ln7gi50vp3bnhkwar8fifpi87b134hl50q935"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v3.8.1-darwin-arm64.tar.gz"; + sha256 = "1wqkm32lkwff5gwn7dbznzx5rcbcysj2mx4ip77whba59ikfchsj"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v4.5.0-darwin-arm64.tar.gz"; @@ -312,8 +312,8 @@ sha256 = "0fj1ai1kv8xgmsvfbmy5gsinxag70rx9a9gkifqgcpn3r9mj48ks"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.21.0-darwin-arm64.tar.gz"; - sha256 = "0nj8gin7ys63v235x8nywmx0vv2bdcqdmmp7z3lxlxp2hk4nm84g"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v4.22.0-darwin-arm64.tar.gz"; + sha256 = "09v28dgrs5a4w8qn4v4zwrn7n7cn2475a2jh9qz3g2ljaj0086fd"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v3.4.0-darwin-arm64.tar.gz"; @@ -328,12 +328,12 @@ sha256 = "1c3pchbnk6dsnxsl02ypq7s4mmkxdgxszdhql1klpx5js7i1lv8k"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.23.0-darwin-arm64.tar.gz"; - sha256 = "08gcvlfy7kmcx02nf3n4chf6g5lasr2g8gr20gndk0rvihqiwhjz"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v4.24.1-darwin-arm64.tar.gz"; + sha256 = "0fafl5zpnzkncvi52qw6f4898yia8p0whvr41m3g8cxcp6nyr0ij"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.2.0-darwin-arm64.tar.gz"; - sha256 = "0waf4apw5bzn276s34yaxvm3xyk5333l3zcz2j52c56wkadzxvpg"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.3.1-darwin-arm64.tar.gz"; + sha256 = "0jrihnwfh5wvc95nipqv7ak77kq9xj0pk5hlapv9w2ls5pwykv0r"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.3.0-darwin-arm64.tar.gz"; @@ -369,8 +369,8 @@ sha256 = "1hzhlxbwji4p8apx4rnqllsgf1k11w49rplz0syzmzb2fxpkif75"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.22.0-darwin-arm64.tar.gz"; - sha256 = "038nk93mq59d8ynp1ggmhvmgnilrgqzcbg4hapb9pk7hpbwb269c"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v5.24.0-darwin-arm64.tar.gz"; + sha256 = "0nh8305b6qlqr63xaacxs3v804dhrwdz179xlzdgzf9550zdqb39"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.0.0-darwin-arm64.tar.gz"; From 20441457d94a1344a86aa236814fa456feec72eb Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 16 Oct 2021 22:28:39 +0200 Subject: [PATCH 02/10] sqlfluff: 0.6.8 -> 0.7.0 --- pkgs/development/tools/database/sqlfluff/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/development/tools/database/sqlfluff/default.nix b/pkgs/development/tools/database/sqlfluff/default.nix index 40c4e459a2ee..095c2e10b573 100644 --- a/pkgs/development/tools/database/sqlfluff/default.nix +++ b/pkgs/development/tools/database/sqlfluff/default.nix @@ -5,14 +5,14 @@ python3.pkgs.buildPythonApplication rec { pname = "sqlfluff"; - version = "0.6.8"; + version = "0.7.0"; disabled = python3.pythonOlder "3.6"; src = fetchFromGitHub { owner = pname; repo = pname; rev = version; - sha256 = "sha256-Aistr85doKEOD0/uTS/7iRzYggb+hC3njVi4mWt8ndM="; + sha256 = "sha256-Cqbo1L3z3bTDIXZ90GXdAulTpGhWLoTc/kYRNghZ/SE="; }; propagatedBuildInputs = with python3.pkgs; [ @@ -39,10 +39,9 @@ python3.pkgs.buildPythonApplication rec { ]; disabledTestPaths = [ - # dbt is not available yet - "test/core/templaters/dbt_test.py" # Don't run the plugin related tests "test/core/plugin_test.py" + "plugins/sqlfluff-templater-dbt" "plugins/sqlfluff-plugin-example/test/rules/rule_test_cases_test.py" ]; From 56c31c1b13242a4013203e180411b3744ca3984a Mon Sep 17 00:00:00 2001 From: rowanG077 Date: Thu, 14 Oct 2021 07:58:32 +0200 Subject: [PATCH 03/10] trellis: Revert removal of CMAKE_INSTALL_DATADIR This is used to refer to the database file. Without it many tools can't be used. --- pkgs/development/embedded/fpga/trellis/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/embedded/fpga/trellis/default.nix b/pkgs/development/embedded/fpga/trellis/default.nix index 4d3859a77df8..169703ea228a 100644 --- a/pkgs/development/embedded/fpga/trellis/default.nix +++ b/pkgs/development/embedded/fpga/trellis/default.nix @@ -31,6 +31,8 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ cmake python3 ]; cmakeFlags = [ "-DCURRENT_GIT_VERSION=${realVersion}" + # TODO: should this be in stdenv instead? + "-DCMAKE_INSTALL_DATADIR=${placeholder "out"}/share" ]; preConfigure = '' From eebfe7199d9e543acea19de4af15a91ab7774e7c Mon Sep 17 00:00:00 2001 From: rowanG077 Date: Fri, 15 Oct 2021 12:16:44 +0200 Subject: [PATCH 04/10] trellis: Added installCheckPhase that ensures database is available and updated maintainers --- pkgs/development/embedded/fpga/trellis/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/development/embedded/fpga/trellis/default.nix b/pkgs/development/embedded/fpga/trellis/default.nix index 169703ea228a..8c44e34e3ed1 100644 --- a/pkgs/development/embedded/fpga/trellis/default.nix +++ b/pkgs/development/embedded/fpga/trellis/default.nix @@ -41,6 +41,12 @@ in stdenv.mkDerivation rec { cd libtrellis ''; + doInstallCheck = true; + + installCheckPhase = '' + $out/bin/ecppack $out/share/trellis/misc/basecfgs/empty_lfe5u-85f.config /tmp/test.bin + ''; + meta = with lib; { description = "Documentation and bitstream tools for Lattice ECP5 FPGAs"; longDescription = '' @@ -51,7 +57,7 @@ in stdenv.mkDerivation rec { ''; homepage = "https://github.com/YosysHQ/prjtrellis"; license = licenses.isc; - maintainers = with maintainers; [ q3k thoughtpolice emily ]; + maintainers = with maintainers; [ q3k thoughtpolice emily rowanG077 ]; platforms = platforms.all; }; } From 504fff7a3b6e2b33ab1664e8671fbe89d6fb9ceb Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Sat, 16 Oct 2021 21:07:28 -0300 Subject: [PATCH 05/10] dapl: 0.2.0+unstable=2021-06-30 -> 0.2.0+date=2021-10-16 --- .../interpreters/dzaima-apl/default.nix | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pkgs/development/interpreters/dzaima-apl/default.nix b/pkgs/development/interpreters/dzaima-apl/default.nix index 80458e1398ac..d061a6cb9cdf 100644 --- a/pkgs/development/interpreters/dzaima-apl/default.nix +++ b/pkgs/development/interpreters/dzaima-apl/default.nix @@ -8,32 +8,34 @@ stdenv.mkDerivation rec { pname = "dapl" + lib.optionalString buildNativeImage "-native"; - version = "0.2.0+unstable=2021-06-30"; + version = "0.2.0+date=2021-10-16"; src = fetchFromGitHub { owner = "dzaima"; repo = "APL"; - rev = "28b3667beb23c6472266bb2b6eb701708fa421c6"; - hash = "sha256-2kM9XDMclxJNOZngwLvoDQG23UZQQ6ePK/j215UumCg="; + rev = "5eb0a4205e27afa6122096a25008474eec562dc0"; + hash = "sha256-UdumMytqT909JRpNqzhYPuKPw644m/vRUsEbIVF2a7U="; }; nativeBuildInputs = [ - makeWrapper jdk + makeWrapper ]; dontConfigure = true; + postPatch = '' + patchShebangs --build ./build + ''; + buildPhase = '' runHook preBuild - patchShebangs --build ./build - substituteInPlace ./build \ - --replace "javac" "javac -encoding utf8" ./build '' + lib.optionalString buildNativeImage '' native-image --report-unsupported-elements-at-runtime \ - -H:CLibraryPath=${lib.getLib jdk}/lib -jar APL.jar dapl + -H:CLibraryPath=${lib.getLib jdk}/lib -J-Dfile.encoding=UTF-8 \ + -jar APL.jar dapl '' + '' runHook postBuild ''; From 84e726be4724435fc8531d698a379199d5c9eff6 Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Sat, 16 Oct 2021 21:08:37 -0300 Subject: [PATCH 06/10] dbqn: 0.pre+unstable=2021-10-05 -> 0.pre+date=2021-10-08 --- .../interpreters/bqn/dzaima-bqn/default.nix | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pkgs/development/interpreters/bqn/dzaima-bqn/default.nix b/pkgs/development/interpreters/bqn/dzaima-bqn/default.nix index 846d6a045a99..e9b6bdf83c78 100644 --- a/pkgs/development/interpreters/bqn/dzaima-bqn/default.nix +++ b/pkgs/development/interpreters/bqn/dzaima-bqn/default.nix @@ -8,31 +8,34 @@ stdenv.mkDerivation rec { pname = "dbqn" + lib.optionalString buildNativeImage "-native"; - version = "0.pre+unstable=2021-10-05"; + version = "0.pre+date=2021-10-08"; src = fetchFromGitHub { owner = "dzaima"; repo = "BQN"; - rev = "c31ceef52bbf380e747723f5ffd09c5f006b21c5"; - sha256 = "1nzqgwpjawcky85mfrz5izs9lfb3aqlm96dc8syrxhgg20xrziwx"; + rev = "0001109a1c5a420421b368c79d34b1e93bfe606e"; + hash = "sha256-riHHclTLkrVbtzmcz9ungAIc7kaoFHS77+SNatsfNhc="; }; nativeBuildInputs = [ - makeWrapper jdk + makeWrapper ]; dontConfigure = true; + postPatch = '' + patchShebangs --build ./build8 + ''; + buildPhase = '' runHook preBuild - patchShebangs --build ./build8 ./build8 '' + lib.optionalString buildNativeImage '' native-image --report-unsupported-elements-at-runtime \ - -H:CLibraryPath=${lib.getLib jdk}/lib \ - -J-Dfile.encoding=UTF-8 -jar BQN.jar dbqn + -H:CLibraryPath=${lib.getLib jdk}/lib -J-Dfile.encoding=UTF-8 \ + -jar BQN.jar dbqn '' + '' runHook postBuild ''; From f29ea2d15d833494f7e97e0231b03ca70a8e7db4 Mon Sep 17 00:00:00 2001 From: pennae Date: Wed, 11 Aug 2021 11:02:47 +0200 Subject: [PATCH 07/10] nixos/networking: add foo-over-udp endpoint support allows configuration of foo-over-udp decapsulation endpoints. sadly networkd seems to lack the features necessary to support local and peer address configuration, so those are only supported when using scripted configuration. --- .../from_md/release-notes/rl-2111.section.xml | 13 ++++ .../manual/release-notes/rl-2111.section.md | 4 ++ nixos/modules/system/boot/networkd.nix | 26 +++++++ .../tasks/network-interfaces-scripted.nix | 34 +++++++++ .../tasks/network-interfaces-systemd.nix | 20 ++++++ nixos/modules/tasks/network-interfaces.nix | 69 ++++++++++++++++++- nixos/tests/networking.nix | 46 +++++++++++++ 7 files changed, 211 insertions(+), 1 deletion(-) diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml index 73baf71f5ef5..c0f407e11a93 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml @@ -1535,6 +1535,19 @@ Superuser created successfully. release notes for changes and upgrade instructions. + + + The systemd.network module has gained + support for the FooOverUDP link type. + + + + + The networking module has a new + networking.fooOverUDP option to configure + Foo-over-UDP encapsulations. + + diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index b7fa2cf0f254..6dadcde3ccc8 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -443,3 +443,7 @@ In addition to numerous new and upgraded packages, this release has the followin - Three new options, [xdg.mime.addedAssociations](#opt-xdg.mime.addedAssociations), [xdg.mime.defaultApplications](#opt-xdg.mime.defaultApplications), and [xdg.mime.removedAssociations](#opt-xdg.mime.removedAssociations) have been added to the [xdg.mime](#opt-xdg.mime.enable) module to allow the configuration of `/etc/xdg/mimeapps.list`. - Kopia was upgraded from 0.8.x to 0.9.x. Please read the [upstream release notes](https://github.com/kopia/kopia/releases/tag/v0.9.0) for changes and upgrade instructions. + +- The `systemd.network` module has gained support for the FooOverUDP link type. + +- The `networking` module has a new `networking.fooOverUDP` option to configure Foo-over-UDP encapsulations. diff --git a/nixos/modules/system/boot/networkd.nix b/nixos/modules/system/boot/networkd.nix index 51e105bf6276..662dfe2db989 100644 --- a/nixos/modules/system/boot/networkd.nix +++ b/nixos/modules/system/boot/networkd.nix @@ -250,6 +250,16 @@ let (assertRange "ERSPANIndex" 1 1048575) ]; + sectionFooOverUDP = checkUnitConfig "FooOverUDP" [ + (assertOnlyFields [ + "Port" + "Encapsulation" + "Protocol" + ]) + (assertPort "Port") + (assertValueOneOf "Encapsulation" ["FooOverUDP" "GenericUDPEncapsulation"]) + ]; + sectionPeer = checkUnitConfig "Peer" [ (assertOnlyFields [ "Name" @@ -919,6 +929,18 @@ let ''; }; + fooOverUDPConfig = mkOption { + default = { }; + example = { Port = 9001; }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionFooOverUDP; + description = '' + Each attribute in this set specifies an option in the + [FooOverUDP] section of the unit. See + systemd.netdev + 5 for details. + ''; + }; + peerConfig = mkOption { default = {}; example = { Name = "veth2"; }; @@ -1449,6 +1471,10 @@ let [Tunnel] ${attrsToSection def.tunnelConfig} '' + + optionalString (def.fooOverUDPConfig != { }) '' + [FooOverUDP] + ${attrsToSection def.fooOverUDPConfig} + '' + optionalString (def.peerConfig != { }) '' [Peer] ${attrsToSection def.peerConfig} diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix index 79624ec7072c..055580e3ea2f 100644 --- a/nixos/modules/tasks/network-interfaces-scripted.nix +++ b/nixos/modules/tasks/network-interfaces-scripted.nix @@ -466,6 +466,39 @@ let ''; }); + createFouEncapsulation = n: v: nameValuePair "${n}-fou-encap" + (let + # if we have a device to bind to we can wait for its addresses to be + # configured, otherwise external sequencing is required. + deps = optionals (v.local != null && v.local.dev != null) + (deviceDependency v.local.dev ++ [ "network-addresses-${v.local.dev}.service" ]); + fouSpec = "port ${toString v.port} ${ + if v.protocol != null then "ipproto ${toString v.protocol}" else "gue" + } ${ + optionalString (v.local != null) "local ${escapeShellArg v.local.address} ${ + optionalString (v.local.dev != null) "dev ${escapeShellArg v.local.dev}" + }" + }"; + in + { description = "FOU endpoint ${n}"; + wantedBy = [ "network-setup.service" (subsystemDevice n) ]; + bindsTo = deps; + partOf = [ "network-setup.service" ]; + after = [ "network-pre.target" ] ++ deps; + before = [ "network-setup.service" ]; + serviceConfig.Type = "oneshot"; + serviceConfig.RemainAfterExit = true; + path = [ pkgs.iproute2 ]; + script = '' + # always remove previous incarnation since show can't filter + ip fou del ${fouSpec} >/dev/null 2>&1 || true + ip fou add ${fouSpec} + ''; + postStop = '' + ip fou del ${fouSpec} || true + ''; + }); + createSitDevice = n: v: nameValuePair "${n}-netdev" (let deps = deviceDependency v.dev; @@ -530,6 +563,7 @@ let // mapAttrs' createVswitchDevice cfg.vswitches // mapAttrs' createBondDevice cfg.bonds // mapAttrs' createMacvlanDevice cfg.macvlans + // mapAttrs' createFouEncapsulation cfg.fooOverUDP // mapAttrs' createSitDevice cfg.sits // mapAttrs' createVlanDevice cfg.vlans // { diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix index 225f9dc67fcc..516764b87db6 100644 --- a/nixos/modules/tasks/network-interfaces-systemd.nix +++ b/nixos/modules/tasks/network-interfaces-systemd.nix @@ -47,6 +47,9 @@ in } ] ++ flip mapAttrsToList cfg.bridges (n: { rstp, ... }: { assertion = !rstp; message = "networking.bridges.${n}.rstp is not supported by networkd."; + }) ++ flip mapAttrsToList cfg.fooOverUDP (n: { local, ... }: { + assertion = local == null; + message = "networking.fooOverUDP.${n}.local is not supported by networkd."; }); networking.dhcpcd.enable = mkDefault false; @@ -194,6 +197,23 @@ in macvlan = [ name ]; } ]); }))) + (mkMerge (flip mapAttrsToList cfg.fooOverUDP (name: fou: { + netdevs."40-${name}" = { + netdevConfig = { + Name = name; + Kind = "fou"; + }; + # unfortunately networkd cannot encode dependencies of netdevs on addresses/routes, + # so we cannot specify Local=, Peer=, PeerPort=. this looks like a missing feature + # in networkd. + fooOverUDPConfig = { + Port = fou.port; + Encapsulation = if fou.protocol != null then "FooOverUDP" else "GenericUDPEncapsulation"; + } // (optionalAttrs (fou.protocol != null) { + Protocol = fou.protocol; + }); + }; + }))) (mkMerge (flip mapAttrsToList cfg.sits (name: sit: { netdevs."40-${name}" = { netdevConfig = { diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix index 313b0fac7dab..a3b41326168a 100644 --- a/nixos/modules/tasks/network-interfaces.nix +++ b/nixos/modules/tasks/network-interfaces.nix @@ -10,6 +10,7 @@ let hasVirtuals = any (i: i.virtual) interfaces; hasSits = cfg.sits != { }; hasBonds = cfg.bonds != { }; + hasFous = cfg.fooOverUDP != { }; slaves = concatMap (i: i.interfaces) (attrValues cfg.bonds) ++ concatMap (i: i.interfaces) (attrValues cfg.bridges) @@ -823,6 +824,71 @@ in }); }; + networking.fooOverUDP = mkOption { + default = { }; + example = + { + primary = { port = 9001; local = { address = "192.0.2.1"; dev = "eth0"; }; }; + backup = { port = 9002; }; + }; + description = '' + This option allows you to configure Foo Over UDP and Generic UDP Encapsulation + endpoints. See ip-fou + 8 for details. + ''; + type = with types; attrsOf (submodule { + options = { + port = mkOption { + type = port; + description = '' + Local port of the encapsulation UDP socket. + ''; + }; + + protocol = mkOption { + type = nullOr (ints.between 1 255); + default = null; + description = '' + Protocol number of the encapsulated packets. Specifying null + (the default) creates a GUE endpoint, specifying a protocol number will create + a FOU endpoint. + ''; + }; + + local = mkOption { + type = nullOr (submodule { + options = { + address = mkOption { + type = types.str; + description = '' + Local address to bind to. The address must be available when the FOU + endpoint is created, using the scripted network setup this can be achieved + either by setting dev or adding dependency information to + systemd.services.<name>-fou-encap; it isn't supported + when using networkd. + ''; + }; + + dev = mkOption { + type = nullOr str; + default = null; + example = "eth0"; + description = '' + Network device to bind to. + ''; + }; + }; + }); + default = null; + example = { address = "203.0.113.22"; }; + description = '' + Local address (and optionally device) to bind to using the given port. + ''; + }; + }; + }); + }; + networking.sits = mkOption { default = { }; example = literalExpression '' @@ -1116,7 +1182,8 @@ in boot.kernelModules = [ ] ++ optional hasVirtuals "tun" ++ optional hasSits "sit" - ++ optional hasBonds "bonding"; + ++ optional hasBonds "bonding" + ++ optional hasFous "fou"; boot.extraModprobeConfig = # This setting is intentional as it prevents default bond devices diff --git a/nixos/tests/networking.nix b/nixos/tests/networking.nix index 8b947ddf0cf4..fdcf67f1126c 100644 --- a/nixos/tests/networking.nix +++ b/nixos/tests/networking.nix @@ -380,6 +380,52 @@ let router.wait_until_succeeds("ping -c 1 192.168.1.3") ''; }; + fou = { + name = "foo-over-udp"; + nodes.machine = { ... }: { + virtualisation.vlans = [ 1 ]; + networking = { + useNetworkd = networkd; + useDHCP = false; + interfaces.eth1.ipv4.addresses = mkOverride 0 + [ { address = "192.168.1.1"; prefixLength = 24; } ]; + fooOverUDP = { + fou1 = { port = 9001; }; + fou2 = { port = 9002; protocol = 41; }; + fou3 = mkIf (!networkd) + { port = 9003; local.address = "192.168.1.1"; }; + fou4 = mkIf (!networkd) + { port = 9004; local = { address = "192.168.1.1"; dev = "eth1"; }; }; + }; + }; + systemd.services = { + fou3-fou-encap.after = optional (!networkd) "network-addresses-eth1.service"; + }; + }; + testScript = { ... }: + '' + import json + + machine.wait_for_unit("network.target") + fous = json.loads(machine.succeed("ip -json fou show")) + assert {"port": 9001, "gue": None, "family": "inet"} in fous, "fou1 exists" + assert {"port": 9002, "ipproto": 41, "family": "inet"} in fous, "fou2 exists" + '' + optionalString (!networkd) '' + assert { + "port": 9003, + "gue": None, + "family": "inet", + "local": "192.168.1.1", + } in fous, "fou3 exists" + assert { + "port": 9004, + "gue": None, + "family": "inet", + "local": "192.168.1.1", + "dev": "eth1", + } in fous, "fou4 exists" + ''; + }; sit = let node = { address4, remote, address6 }: { pkgs, ... }: with pkgs.lib; { virtualisation.vlans = [ 1 ]; From c1f515547109a7e1845120449676ba6aa9a78fe9 Mon Sep 17 00:00:00 2001 From: pennae Date: Wed, 11 Aug 2021 12:48:43 +0200 Subject: [PATCH 08/10] nixos/networking: support FOU encapsulation for sits --- .../from_md/release-notes/rl-2111.section.xml | 6 +++ .../manual/release-notes/rl-2111.section.md | 2 + .../tasks/network-interfaces-scripted.nix | 7 +++- .../tasks/network-interfaces-systemd.nix | 12 +++++- nixos/modules/tasks/network-interfaces.nix | 41 ++++++++++++++++++- nixos/tests/networking.nix | 27 ++++++++++-- 6 files changed, 89 insertions(+), 6 deletions(-) diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml index c0f407e11a93..023f0f57a9b2 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml @@ -1548,6 +1548,12 @@ Superuser created successfully. Foo-over-UDP encapsulations. + + + networking.sits now supports Foo-over-UDP + encapsulation. + + diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index 6dadcde3ccc8..658f3b59da67 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -447,3 +447,5 @@ In addition to numerous new and upgraded packages, this release has the followin - The `systemd.network` module has gained support for the FooOverUDP link type. - The `networking` module has a new `networking.fooOverUDP` option to configure Foo-over-UDP encapsulations. + +- `networking.sits` now supports Foo-over-UDP encapsulation. diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix index 055580e3ea2f..e8e2de090b32 100644 --- a/nixos/modules/tasks/network-interfaces-scripted.nix +++ b/nixos/modules/tasks/network-interfaces-scripted.nix @@ -519,7 +519,12 @@ let ${optionalString (v.remote != null) "remote \"${v.remote}\""} \ ${optionalString (v.local != null) "local \"${v.local}\""} \ ${optionalString (v.ttl != null) "ttl ${toString v.ttl}"} \ - ${optionalString (v.dev != null) "dev \"${v.dev}\""} + ${optionalString (v.dev != null) "dev \"${v.dev}\""} \ + ${optionalString (v.encapsulation != null) + "encap ${v.encapsulation.type} encap-dport ${toString v.encapsulation.port} ${ + optionalString (v.encapsulation.sourcePort != null) + "encap-sport ${toString v.encapsulation.sourcePort}" + }"} ip link set "${n}" up ''; postStop = '' diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix index 516764b87db6..ccfd7fd4132b 100644 --- a/nixos/modules/tasks/network-interfaces-systemd.nix +++ b/nixos/modules/tasks/network-interfaces-systemd.nix @@ -227,7 +227,17 @@ in Local = sit.local; }) // (optionalAttrs (sit.ttl != null) { TTL = sit.ttl; - }); + }) // (optionalAttrs (sit.encapsulation != null) ( + { + FooOverUDP = true; + Encapsulation = + if sit.encapsulation.type == "fou" + then "FooOverUDP" + else "GenericUDPEncapsulation"; + FOUDestinationPort = sit.encapsulation.port; + } // (optionalAttrs (sit.encapsulation.sourcePort != null) { + FOUSourcePort = sit.encapsulation.sourcePort; + }))); }; networks = mkIf (sit.dev != null) { "40-${sit.dev}" = (mkMerge [ (genericNetwork (mkOverride 999)) { diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix index a3b41326168a..4e20ec118464 100644 --- a/nixos/modules/tasks/network-interfaces.nix +++ b/nixos/modules/tasks/network-interfaces.nix @@ -10,7 +10,8 @@ let hasVirtuals = any (i: i.virtual) interfaces; hasSits = cfg.sits != { }; hasBonds = cfg.bonds != { }; - hasFous = cfg.fooOverUDP != { }; + hasFous = cfg.fooOverUDP != { } + || filterAttrs (_: s: s.encapsulation != null) cfg.sits != { }; slaves = concatMap (i: i.interfaces) (attrValues cfg.bonds) ++ concatMap (i: i.interfaces) (attrValues cfg.bridges) @@ -948,6 +949,44 @@ in ''; }; + encapsulation = with types; mkOption { + type = nullOr (submodule { + options = { + type = mkOption { + type = enum [ "fou" "gue" ]; + description = '' + Selects encapsulation type. See + ip-link + 8 for details. + ''; + }; + + port = mkOption { + type = port; + example = 9001; + description = '' + Destination port for encapsulated packets. + ''; + }; + + sourcePort = mkOption { + type = nullOr types.port; + default = null; + example = 9002; + description = '' + Source port for encapsulated packets. Will be chosen automatically by + the kernel if unset. + ''; + }; + }; + }); + default = null; + example = { type = "fou"; port = 9001; }; + description = '' + Configures encapsulation in UDP packets. + ''; + }; + }; }); diff --git a/nixos/tests/networking.nix b/nixos/tests/networking.nix index fdcf67f1126c..647c8942b37d 100644 --- a/nixos/tests/networking.nix +++ b/nixos/tests/networking.nix @@ -431,7 +431,6 @@ let virtualisation.vlans = [ 1 ]; networking = { useNetworkd = networkd; - firewall.enable = false; useDHCP = false; sits.sit = { inherit remote; @@ -446,8 +445,30 @@ let }; in { name = "Sit"; - nodes.client1 = node { address4 = "192.168.1.1"; remote = "192.168.1.2"; address6 = "fc00::1"; }; - nodes.client2 = node { address4 = "192.168.1.2"; remote = "192.168.1.1"; address6 = "fc00::2"; }; + # note on firewalling: the two nodes are explicitly asymmetric. + # client1 sends SIT packets in UDP, but accepts only proto-41 incoming. + # client2 does the reverse, sending in proto-41 and accepting only UDP incoming. + # that way we'll notice when either SIT itself or FOU breaks. + nodes.client1 = args@{ pkgs, ... }: + mkMerge [ + (node { address4 = "192.168.1.1"; remote = "192.168.1.2"; address6 = "fc00::1"; } args) + { + networking = { + firewall.extraCommands = "iptables -A INPUT -p 41 -j ACCEPT"; + sits.sit.encapsulation = { type = "fou"; port = 9001; }; + }; + } + ]; + nodes.client2 = args@{ pkgs, ... }: + mkMerge [ + (node { address4 = "192.168.1.2"; remote = "192.168.1.1"; address6 = "fc00::2"; } args) + { + networking = { + firewall.allowedUDPPorts = [ 9001 ]; + fooOverUDP.fou1 = { port = 9001; protocol = 41; }; + }; + } + ]; testScript = { ... }: '' start_all() From 4973ffc800e9ca08e36772332c23505e51cd31a8 Mon Sep 17 00:00:00 2001 From: Thiago Franco de Moraes Date: Sat, 16 Oct 2021 18:20:43 -0300 Subject: [PATCH 09/10] zettlr: 1.8.9 -> 2.0.0 --- pkgs/applications/misc/zettlr/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/misc/zettlr/default.nix b/pkgs/applications/misc/zettlr/default.nix index 77ff11b98622..f8dbc9c65e4f 100644 --- a/pkgs/applications/misc/zettlr/default.nix +++ b/pkgs/applications/misc/zettlr/default.nix @@ -10,11 +10,11 @@ # Based on https://gist.github.com/msteen/96cb7df66a359b827497c5269ccbbf94 and joplin-desktop nixpkgs. let pname = "zettlr"; - version = "1.8.9"; + version = "2.0.0"; name = "${pname}-${version}"; src = fetchurl { url = "https://github.com/Zettlr/Zettlr/releases/download/v${version}/Zettlr-${version}-x86_64.appimage"; - sha256 = "sha256-1cU9HdPXrJ4ibSjOitO8iJfMIaGub/jjlb2lssYFfcU="; + sha256 = "sha256-MIFgNUuuneIIkPRVRarbx6UMoB/3sdJtKvbacUnwHX8="; }; appimageContents = appimageTools.extractType2 { inherit name src; From 7f8d276a8a2be2b698cf1c0e30505b5ea0c99027 Mon Sep 17 00:00:00 2001 From: "Bryan A. S" <53131727+bryanasdev000@users.noreply.github.com> Date: Sat, 16 Oct 2021 22:26:50 -0300 Subject: [PATCH 10/10] kn: init at 0.26.0 (#141928) Co-authored-by: figsoda --- .../networking/cluster/kn/default.nix | 44 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 46 insertions(+) create mode 100644 pkgs/applications/networking/cluster/kn/default.nix diff --git a/pkgs/applications/networking/cluster/kn/default.nix b/pkgs/applications/networking/cluster/kn/default.nix new file mode 100644 index 000000000000..a41c3c0ad35b --- /dev/null +++ b/pkgs/applications/networking/cluster/kn/default.nix @@ -0,0 +1,44 @@ +{ lib, buildGoModule, fetchFromGitHub, installShellFiles }: + +buildGoModule rec { + pname = "kn"; + version = "0.26.0"; + + src = fetchFromGitHub { + owner = "knative"; + repo = "client"; + rev = "v${version}"; + sha256 = "sha256-hquxv1BluR535WvMtJlVyP7JuARDNGDjPAbdSSj2juo="; + }; + + vendorSha256 = null; + + subPackages = [ "cmd/kn" ]; + + nativeBuildInputs = [ installShellFiles ]; + + ldflags = [ + "-X knative.dev/client/pkg/kn/commands/version.Version=v${version}" + "-X knative.dev/client/pkg/kn/commands/version.VersionEventing=v${version}" + "-X knative.dev/client/pkg/kn/commands/version.VersionServing=v${version}" + ]; + + postInstall = '' + installShellCompletion --cmd kn \ + --bash <($out/bin/kn completion bash) \ + --zsh <($out/bin/kn completion zsh) + ''; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/kn version | grep ${version} > /dev/null + ''; + + meta = with lib; { + description = "The Knative client kn is your door to the Knative world. It allows you to create Knative resources interactively from the command line or from within scripts"; + homepage = "https://github.com/knative/client"; + changelog = "https://github.com/knative/client/releases/tag/v${version}"; + license = licenses.asl20; + maintainers = with maintainers; [ bryanasdev000 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 496788f6e53e..e2f6f1763e06 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -25833,6 +25833,8 @@ with pkgs; kmymoney = libsForQt5.callPackage ../applications/office/kmymoney { }; + kn = callPackage ../applications/networking/cluster/kn { }; + kodestudio = callPackage ../applications/editors/kodestudio { }; kondo = callPackage ../applications/misc/kondo { };