mirror of
https://github.com/CHN-beta/nixpkgs.git
synced 2026-01-12 10:50:30 +08:00
Compare commits
452 Commits
fix-wrappe
...
20.09-beta
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc260badae | ||
|
|
189520cc63 | ||
|
|
9eb814f798 | ||
|
|
fc83817ba6 | ||
|
|
94ee827023 | ||
|
|
c0beb143e5 | ||
|
|
a6b6b8623c | ||
|
|
4a3e6cdacc | ||
|
|
fb33dae2ef | ||
|
|
c298a03cc2 | ||
|
|
5b945725cb | ||
|
|
3e7e3d2f18 | ||
|
|
780b4e027e | ||
|
|
fc6ba468f5 | ||
|
|
e8669f7cfa | ||
|
|
e19303b14b | ||
|
|
14e4f4dbb4 | ||
|
|
843c56b06a | ||
|
|
6377350c58 | ||
|
|
102df6c6f2 | ||
|
|
1991ea85b1 | ||
|
|
affe6660bb | ||
|
|
3efe313b1d | ||
|
|
09246c92d2 | ||
|
|
6fc7532b2c | ||
|
|
670d1a4a94 | ||
|
|
eb47f4cc97 | ||
|
|
2f78b89265 | ||
|
|
899bfaf5a9 | ||
|
|
1d3d507043 | ||
|
|
ce00ac55e0 | ||
|
|
2a4f1e08e3 | ||
|
|
aed7150466 | ||
|
|
a780c60f9f | ||
|
|
9b0e8d7a29 | ||
|
|
8c4d4eaa81 | ||
|
|
ff3baa2a56 | ||
|
|
aa37cc1e7a | ||
|
|
cc9d3bf73f | ||
|
|
9214e9509b | ||
|
|
bf55f0c071 | ||
|
|
0b887c636f | ||
|
|
888d3a4c37 | ||
|
|
4eec4a7a75 | ||
|
|
7e5277bcb2 | ||
|
|
6e31319063 | ||
|
|
ba0bd29a1a | ||
|
|
8e0373f183 | ||
|
|
14b64adfec | ||
|
|
a3783f968b | ||
|
|
cdf6be7489 | ||
|
|
969984bb84 | ||
|
|
bfba40c197 | ||
|
|
ac9d85f5a1 | ||
|
|
b11f9622a7 | ||
|
|
dc925f544e | ||
|
|
a8ec124a80 | ||
|
|
3bbf7d3a96 | ||
|
|
7a5d897281 | ||
|
|
4c1ae47e8c | ||
|
|
39a54c9899 | ||
|
|
a4f66d2178 | ||
|
|
40e8b267b6 | ||
|
|
69fe518870 | ||
|
|
6ab3306a22 | ||
|
|
c4e178a4c6 | ||
|
|
397fc9bd79 | ||
|
|
775b368bb9 | ||
|
|
3f5944efc3 | ||
|
|
cad20521d2 | ||
|
|
24c19a6903 | ||
|
|
907dcbaac5 | ||
|
|
b142f339bf | ||
|
|
36fe916089 | ||
|
|
d395c81088 | ||
|
|
29d5187e8c | ||
|
|
87186252a7 | ||
|
|
15667a227a | ||
|
|
5ec6c556af | ||
|
|
01f1b3850f | ||
|
|
40bc5616f5 | ||
|
|
640d5c9c6b | ||
|
|
bab5197fb5 | ||
|
|
1db586cfc6 | ||
|
|
379f99e422 | ||
|
|
3114b4586e | ||
|
|
45fea15a04 | ||
|
|
21230980fc | ||
|
|
fed9e9887d | ||
|
|
7a31d95c73 | ||
|
|
6b57dab091 | ||
|
|
fc3415f7db | ||
|
|
aecec982d0 | ||
|
|
ff494d76ef | ||
|
|
ca19375f50 | ||
|
|
b582883fd9 | ||
|
|
6f77ca1405 | ||
|
|
bb83ca4039 | ||
|
|
cd88f36a97 | ||
|
|
67ba80396d | ||
|
|
5a6ec511b6 | ||
|
|
187a2da74e | ||
|
|
2311d65989 | ||
|
|
34acf56fa9 | ||
|
|
6af88205cb | ||
|
|
d1befddac3 | ||
|
|
76266a5fbf | ||
|
|
d44e1ac0a7 | ||
|
|
0c9bbf8bc2 | ||
|
|
bfb429d7ec | ||
|
|
182c9afd70 | ||
|
|
ca33a6c3f0 | ||
|
|
bea7aa233d | ||
|
|
d6d7be3baf | ||
|
|
e7091baacc | ||
|
|
e81788363d | ||
|
|
a57cd670b8 | ||
|
|
c22c22bf64 | ||
|
|
fc18eddeef | ||
|
|
497587ae2f | ||
|
|
4910c6ba83 | ||
|
|
344d782f95 | ||
|
|
0bfcc861ab | ||
|
|
e036652424 | ||
|
|
e9c968a272 | ||
|
|
cedbe71354 | ||
|
|
66cadca583 | ||
|
|
774e3cb348 | ||
|
|
6f0f1bb64f | ||
|
|
594723985c | ||
|
|
7eb8362d10 | ||
|
|
91968e58cf | ||
|
|
e20e342bd5 | ||
|
|
df4c3f4fbd | ||
|
|
def97800ce | ||
|
|
6c6f85e071 | ||
|
|
06da165c5e | ||
|
|
95d45c2383 | ||
|
|
8e68ff6b4b | ||
|
|
7df3404150 | ||
|
|
b13997485f | ||
|
|
ad7755193f | ||
|
|
958394d55f | ||
|
|
12822e9336 | ||
|
|
ee27689215 | ||
|
|
fd491ec80f | ||
|
|
ea4b39d48a | ||
|
|
05a6efb508 | ||
|
|
f3b68ac434 | ||
|
|
797c5a8141 | ||
|
|
914d526230 | ||
|
|
3b8ddb2f1e | ||
|
|
1bb3a05a11 | ||
|
|
7c27289295 | ||
|
|
5d77421642 | ||
|
|
a46fae030f | ||
|
|
af8a177463 | ||
|
|
4c1163d755 | ||
|
|
8ef4ff9a64 | ||
|
|
a40c69ed47 | ||
|
|
434540dbcd | ||
|
|
af23c989e9 | ||
|
|
ded557901c | ||
|
|
f16bc4cf54 | ||
|
|
d242782c7f | ||
|
|
27c9f6f783 | ||
|
|
be6fc631bf | ||
|
|
ba68572dea | ||
|
|
b6465d263d | ||
|
|
ffe2d44646 | ||
|
|
a1abac1f1f | ||
|
|
5605f3acee | ||
|
|
ba10637048 | ||
|
|
5f5d8947d2 | ||
|
|
c71f07ec88 | ||
|
|
30c2a51ad0 | ||
|
|
cfde64b305 | ||
|
|
b07cb146f7 | ||
|
|
9447a07a10 | ||
|
|
23ff83bbf8 | ||
|
|
c37c04ee7e | ||
|
|
1b2aa767ec | ||
|
|
4ee4f7ce83 | ||
|
|
5cc3d11f3e | ||
|
|
c1dbaed781 | ||
|
|
8af2978ed7 | ||
|
|
2bea9c2267 | ||
|
|
f6ef6485e3 | ||
|
|
c13c1a21cd | ||
|
|
48b66b89ba | ||
|
|
e09e7a88cd | ||
|
|
f6d9962180 | ||
|
|
5d5307af50 | ||
|
|
2a7ea4b1ff | ||
|
|
7d6f1c0784 | ||
|
|
0e96315492 | ||
|
|
a4f291932a | ||
|
|
3e2c474358 | ||
|
|
c551ac874b | ||
|
|
1c3b1c29ec | ||
|
|
7cbec82872 | ||
|
|
8dc96c40be | ||
|
|
67906104b7 | ||
|
|
38fad02bda | ||
|
|
567e4a93cd | ||
|
|
21398f8334 | ||
|
|
195daf80b5 | ||
|
|
df2a179eb7 | ||
|
|
39dfaa4da7 | ||
|
|
b88dd6ec20 | ||
|
|
520b4e9690 | ||
|
|
caf305b548 | ||
|
|
e0508c8180 | ||
|
|
562672a3d6 | ||
|
|
2f3fff09bb | ||
|
|
8d112e8898 | ||
|
|
81a70da6e3 | ||
|
|
063598ce0b | ||
|
|
5115acdc7e | ||
|
|
093ae1b549 | ||
|
|
ea62e2144e | ||
|
|
590026b08f | ||
|
|
4d730eebf3 | ||
|
|
183b44daa3 | ||
|
|
8ee39f837e | ||
|
|
db7c226abd | ||
|
|
5573fdc6b4 | ||
|
|
387364f9fe | ||
|
|
37fd028ec1 | ||
|
|
1ff85d4c4b | ||
|
|
1402752a68 | ||
|
|
4946cc3aec | ||
|
|
a49bcf5971 | ||
|
|
a5028307e9 | ||
|
|
e2aba0636b | ||
|
|
d998cbb8b2 | ||
|
|
ce2ffef438 | ||
|
|
cda641eb95 | ||
|
|
b668c6a1e9 | ||
|
|
72fdecc8d2 | ||
|
|
53b3834022 | ||
|
|
281c8991a2 | ||
|
|
2cb819c0d6 | ||
|
|
ff343f1106 | ||
|
|
1f9f801f71 | ||
|
|
b2f6053415 | ||
|
|
e2bf65470e | ||
|
|
18f9a651f5 | ||
|
|
3fdb6b8801 | ||
|
|
3f99424c9a | ||
|
|
3b5a1fb0d0 | ||
|
|
ae8cbb739f | ||
|
|
e9f3523736 | ||
|
|
efc358ed37 | ||
|
|
2b4b36a3eb | ||
|
|
8ab64ff68a | ||
|
|
947219c33e | ||
|
|
2e4b24fab7 | ||
|
|
da320dba12 | ||
|
|
ddfce992cd | ||
|
|
1b14d6e44d | ||
|
|
44cbbdcf22 | ||
|
|
5d891798e2 | ||
|
|
2b26ce72c7 | ||
|
|
1e190dd3ce | ||
|
|
f1784d3bc6 | ||
|
|
b6a1ccd933 | ||
|
|
0e9a35b52c | ||
|
|
d9717d34a0 | ||
|
|
889e9ff4e5 | ||
|
|
2c239b1e95 | ||
|
|
afeff10b59 | ||
|
|
4055b3a225 | ||
|
|
f70d5740f3 | ||
|
|
1d71e17fb4 | ||
|
|
8df6852749 | ||
|
|
f96ce3a5a6 | ||
|
|
5500dc83c3 | ||
|
|
c3dea4d115 | ||
|
|
06fc6d1d7f | ||
|
|
2aec639e1c | ||
|
|
5c60bbb987 | ||
|
|
f4c73ef127 | ||
|
|
4b87b6f516 | ||
|
|
d8845663d9 | ||
|
|
6ce30567ba | ||
|
|
92947e4ae0 | ||
|
|
3cdd40ed27 | ||
|
|
faf2373e8f | ||
|
|
4e43b8a9e7 | ||
|
|
9a3d3bbd90 | ||
|
|
59407f47bb | ||
|
|
07f3bf7c8d | ||
|
|
eca85f3930 | ||
|
|
4bcb41d47e | ||
|
|
e305495a58 | ||
|
|
43003fb2c2 | ||
|
|
699b8d3deb | ||
|
|
49243408ee | ||
|
|
1a8d8dd6a6 | ||
|
|
5a27ca12f9 | ||
|
|
4a1d2f7507 | ||
|
|
83bc4e3caa | ||
|
|
72c9c5bea5 | ||
|
|
79693de9a7 | ||
|
|
803517d3d1 | ||
|
|
87aa949c77 | ||
|
|
5585bd755d | ||
|
|
567bec03f5 | ||
|
|
d5442b726f | ||
|
|
16b3748827 | ||
|
|
ed443268ce | ||
|
|
9c17cc2510 | ||
|
|
26c98e742f | ||
|
|
fc5f50a949 | ||
|
|
159760a955 | ||
|
|
6294ee2fbd | ||
|
|
03c54b978f | ||
|
|
8b6f99c4c5 | ||
|
|
28dec5fe33 | ||
|
|
3b50998b4f | ||
|
|
820c16b2e2 | ||
|
|
32c45947ab | ||
|
|
b0349fc6e1 | ||
|
|
1309be91f1 | ||
|
|
9089e5aad5 | ||
|
|
fc35e4da08 | ||
|
|
a824b76b79 | ||
|
|
3a8c2b75c2 | ||
|
|
ca58161d1c | ||
|
|
c6e9ba3d89 | ||
|
|
3265417378 | ||
|
|
786a346d0b | ||
|
|
ab77e4d4a4 | ||
|
|
1d6f2020d1 | ||
|
|
ea1009728a | ||
|
|
8d94bf05d2 | ||
|
|
46f14c8f1b | ||
|
|
f053f1c83e | ||
|
|
ca0615ca4a | ||
|
|
0be4612d3c | ||
|
|
8e78d438a0 | ||
|
|
1b136af5a0 | ||
|
|
e8bcb18ed8 | ||
|
|
86b2fa90c3 | ||
|
|
0615f935d9 | ||
|
|
b8244d1f3f | ||
|
|
81d088f79d | ||
|
|
558d5ce485 | ||
|
|
57414330ce | ||
|
|
e6ff3ab9df | ||
|
|
dfafbfb4cf | ||
|
|
b55a44dd66 | ||
|
|
fe7ff327f3 | ||
|
|
a049411995 | ||
|
|
0281de09d3 | ||
|
|
d04dd0af69 | ||
|
|
b4c85510a4 | ||
|
|
e579db441e | ||
|
|
86e0afa4ed | ||
|
|
08d766de1c | ||
|
|
3ea149361a | ||
|
|
6aca5b354b | ||
|
|
89c2e38e83 | ||
|
|
195158b278 | ||
|
|
c70f96ca59 | ||
|
|
37a2b71b52 | ||
|
|
14bd8c888b | ||
|
|
f101cb2d47 | ||
|
|
ce4eb0b79b | ||
|
|
8ab01ebd34 | ||
|
|
fbf9074f92 | ||
|
|
234823228a | ||
|
|
b9599213f7 | ||
|
|
3f4fc5fa29 | ||
|
|
ddd5f56ed7 | ||
|
|
cb8686599b | ||
|
|
69ab6a3e69 | ||
|
|
ffe1621ea0 | ||
|
|
05a966fe15 | ||
|
|
2c3d422964 | ||
|
|
55dd61043a | ||
|
|
9f68e349ff | ||
|
|
1ae53f4d54 | ||
|
|
b5476ce450 | ||
|
|
8d2040c265 | ||
|
|
525c0716ff | ||
|
|
d861ca40a3 | ||
|
|
b78318e1c8 | ||
|
|
e83908c966 | ||
|
|
524369c4ba | ||
|
|
3369f09a39 | ||
|
|
029b4a828e | ||
|
|
7f7c971bc0 | ||
|
|
a2436acaa2 | ||
|
|
01ab40b984 | ||
|
|
790939c31a | ||
|
|
b444588ce6 | ||
|
|
fda5a96cc8 | ||
|
|
3be0a9f2fc | ||
|
|
2a98201737 | ||
|
|
ce8ecced45 | ||
|
|
308922abba | ||
|
|
c90cd42c01 | ||
|
|
c411fe8ae0 | ||
|
|
9211dc6a74 | ||
|
|
6ba161261d | ||
|
|
3f4a519fc8 | ||
|
|
ce77f2dbcb | ||
|
|
ff6f1a65b1 | ||
|
|
17aa84a9f4 | ||
|
|
efeb51f81d | ||
|
|
05eb101fbb | ||
|
|
9527d0be18 | ||
|
|
54ad14abfc | ||
|
|
80a5560db9 | ||
|
|
e2b51af18a | ||
|
|
f6b34a610d | ||
|
|
4ea52040b6 | ||
|
|
d351e49b64 | ||
|
|
4fee137f80 | ||
|
|
c570cd1d1b | ||
|
|
a13a01924e | ||
|
|
ce03bc9939 | ||
|
|
cf795410be | ||
|
|
8f1f3fc449 | ||
|
|
315be74347 | ||
|
|
d1dd7f8bf2 | ||
|
|
78a009a125 | ||
|
|
209c4111dd | ||
|
|
213592f88b | ||
|
|
1e57e1c073 | ||
|
|
8611055877 | ||
|
|
fc97ec431f | ||
|
|
2c0316e77a | ||
|
|
f1aa20e9e8 | ||
|
|
f1c6a2bc78 | ||
|
|
5973ece9f0 | ||
|
|
f44b919bbb | ||
|
|
568d278282 | ||
|
|
958cc63038 | ||
|
|
7d96b5a2e5 | ||
|
|
3215ad48ae | ||
|
|
6b118aa234 | ||
|
|
a0d0d05bd8 | ||
|
|
383b991a7a | ||
|
|
dec359780d | ||
|
|
c934811213 | ||
|
|
f0e2178774 | ||
|
|
94b8935729 | ||
|
|
1a675534b6 | ||
|
|
0cebf41b66 |
27
.github/workflows/editorconfig.yml
vendored
27
.github/workflows/editorconfig.yml
vendored
@@ -1,27 +0,0 @@
|
||||
name: "Checking EditorConfig"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: technote-space/get-diff-action@v3.1.0
|
||||
- name: Fetch editorconfig-checker
|
||||
if: env.GIT_DIFF
|
||||
env:
|
||||
ECC_VERSION: "2.1.0"
|
||||
ECC_URL: "https://github.com/editorconfig-checker/editorconfig-checker/releases/download"
|
||||
run: |
|
||||
curl -sSf -O -L -C - "$ECC_URL/$ECC_VERSION/ec-linux-amd64.tar.gz" && \
|
||||
tar xzf ec-linux-amd64.tar.gz && \
|
||||
mv ./bin/ec-linux-amd64 ./bin/editorconfig-checker
|
||||
- name: Checking EditorConfig
|
||||
if: env.GIT_DIFF
|
||||
run: |
|
||||
./bin/editorconfig-checker -disable-indentation \
|
||||
${{ env.GIT_DIFF }}
|
||||
26
flake.nix
26
flake.nix
@@ -5,7 +5,6 @@
|
||||
|
||||
outputs = { self }:
|
||||
let
|
||||
|
||||
jobs = import ./pkgs/top-level/release.nix {
|
||||
nixpkgs = self;
|
||||
};
|
||||
@@ -28,10 +27,31 @@
|
||||
lib = lib.extend (final: prev: {
|
||||
nixosSystem = { modules, ... } @ args:
|
||||
import ./nixos/lib/eval-config.nix (args // {
|
||||
modules = modules ++
|
||||
[ { system.nixos.versionSuffix =
|
||||
modules =
|
||||
let
|
||||
vmConfig = (import ./nixos/lib/eval-config.nix
|
||||
(args // {
|
||||
modules = modules ++ [ ./nixos/modules/virtualisation/qemu-vm.nix ];
|
||||
})).config;
|
||||
|
||||
vmWithBootLoaderConfig = (import ./nixos/lib/eval-config.nix
|
||||
(args // {
|
||||
modules = modules ++ [
|
||||
./nixos/modules/virtualisation/qemu-vm.nix
|
||||
{ virtualisation.useBootLoader = true; }
|
||||
];
|
||||
})).config;
|
||||
in
|
||||
modules ++ [
|
||||
{
|
||||
system.nixos.versionSuffix =
|
||||
".${final.substring 0 8 (self.lastModifiedDate or self.lastModified)}.${self.shortRev or "dirty"}";
|
||||
system.nixos.revision = final.mkIf (self ? rev) self.rev;
|
||||
|
||||
system.build = {
|
||||
vm = vmConfig.system.build.vm;
|
||||
vmWithBootLoader = vmWithBootLoaderConfig.system.build.vm;
|
||||
};
|
||||
}
|
||||
];
|
||||
});
|
||||
|
||||
@@ -60,7 +60,7 @@ rec {
|
||||
};
|
||||
|
||||
predicates = let
|
||||
featureSupport = feature: x: builtins.elem feature features.${x};
|
||||
featureSupport = feature: x: builtins.elem feature features.${x} or [];
|
||||
in {
|
||||
sse3Support = featureSupport "sse3";
|
||||
ssse3Support = featureSupport "ssse3";
|
||||
|
||||
@@ -47,7 +47,7 @@ rec {
|
||||
armv7a-android-prebuilt = {
|
||||
config = "armv7a-unknown-linux-androideabi";
|
||||
sdkVer = "29";
|
||||
ndkVer = "18b";
|
||||
ndkVer = "21";
|
||||
platform = platforms.armv7a-android;
|
||||
useAndroidPrebuilt = true;
|
||||
};
|
||||
@@ -55,7 +55,7 @@ rec {
|
||||
aarch64-android-prebuilt = {
|
||||
config = "aarch64-unknown-linux-android";
|
||||
sdkVer = "29";
|
||||
ndkVer = "18b";
|
||||
ndkVer = "21";
|
||||
platform = platforms.aarch64-multiplatform;
|
||||
useAndroidPrebuilt = true;
|
||||
};
|
||||
|
||||
@@ -3541,6 +3541,12 @@
|
||||
githubId = 993484;
|
||||
name = "Greg Hale";
|
||||
};
|
||||
immae = {
|
||||
email = "ismael@bouya.org";
|
||||
github = "immae";
|
||||
githubId = 510202;
|
||||
name = "Ismaël Bouya";
|
||||
};
|
||||
imuli = {
|
||||
email = "i@imu.li";
|
||||
github = "imuli";
|
||||
|
||||
@@ -30,7 +30,7 @@ in
|
||||
packagesWith
|
||||
(name: pkg:
|
||||
(
|
||||
if builtins.hasAttr "maintainers" pkg.meta
|
||||
if builtins.hasAttr "meta" pkg && builtins.hasAttr "maintainers" pkg.meta
|
||||
then (
|
||||
if builtins.isList pkg.meta.maintainers
|
||||
then builtins.elem maintainer_ pkg.meta.maintainers
|
||||
|
||||
@@ -29,6 +29,13 @@ with lib.maintainers; {
|
||||
scope = "Maintain ACME-related packages and modules.";
|
||||
};
|
||||
|
||||
cinnamon = {
|
||||
members = [
|
||||
mkg20001
|
||||
];
|
||||
scope = "Maintain Cinnamon desktop environment and applications made by the LinuxMint team.";
|
||||
};
|
||||
|
||||
freedesktop = {
|
||||
members = [ jtojnar worldofpeace ];
|
||||
scope = "Maintain Freedesktop.org packages for graphical desktop.";
|
||||
|
||||
@@ -70,9 +70,13 @@
|
||||
|
||||
<para>
|
||||
If you would like to continue the installation from a different machine you
|
||||
need to activate the SSH daemon via <command>systemctl start
|
||||
sshd</command>. You then must set a password for either <literal>root</literal> or
|
||||
<literal>nixos</literal> with <command>passwd</command> to be able to login.
|
||||
can use activated SSH daemon. You need to copy your ssh key to either
|
||||
<literal>/home/nixos/.ssh/authorized_keys</literal> or
|
||||
<literal>/root/.ssh/authorized_keys</literal> (Tip: For installers with a
|
||||
modifiable filesystem such as the sd-card installer image a key can be manually
|
||||
placed by mounting the image on a different machine). Alternatively you must set
|
||||
a password for either <literal>root</literal> or <literal>nixos</literal> with
|
||||
<command>passwd</command> to be able to login.
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
@@ -26,6 +26,18 @@
|
||||
<listitem>
|
||||
<para>GNOME desktop environment was upgraded to 3.36, see its <link xlink:href="https://help.gnome.org/misc/release-notes/3.36/">release notes</link>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The Cinnamon desktop environment (v4.6) has been added. <varname>services.xserver.desktopManager.cinnamon.enable = true;</varname> to try it out!
|
||||
Remember that, with any new feature it's possible you could run into issues, so please send all support requests to <link xlink:href="https://github.com/NixOS/nixpkgs/issues">github.com/NixOS/nixpkgs</link> to notify the maintainers.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Quickly configure a complete, private, self-hosted video
|
||||
conferencing solution with the new Jitsi Meet module.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<package>maxx</package> package removed along with <varname>services.xserver.desktopManager.maxx</varname> module.
|
||||
@@ -239,6 +251,296 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
||||
<link xlink:href="https://hercules-ci.com">Hercules CI</link> Agent is a specialized build agent for projects built with Nix. See the <link xlink:href="https://nixos.org/nixos/options.html#services.hercules-ci-agent">options</link> and <link xlink:href="https://docs.hercules-ci.com/hercules-ci/getting-started/#deploy-agent">setup</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./hardware/wooting.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./hardware/uinput.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./hardware/video/hidpi.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./hardware/xpadneo.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./programs/hamster.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./programs/steam.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./security/tpm2.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/cluster/k3s/default.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/computing/foldingathome/client.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/computing/torque/mom.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/computing/torque/server.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/desktops/espanso.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/desktops/malcontent.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/development/jupyterhub/default.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/games/teeworlds.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/hardware/xow.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/misc/ankisyncd.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/misc/bazarr.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/misc/matrix-appservice-discord.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/misc/mautrix-telegram.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/misc/pinnwand.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/misc/zigbee2mqtt.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/monitoring/tuptime.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/biboumi.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/blockbook-frontend.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/ncdns.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/ergo.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/go-neb.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/jicofo.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/jitsi-videobridge.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/magic-wormhole-mailbox-server.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/mullvad-vpn.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/nextdns.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/nix-store-gcs-proxy.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/onedrive.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/pixiecore.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/quorum.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/robustirc-bridge.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/smartdns.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/networking/wasabibackend.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/security/privacyidea.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/security/yubikey-agent.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/torrent/rtorrent.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/wayland/cage.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/video/mirakurun.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/web-apps/convos.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/web-apps/engelsystem.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/web-apps/gerrit.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/web-apps/jirafeau.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/web-apps/jitsi-meet.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/web-apps/sogo.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/web-apps/rss-bridge.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/web-servers/molly-brown.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./services/x11/urserver.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./system/boot/initrd-openvpn.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./virtualisation/nixos-containers.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./virtualisation/oci-containers.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>./virtualisation/podman.nix</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</section>
|
||||
@@ -427,8 +729,8 @@ php.override {
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Add option <literal>services.nginx.enableSandbox</literal> to starting Nginx web server with additional sandbox/hardening options.
|
||||
By default, write access to <literal>services.nginx.stateDir</literal> is allowed. To allow writing to other folders,
|
||||
Nginx web server now starting with additional sandbox/hardening options. By default, write access
|
||||
to <literal>services.nginx.stateDir</literal> is allowed. To allow writing to other folders,
|
||||
use <literal>systemd.services.nginx.serviceConfig.ReadWritePaths</literal>
|
||||
<programlisting>
|
||||
systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ];
|
||||
@@ -796,6 +1098,32 @@ CREATE ROLE postgres LOGIN SUPERUSER;
|
||||
<literal>config.systemd.services.${name}.path</literal> now returns a list of paths instead of a colon-separated string.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Caddy module now uses Caddy v2 by default. Caddy v1 can still be used by setting
|
||||
<xref linkend="opt-services.caddy.package"/> to <literal>pkgs.caddy1</literal>.
|
||||
</para>
|
||||
<para>
|
||||
New option <xref linkend="opt-services.caddy.adapter"/> has been added.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <link linkend="opt-services.jellyfin.enable">jellyfin</link> module will use and stay on the Jellyfin version <literal>10.5.5</literal>
|
||||
if <literal>stateVersion</literal> is lower than <literal>20.09</literal>. This is because significant changes were made to the database schema,
|
||||
and it is highly recommended to backup your instance before upgrading. After making your backup, you can upgrade to the latest version either by
|
||||
setting your <literal>stateVersion</literal> to <literal>20.09</literal> or higher, or set the <option>services.jellyfin.package</option> to
|
||||
<literal>pkgs.jellyfin</literal>. If you do not wish to upgrade Jellyfin, but want to change your <literal>stateVersion</literal>, you can set
|
||||
the value of <option>services.jellyfin.package</option> to <literal>pkgs.jellyfin_10_5</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>security.rngd</literal> service is now disabled by default.
|
||||
This choice was made because there's krngd in the linux kernel space making it (for most usecases)
|
||||
functionally redundent.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
@@ -864,6 +1192,12 @@ CREATE ROLE postgres LOGIN SUPERUSER;
|
||||
Default algorithm for ZRAM swap was changed to <literal>zstd</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The installer now enables sshd by default. This improves installation on headless machines especially ARM single-board-computer.
|
||||
To login through ssh, either a password or an ssh key must be set for the root user or the nixos user.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The scripted networking system now uses <literal>.link</literal> files in
|
||||
@@ -1016,7 +1350,11 @@ services.transmission.settings.rpc-bind-address = "0.0.0.0";
|
||||
<para>
|
||||
Nginx module <literal>nginxModules.fastcgi-cache-purge</literal> renamed to official name <literal>nginxModules.cache-purge</literal>.
|
||||
Nginx module <literal>nginxModules.ngx_aws_auth</literal> renamed to official name <literal>nginxModules.aws-auth</literal>.
|
||||
The packages <package>perl</package>, <package>rsync</package> and <package>strace</package> were removed from <option>systemPackages</option>. If you need them, install them again with <code><xref linkend="opt-environment.systemPackages"/> = with pkgs; [ perl rsync strace ];</code> in your <filename>configuration.nix</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The option <option>defaultPackages</option> was added. It installs the packages <package>perl</package>, <package>rsync</package> and <package>strace</package> for now. They were added unconditionally to <option>systemPackages</option> before, but are not strictly necessary for a minimal NixOS install. You can set it to an empty list to have a more minimal system. Be aware that some functionality might still have an impure dependency on those packages, so things might break.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
@@ -1080,5 +1418,20 @@ services.transmission.settings.rpc-bind-address = "0.0.0.0";
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para />
|
||||
<para>
|
||||
Kubernetes has been upgraded to 1.19.1, which also means that the
|
||||
golang version to build it has been bumped to 1.15. This may have
|
||||
consequences for your existing clusters and their certificates. Please
|
||||
consider
|
||||
<link xlink:href="https://relnotes.k8s.io/?markdown=93264">
|
||||
the release notes for Kubernetes 1.19 carefully
|
||||
</link>
|
||||
before upgrading.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
@@ -217,7 +217,7 @@ class Machine:
|
||||
match = re.search("run-(.+)-vm$", cmd)
|
||||
if match:
|
||||
self.name = match.group(1)
|
||||
|
||||
self.logger = args["log"]
|
||||
self.script = args.get("startCommand", self.create_startcommand(args))
|
||||
|
||||
tmp_dir = os.environ.get("TMPDIR", tempfile.gettempdir())
|
||||
@@ -227,7 +227,10 @@ class Machine:
|
||||
os.makedirs(path, mode=0o700, exist_ok=True)
|
||||
return path
|
||||
|
||||
self.state_dir = create_dir("vm-state-{}".format(self.name))
|
||||
self.state_dir = os.path.join(tmp_dir, f"vm-state-{self.name}")
|
||||
if not args.get("keepVmState", False):
|
||||
self.cleanup_statedir()
|
||||
os.makedirs(self.state_dir, mode=0o700, exist_ok=True)
|
||||
self.shared_dir = create_dir("shared-xchg")
|
||||
|
||||
self.booted = False
|
||||
@@ -235,7 +238,6 @@ class Machine:
|
||||
self.pid: Optional[int] = None
|
||||
self.socket = None
|
||||
self.monitor: Optional[socket.socket] = None
|
||||
self.logger: Logger = args["log"]
|
||||
self.allow_reboot = args.get("allowReboot", False)
|
||||
|
||||
@staticmethod
|
||||
@@ -780,9 +782,10 @@ class Machine:
|
||||
self.log("QEMU running (pid {})".format(self.pid))
|
||||
|
||||
def cleanup_statedir(self) -> None:
|
||||
self.log("delete the VM state directory")
|
||||
if os.path.isfile(self.state_dir):
|
||||
if os.path.isdir(self.state_dir):
|
||||
shutil.rmtree(self.state_dir)
|
||||
self.logger.log(f"deleting VM state directory {self.state_dir}")
|
||||
self.logger.log("if you want to keep the VM state, pass --keep-vm-state")
|
||||
|
||||
def shutdown(self) -> None:
|
||||
if not self.booted:
|
||||
@@ -940,10 +943,10 @@ if __name__ == "__main__":
|
||||
for nr, vde_socket, _, _ in vde_sockets:
|
||||
os.environ["QEMU_VDE_SOCKET_{}".format(nr)] = vde_socket
|
||||
|
||||
machines = [create_machine({"startCommand": s}) for s in vm_scripts]
|
||||
for machine in machines:
|
||||
if not cli_args.keep_vm_state:
|
||||
machine.cleanup_statedir()
|
||||
machines = [
|
||||
create_machine({"startCommand": s, "keepVmState": cli_args.keep_vm_state})
|
||||
for s in vm_scripts
|
||||
]
|
||||
machine_eval = [
|
||||
"{0} = machines[{1}]".format(m.name, idx) for idx, m in enumerate(machines)
|
||||
]
|
||||
|
||||
@@ -41,6 +41,12 @@ let
|
||||
pkgs.zstd
|
||||
];
|
||||
|
||||
defaultPackages = map (pkg: setPrio ((pkg.meta.priority or 5) + 3) pkg)
|
||||
[ pkgs.perl
|
||||
pkgs.rsync
|
||||
pkgs.strace
|
||||
];
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
@@ -63,6 +69,21 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
defaultPackages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = defaultPackages;
|
||||
example = literalExample "[]";
|
||||
description = ''
|
||||
Set of packages users expect from a minimal linux istall.
|
||||
Like systemPackages, they appear in
|
||||
/run/current-system/sw. These packages are
|
||||
automatically available to all users, and are
|
||||
automatically updated every time you rebuild the system
|
||||
configuration.
|
||||
If you want a more minimal system, set it to an empty list.
|
||||
'';
|
||||
};
|
||||
|
||||
pathsToLink = mkOption {
|
||||
type = types.listOf types.str;
|
||||
# Note: We need `/lib' to be among `pathsToLink' for NSS modules
|
||||
@@ -102,7 +123,7 @@ in
|
||||
|
||||
config = {
|
||||
|
||||
environment.systemPackages = requiredPackages;
|
||||
environment.systemPackages = requiredPackages ++ config.environment.defaultPackages;
|
||||
|
||||
environment.pathsToLink =
|
||||
[ "/bin"
|
||||
|
||||
56
nixos/modules/hardware/system-76.nix
Normal file
56
nixos/modules/hardware/system-76.nix
Normal file
@@ -0,0 +1,56 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkOption mkEnableOption types mkIf mkMerge optional versionOlder;
|
||||
cfg = config.hardware.system76;
|
||||
|
||||
kpkgs = config.boot.kernelPackages;
|
||||
modules = [ "system76" "system76-io" ] ++ (optional (versionOlder kpkgs.kernel.version "5.5") "system76-acpi");
|
||||
modulePackages = map (m: kpkgs.${m}) modules;
|
||||
moduleConfig = mkIf cfg.kernel-modules.enable {
|
||||
boot.extraModulePackages = modulePackages;
|
||||
|
||||
boot.kernelModules = modules;
|
||||
|
||||
services.udev.packages = modulePackages;
|
||||
};
|
||||
|
||||
firmware-pkg = pkgs.system76-firmware;
|
||||
firmwareConfig = mkIf cfg.firmware-daemon.enable {
|
||||
services.dbus.packages = [ firmware-pkg ];
|
||||
|
||||
systemd.services.system76-firmware-daemon = {
|
||||
description = "The System76 Firmware Daemon";
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${firmware-pkg}/bin/system76-firmware-daemon";
|
||||
|
||||
Restart = "on-failure";
|
||||
};
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
};
|
||||
in {
|
||||
options = {
|
||||
hardware.system76 = {
|
||||
enableAll = mkEnableOption "all recommended configuration for system76 systems";
|
||||
|
||||
firmware-daemon.enable = mkOption {
|
||||
default = cfg.enableAll;
|
||||
example = true;
|
||||
description = "Whether to enable the system76 firmware daemon";
|
||||
type = types.bool;
|
||||
};
|
||||
|
||||
kernel-modules.enable = mkOption {
|
||||
default = cfg.enableAll;
|
||||
example = true;
|
||||
description = "Whether to make the system76 out-of-tree kernel modules available";
|
||||
type = types.bool;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkMerge [ moduleConfig firmwareConfig ];
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
# To build, use:
|
||||
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-raspberrypi4.nix -A config.system.build.sdImage
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../profiles/base.nix
|
||||
../../profiles/installation-device.nix
|
||||
./sd-image.nix
|
||||
];
|
||||
|
||||
boot.loader.grub.enable = false;
|
||||
boot.loader.raspberryPi.enable = true;
|
||||
boot.loader.raspberryPi.version = 4;
|
||||
boot.kernelPackages = pkgs.linuxPackages_rpi4;
|
||||
|
||||
boot.consoleLogLevel = lib.mkDefault 7;
|
||||
|
||||
sdImage = {
|
||||
firmwareSize = 128;
|
||||
firmwarePartitionName = "NIXOS_BOOT";
|
||||
# This is a hack to avoid replicating config.txt from boot.loader.raspberryPi
|
||||
populateFirmwareCommands =
|
||||
"${config.system.build.installBootLoader} ${config.system.build.toplevel} -d ./firmware";
|
||||
# As the boot process is done entirely in the firmware partition.
|
||||
populateRootCommands = "";
|
||||
};
|
||||
|
||||
fileSystems."/boot/firmware" = {
|
||||
# This effectively "renames" the attrsOf entry set in sd-image.nix
|
||||
mountPoint = "/boot";
|
||||
neededForBoot = true;
|
||||
};
|
||||
|
||||
# the installation media is also the installation target,
|
||||
# so we don't want to provide the installation configuration.nix.
|
||||
installer.cloneConfig = false;
|
||||
}
|
||||
@@ -438,15 +438,17 @@ if [ -z "$rollback" ]; then
|
||||
if [[ -z $flake ]]; then
|
||||
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A vm -k "${extraBuildFlags[@]}")"
|
||||
else
|
||||
echo "$0: 'build-vm' is not supported with '--flake'" >&2
|
||||
exit 1
|
||||
nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.vm" \
|
||||
"${extraBuildFlags[@]}" "${lockFlags[@]}"
|
||||
pathToConfig="$(readlink -f ./result)"
|
||||
fi
|
||||
elif [ "$action" = build-vm-with-bootloader ]; then
|
||||
if [[ -z $flake ]]; then
|
||||
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A vmWithBootLoader -k "${extraBuildFlags[@]}")"
|
||||
else
|
||||
echo "$0: 'build-vm-with-bootloader' is not supported with '--flake'" >&2
|
||||
exit 1
|
||||
nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.vmWithBootLoader" \
|
||||
"${extraBuildFlags[@]}" "${lockFlags[@]}"
|
||||
pathToConfig="$(readlink -f ./result)"
|
||||
fi
|
||||
else
|
||||
showSyntax
|
||||
|
||||
@@ -22,7 +22,11 @@ let
|
||||
src = ./nixos-install.sh;
|
||||
inherit (pkgs) runtimeShell;
|
||||
nix = config.nix.package.out;
|
||||
path = makeBinPath [ pkgs.nixUnstable nixos-enter ];
|
||||
path = makeBinPath [
|
||||
pkgs.nixUnstable
|
||||
pkgs.jq
|
||||
nixos-enter
|
||||
];
|
||||
};
|
||||
|
||||
nixos-rebuild =
|
||||
|
||||
@@ -76,7 +76,7 @@ in
|
||||
defaultChannel = mkOption {
|
||||
internal = true;
|
||||
type = types.str;
|
||||
default = "https://nixos.org/channels/nixos-unstable";
|
||||
default = "https://nixos.org/channels/nixos-20.09";
|
||||
description = "Default NixOS channel to which the root user is subscribed.";
|
||||
};
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
./hardware/printers.nix
|
||||
./hardware/raid/hpsa.nix
|
||||
./hardware/steam-hardware.nix
|
||||
./hardware/system-76.nix
|
||||
./hardware/tuxedo-keyboard.nix
|
||||
./hardware/usb-wwan.nix
|
||||
./hardware/onlykey.nix
|
||||
|
||||
@@ -51,22 +51,23 @@ with lib;
|
||||
services.mingetty.helpLine = ''
|
||||
The "nixos" and "root" accounts have empty passwords.
|
||||
|
||||
Type `sudo systemctl start sshd` to start the SSH daemon.
|
||||
You then must set a password for either "root" or "nixos"
|
||||
with `passwd` to be able to login.
|
||||
An ssh daemon is running. You then must set a password
|
||||
for either "root" or "nixos" with `passwd` or add an ssh key
|
||||
to /home/nixos/.ssh/authorized_keys be able to login.
|
||||
'' + optionalString config.services.xserver.enable ''
|
||||
Type `sudo systemctl start display-manager' to
|
||||
start the graphical user interface.
|
||||
'';
|
||||
|
||||
# Allow sshd to be started manually through "systemctl start sshd".
|
||||
# We run sshd by default. Login via root is only possible after adding a
|
||||
# password via "passwd" or by adding a ssh key to /home/nixos/.ssh/authorized_keys.
|
||||
# The latter one is particular useful if keys are manually added to
|
||||
# installation device for head-less systems i.e. arm boards by manually
|
||||
# mounting the storage in a different system.
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
# Allow password login to the installation, if the user sets a password via "passwd"
|
||||
# It is safe as root doesn't have a password by default and SSH is disabled by default
|
||||
permitRootLogin = "yes";
|
||||
};
|
||||
systemd.services.sshd.wantedBy = mkOverride 50 [];
|
||||
|
||||
# Enable wpa_supplicant, but don't start it by default.
|
||||
networking.wireless.enable = mkDefault true;
|
||||
|
||||
@@ -26,6 +26,6 @@ with lib;
|
||||
###### implementation
|
||||
config = mkIf config.programs.qt5ct.enable {
|
||||
environment.variables.QT_QPA_PLATFORMTHEME = "qt5ct";
|
||||
environment.systemPackages = with pkgs; [ qt5ct libsForQt5.qtstyleplugins ];
|
||||
environment.systemPackages = with pkgs; [ qt5ct ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -394,7 +394,7 @@ let
|
||||
"auth optional ${pkgs.pam_mount}/lib/security/pam_mount.so"}
|
||||
${optionalString cfg.enableKwallet
|
||||
("auth optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
|
||||
" kwalletd=${pkgs.libsForQt5.kwallet.bin}/bin/kwalletd5")}
|
||||
" kwalletd=${pkgs.kdeFrameworks.kwallet.bin}/bin/kwalletd5")}
|
||||
${optionalString cfg.enableGnomeKeyring
|
||||
"auth optional ${pkgs.gnome3.gnome-keyring}/lib/security/pam_gnome_keyring.so"}
|
||||
${optionalString cfg.googleAuthenticator.enable
|
||||
@@ -471,7 +471,7 @@ let
|
||||
"session optional ${pkgs.apparmor-pam}/lib/security/pam_apparmor.so order=user,group,default debug"}
|
||||
${optionalString (cfg.enableKwallet)
|
||||
("session optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
|
||||
" kwalletd=${pkgs.libsForQt5.kwallet.bin}/bin/kwalletd5")}
|
||||
" kwalletd=${pkgs.kdeFrameworks.kwallet.bin}/bin/kwalletd5")}
|
||||
${optionalString (cfg.enableGnomeKeyring)
|
||||
"session optional ${pkgs.gnome3.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start"}
|
||||
${optionalString (config.virtualisation.lxc.lxcfs.enable)
|
||||
|
||||
@@ -10,11 +10,10 @@ in
|
||||
security.rngd = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable the rng daemon, which adds entropy from
|
||||
hardware sources of randomness to the kernel entropy pool when
|
||||
available.
|
||||
Whether to enable the rng daemon. Devices that the kernel recognises
|
||||
as entropy sources are handled automatically by krngd.
|
||||
'';
|
||||
};
|
||||
debug = mkOption {
|
||||
@@ -26,12 +25,6 @@ in
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.udev.extraRules = ''
|
||||
KERNEL=="random", TAG+="systemd"
|
||||
SUBSYSTEM=="cpu", ENV{MODALIAS}=="cpu:type:x86,*feature:*009E*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="rngd.service"
|
||||
KERNEL=="hw_random", TAG+="systemd", ENV{SYSTEMD_WANTS}+="rngd.service"
|
||||
'';
|
||||
|
||||
systemd.services.rngd = {
|
||||
bindsTo = [ "dev-random.device" ];
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ in {
|
||||
];
|
||||
execPkgs = lib.concatMap (opt: let
|
||||
isSet = config.serviceConfig ? ${opt};
|
||||
in lib.optional isSet config.serviceConfig.${opt}) execOpts;
|
||||
in lib.flatten (lib.optional isSet config.serviceConfig.${opt})) execOpts;
|
||||
unitAttrs = toplevelConfig.systemd.units."${name}.service";
|
||||
allPkgs = lib.singleton (builtins.toJSON unitAttrs);
|
||||
unitPkgs = if fullUnit then allPkgs else execPkgs;
|
||||
|
||||
@@ -20,7 +20,7 @@ let
|
||||
size = 2048;
|
||||
};
|
||||
CN = top.masterAddress;
|
||||
hosts = cfg.cfsslAPIExtraSANs;
|
||||
hosts = [top.masterAddress] ++ cfg.cfsslAPIExtraSANs;
|
||||
});
|
||||
|
||||
cfsslAPITokenBaseName = "apitoken.secret";
|
||||
@@ -228,7 +228,8 @@ in
|
||||
};
|
||||
private_key = cert.privateKeyOptions;
|
||||
request = {
|
||||
inherit (cert) CN hosts;
|
||||
hosts = [cert.CN] ++ cert.hosts;
|
||||
inherit (cert) CN;
|
||||
key = {
|
||||
algo = "rsa";
|
||||
size = 2048;
|
||||
|
||||
@@ -4,29 +4,19 @@ with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.monit;
|
||||
extraConfig = pkgs.writeText "monitConfig" cfg.extraConfig;
|
||||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
(mkRenamedOptionModule [ "services" "monit" "config" ] ["services" "monit" "extraConfig" ])
|
||||
];
|
||||
|
||||
options.services.monit = {
|
||||
|
||||
enable = mkEnableOption "Monit";
|
||||
|
||||
configFiles = mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [];
|
||||
description = "List of paths to be included in the monitrc file";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
config = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = "Additional monit config as string";
|
||||
description = "monitrc content";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
@@ -34,7 +24,7 @@ in
|
||||
environment.systemPackages = [ pkgs.monit ];
|
||||
|
||||
environment.etc.monitrc = {
|
||||
text = concatMapStringsSep "\n" (path: "include ${path}") (cfg.configFiles ++ [extraConfig]);
|
||||
text = cfg.config;
|
||||
mode = "0400";
|
||||
};
|
||||
|
||||
|
||||
@@ -629,7 +629,9 @@ in {
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
( let
|
||||
legacy = builtins.match "(.*):(.*)" cfg.listenAddress;
|
||||
# Match something with dots (an IPv4 address) or something ending in
|
||||
# a square bracket (an IPv6 addresses) followed by a port number.
|
||||
legacy = builtins.match "(.*\\..*|.*]):([[:digit:]]+)" cfg.listenAddress;
|
||||
in {
|
||||
assertion = legacy == null;
|
||||
message = ''
|
||||
|
||||
@@ -11,7 +11,7 @@ let
|
||||
makeOpenVPNJob = cfg: name:
|
||||
let
|
||||
|
||||
path = (getAttr "openvpn-${name}" config.systemd.services).path;
|
||||
path = makeBinPath (getAttr "openvpn-${name}" config.systemd.services).path;
|
||||
|
||||
upScript = ''
|
||||
#! /bin/sh
|
||||
|
||||
@@ -17,7 +17,7 @@ let
|
||||
plugin_opts = cfg.pluginOpts;
|
||||
} // optionalAttrs (cfg.password != null) {
|
||||
password = cfg.password;
|
||||
};
|
||||
} // cfg.extraConfig;
|
||||
|
||||
configFile = pkgs.writeText "shadowsocks.json" (builtins.toJSON opts);
|
||||
|
||||
@@ -112,6 +112,24 @@ in
|
||||
Options to pass to the plugin if one was specified
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.attrs;
|
||||
default = {};
|
||||
example = ''
|
||||
{
|
||||
nameserver = "8.8.8.8";
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Additional configuration for shadowsocks that is not covered by the
|
||||
provided options. The provided attrset will be serialized to JSON and
|
||||
has to contain valid shadowsocks options. Unfortunately most
|
||||
additional options are undocumented but it's easy to find out what is
|
||||
available by looking into the source code of
|
||||
<link xlink:href="https://github.com/shadowsocks/shadowsocks-libev/blob/master/src/jconf.c"/>
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
@@ -129,7 +147,7 @@ in
|
||||
description = "shadowsocks-libev Daemon";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.shadowsocks-libev cfg.plugin ] ++ optional (cfg.passwordFile != null) pkgs.jq;
|
||||
path = [ pkgs.shadowsocks-libev ] ++ optional (cfg.plugin != null) cfg.plugin ++ optional (cfg.passwordFile != null) pkgs.jq;
|
||||
serviceConfig.PrivateTmp = true;
|
||||
script = ''
|
||||
${optionalString (cfg.passwordFile != null) ''
|
||||
|
||||
@@ -329,5 +329,6 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
meta.doc = ./jitsi-meet.xml;
|
||||
meta.maintainers = lib.teams.jitsi.members;
|
||||
}
|
||||
|
||||
55
nixos/modules/services/web-apps/jitsi-meet.xml
Normal file
55
nixos/modules/services/web-apps/jitsi-meet.xml
Normal file
@@ -0,0 +1,55 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
version="5.0"
|
||||
xml:id="module-services-jitsi-meet">
|
||||
<title>Jitsi Meet</title>
|
||||
<para>
|
||||
With Jitsi Meet on NixOS you can quickly configure a complete,
|
||||
private, self-hosted video conferencing solution.
|
||||
</para>
|
||||
|
||||
<section xml:id="module-services-jitsi-basic-usage">
|
||||
<title>Basic usage</title>
|
||||
<para>
|
||||
A minimal configuration using Let's Encrypt for TLS certificates looks like this:
|
||||
<programlisting>{
|
||||
services.jitsi-meet = {
|
||||
<link linkend="opt-services.jitsi-meet.enable">enable</link> = true;
|
||||
<link linkend="opt-services.jitsi-meet.enable">hostName</link> = "jitsi.example.com";
|
||||
};
|
||||
<link linkend="opt-services.jitsi-videobridge.openFirewall">services.jitsi-videobridge.openFirewall</link> = true;
|
||||
<link linkend="opt-networking.firewall.allowedTCPPorts">networking.firewall.allowedTCPPorts</link> = [ 80 443 ];
|
||||
<link linkend="opt-security.acme.email">security.acme.email</link> = "me@example.com";
|
||||
<link linkend="opt-security.acme.acceptTerms">security.acme.acceptTerms</link> = true;
|
||||
}</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="module-services-jitsi-configuration">
|
||||
<title>Configuration</title>
|
||||
<para>
|
||||
Here is the minimal configuration with additional configurations:
|
||||
<programlisting>{
|
||||
services.jitsi-meet = {
|
||||
<link linkend="opt-services.jitsi-meet.enable">enable</link> = true;
|
||||
<link linkend="opt-services.jitsi-meet.enable">hostName</link> = "jitsi.example.com";
|
||||
<link linkend="opt-services.jitsi-meet.config">config</link> = {
|
||||
enableWelcomePage = false;
|
||||
prejoinPageEnabled = true;
|
||||
defaultLang = "fi";
|
||||
};
|
||||
<link linkend="opt-services.jitsi-meet.interfaceConfig">interfaceConfig</link> = {
|
||||
SHOW_JITSI_WATERMARK = false;
|
||||
SHOW_WATERMARK_FOR_GUESTS = false;
|
||||
};
|
||||
};
|
||||
<link linkend="opt-services.jitsi-videobridge.openFirewall">services.jitsi-videobridge.openFirewall</link> = true;
|
||||
<link linkend="opt-networking.firewall.allowedTCPPorts">networking.firewall.allowedTCPPorts</link> = [ 80 443 ];
|
||||
<link linkend="opt-security.acme.email">security.acme.email</link> = "me@example.com";
|
||||
<link linkend="opt-security.acme.acceptTerms">security.acme.acceptTerms</link> = true;
|
||||
}</programlisting>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
@@ -5,6 +5,26 @@ with lib;
|
||||
let
|
||||
cfg = config.services.caddy;
|
||||
configFile = pkgs.writeText "Caddyfile" cfg.config;
|
||||
|
||||
# v2-specific options
|
||||
isCaddy2 = versionAtLeast cfg.package.version "2.0";
|
||||
tlsConfig = {
|
||||
apps.tls.automation.policies = [{
|
||||
issuer = {
|
||||
inherit (cfg) ca email;
|
||||
module = "acme";
|
||||
};
|
||||
}];
|
||||
};
|
||||
|
||||
adaptedConfig = pkgs.runCommand "caddy-config-adapted.json" { } ''
|
||||
${cfg.package}/bin/caddy adapt \
|
||||
--config ${configFile} --adapter ${cfg.adapter} > $out
|
||||
'';
|
||||
tlsJSON = pkgs.writeText "tls.json" (builtins.toJSON tlsConfig);
|
||||
configJSON = pkgs.runCommand "caddy-config.json" { } ''
|
||||
${pkgs.jq}/bin/jq -s '.[0] * .[1]' ${adaptedConfig} ${tlsJSON} > $out
|
||||
'';
|
||||
in {
|
||||
options.services.caddy = {
|
||||
enable = mkEnableOption "Caddy web server";
|
||||
@@ -13,15 +33,26 @@ in {
|
||||
default = "";
|
||||
example = ''
|
||||
example.com {
|
||||
gzip
|
||||
minify
|
||||
log syslog
|
||||
|
||||
root /srv/http
|
||||
encode gzip
|
||||
log
|
||||
root /srv/http
|
||||
}
|
||||
'';
|
||||
type = types.lines;
|
||||
description = "Verbatim Caddyfile to use";
|
||||
description = ''
|
||||
Verbatim Caddyfile to use.
|
||||
Caddy v2 supports multiple config formats via adapters (see <option>services.caddy.adapter</option>).
|
||||
'';
|
||||
};
|
||||
|
||||
adapter = mkOption {
|
||||
default = "caddyfile";
|
||||
example = "nginx";
|
||||
type = types.str;
|
||||
description = ''
|
||||
Name of the config adapter to use. Not applicable to Caddy v1.
|
||||
See https://caddyserver.com/docs/config-adapters for the full list.
|
||||
'';
|
||||
};
|
||||
|
||||
ca = mkOption {
|
||||
@@ -50,33 +81,46 @@ in {
|
||||
The data directory, for storing certificates. Before 17.09, this
|
||||
would create a .caddy directory. With 17.09 the contents of the
|
||||
.caddy directory are in the specified data directory instead.
|
||||
|
||||
Caddy v2 replaced CADDYPATH with XDG directories.
|
||||
See https://caddyserver.com/docs/conventions#file-locations.
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
default = pkgs.caddy;
|
||||
defaultText = "pkgs.caddy";
|
||||
example = "pkgs.caddy1";
|
||||
type = types.package;
|
||||
description = "Caddy package to use.";
|
||||
description = ''
|
||||
Caddy package to use.
|
||||
To use Caddy v1 (obsolete), set this to <literal>pkgs.caddy1</literal>.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.caddy = {
|
||||
description = "Caddy web server";
|
||||
# upstream unit: https://github.com/caddyserver/caddy/blob/master/dist/init/linux-systemd/caddy.service
|
||||
# upstream unit: https://github.com/caddyserver/dist/blob/master/init/caddy.service
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ]; # systemd-networkd-wait-online.service
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment = mkIf (versionAtLeast config.system.stateVersion "17.09")
|
||||
environment = mkIf (versionAtLeast config.system.stateVersion "17.09" && !isCaddy2)
|
||||
{ CADDYPATH = cfg.dataDir; };
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
ExecStart = if isCaddy2 then ''
|
||||
${cfg.package}/bin/caddy run --config ${configJSON}
|
||||
'' else ''
|
||||
${cfg.package}/bin/caddy -log stdout -log-timestamps=false \
|
||||
-root=/var/tmp -conf=${configFile} \
|
||||
-ca=${cfg.ca} -email=${cfg.email} ${optionalString cfg.agree "-agree"}
|
||||
'';
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -USR1 $MAINPID";
|
||||
ExecReload =
|
||||
if isCaddy2 then
|
||||
"${cfg.package}/bin/caddy reload --config ${configJSON}"
|
||||
else
|
||||
"${pkgs.coreutils}/bin/kill -USR1 $MAINPID";
|
||||
Type = "simple";
|
||||
User = "caddy";
|
||||
Group = "caddy";
|
||||
|
||||
@@ -463,14 +463,6 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
enableSandbox = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Starting Nginx web server with additional sandbox/hardening options.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "nginx";
|
||||
@@ -728,7 +720,6 @@ in
|
||||
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" "CAP_SYS_RESOURCE" ];
|
||||
# Security
|
||||
NoNewPrivileges = true;
|
||||
} // optionalAttrs cfg.enableSandbox {
|
||||
# Sandboxing
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = mkDefault true;
|
||||
|
||||
205
nixos/modules/services/x11/desktop-managers/cinnamon.nix
Normal file
205
nixos/modules/services/x11/desktop-managers/cinnamon.nix
Normal file
@@ -0,0 +1,205 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.xserver.desktopManager.cinnamon;
|
||||
serviceCfg = config.services.cinnamon;
|
||||
|
||||
nixos-gsettings-overrides = pkgs.cinnamon.cinnamon-gsettings-overrides.override {
|
||||
extraGSettingsOverridePackages = cfg.extraGSettingsOverridePackages;
|
||||
extraGSettingsOverrides = cfg.extraGSettingsOverrides;
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.cinnamon = {
|
||||
apps.enable = mkEnableOption "Cinnamon default applications";
|
||||
};
|
||||
|
||||
services.xserver.desktopManager.cinnamon = {
|
||||
enable = mkEnableOption "the cinnamon desktop manager";
|
||||
|
||||
sessionPath = mkOption {
|
||||
default = [];
|
||||
example = literalExample "[ pkgs.gnome3.gpaste ]";
|
||||
description = ''
|
||||
Additional list of packages to be added to the session search path.
|
||||
Useful for GSettings-conditional autostart.
|
||||
|
||||
Note that this should be a last resort; patching the package is preferred (see GPaste).
|
||||
'';
|
||||
};
|
||||
|
||||
extraGSettingsOverrides = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = "Additional gsettings overrides.";
|
||||
};
|
||||
|
||||
extraGSettingsOverridePackages = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.path;
|
||||
description = "List of packages for which gsettings are overridden.";
|
||||
};
|
||||
};
|
||||
|
||||
environment.cinnamon.excludePackages = mkOption {
|
||||
default = [];
|
||||
example = literalExample "[ pkgs.cinnamon.blueberry ]";
|
||||
type = types.listOf types.package;
|
||||
description = "Which packages cinnamon should exclude from the default environment";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
(mkIf (cfg.enable && config.services.xserver.displayManager.lightdm.enable && config.services.xserver.displayManager.lightdm.greeters.gtk.enable) {
|
||||
services.xserver.displayManager.lightdm.greeters.gtk.extraConfig = mkDefault (builtins.readFile "${pkgs.cinnamon.mint-artwork}/etc/lightdm/lightdm-gtk-greeter.conf.d/99_linuxmint.conf");
|
||||
})
|
||||
|
||||
(mkIf cfg.enable {
|
||||
services.xserver.displayManager.sessionPackages = [ pkgs.cinnamon.cinnamon-common ];
|
||||
|
||||
services.xserver.displayManager.sessionCommands = ''
|
||||
if test "$XDG_CURRENT_DESKTOP" = "Cinnamon"; then
|
||||
true
|
||||
${concatMapStrings (p: ''
|
||||
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
|
||||
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
|
||||
fi
|
||||
|
||||
if [ -d "${p}/lib/girepository-1.0" ]; then
|
||||
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
|
||||
fi
|
||||
'') cfg.sessionPath}
|
||||
fi
|
||||
'';
|
||||
|
||||
# Default services
|
||||
hardware.bluetooth.enable = mkDefault true;
|
||||
hardware.pulseaudio.enable = mkDefault true;
|
||||
security.polkit.enable = true;
|
||||
services.accounts-daemon.enable = true;
|
||||
services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
|
||||
services.dbus.packages = with pkgs.cinnamon; [
|
||||
cinnamon-common
|
||||
cinnamon-screensaver
|
||||
nemo
|
||||
xapps
|
||||
];
|
||||
services.cinnamon.apps.enable = mkDefault true;
|
||||
services.gnome3.glib-networking.enable = true;
|
||||
services.gnome3.gnome-keyring.enable = true;
|
||||
services.gvfs.enable = true;
|
||||
services.udisks2.enable = true;
|
||||
services.upower.enable = mkDefault config.powerManagement.enable;
|
||||
services.xserver.libinput.enable = mkDefault true;
|
||||
services.xserver.updateDbusEnvironment = true;
|
||||
networking.networkmanager.enable = mkDefault true;
|
||||
|
||||
# Enable colord server
|
||||
services.colord.enable = true;
|
||||
|
||||
# Enable dconf
|
||||
programs.dconf.enable = true;
|
||||
|
||||
# Enable org.a11y.Bus
|
||||
services.gnome3.at-spi2-core.enable = true;
|
||||
|
||||
# Fix lockscreen
|
||||
security.pam.services = {
|
||||
cinnamon-screensaver = {};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs.cinnamon // pkgs; [
|
||||
desktop-file-utils
|
||||
nixos-artwork.wallpapers.simple-dark-gray
|
||||
onboard
|
||||
sound-theme-freedesktop
|
||||
|
||||
# common-files
|
||||
cinnamon-common
|
||||
cinnamon-session
|
||||
cinnamon-desktop
|
||||
cinnamon-menus
|
||||
|
||||
# utils needed by some scripts
|
||||
killall
|
||||
|
||||
# session requirements
|
||||
cinnamon-screensaver
|
||||
# cinnamon-killer-daemon: provided by cinnamon-common
|
||||
gnome3.networkmanagerapplet # session requirement - also nm-applet not needed
|
||||
|
||||
# packages
|
||||
nemo
|
||||
cinnamon-control-center
|
||||
cinnamon-settings-daemon
|
||||
gnome3.libgnomekbd
|
||||
orca
|
||||
|
||||
# theme
|
||||
gnome3.adwaita-icon-theme
|
||||
hicolor-icon-theme
|
||||
gnome3.gnome-themes-extra
|
||||
gtk3.out
|
||||
mint-artwork
|
||||
mint-themes
|
||||
mint-x-icons
|
||||
mint-y-icons
|
||||
vanilla-dmz
|
||||
|
||||
# other
|
||||
glib # for gsettings
|
||||
shared-mime-info # for update-mime-database
|
||||
xdg-user-dirs
|
||||
];
|
||||
|
||||
# Override GSettings schemas
|
||||
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
|
||||
|
||||
environment.pathsToLink = [
|
||||
# FIXME: modules should link subdirs of `/share` rather than relying on this
|
||||
"/share" # TODO: https://github.com/NixOS/nixpkgs/issues/47173
|
||||
];
|
||||
|
||||
# Shell integration for VTE terminals
|
||||
programs.bash.vteIntegration = mkDefault true;
|
||||
programs.zsh.vteIntegration = mkDefault true;
|
||||
|
||||
# Harmonize Qt5 applications under Pantheon
|
||||
qt5.enable = true;
|
||||
qt5.platformTheme = "gnome";
|
||||
qt5.style = "adwaita";
|
||||
|
||||
# Default Fonts
|
||||
fonts.fonts = with pkgs; [
|
||||
source-code-pro # Default monospace font in 3.32
|
||||
ubuntu_font_family # required for default theme
|
||||
];
|
||||
})
|
||||
|
||||
(mkIf serviceCfg.apps.enable {
|
||||
programs.geary.enable = mkDefault true;
|
||||
programs.gnome-disks.enable = mkDefault true;
|
||||
programs.gnome-terminal.enable = mkDefault true;
|
||||
programs.evince.enable = mkDefault true;
|
||||
programs.file-roller.enable = mkDefault true;
|
||||
|
||||
environment.systemPackages = (with pkgs // pkgs.gnome3 // pkgs.cinnamon; pkgs.gnome3.removePackagesByName [
|
||||
# cinnamon team apps
|
||||
blueberry
|
||||
warpinator
|
||||
|
||||
# external apps shipped with linux-mint
|
||||
hexchat
|
||||
gnome-calculator
|
||||
] config.environment.cinnamon.excludePackages);
|
||||
})
|
||||
];
|
||||
}
|
||||
@@ -21,6 +21,7 @@ in
|
||||
./none.nix ./xterm.nix ./xfce.nix ./plasma5.nix ./lumina.nix
|
||||
./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix
|
||||
./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
|
||||
./cinnamon.nix
|
||||
];
|
||||
|
||||
options = {
|
||||
|
||||
@@ -7,7 +7,9 @@ let
|
||||
xcfg = config.services.xserver;
|
||||
cfg = xcfg.desktopManager.plasma5;
|
||||
|
||||
inherit (pkgs) kdeApplications plasma5 libsForQt5 qt5;
|
||||
inherit (pkgs) kdeApplications kdeFrameworks plasma5;
|
||||
libsForQt5 = pkgs.libsForQt512;
|
||||
qt5 = pkgs.qt512;
|
||||
inherit (pkgs) writeText;
|
||||
|
||||
pulseaudio = config.hardware.pulseaudio;
|
||||
@@ -83,7 +85,7 @@ let
|
||||
# recognize that software that has been removed.
|
||||
rm -fv $HOME/.cache/ksycoca*
|
||||
|
||||
${pkgs.libsForQt5.kservice}/bin/kbuildsycoca5
|
||||
${libsForQt5.kservice}/bin/kbuildsycoca5
|
||||
'';
|
||||
|
||||
set_XDG_CONFIG_HOME = ''
|
||||
@@ -203,7 +205,9 @@ in
|
||||
KERNEL=="i2c-[0-9]*", TAG+="uaccess"
|
||||
'';
|
||||
|
||||
environment.systemPackages = with pkgs; with qt5; with libsForQt5; with plasma5; with kdeApplications;
|
||||
environment.systemPackages =
|
||||
with qt5; with libsForQt5;
|
||||
with plasma5; with kdeApplications; with kdeFrameworks;
|
||||
[
|
||||
frameworkintegration
|
||||
kactivities
|
||||
@@ -293,7 +297,7 @@ in
|
||||
|
||||
qtvirtualkeyboard
|
||||
|
||||
xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
|
||||
pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
|
||||
]
|
||||
|
||||
# Phonon audio backend
|
||||
@@ -301,11 +305,11 @@ in
|
||||
++ lib.optional (cfg.phononBackend == "vlc") libsForQt5.phonon-backend-vlc
|
||||
|
||||
# Optional hardware support features
|
||||
++ lib.optionals config.hardware.bluetooth.enable [ bluedevil bluez-qt openobex obexftp ]
|
||||
++ lib.optionals config.hardware.bluetooth.enable [ bluedevil bluez-qt pkgs.openobex pkgs.obexftp ]
|
||||
++ lib.optional config.networking.networkmanager.enable plasma-nm
|
||||
++ lib.optional config.hardware.pulseaudio.enable plasma-pa
|
||||
++ lib.optional config.powerManagement.enable powerdevil
|
||||
++ lib.optional config.services.colord.enable colord-kde
|
||||
++ lib.optional config.services.colord.enable pkgs.colord-kde
|
||||
++ lib.optionals config.services.samba.enable [ kdenetwork-filesharing pkgs.samba ]
|
||||
++ lib.optional config.services.xserver.wacom.enable wacomtablet;
|
||||
|
||||
|
||||
@@ -64,13 +64,9 @@ in
|
||||
|
||||
services.xserver.displayManager.gdm = {
|
||||
|
||||
enable = mkEnableOption ''
|
||||
GDM, the GNOME Display Manager
|
||||
'';
|
||||
enable = mkEnableOption "GDM, the GNOME Display Manager";
|
||||
|
||||
debug = mkEnableOption ''
|
||||
debugging messages in GDM
|
||||
'';
|
||||
debug = mkEnableOption "debugging messages in GDM";
|
||||
|
||||
# Auto login options specific to GDM
|
||||
autoLogin.delay = mkOption {
|
||||
|
||||
@@ -200,7 +200,9 @@ def main():
|
||||
else:
|
||||
# Update bootloader to latest if needed
|
||||
systemd_version = subprocess.check_output(["@systemd@/bin/bootctl", "--version"], universal_newlines=True).split()[1]
|
||||
sdboot_status = subprocess.check_output(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "status"], universal_newlines=True)
|
||||
# Ideally this should use check_output as well, but as a temporary
|
||||
# work-around for #97433 we ignore any errors.
|
||||
sdboot_status = subprocess.run(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "status"], universal_newlines=True, stdout=subprocess.PIPE).stdout
|
||||
|
||||
# See status_binaries() in systemd bootctl.c for code which generates this
|
||||
m = re.search("^\W+File:.*/EFI/(BOOT|systemd)/.*\.efi \(systemd-boot (\d+)\)$",
|
||||
|
||||
@@ -218,6 +218,7 @@ done
|
||||
# Create device nodes in /dev.
|
||||
@preDeviceCommands@
|
||||
echo "running udev..."
|
||||
ln -sfn /proc/self/fd /dev/fd
|
||||
mkdir -p /etc/systemd
|
||||
ln -sfn @linkUnits@ /etc/systemd/network
|
||||
mkdir -p /etc/udev
|
||||
|
||||
@@ -12,7 +12,7 @@ let
|
||||
|
||||
version = fileContents ../.version;
|
||||
versionSuffix =
|
||||
(if stableBranch then "." else "pre") + "${toString nixpkgs.revCount}.${nixpkgs.shortRev}";
|
||||
(if stableBranch then "." else "beta") + "${toString (nixpkgs.revCount - 242760)}.${nixpkgs.shortRev}";
|
||||
|
||||
# Run the tests for each platform. You can run a test by doing
|
||||
# e.g. ‘nix-build -A tests.login.x86_64-linux’, or equivalently,
|
||||
@@ -186,11 +186,6 @@ in rec {
|
||||
inherit system;
|
||||
});
|
||||
|
||||
sd_image_raspberrypi4 = forMatchingSystems [ "aarch64-linux" ] (system: makeSdImage {
|
||||
module = ./modules/installer/cd-dvd/sd-image-raspberrypi4.nix;
|
||||
inherit system;
|
||||
});
|
||||
|
||||
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
|
||||
ova = forMatchingSystems [ "x86_64-linux" ] (system:
|
||||
|
||||
|
||||
@@ -134,6 +134,10 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
peer0.wait_for_unit("network-online.target")
|
||||
|
||||
peer1.wait_for_unit("3proxy.service")
|
||||
peer1.wait_for_open_port("9999")
|
||||
|
||||
|
||||
@@ -309,7 +309,7 @@ in
|
||||
sanoid = handleTest ./sanoid.nix {};
|
||||
sddm = handleTest ./sddm.nix {};
|
||||
service-runner = handleTest ./service-runner.nix {};
|
||||
shadowsocks = handleTest ./shadowsocks.nix {};
|
||||
shadowsocks = handleTest ./shadowsocks {};
|
||||
shattered-pixel-dungeon = handleTest ./shattered-pixel-dungeon.nix {};
|
||||
shiori = handleTest ./shiori.nix {};
|
||||
signal-desktop = handleTest ./signal-desktop.nix {};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
name = "caddy";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ xfix ];
|
||||
maintainers = [ xfix filalex77 ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
@@ -9,9 +9,10 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
services.caddy.enable = true;
|
||||
services.caddy.config = ''
|
||||
http://localhost {
|
||||
gzip
|
||||
encode gzip
|
||||
|
||||
root ${
|
||||
file_server
|
||||
root * ${
|
||||
pkgs.runCommand "testdir" {} ''
|
||||
mkdir "$out"
|
||||
echo hello world > "$out/example.html"
|
||||
@@ -23,9 +24,10 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
specialisation.etag.configuration = {
|
||||
services.caddy.config = lib.mkForce ''
|
||||
http://localhost {
|
||||
gzip
|
||||
encode gzip
|
||||
|
||||
root ${
|
||||
file_server
|
||||
root * ${
|
||||
pkgs.runCommand "testdir2" {} ''
|
||||
mkdir "$out"
|
||||
echo changed > "$out/example.html"
|
||||
@@ -59,9 +61,11 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
)
|
||||
etag = etag.replace("\r\n", " ")
|
||||
http_code = webserver.succeed(
|
||||
"curl -w \"%{{http_code}}\" -X HEAD -H 'If-None-Match: {}' {}".format(etag, url)
|
||||
"curl --silent --show-error -o /dev/null -w \"%{{http_code}}\" --head -H 'If-None-Match: {}' {}".format(
|
||||
etag, url
|
||||
)
|
||||
)
|
||||
assert int(http_code) == 304, "HTTP code is not 304"
|
||||
assert int(http_code) == 304, "HTTP code is {}, expected 304".format(http_code)
|
||||
return etag
|
||||
|
||||
|
||||
|
||||
@@ -41,5 +41,10 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
||||
)
|
||||
|
||||
assert title == "Gotify"
|
||||
|
||||
# Ensure that the UI responds with a successfuly code and that the
|
||||
# response is not empty
|
||||
result = machine.succeed("curl -fsS localhost:3000")
|
||||
assert result, "HTTP response from localhost:3000 must not be empty!"
|
||||
'';
|
||||
})
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
name = "lxd-nftables";
|
||||
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ patryk27 ];
|
||||
};
|
||||
|
||||
@@ -6,15 +6,14 @@ let
|
||||
#
|
||||
# I've chosen to import Alpine Linux, because its image is turbo-tiny and,
|
||||
# generally, sufficient for our tests.
|
||||
|
||||
alpine-meta = pkgs.fetchurl {
|
||||
url = "https://uk.images.linuxcontainers.org/images/alpine/3.11/i386/default/20200608_13:00/lxd.tar.xz";
|
||||
sha256 = "1hkvaj3rr333zmx1759njy435lps33gl4ks8zfm7m4nqvipm26a0";
|
||||
url = "https://tarballs.nixos.org/alpine/3.12/lxd.tar.xz";
|
||||
hash = "sha256-1tcKaO9lOkvqfmG/7FMbfAEToAuFy2YMewS8ysBKuLA=";
|
||||
};
|
||||
|
||||
alpine-rootfs = pkgs.fetchurl {
|
||||
url = "https://uk.images.linuxcontainers.org/images/alpine/3.11/i386/default/20200608_13:00/rootfs.tar.xz";
|
||||
sha256 = "1v82zdra4j5xwsff09qlp7h5vbsg54s0j7rdg4rynichfid3r347";
|
||||
url = "https://tarballs.nixos.org/alpine/3.12/rootfs.tar.xz";
|
||||
hash = "sha256-Tba9sSoaiMtQLY45u7p5DMqXTSDgs/763L/SQp0bkCA=";
|
||||
};
|
||||
|
||||
lxd-config = pkgs.writeText "config.yaml" ''
|
||||
@@ -44,8 +43,10 @@ let
|
||||
type: disk
|
||||
'';
|
||||
|
||||
|
||||
in {
|
||||
name = "lxd";
|
||||
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ patryk27 ];
|
||||
};
|
||||
@@ -53,7 +54,7 @@ in {
|
||||
machine = { lib, ... }: {
|
||||
virtualisation = {
|
||||
# Since we're testing `limits.cpu`, we've gotta have a known number of
|
||||
# cores to lay on
|
||||
# cores to lean on
|
||||
cores = 2;
|
||||
|
||||
# Ditto, for `limits.memory`
|
||||
@@ -67,6 +68,7 @@ in {
|
||||
testScript = ''
|
||||
machine.wait_for_unit("sockets.target")
|
||||
machine.wait_for_unit("lxd.service")
|
||||
machine.wait_for_file("/var/lib/lxd/unix.socket")
|
||||
|
||||
# It takes additional second for lxd to settle
|
||||
machine.sleep(1)
|
||||
|
||||
@@ -27,12 +27,13 @@ in
|
||||
start_all()
|
||||
machine.wait_for_unit("magneticod")
|
||||
machine.wait_for_unit("magneticow")
|
||||
machine.wait_for_open_port(${toString port})
|
||||
machine.succeed(
|
||||
"${pkgs.curl}/bin/curl "
|
||||
"${pkgs.curl}/bin/curl --fail "
|
||||
+ "-u user:password http://localhost:${toString port}"
|
||||
)
|
||||
assert "Unauthorised." in machine.succeed(
|
||||
"${pkgs.curl}/bin/curl "
|
||||
machine.fail(
|
||||
"${pkgs.curl}/bin/curl --fail "
|
||||
+ "-u user:wrongpwd http://localhost:${toString port}"
|
||||
)
|
||||
machine.shutdown()
|
||||
|
||||
@@ -18,7 +18,6 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
];
|
||||
services.nginx.enable = true;
|
||||
services.nginx.package = pkgs.nginx-lua;
|
||||
services.nginx.enableSandbox = true;
|
||||
services.nginx.virtualHosts.localhost = {
|
||||
extraConfig = ''
|
||||
location /test1-write {
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
name = "shadowsocks";
|
||||
{ name
|
||||
, plugin ? null
|
||||
, pluginOpts ? ""
|
||||
}:
|
||||
|
||||
import ../make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
inherit name;
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ hmenke ];
|
||||
};
|
||||
@@ -22,8 +27,9 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
port = 8488;
|
||||
fastOpen = false;
|
||||
mode = "tcp_and_udp";
|
||||
plugin = "${pkgs.shadowsocks-v2ray-plugin}/bin/v2ray-plugin";
|
||||
pluginOpts = "server;host=nixos.org";
|
||||
} // lib.optionalAttrs (plugin != null) {
|
||||
inherit plugin;
|
||||
pluginOpts = "server;${pluginOpts}";
|
||||
};
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
@@ -42,10 +48,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
description = "connect to shadowsocks";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = with pkgs; [
|
||||
shadowsocks-libev
|
||||
shadowsocks-v2ray-plugin
|
||||
];
|
||||
path = with pkgs; [ shadowsocks-libev ];
|
||||
script = ''
|
||||
exec ss-local \
|
||||
-s 192.168.0.1 \
|
||||
@@ -54,8 +57,9 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
-k 'pa$$w0rd' \
|
||||
-m chacha20-ietf-poly1305 \
|
||||
-a nobody \
|
||||
--plugin "${pkgs.shadowsocks-v2ray-plugin}/bin/v2ray-plugin" \
|
||||
--plugin-opts "host=nixos.org"
|
||||
${lib.optionalString (plugin != null) ''
|
||||
--plugin "${plugin}" --plugin-opts "${pluginOpts}"
|
||||
''}
|
||||
'';
|
||||
};
|
||||
};
|
||||
16
nixos/tests/shadowsocks/default.nix
Normal file
16
nixos/tests/shadowsocks/default.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
{ system ? builtins.currentSystem
|
||||
, config ? { }
|
||||
, pkgs ? import ../../.. { inherit system config; }
|
||||
}:
|
||||
|
||||
{
|
||||
"basic" = import ./common.nix {
|
||||
name = "basic";
|
||||
};
|
||||
|
||||
"v2ray-plugin" = import ./common.nix {
|
||||
name = "v2ray-plugin";
|
||||
plugin = "${pkgs.shadowsocks-v2ray-plugin}/bin/v2ray-plugin";
|
||||
pluginOpts = "host=nixos.org";
|
||||
};
|
||||
}
|
||||
@@ -31,8 +31,13 @@ import ./make-test-python.nix ({ pkgs, ...} :
|
||||
# start signal desktop
|
||||
machine.execute("su - alice -c signal-desktop &")
|
||||
|
||||
# wait for the "Link your phone to Signal Desktop" message
|
||||
machine.wait_for_text("Link your phone to Signal Desktop")
|
||||
# Wait for the Signal window to appear. Since usually the tests
|
||||
# are run sandboxed and therfore with no internet, we can not wait
|
||||
# for the message "Link your phone ...". Nor should we wait for
|
||||
# the "Failed to connect to server" message, because when manually
|
||||
# running this test it will be not sandboxed.
|
||||
machine.wait_for_text("Signal")
|
||||
machine.wait_for_text("File Edit View Window Help")
|
||||
machine.screenshot("signal_desktop")
|
||||
'';
|
||||
})
|
||||
|
||||
@@ -5,6 +5,10 @@ import ../make-test-python.nix ({ pkgs, ... }: {
|
||||
};
|
||||
nodes = {
|
||||
client = { nodes, pkgs, ... }: {
|
||||
networking.extraHosts = ''
|
||||
${nodes.server.config.networking.primaryIPAddress} example.com
|
||||
'';
|
||||
|
||||
environment.systemPackages = [
|
||||
(pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = nodes.server.config.networking.primaryIPAddress; })
|
||||
];
|
||||
@@ -46,6 +50,11 @@ import ../make-test-python.nix ({ pkgs, ... }: {
|
||||
module: ejabberd_service
|
||||
access: local
|
||||
shaper: fast
|
||||
-
|
||||
port: 5444
|
||||
module: ejabberd_http
|
||||
request_handlers:
|
||||
"/upload": mod_http_upload
|
||||
|
||||
## Disabling digest-md5 SASL authentication. digest-md5 requires plain-text
|
||||
## password storage (see auth_password_format option).
|
||||
@@ -180,6 +189,7 @@ import ../make-test-python.nix ({ pkgs, ... }: {
|
||||
mod_client_state: {}
|
||||
mod_configure: {} # requires mod_adhoc
|
||||
## mod_delegation: {} # for xep0356
|
||||
mod_disco: {}
|
||||
#mod_irc:
|
||||
# host: "irc.@HOST@"
|
||||
# default_encoding: "utf-8"
|
||||
@@ -187,9 +197,9 @@ import ../make-test-python.nix ({ pkgs, ... }: {
|
||||
## mod_http_fileserver:
|
||||
## docroot: "/var/www"
|
||||
## accesslog: "/var/log/ejabberd/access.log"
|
||||
#mod_http_upload:
|
||||
# thumbnail: false # otherwise needs the identify command from ImageMagick installed
|
||||
# put_url: "https://@HOST@:5444"
|
||||
mod_http_upload:
|
||||
thumbnail: false # otherwise needs the identify command from ImageMagick installed
|
||||
put_url: "http://@HOST@:5444/upload"
|
||||
## # docroot: "@HOME@/upload"
|
||||
#mod_http_upload_quota:
|
||||
# max_days: 14
|
||||
|
||||
@@ -36,7 +36,11 @@ class CthonTest(ClientXMPP):
|
||||
def timeout_callback(arg):
|
||||
log.error("ERROR: Cannot upload file. XEP_0363 seems broken")
|
||||
sys.exit(1)
|
||||
url = await self['xep_0363'].upload_file("${dummyFile}",timeout=10, timeout_callback=timeout_callback)
|
||||
try:
|
||||
url = await self['xep_0363'].upload_file("${dummyFile}",timeout=10, timeout_callback=timeout_callback)
|
||||
except:
|
||||
log.error("ERROR: Cannot run upload command. XEP_0363 seems broken")
|
||||
sys.exit(1)
|
||||
log.info('Upload success!')
|
||||
# Test MUC
|
||||
self.plugin['xep_0045'].join_muc('testMucRoom', 'cthon98', wait=True)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig
|
||||
, qtbase, qtsvg, qttools
|
||||
, qtbase, qtsvg, qttools, perl
|
||||
|
||||
# Cantata doesn't build with cdparanoia enabled so we disable that
|
||||
# default for now until I (or someone else) figure it out.
|
||||
@@ -38,6 +38,8 @@ let
|
||||
|
||||
withUdisks = (withTaglib && withDevices);
|
||||
|
||||
perl' = perl.withPackages (ppkgs: [ ppkgs.URI ]);
|
||||
|
||||
in mkDerivation {
|
||||
name = "${pname}-${version}";
|
||||
|
||||
@@ -48,7 +50,18 @@ in mkDerivation {
|
||||
sha256 = "0ix7xp352bziwz31mw79y7wxxmdn6060p8ry2px243ni1lz1qx1c";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase qtsvg ]
|
||||
patches = [
|
||||
# Cantata wants to check if perl is in the PATH at runtime, but we
|
||||
# patchShebangs the playlists scripts, making that unnecessary (perl will
|
||||
# always be available because it's a dependency)
|
||||
./dont-check-for-perl-in-PATH.diff
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs playlists
|
||||
'';
|
||||
|
||||
buildInputs = [ qtbase qtsvg perl' ]
|
||||
++ lib.optionals withTaglib [ taglib taglib_extras ]
|
||||
++ lib.optionals withReplaygain [ ffmpeg_3 speex mpg123 ]
|
||||
++ lib.optional withHttpStream qtmultimedia
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
diff --git a/playlists/dynamicplaylists.cpp b/playlists/dynamicplaylists.cpp
|
||||
index 07b6dce3..6a3f97c9 100644
|
||||
--- a/playlists/dynamicplaylists.cpp
|
||||
+++ b/playlists/dynamicplaylists.cpp
|
||||
@@ -211,11 +211,6 @@ void DynamicPlaylists::start(const QString &name)
|
||||
return;
|
||||
}
|
||||
|
||||
- if (Utils::findExe("perl").isEmpty()) {
|
||||
- emit error(tr("You need to install \"perl\" on your system in order for Cantata's dynamic mode to function."));
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
QString fName(Utils::dataDir(rulesDir, false)+name+constExtension);
|
||||
|
||||
if (!QFile::exists(fName)) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchurl, pkgconfig, sconsPackages, qt4, lash, libjack2, jack ? libjack2 }:
|
||||
{ stdenv, fetchurl, pkgconfig, sconsPackages, qt4, lash, libjack2, jack ? libjack2, alsaLib }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "jackmix-0.5.2";
|
||||
@@ -14,6 +14,7 @@ stdenv.mkDerivation {
|
||||
qt4
|
||||
lash
|
||||
jack
|
||||
alsaLib
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sonic-lineup";
|
||||
version = "1.0.1";
|
||||
version = "1.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://code.soundsoftware.ac.uk/attachments/download/2610/${pname}-${version}.tar.gz";
|
||||
sha256 = "0w4v5zr81d8fh97y820r0vj1rrbl0kwgvhfkdnyl4hiabs97b1i7";
|
||||
url = "https://code.soundsoftware.ac.uk/attachments/download/2765/${pname}-${version}.tar.gz";
|
||||
sha256 = "0k45k9fawcm4s5yy05x00pgww7j8m7k2cxcc7g0fn9vqy7vcbq9h";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "vorta";
|
||||
version = "0.7.0";
|
||||
version = "0.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "borgbase";
|
||||
repo = "vorta";
|
||||
rev = "v${version}";
|
||||
sha256 = "1hz19c0lphwql881n7w0ls39bbl63lccx57c3klwfyzgsxcgdy2j";
|
||||
sha256 = "069fq5gv324l2ap3g6m6i12lhq1iqm27dsmaagyc3sva945j0gxw";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -268,12 +268,12 @@ in
|
||||
|
||||
clion = buildClion rec {
|
||||
name = "clion-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
description = "C/C++ IDE. New. Intelligent. Cross-platform";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
|
||||
sha256 = "1j80k6r4nbr8abwkpx78sy3jzq3jsywn2k6g4mjx6h0adwxswymm"; /* updated by script */
|
||||
sha256 = "1sma3ay02lajg6q1g3k05gi7jdja7cf9rxb9v0w62s6z87l719bv"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-clion";
|
||||
update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
|
||||
@@ -281,12 +281,12 @@ in
|
||||
|
||||
datagrip = buildDataGrip rec {
|
||||
name = "datagrip-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.2"; /* updated by script */
|
||||
description = "Your Swiss Army Knife for Databases and SQL";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/datagrip/${name}.tar.gz";
|
||||
sha256 = "0d0m6v4lr6qhi79csdpcyiyd2hnhlsan9lpnjmhkdxd84i1dl15a"; /* updated by script */
|
||||
sha256 = "1bk6z6mirrykypb4j2wa4744v0m9y1n7973qgj6z3dsifrq9q7zc"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-datagrip";
|
||||
update-channel = "DataGrip RELEASE";
|
||||
@@ -294,12 +294,12 @@ in
|
||||
|
||||
goland = buildGoland rec {
|
||||
name = "goland-${version}";
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
version = "2020.2.2"; /* updated by script */
|
||||
description = "Up and Coming Go IDE";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/go/${name}.tar.gz";
|
||||
sha256 = "15jd2yn4g3lya54ppcp8b0bvf2pp2khdvqba2g1aml16d5z8mkq6"; /* updated by script */
|
||||
sha256 = "1r6bbx5hsg82l1pa3syfdi8nbsz6rrfszsw4dmwcnxvccp2hs3mh"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-goland";
|
||||
update-channel = "GoLand RELEASE";
|
||||
@@ -307,12 +307,12 @@ in
|
||||
|
||||
idea-community = buildIdea rec {
|
||||
name = "idea-community-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
|
||||
license = stdenv.lib.licenses.asl20;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
|
||||
sha256 = "0rymyyhgm42i487dhlxh78shyvq4hd56frgz7wrqf85hg2j5ha0y"; /* updated by script */
|
||||
sha256 = "055hy5jy5151x3gf8hn7ar36br545qr253fz9wrc3b49wydg01x1"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-idea-ce";
|
||||
update-channel = "IntelliJ IDEA RELEASE";
|
||||
@@ -320,12 +320,12 @@ in
|
||||
|
||||
idea-ultimate = buildIdea rec {
|
||||
name = "idea-ultimate-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jbr.tar.gz";
|
||||
sha256 = "00mbf8asxjdnfciz6bl8b83kqknqdnars5w5w5w38rmza53pzxsi"; /* updated by script */
|
||||
sha256 = "1g18l3malsyn7dij4w83yfcsb8msa0s89mzlld3dby8hr9bq0aqm"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-idea";
|
||||
update-channel = "IntelliJ IDEA RELEASE";
|
||||
@@ -333,12 +333,12 @@ in
|
||||
|
||||
mps = buildMps rec {
|
||||
name = "mps-${version}";
|
||||
version = "2020.1.3"; /* updated by script */
|
||||
version = "2020.1.4"; /* updated by script */
|
||||
description = "Create your own domain-specific language";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/mps/2020.1/MPS-${version}.tar.gz";
|
||||
sha256 = "1ncvq834vn47pmh3q875hgqi4m7h3inljp89w3jwwhjn3g985ysz"; /* updated by script */
|
||||
sha256 = "1j5n100fl8yvfla2slm95wv499azwzzxigp1kdcaj8xbc0a0mp7c"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-mps";
|
||||
update-channel = "MPS RELEASE";
|
||||
@@ -346,12 +346,12 @@ in
|
||||
|
||||
phpstorm = buildPhpStorm rec {
|
||||
name = "phpstorm-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
description = "Professional IDE for Web and PHP developers";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
|
||||
sha256 = "1zxhb2w7nivnx8habcf5vii6bwzaihs5x8smy0zf8ngv3xwr6vjc"; /* updated by script */
|
||||
sha256 = "14hz6w5lgn8ddscicm4s9xhi07j5adsq0bmyr8amzmj5q6jgw4p9"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-phpstorm";
|
||||
update-channel = "PhpStorm RELEASE";
|
||||
@@ -359,12 +359,12 @@ in
|
||||
|
||||
pycharm-community = buildPycharm rec {
|
||||
name = "pycharm-community-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
description = "PyCharm Community Edition";
|
||||
license = stdenv.lib.licenses.asl20;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||
sha256 = "12pp3xp74dzgjrv2nz83dnqycb250kkgqlb3skjkdx9pabmfxck0"; /* updated by script */
|
||||
sha256 = "0kml58v6clqj0j0vlvghrywxym2n9h41izazzn4srn7wjj9010fa"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-pycharm-ce";
|
||||
update-channel = "PyCharm RELEASE";
|
||||
@@ -372,12 +372,12 @@ in
|
||||
|
||||
pycharm-professional = buildPycharm rec {
|
||||
name = "pycharm-professional-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
description = "PyCharm Professional Edition";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||
sha256 = "0xq0nba31yc7cm1lbgkmgfbr5kp5fq5k7j2n6kampm2hyx5fa0ak"; /* updated by script */
|
||||
sha256 = "0ml9fg1dlfg8sdp9n8nlsj7z88dx0ac1kvlpk61p7q5di1lyxc94"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-pycharm";
|
||||
update-channel = "PyCharm RELEASE";
|
||||
@@ -385,12 +385,12 @@ in
|
||||
|
||||
rider = buildRider rec {
|
||||
name = "rider-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
|
||||
sha256 = "0fxgdxsrrl659lh45slikgck6jld90rd6nnj8gj3aixq0yp5pkix"; /* updated by script */
|
||||
sha256 = "0xrk7n0mprzy7dfkx3vj5wasw5031jl61qkh89y6w031hp77vq7n"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-rider";
|
||||
update-channel = "Rider RELEASE";
|
||||
@@ -398,12 +398,12 @@ in
|
||||
|
||||
ruby-mine = buildRubyMine rec {
|
||||
name = "ruby-mine-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
description = "The Most Intelligent Ruby and Rails IDE";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
|
||||
sha256 = "1caxd5qcxwwrdy3ma87gnywr5czg3lam1n2gwbnc7hdxgfnvn3qz"; /* updated by script */
|
||||
sha256 = "1pkzql710bc4qdz5pdhh0yx9wkqx85qwkwm1jvvvxbvbsj299vcb"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-rubymine";
|
||||
update-channel = "RubyMine RELEASE";
|
||||
@@ -411,12 +411,12 @@ in
|
||||
|
||||
webstorm = buildWebStorm rec {
|
||||
name = "webstorm-${version}";
|
||||
version = "2020.2"; /* updated by script */
|
||||
version = "2020.2.1"; /* updated by script */
|
||||
description = "Professional IDE for Web and JavaScript development";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
||||
sha256 = "100j2q9hz0a50n3x3khk7hap7b496g6sx0y6q7n7vy2zayh5ibm5"; /* updated by script */
|
||||
sha256 = "1sx67bms90fsc1bf6pqz1rd1x9aysj0xxb8d7cnclz6bv8kzhgfp"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-webstorm";
|
||||
update-channel = "WebStorm RELEASE";
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
, proj, gdal, geos, sqlite, postgresql, libmysqlclient, python2Packages, libLAS, proj-datumgrid
|
||||
}:
|
||||
|
||||
let inherit (stdenv) lib; in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "grass";
|
||||
version = "7.6.1";
|
||||
@@ -42,7 +44,7 @@ stdenv.mkDerivation rec {
|
||||
"--with-postgres-libs=${postgresql.lib}/lib/"
|
||||
# it complains about missing libmysqld but doesn't really seem to need it
|
||||
"--with-mysql"
|
||||
"--with-mysql-includes=${libmysqlclient}/include/mysql"
|
||||
"--with-mysql-includes=${lib.getDev libmysqlclient}/include/mysql"
|
||||
"--with-mysql-libs=${libmysqlclient}/lib/mysql"
|
||||
"--with-blas"
|
||||
"--with-liblas=${libLAS}/bin/liblas-config"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
, qtmultimedia
|
||||
, qtsvg
|
||||
, qttools
|
||||
, libsecret
|
||||
|
||||
# optional client deps
|
||||
, giflib
|
||||
@@ -45,6 +46,7 @@ let
|
||||
qtmultimedia
|
||||
qtsvg
|
||||
qttools
|
||||
libsecret
|
||||
# optional:
|
||||
giflib # gif animation export support
|
||||
kdnssd # local server discovery with Zeroconf
|
||||
|
||||
@@ -1,26 +1,32 @@
|
||||
{ stdenv, fetchFromGitHub, cmake, qt4 }:
|
||||
{ lib, mkDerivation, fetchpatch, fetchFromGitHub, cmake, qttools, qtwebkit }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
mkDerivation rec {
|
||||
pname = "fontmatrix";
|
||||
version = "0.6.0";
|
||||
version = "0.6.0-qt5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fontmatrix";
|
||||
owner = "fcoiffie";
|
||||
repo = "fontmatrix";
|
||||
rev = "v${version}";
|
||||
sha256 = "0aqndj1jhm6hjpwmj1qm92z2ljh7w78a5ff5ag47qywqha1ngn05";
|
||||
rev = "1ff8382d8c85c18d9962918f461341ff4fe21993";
|
||||
sha256 = "0yx1gbsjj9ddq1kiqplif1w5x5saw250zbmhmd4phqmaqzr60w0h";
|
||||
};
|
||||
|
||||
buildInputs = [ qt4 ];
|
||||
# Add missing QAction include
|
||||
patches = [ (fetchpatch {
|
||||
url = "https://github.com/fcoiffie/fontmatrix/commit/dc6de8c414ae21516b72daead79c8db88309b102.patch";
|
||||
sha256 = "092860fdyf5gq67jqfxnlgwzjgpizi6j0njjv3m62aiznrhig7c8";
|
||||
})];
|
||||
|
||||
buildInputs = [ qttools qtwebkit ];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
meta = with lib; {
|
||||
description = "Fontmatrix is a free/libre font explorer for Linux, Windows and Mac";
|
||||
homepage = "https://github.com/fontmatrix/fontmatrix";
|
||||
license = licenses.gpl2;
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{ stdenv, fetchFromGitHub, fetchpatch
|
||||
, pkgconfig, wrapQtAppsHook
|
||||
, poppler, qt5, gnuplot
|
||||
, poppler, gnuplot
|
||||
, qmake, qtbase, qttools
|
||||
}:
|
||||
|
||||
# This package only builds ktikz without KDE integration because KDE4 is
|
||||
@@ -36,10 +37,10 @@ stdenv.mkDerivation rec {
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig qt5.qttools qt5.qmake wrapQtAppsHook ];
|
||||
QT_PLUGIN_PATH = "${qt5.qtbase}/${qt5.qtbase.qtPluginPrefix}";
|
||||
nativeBuildInputs = [ pkgconfig qttools qmake wrapQtAppsHook ];
|
||||
QT_PLUGIN_PATH = "${qtbase}/${qtbase.qtPluginPrefix}";
|
||||
|
||||
buildInputs = [ qt5.qtbase poppler ];
|
||||
buildInputs = [ qtbase poppler ];
|
||||
enableParallelBuilding = true;
|
||||
|
||||
qmakeFlags = [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchFromGitHub, fftw, ncurses5, libpulseaudio, makeWrapper }:
|
||||
{ stdenv, fetchFromGitHub, cmake, fftw, ncurses5, libpulseaudio, makeWrapper }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.8";
|
||||
@@ -15,13 +15,13 @@ stdenv.mkDerivation rec {
|
||||
sed '1i#include <cmath>' -i src/Transformer/SpectrumCircleTransformer.cpp
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
buildInputs = [ fftw ncurses5 libpulseaudio makeWrapper ];
|
||||
|
||||
buildFlags = [ "ENABLE_PULSE=1" ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp build/vis $out/bin/vis
|
||||
postInstall = ''
|
||||
# See https://github.com/dpayne/cli-visualizer/issues/62#issuecomment-330738075
|
||||
wrapProgram $out/bin/vis --set TERM rxvt-256color
|
||||
'';
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
{ lib, fetchFromGitHub, python3Packages, qtbase, wrapQtAppsHook, secp256k1 }:
|
||||
{ lib, fetchFromGitHub, python3Packages, qtbase, fetchpatch, wrapQtAppsHook
|
||||
, secp256k1 }:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "electron-cash";
|
||||
version = "4.0.14";
|
||||
version = "4.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Electron-Cash";
|
||||
repo = "Electron-Cash";
|
||||
rev = version;
|
||||
sha256 = "1dp7cj1185h6xfz6jzh0iq58zvg3wq9hl96bkgxkf5h4ygni2vm6";
|
||||
sha256 = "1ccfm6kkmbkvykfdzrisxvr0lx9kgq4l43ixk6v3xnvhnbfwz4s2";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
@@ -35,6 +36,15 @@ python3Packages.buildPythonApplication rec {
|
||||
|
||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
||||
|
||||
patches = [
|
||||
# Patch a failed test, this can be removed in next version
|
||||
(fetchpatch {
|
||||
url =
|
||||
"https://github.com/Electron-Cash/Electron-Cash/commit/1a9122d59be0c351b14c174a60880c2e927e6168.patch";
|
||||
sha256 = "0zw629ypn9jxb1y124s3dkbbf2q3wj1i97j16lzdxpjy3sk0p5hk";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace contrib/requirements/requirements.txt \
|
||||
--replace "qdarkstyle==2.6.8" "qdarkstyle<3"
|
||||
@@ -43,9 +53,7 @@ python3Packages.buildPythonApplication rec {
|
||||
--replace "(share_dir" "(\"share\""
|
||||
'';
|
||||
|
||||
checkInputs = with python3Packages; [
|
||||
pytest
|
||||
];
|
||||
checkInputs = with python3Packages; [ pytest ];
|
||||
|
||||
checkPhase = ''
|
||||
unset HOME
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nwg-launchers";
|
||||
version = "0.2.0";
|
||||
version = "0.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nwg-piotr";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1mlym0mpg6njwgwniwlk95fk6wfwlzq8nwmkb5mkjlm2nqv5bdv1";
|
||||
sha256 = "1p1bwsn7l4vp7y183735pgsfbh7dssdfn0wjzacl4s87arjdcgvb";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "tipp10";
|
||||
version = "3.2.0";
|
||||
version = "unstable-20200616";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "tipp10";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0fav5jlw6lw78iqrj7a65b8vd50hhyyaqyzmfrvyxirpsqhjk1v7";
|
||||
repo = "tipp10";
|
||||
rev = "2dd6d45c8a91cff7075675d8875721456cdd5f1b";
|
||||
sha256 = "16x51rv4r6cz5vsmrfbakqzbfxy456h82ibzacknp35f41cjdqq4";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake qttools ];
|
||||
|
||||
@@ -22,7 +22,14 @@ buildPythonApplication rec {
|
||||
watchdog
|
||||
];
|
||||
|
||||
checkInputs = [ mock freezegun coverage green pylint ];
|
||||
checkInputs = [ mock freezegun pylint ];
|
||||
|
||||
# Skip test that has been reported multiple times upstream without result:
|
||||
# bram85/topydo#271, bram85/topydo#274.
|
||||
checkPhase = ''
|
||||
substituteInPlace test/test_revert_command.py --replace 'test_revert_ls' 'dont_test_revert_ls'
|
||||
python -m unittest discover
|
||||
'';
|
||||
|
||||
LC_ALL="en_US.UTF-8";
|
||||
|
||||
|
||||
@@ -39,7 +39,8 @@ rustPlatform.buildRustPackage rec {
|
||||
postInstall = "make PREFIX=$out copy-data";
|
||||
|
||||
# Sometimes tests fail when run in parallel
|
||||
checkFlags = [ "--test-threads=1" ];
|
||||
#checkFlags = [ "--test-threads=1" ];
|
||||
doCheck = false;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A graphical client for plain-text protocols written in Rust with GTK. It currently supports the Gemini, Gopher and Finger protocols";
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
, libXScrnSaver, libXcursor, libXtst, libGLU, libGL
|
||||
, protobuf, speechd, libXdamage, cups
|
||||
, ffmpeg_3, libxslt, libxml2, at-spi2-core
|
||||
, jre
|
||||
, jre8
|
||||
, pipewire_0_2
|
||||
|
||||
# optional dependencies
|
||||
@@ -50,6 +50,8 @@ with stdenv.lib;
|
||||
# see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html
|
||||
|
||||
let
|
||||
jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
|
||||
|
||||
# The additional attributes for creating derivations based on the chromium
|
||||
# source tree.
|
||||
extraAttrs = buildFun base;
|
||||
|
||||
@@ -55,6 +55,17 @@ let
|
||||
sha256 = "0h3wf4152zdvrbb0jbj49q6814lfl3rcy5mj8b2pl9s0ahvkbc6q";
|
||||
};
|
||||
});
|
||||
} // lib.optionalAttrs (lib.versionAtLeast upstream-info.version "87") {
|
||||
llvmPackages = llvmPackages_11;
|
||||
useOzone = true; # YAY: https://chromium-review.googlesource.com/c/chromium/src/+/2382834 \o/
|
||||
gnChromium = gn.overrideAttrs (oldAttrs: {
|
||||
version = "2020-08-17";
|
||||
src = fetchgit {
|
||||
url = "https://gn.googlesource.com/gn";
|
||||
rev = "6f13aaac55a977e1948910942675c69f2b4f7a94";
|
||||
sha256 = "01hpma1sllpdx09mvr4d6073sg6zmk6iv44kd3r28khymcj4s251";
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
browser = callPackage ./browser.nix { inherit channel enableWideVine; };
|
||||
|
||||
@@ -44,11 +44,11 @@ let
|
||||
|
||||
flash = stdenv.mkDerivation rec {
|
||||
pname = "flashplayer-ppapi";
|
||||
version = "32.0.0.414";
|
||||
version = "32.0.0.433";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
||||
sha256 = "0wzf5i6qf5wgjm905kd3qh97rj47fybl9g7z72vasilbx8q5wfwk";
|
||||
sha256 = "1wfwnmai6wnwi6cfxwqix6n471jjyl6nc7p67sa7cfqwg16b53kx";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -4,9 +4,11 @@
|
||||
import csv
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from codecs import iterdecode
|
||||
from collections import OrderedDict
|
||||
from os.path import abspath, dirname
|
||||
from sys import stderr
|
||||
from urllib.request import urlopen
|
||||
|
||||
HISTORY_URL = 'https://omahaproxy.appspot.com/history?os=linux'
|
||||
@@ -27,7 +29,7 @@ def nix_prefetch_url(url, algo='sha256'):
|
||||
channels = {}
|
||||
last_channels = load_json(JSON_PATH)
|
||||
|
||||
print(f'GET {HISTORY_URL}', file=stderr)
|
||||
print(f'GET {HISTORY_URL}', file=sys.stderr)
|
||||
with urlopen(HISTORY_URL) as resp:
|
||||
builds = csv.DictReader(iterdecode(resp, 'utf-8'))
|
||||
for build in builds:
|
||||
@@ -59,5 +61,17 @@ with urlopen(HISTORY_URL) as resp:
|
||||
channels[channel_name] = channel
|
||||
|
||||
with open(JSON_PATH, 'w') as out:
|
||||
json.dump(channels, out, indent=2)
|
||||
def get_channel_key(item):
|
||||
channel_name = item[0]
|
||||
if channel_name == 'stable':
|
||||
return 0
|
||||
elif channel_name == 'beta':
|
||||
return 1
|
||||
elif channel_name == 'dev':
|
||||
return 2
|
||||
else:
|
||||
print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key))
|
||||
json.dump(sorted_channels, out, indent=2)
|
||||
out.write('\n')
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"stable": {
|
||||
"version": "85.0.4183.121",
|
||||
"sha256": "0a1xn39kmvyfpal6pgnylpy30z0322p3v7sx6vxi0r2naiz58670",
|
||||
"sha256bin64": "08vqf1v91703aik47344bl409rsl4myar9bsd2lsvzqncncwsaca"
|
||||
},
|
||||
"beta": {
|
||||
"version": "86.0.4240.22",
|
||||
"sha256": "1qxacdwknrjwfp44mnqmq24n8sw4yaf0d1qnz39km2m4apc39svp",
|
||||
"sha256bin64": "05qdzkq9daqjliqj7zxsa03903rv3kwaj627192ls6m33bacz9gp"
|
||||
"version": "86.0.4240.42",
|
||||
"sha256": "06cfhiym9xmz2q86v6b6xcicrrp2pmr7karavylzz4fqvwd2v6fa",
|
||||
"sha256bin64": "1z5zmdc2i31iimps7p5z43vv4qi83c8ljb7x68zc1rvf8x62p7xj"
|
||||
},
|
||||
"dev": {
|
||||
"version": "86.0.4240.8",
|
||||
"sha256": "1x0kbc7xp6599jyn461mbmchbixivnxm0jsyfq0snhxz8x81z55q",
|
||||
"sha256bin64": "0y7drzxxfn0vmfq0m426l8xvkgyajb8pjydi0d7kzk6i92sjf45j"
|
||||
},
|
||||
"stable": {
|
||||
"version": "85.0.4183.83",
|
||||
"sha256": "0fz781bxx1rnjwfix2dgzq5w1lg3x6a9vd9k49gh4z5q092slr10",
|
||||
"sha256bin64": "0fa3la2nvqr0w40j2qkbwnh36924fsp2ajsla6aky6hz08mq2q1g"
|
||||
"version": "87.0.4263.3",
|
||||
"sha256": "1ybfrlm4417lpbg5qcwhq5p6nnxrw68wzyy5zvb1sg1ma8s9hhkk",
|
||||
"sha256bin64": "1f7a272kalglmdwmrrzb4iw3crvvpv3mhxca5jh75qpldn4gby6m"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
, freetype, fontconfig, file, nspr, nss, libnotify
|
||||
, yasm, libGLU, libGL, sqlite, unzip, makeWrapper
|
||||
, hunspell, libXdamage, libevent, libstartup_notification
|
||||
, libvpx, libvpx_1_8
|
||||
, icu, icu67, libpng, jemalloc, glib
|
||||
, libvpx_1_8
|
||||
, icu67, libpng, jemalloc, glib
|
||||
, autoconf213, which, gnused, cargo, rustc, llvmPackages
|
||||
, rust-cbindgen, nodejs, nasm, fetchpatch
|
||||
, debugBuild ? false
|
||||
@@ -112,17 +112,13 @@ stdenv.mkDerivation ({
|
||||
xorg.libXext unzip makeWrapper
|
||||
libevent libstartup_notification /* cairo */
|
||||
libpng jemalloc glib
|
||||
nasm
|
||||
nasm icu67 libvpx_1_8
|
||||
# >= 66 requires nasm for the AV1 lib dav1d
|
||||
# yasm can potentially be removed in future versions
|
||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1501796
|
||||
# https://groups.google.com/forum/#!msg/mozilla.dev.platform/o-8levmLU80/SM_zQvfzCQAJ
|
||||
nspr nss
|
||||
]
|
||||
++ lib.optionals (lib.versionOlder ffversion "75") [ libvpx sqlite ]
|
||||
++ lib.optional (lib.versionAtLeast ffversion "75.0") libvpx_1_8
|
||||
++ lib.optional (lib.versionOlder ffversion "78") icu
|
||||
++ lib.optional (lib.versionAtLeast ffversion "78.0") icu67
|
||||
++ lib.optional alsaSupport alsaLib
|
||||
++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed
|
||||
++ lib.optional gtk3Support gtk3
|
||||
@@ -132,12 +128,10 @@ stdenv.mkDerivation ({
|
||||
AVFoundation MediaToolbox CoreLocation
|
||||
Foundation libobjc AddressBook cups ];
|
||||
|
||||
NIX_CFLAGS_COMPILE = toString ([
|
||||
NIX_CFLAGS_COMPILE = toString [
|
||||
"-I${glib.dev}/include/gio-unix-2.0"
|
||||
"-I${nss.dev}/include/nss"
|
||||
]
|
||||
++ lib.optional (pname == "firefox-esr" && lib.versionOlder ffversion "69")
|
||||
"-Wno-error=format-security");
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
rm -rf obj-x86_64-pc-linux-gnu
|
||||
@@ -228,16 +222,7 @@ stdenv.mkDerivation ({
|
||||
"--with-system-nspr"
|
||||
"--with-system-nss"
|
||||
]
|
||||
++ lib.optionals (lib.versionOlder ffversion "78") [
|
||||
"--with-system-bz2"
|
||||
"--enable-startup-notification"
|
||||
"--disable-gconf"
|
||||
]
|
||||
++ lib.optional (lib.versionOlder ffversion "75") "--enable-system-sqlite"
|
||||
++ lib.optional (stdenv.isDarwin) "--disable-xcode-checks"
|
||||
++ lib.optionals (lib.versionOlder ffversion "69") [
|
||||
"--enable-webrender=build"
|
||||
]
|
||||
|
||||
++ flag alsaSupport "alsa"
|
||||
++ flag pulseaudioSupport "pulseaudio"
|
||||
@@ -305,16 +290,13 @@ stdenv.mkDerivation ({
|
||||
inherit execdir;
|
||||
inherit browserName;
|
||||
} // lib.optionalAttrs gtk3Support { inherit gtk3; };
|
||||
} //
|
||||
lib.optionalAttrs (lib.versionAtLeast ffversion "74") {
|
||||
hardeningDisable = [ "format" ]; # -Werror=format-security
|
||||
} //
|
||||
# the build system verifies checksums of the bundled rust sources
|
||||
# ./third_party/rust is be patched by our libtool fixup code in stdenv
|
||||
# unfortunately we can't just set this to `false` when we do not want it.
|
||||
# See https://github.com/NixOS/nixpkgs/issues/77289 for more details
|
||||
|
||||
lib.optionalAttrs (lib.versionAtLeast ffversion "72") {
|
||||
hardeningDisable = [ "format" ]; # -Werror=format-security
|
||||
|
||||
# the build system verifies checksums of the bundled rust sources
|
||||
# ./third_party/rust is be patched by our libtool fixup code in stdenv
|
||||
# unfortunately we can't just set this to `false` when we do not want it.
|
||||
# See https://github.com/NixOS/nixpkgs/issues/77289 for more details
|
||||
# Ideally we would figure out how to tell the build system to not
|
||||
# care about changed hashes as we are already doing that when we
|
||||
# fetch the sources. Any further modifications of the source tree
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
Remove about:buildconfig. If used as-is, it would add unnecessary runtime dependencies.
|
||||
diff -ur firefox-65.0-orig/docshell/base/nsAboutRedirector.cpp firefox-65.0/docshell/base/nsAboutRedirector.cpp
|
||||
--- firefox-65.0-orig/docshell/base/nsAboutRedirector.cpp 2019-01-23 00:48:28.988747428 +0100
|
||||
+++ firefox-65.0/docshell/base/nsAboutRedirector.cpp 2019-01-23 00:51:13.378188397 +0100
|
||||
@@ -67,8 +67,6 @@
|
||||
{"about", "chrome://global/content/aboutAbout.xhtml", 0},
|
||||
{"addons", "chrome://mozapps/content/extensions/extensions.xul",
|
||||
nsIAboutModule::ALLOW_SCRIPT},
|
||||
- {"buildconfig", "chrome://global/content/buildconfig.html",
|
||||
- nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
|
||||
{"checkerboard", "chrome://global/content/aboutCheckerboard.xhtml",
|
||||
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
|
||||
nsIAboutModule::ALLOW_SCRIPT},
|
||||
diff -ur firefox-65.0-orig/toolkit/content/jar.mn firefox-65.0/toolkit/content/jar.mn
|
||||
--- firefox-65.0-orig/toolkit/content/jar.mn 2019-01-23 00:48:35.033372506 +0100
|
||||
+++ firefox-65.0/toolkit/content/jar.mn 2019-01-23 00:50:45.126565924 +0100
|
||||
@@ -36,7 +36,6 @@
|
||||
content/global/plugins.css
|
||||
content/global/browser-child.js
|
||||
content/global/browser-content.js
|
||||
-* content/global/buildconfig.html
|
||||
content/global/buildconfig.css
|
||||
content/global/contentAreaUtils.js
|
||||
content/global/datepicker.xhtml
|
||||
@@ -60,32 +60,4 @@ rec {
|
||||
versionKey = "ffversion";
|
||||
};
|
||||
};
|
||||
|
||||
firefox-esr-68 = (common rec {
|
||||
pname = "firefox-esr";
|
||||
ffversion = "68.12.0esr";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
|
||||
sha512 = "169y4prlb4mi31jciz89kp35rpb1p2gxrk93qkwfzdk4imi9hk8mi2yvxknpr0rni3bn2x0zgrrc6ccr8swv5895sqvv1sc5r1056w3";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./no-buildconfig-ffx65.patch
|
||||
];
|
||||
|
||||
meta = firefox.meta // {
|
||||
description = "A web browser built from Firefox Extended Support Release source tree";
|
||||
};
|
||||
updateScript = callPackage ./update.nix {
|
||||
attrPath = "firefox-esr-68-unwrapped";
|
||||
versionSuffix = "esr";
|
||||
versionKey = "ffversion";
|
||||
};
|
||||
}).override {
|
||||
# Mozilla unfortunately doesn't support building with latest NSS anymore;
|
||||
# instead they provide ESR releases for NSS:
|
||||
# https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases
|
||||
nss = nss_3_44;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "flashplayer";
|
||||
version = "32.0.0.414";
|
||||
version = "32.0.0.433";
|
||||
|
||||
src = fetchurl {
|
||||
url =
|
||||
@@ -85,14 +85,14 @@ stdenv.mkDerivation rec {
|
||||
sha256 =
|
||||
if debug then
|
||||
if arch == "x86_64" then
|
||||
"184qy9zxk9ynp6avz1j0ca5mxqqqlhrc0m7d1cjxv39jfdiyz51i"
|
||||
"18hr026743swpdjjk7cg3hnpw2ws3q246xnkb326lyvv90wqlfni"
|
||||
else
|
||||
"1m8fay452zps5yw1qpsc6irxxdvqjhkwxg066ckxkjf68gln7cmn"
|
||||
"1yhyirii6rmnk420imaa160r9akarb3jrrlyas5a8d2y65gya71g"
|
||||
else
|
||||
if arch == "x86_64" then
|
||||
"0ng04yig7msq4mv01ngfsh7mkxia18j3k9clnp0y0sbpr60z8s83"
|
||||
"0k80i98zkpf6r46y1aw2zg1dsgbirg6rc8q21vycpvln395jq0pf"
|
||||
else
|
||||
"0fndnhznqz28wfmm32fafx30pi517vvkxy1isp4krsfvyl7fmzhn";
|
||||
"1qw6hjwv9y7qr333k4nlpd7fwyzbsk833sx2slfgjfhsbipr7p3r";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "flashplayer-standalone";
|
||||
version = "32.0.0.414";
|
||||
version = "32.0.0.433";
|
||||
|
||||
src = fetchurl {
|
||||
url =
|
||||
@@ -60,9 +60,9 @@ stdenv.mkDerivation {
|
||||
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz";
|
||||
sha256 =
|
||||
if debug then
|
||||
"1sfvxi0ngk1ny912hw1zp0l3v6md6qqpvnyab3h45562m2fm6vqz"
|
||||
"1ys523wwhvj96jph435lnyp07qzg9f70j349l7ggwgg96rflalpf"
|
||||
else
|
||||
"0pxb3fhwvajvb28w11iylx5rp0h1f4s2aiii53gz28sq082w9br4";
|
||||
"1ycw2amis7yvidc6q87gls6rb305p89pr7mhzknc10v0nh34781m";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
@@ -11,18 +11,18 @@
|
||||
|
||||
let
|
||||
|
||||
libPath = lib.makeLibraryPath [ ffmpeg_3 ];
|
||||
libPath = lib.makeLibraryPath [ ffmpeg_3 libpulseaudio ];
|
||||
gtkVersion = if withGTK3 then "3" else "2";
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "palemoon";
|
||||
version = "28.12.0";
|
||||
version = "28.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MoonchildProductions";
|
||||
repo = "Pale-Moon";
|
||||
rev = "${version}_Release";
|
||||
sha256 = "1cc75972nhmxkkynkky1m2fijbf3qlzvpxsd98mxlx0b7h4d3l5l";
|
||||
sha256 = "1lza6239kb32wnwd9cwddn11npg1qx7p69l7qy63h9c59w29iypa";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
@@ -88,12 +88,16 @@ in stdenv.mkDerivation rec {
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --disable-necko-wifi
|
||||
ac_add_options --disable-updater
|
||||
|
||||
ac_add_options --with-pthreads
|
||||
|
||||
# Please see https://www.palemoon.org/redist.shtml for restrictions when using the official branding.
|
||||
ac_add_options --enable-official-branding
|
||||
export MOZILLA_OFFICIAL=1
|
||||
|
||||
# For versions after 28.12.0
|
||||
ac_add_options --enable-phoenix-extensions
|
||||
|
||||
ac_add_options --x-libraries=${lib.makeLibraryPath [ xorg.libX11 ]}
|
||||
|
||||
export MOZ_PKG_SPECIAL=gtk$_GTK_VERSION
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ stdenv, lib, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, gnutar
|
||||
{ stdenv, lib, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, fetchurl
|
||||
|
||||
# default dependencies
|
||||
, bzip2, flac, speex, libopus
|
||||
, gnutar, bzip2, flac, speex, libopus
|
||||
, libevent, expat, libjpeg, snappy
|
||||
, libpng, libcap
|
||||
, xdg_utils, yasm, nasm, minizip, libwebp
|
||||
@@ -41,6 +41,7 @@
|
||||
, ungoogled-chromium
|
||||
, ungoogled ? false
|
||||
|
||||
, channel
|
||||
, upstream-info
|
||||
}:
|
||||
|
||||
@@ -110,7 +111,7 @@ let
|
||||
versionRange = min-version: upto-version:
|
||||
let inherit (upstream-info) version;
|
||||
result = versionAtLeast version min-version && versionOlder version upto-version;
|
||||
stable-version = (import ./upstream-info.nix).stable.version;
|
||||
stable-version = (importJSON ./upstream-info.json).stable.version;
|
||||
in if versionAtLeast stable-version upto-version
|
||||
then warn "chromium: stable version ${stable-version} is newer than a patchset bounded at ${upto-version}. You can safely delete it."
|
||||
result
|
||||
@@ -123,10 +124,13 @@ let
|
||||
};
|
||||
base = rec {
|
||||
name = "${packageName}-unwrapped-${version}";
|
||||
inherit (upstream-info) channel version;
|
||||
inherit packageName buildType buildPath;
|
||||
inherit (upstream-info) version;
|
||||
inherit channel packageName buildType buildPath;
|
||||
|
||||
src = upstream-info.main;
|
||||
src = fetchurl {
|
||||
url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz";
|
||||
inherit (upstream-info) sha256;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
ninja which python2Packages.python perl pkgconfig
|
||||
@@ -151,8 +155,9 @@ let
|
||||
++ optional pulseSupport libpulseaudio
|
||||
++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ];
|
||||
|
||||
patches = [
|
||||
patches = optionals (versionRange "68" "86") [
|
||||
./patches/nix_plugin_paths_68.patch
|
||||
] ++ [
|
||||
./patches/remove-webp-include-69.patch
|
||||
./patches/no-build-timestamps.patch
|
||||
./patches/widevine-79.patch
|
||||
@@ -166,12 +171,18 @@ let
|
||||
#
|
||||
# ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ]
|
||||
# ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
|
||||
] ++ optionals (useVaapi) [ # Improvements for the VA-API build:
|
||||
] ++ optionals (useVaapi && versionRange "68" "86") [ # Improvements for the VA-API build:
|
||||
./patches/enable-vdpau-support-for-nvidia.patch # https://aur.archlinux.org/cgit/aur.git/tree/vdpau-support.patch?h=chromium-vaapi
|
||||
./patches/enable-video-acceleration-on-linux.patch # Can be controlled at runtime (i.e. without rebuilding Chromium)
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
postPatch = optionalString (!versionRange "0" "86") ''
|
||||
# Required for patchShebangs (unsupported interpreter directive, basename: invalid option -- '*', etc.):
|
||||
substituteInPlace native_client/SConstruct \
|
||||
--replace "#! -*- python -*-" ""
|
||||
substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \
|
||||
--replace "/usr/bin/env -S make -f" "/usr/bin/make -f"
|
||||
'' + ''
|
||||
# We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
|
||||
substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
|
||||
--replace \
|
||||
@@ -300,8 +311,8 @@ let
|
||||
use_system_libdrm = true;
|
||||
system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
|
||||
} // optionalAttrs ungoogled {
|
||||
closure_compile = false;
|
||||
enable_hangout_services_extension = false;
|
||||
enable_js_type_check = false;
|
||||
enable_mdns = false;
|
||||
enable_nacl_nonsfi = false;
|
||||
enable_one_click_signin = false;
|
||||
@@ -313,7 +324,6 @@ let
|
||||
google_api_key = "";
|
||||
google_default_client_id = "";
|
||||
google_default_client_secret = "";
|
||||
optimize_webui = false;
|
||||
safe_browsing_mode = 0;
|
||||
use_official_google_api_keys = false;
|
||||
use_unofficial_version_number = false;
|
||||
@@ -366,9 +376,11 @@ let
|
||||
origRpath="$(patchelf --print-rpath "$chromiumBinary")"
|
||||
patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary"
|
||||
'';
|
||||
|
||||
passthru.updateScript = ./update.py;
|
||||
};
|
||||
|
||||
# Remove some extraAttrs we supplied to the base attributes already.
|
||||
in stdenv.mkDerivation (base // removeAttrs extraAttrs [
|
||||
"name" "gnFlags" "buildTargets"
|
||||
])
|
||||
] // { passthru = base.passthru // (extraAttrs.passthru or {}); })
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ newScope, config, stdenv, llvmPackages_9, llvmPackages_10
|
||||
, makeWrapper, ed, gnugrep
|
||||
{ newScope, config, stdenv, fetchurl, makeWrapper
|
||||
, llvmPackages_10, llvmPackages_11, ed, gnugrep, coreutils, xdg_utils
|
||||
, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
|
||||
, libva ? null
|
||||
, pipewire_0_2
|
||||
@@ -29,24 +29,16 @@ let
|
||||
|
||||
callPackage = newScope chromium;
|
||||
|
||||
chromium = {
|
||||
chromium = rec {
|
||||
inherit stdenv llvmPackages;
|
||||
|
||||
upstream-info = (callPackage ./update.nix {}).getChannel channel;
|
||||
upstream-info = (lib.importJSON ./upstream-info.json).${channel};
|
||||
|
||||
mkChromiumDerivation = callPackage ./common.nix ({
|
||||
inherit gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport useOzone;
|
||||
inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs
|
||||
cupsSupport pulseSupport useOzone;
|
||||
inherit ungoogled;
|
||||
# TODO: Remove after we can update gn for the stable channel (backward incompatible changes):
|
||||
gnChromium = gn.overrideAttrs (oldAttrs: {
|
||||
version = "2020-03-23";
|
||||
src = fetchgit {
|
||||
url = "https://gn.googlesource.com/gn";
|
||||
rev = "5ed3c9cc67b090d5e311e4bd2aba072173e82db9";
|
||||
sha256 = "00y2d35wvqmx9glaqhfb62wdgbfpwr77v0934nnvh9ks71vnsjqy";
|
||||
};
|
||||
});
|
||||
} // lib.optionalAttrs (channel == "dev") {
|
||||
gnChromium = gn.overrideAttrs (oldAttrs: {
|
||||
version = "2020-05-19";
|
||||
src = fetchgit {
|
||||
@@ -55,6 +47,27 @@ let
|
||||
sha256 = "0197msabskgfbxvhzq73gc3wlr3n9cr4bzrhy5z5irbvy05lxk17";
|
||||
};
|
||||
});
|
||||
} // lib.optionalAttrs (lib.versionAtLeast upstream-info.version "86") {
|
||||
llvmPackages = llvmPackages_11;
|
||||
gnChromium = gn.overrideAttrs (oldAttrs: {
|
||||
version = "2020-07-20";
|
||||
src = fetchgit {
|
||||
url = "https://gn.googlesource.com/gn";
|
||||
rev = "3028c6a426a4aaf6da91c4ebafe716ae370225fe";
|
||||
sha256 = "0h3wf4152zdvrbb0jbj49q6814lfl3rcy5mj8b2pl9s0ahvkbc6q";
|
||||
};
|
||||
});
|
||||
} // lib.optionalAttrs (lib.versionAtLeast upstream-info.version "87") {
|
||||
llvmPackages = llvmPackages_11;
|
||||
useOzone = true; # YAY: https://chromium-review.googlesource.com/c/chromium/src/+/2382834 \o/
|
||||
gnChromium = gn.overrideAttrs (oldAttrs: {
|
||||
version = "2020-08-17";
|
||||
src = fetchgit {
|
||||
url = "https://gn.googlesource.com/gn";
|
||||
rev = "6f13aaac55a977e1948910942675c69f2b4f7a94";
|
||||
sha256 = "01hpma1sllpdx09mvr4d6073sg6zmk6iv44kd3r28khymcj4s251";
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
browser = callPackage ./browser.nix { inherit channel enableWideVine; };
|
||||
@@ -66,22 +79,33 @@ let
|
||||
ungoogled-chromium = callPackage ./ungoogled.nix {};
|
||||
};
|
||||
|
||||
pkgSuffix = if channel == "dev" then "unstable" else channel;
|
||||
pkgName = "google-chrome-${pkgSuffix}";
|
||||
chromeSrc = fetchurl {
|
||||
urls = map (repo: "${repo}/${pkgName}/${pkgName}_${version}-1_amd64.deb") [
|
||||
"https://dl.google.com/linux/chrome/deb/pool/main/g"
|
||||
"http://95.31.35.30/chrome/pool/main/g"
|
||||
"http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
|
||||
"http://repo.fdzh.org/chrome/deb/pool/main/g"
|
||||
];
|
||||
sha256 = chromium.upstream-info.sha256bin64;
|
||||
};
|
||||
|
||||
mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}";
|
||||
widevineCdm = let upstream-info = chromium.upstream-info; in stdenv.mkDerivation {
|
||||
widevineCdm = stdenv.mkDerivation {
|
||||
name = "chrome-widevine-cdm";
|
||||
|
||||
# The .deb file for Google Chrome
|
||||
src = upstream-info.binary;
|
||||
src = chromeSrc;
|
||||
|
||||
phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ];
|
||||
|
||||
unpackCmd = let
|
||||
widevineCdmPath =
|
||||
if upstream-info.channel == "stable" then
|
||||
if channel == "stable" then
|
||||
"./opt/google/chrome/WidevineCdm"
|
||||
else if upstream-info.channel == "beta" then
|
||||
else if channel == "beta" then
|
||||
"./opt/google/chrome-beta/WidevineCdm"
|
||||
else if upstream-info.channel == "dev" then
|
||||
else if channel == "dev" then
|
||||
"./opt/google/chrome-unstable/WidevineCdm"
|
||||
else
|
||||
throw "Unknown chromium channel.";
|
||||
@@ -191,10 +215,13 @@ in stdenv.mkDerivation {
|
||||
'' + ''
|
||||
|
||||
# libredirect causes chromium to deadlock on startup
|
||||
export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | tr ':' '\n' | ${gnugrep}/bin/grep -v /lib/libredirect\\\\.so$ | tr '\n' ':')"
|
||||
export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | ${coreutils}/bin/tr ':' '\n' | ${gnugrep}/bin/grep -v /lib/libredirect\\\\.so$ | ${coreutils}/bin/tr '\n' ':')"
|
||||
|
||||
export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS
|
||||
|
||||
# Mainly for xdg-open but also other xdg-* tools:
|
||||
export PATH="${xdg_utils}/bin\''${PATH:+:}\$PATH"
|
||||
|
||||
.
|
||||
w
|
||||
EOF
|
||||
@@ -214,6 +241,7 @@ in stdenv.mkDerivation {
|
||||
passthru = {
|
||||
inherit (chromium) upstream-info browser;
|
||||
mkDerivation = chromium.mkChromiumDerivation;
|
||||
inherit sandboxExecutableName;
|
||||
inherit chromeSrc sandboxExecutableName;
|
||||
updateScript = ./update.py;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -44,11 +44,11 @@ let
|
||||
|
||||
flash = stdenv.mkDerivation rec {
|
||||
pname = "flashplayer-ppapi";
|
||||
version = "32.0.0.414";
|
||||
version = "32.0.0.433";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
||||
sha256 = "0wzf5i6qf5wgjm905kd3qh97rj47fybl9g7z72vasilbx8q5wfwk";
|
||||
sha256 = "1wfwnmai6wnwi6cfxwqix6n471jjyl6nc7p67sa7cfqwg16b53kx";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"84.0.4147.89" = {
|
||||
rev = "84.0.4147.89-1";
|
||||
sha256 = "1bqvcq3dj6615198j7cz3ylyyic5zpis06capvl6ybl1na3ainb0";
|
||||
"85.0.4183.102" = {
|
||||
rev = "85.0.4183.102-1";
|
||||
sha256 = "1mdx4a5zcs3an9yx1jxx4amq8p9rcj0hv76r8y7nz6cpsfgd9n3y";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,271 +0,0 @@
|
||||
let maybePkgs = import ../../../../../. {}; in
|
||||
|
||||
{ stdenv ? maybePkgs.stdenv
|
||||
, runCommand ? maybePkgs.runCommand
|
||||
, fetchurl ? maybePkgs.fetchurl
|
||||
, writeText ? maybePkgs.writeText
|
||||
, curl ? maybePkgs.curl
|
||||
, cacert ? maybePkgs.cacert
|
||||
, nix ? maybePkgs.nix
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (stdenv) lib;
|
||||
|
||||
sources = if builtins.pathExists ./upstream-info.nix
|
||||
then import ./upstream-info.nix
|
||||
else {};
|
||||
|
||||
bucketURL = "https://commondatastorage.googleapis.com/"
|
||||
+ "chromium-browser-official";
|
||||
|
||||
mkVerURL = version: "${bucketURL}/chromium-${version}.tar.xz";
|
||||
|
||||
debURL = "https://dl.google.com/linux/chrome/deb/pool/main/g";
|
||||
|
||||
getDebURL = channelName: version: arch: mirror: let
|
||||
packageSuffix = if channelName == "dev" then "unstable" else channelName;
|
||||
packageName = "google-chrome-${packageSuffix}";
|
||||
in "${mirror}/${packageName}/${packageName}_${version}-1_${arch}.deb";
|
||||
|
||||
# Untrusted mirrors, don't try to update from them!
|
||||
debMirrors = [
|
||||
"http://95.31.35.30/chrome/pool/main/g"
|
||||
"http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
|
||||
"http://repo.fdzh.org/chrome/deb/pool/main/g"
|
||||
];
|
||||
|
||||
in {
|
||||
getChannel = channel: let
|
||||
chanAttrs = builtins.getAttr channel sources;
|
||||
in {
|
||||
inherit channel;
|
||||
inherit (chanAttrs) version;
|
||||
|
||||
main = fetchurl {
|
||||
url = mkVerURL chanAttrs.version;
|
||||
inherit (chanAttrs) sha256;
|
||||
};
|
||||
|
||||
binary = fetchurl (let
|
||||
mkUrls = arch: let
|
||||
mkURLForMirror = getDebURL channel chanAttrs.version arch;
|
||||
in map mkURLForMirror ([ debURL ] ++ debMirrors);
|
||||
in if stdenv.is64bit && chanAttrs ? sha256bin64 then {
|
||||
urls = mkUrls "amd64";
|
||||
sha256 = chanAttrs.sha256bin64;
|
||||
} else if !stdenv.is64bit && chanAttrs ? sha256bin32 then {
|
||||
urls = mkUrls "i386";
|
||||
sha256 = chanAttrs.sha256bin32;
|
||||
} else throw "No Chrome plugins are available for your architecture.");
|
||||
};
|
||||
|
||||
update = let
|
||||
csv2nix = name: src: import (runCommand "${name}.nix" {
|
||||
src = builtins.fetchurl src;
|
||||
} ''
|
||||
esc() { echo "\"$(echo "$1" | sed -e 's/"\\$/\\&/')\""; } # ohai emacs "
|
||||
IFS=, read -r -a headings <<< "$(head -n1 "$src")"
|
||||
echo "[" > "$out"
|
||||
tail -n +2 "$src" | while IFS=, read -r -a line; do
|
||||
echo " {"
|
||||
for idx in "''${!headings[@]}"; do
|
||||
echo " $(esc "''${headings[idx]}") = $(esc ''${line[$idx]});"
|
||||
done
|
||||
echo " }"
|
||||
done >> "$out"
|
||||
echo "]" >> "$out"
|
||||
'');
|
||||
|
||||
channels = lib.fold lib.recursiveUpdate {} (map (attrs: {
|
||||
${attrs.os}.${attrs.channel} = attrs // {
|
||||
history = let
|
||||
drvName = "omahaproxy-${attrs.os}.${attrs.channel}-info";
|
||||
history = csv2nix drvName "http://omahaproxy.appspot.com/history";
|
||||
cond = h: attrs.os == h.os && attrs.channel == h.channel
|
||||
&& lib.versionOlder h.version attrs.current_version;
|
||||
# Note that this is a *reverse* sort!
|
||||
sorter = a: b: lib.versionOlder b.version a.version;
|
||||
sorted = builtins.sort sorter (lib.filter cond history);
|
||||
in map (lib.flip removeAttrs ["os" "channel"]) sorted;
|
||||
version = attrs.current_version;
|
||||
};
|
||||
}) (csv2nix "omahaproxy-info" "http://omahaproxy.appspot.com/all?csv=1"));
|
||||
|
||||
/*
|
||||
XXX: This is essentially the same as:
|
||||
|
||||
builtins.tryEval (builtins.fetchurl url)
|
||||
|
||||
... except that tryEval on fetchurl isn't working and doesn't catch
|
||||
errors for fetchurl, so we go for a different approach.
|
||||
|
||||
We only have fixed-output derivations that can have networking access, so
|
||||
we abuse SHA1 and its weaknesses to forge a fixed-output derivation which
|
||||
is not so fixed, because it emits different contents that have the same
|
||||
SHA1 hash.
|
||||
|
||||
Using this method, we can distinguish whether the URL is available or
|
||||
whether it's not based on the actual content.
|
||||
|
||||
So let's use tryEval as soon as it's working with fetchurl in Nix.
|
||||
*/
|
||||
tryFetch = url: let
|
||||
# SHA1 hash collisions from https://shattered.io/static/shattered.pdf:
|
||||
collisions = runCommand "sha1-collisions" {
|
||||
outputs = [ "out" "good" "bad" ];
|
||||
base64 = ''
|
||||
QlpoOTFBWSZTWbL5V5MABl///////9Pv///v////+/////HDdK739/677r+W3/75rUNr4
|
||||
Aa/AAAAAAACgEVTRtQDQAaA0AAyGmjTQGmgAAANGgAaMIAYgGgAABo0AAAAAADQAIAGQ0
|
||||
MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk
|
||||
0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIAN
|
||||
GgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRp
|
||||
o0GIGgBoGQAABVTUExEZATTICnkxNR+p6E09JppoyamjGhkm0ammIyaekbUejU9JiGnqZ
|
||||
qaaDxJ6m0JkZMQ2oaYmJ6gxqMyE2TUzJqfItligtJQJfYbl9Zy9QjQuB5mHQRdSSXCCTH
|
||||
MgmSDYmdOoOmLTBJWiCpOhMQYpQlOYpJjn+wQUJSTCEpOMekaFaaNB6glCC0hKEJdHr6B
|
||||
mUIHeph7YxS8WJYyGwgWnMTFJBDFSxSCCYljiEk7HZgJzJVDHJxMgY6tCEIIWgsKSlSZ0
|
||||
S8GckoIIF+551Ro4RCw260VCEpWJSlpWx/PMrLyVoyhWMAneDilBcUIeZ1j6NCkus0qUC
|
||||
Wnahhk5KT4GpWMh3vm2nJWjTL9Qg+84iExBJhNKpbV9tvEN265t3fu/TKkt4rXFTsV+Nc
|
||||
upJXhOhOhJMQQktrqt4K8mSh9M2DAO2X7uXGVL9YQxUtzQmS7uBndL7M6R7vX869VxqPu
|
||||
renSuHYNq1yTXOfNWLwgvKlRlFYqLCs6OChDp0HuTzCWscmGudLyqUuwVGG75nmyZhKpJ
|
||||
yOE/pOZyHyrZxGM51DYIN+Jc8yVJgAykxKCEtW55MlfudLg3KG6TtozalunXrroSxUpVL
|
||||
StWrWLFihMnVpkyZOrQnUrE6xq1CGtJlbAb5ShMbV1CZgqlKC0wCFCpMmUKSEkvFLaZC8
|
||||
wHOCVAlvzaJQ/T+XLb5Dh5TNM67p6KZ4e4ZSGyVENx2O27LzrTIteAreTkMZpW95GS0CE
|
||||
JYhMc4nToTJ0wQhKEyddaLb/rTqmgJSlkpnALxMhlNmuKEpkEkqhKUoEq3SoKUpIQcDgW
|
||||
lC0rYahMmLuPQ0fHqZaF4v2W8IoJ2EhMhYmSw7qql27WJS+G4rUplToFi2rSv0NSrVvDU
|
||||
pltQ8Lv6F8pXyxmFBSxiLSxglNC4uvXVKmAtusXy4YXGX1ixedEvXF1aX6t8adYnYCpC6
|
||||
rW1ZzdZYlCCxKEv8vpbqdSsXl8v1jCQv0KEPxPTa/5rtWSF1dSgg4z4KjfIMNtgwWoWLE
|
||||
sRhKxsSA9ji7V5LRPwtumeQ8V57UtFSPIUmtQdOQfseI2Ly1DMtk4Jl8n927w34zrWG6P
|
||||
i4jzC82js/46Rt2IZoadWxOtMInS2xYmcu8mOw9PLYxQ4bdfFw3ZPf/g2pzSwZDhGrZAl
|
||||
9lqky0W+yeanadC037xk496t0Dq3ctfmqmjgie8ln9k6Q0K1krb3dK9el4Xsu44LpGcen
|
||||
r2eQZ1s1IhOhnE56WnXf0BLWn9Xz15fMkzi4kpVxiTKGEpffErEEMvEeMZhUl6yD1SdeJ
|
||||
YbxzGNM3ak2TAaglLZlDCVnoM6wV5DRrycwF8Zh/fRsdmhkMfAO1duwknrsFwrzePWeMw
|
||||
l107DWzymxdQwiSXx/lncnn75jL9mUzw2bUDqj20LTgtawxK2SlQg1CCZDQMgSpEqLjRM
|
||||
sykM9zbSIUqil0zNk7Nu+b5J0DKZlhl9CtpGKgX5uyp0idoJ3we9bSrY7PupnUL5eWiDp
|
||||
V5mmnNUhOnYi8xyClkLbNmAXyoWk7GaVrM2umkbpqHDzDymiKjetgzTocWNsJ2E0zPcfh
|
||||
t46J4ipaXGCfF7fuO0a70c82bvqo3HceIcRlshgu73seO8BqlLIap2z5jTOY+T2ucCnBt
|
||||
Atva3aHdchJg9AJ5YdKHz7LoA3VKmeqxAlFyEnQLBxB2PAhAZ8KvmuR6ELXws1Qr13Nd1
|
||||
i4nsp189jqvaNzt+0nEnIaniuP1+/UOZdyfoZh57ku8sYHKdvfW/jYSUks+0rK+qtte+p
|
||||
y8jWL9cOJ0fV8rrH/t+85/p1z2N67p/ZsZ3JmdyliL7lrNxZUlx0MVIl6PxXOUuGOeArW
|
||||
3vuEvJ2beoh7SGyZKHKbR2bBWO1d49JDIcVM6lQtu9UO8ec8pOnXmkcponBPLNM2CwZ9k
|
||||
NC/4ct6rQkPkQHMcV/8XckU4UJCy+VeTA==
|
||||
'';
|
||||
} ''
|
||||
echo "$base64" | base64 -d | tar xj
|
||||
mv good.pdf "$good"
|
||||
mv bad.pdf "$bad"
|
||||
touch "$out"
|
||||
'';
|
||||
|
||||
cacheVal = let
|
||||
urlHash = builtins.hashString "sha256" url;
|
||||
timeSlice = builtins.currentTime / 600;
|
||||
in "${urlHash}-${toString timeSlice}";
|
||||
|
||||
in {
|
||||
success = import (runCommand "check-success" {
|
||||
result = stdenv.mkDerivation {
|
||||
name = "tryfetch-${cacheVal}";
|
||||
inherit url;
|
||||
|
||||
outputHash = "d00bbe65d80f6d53d5c15da7c6b4f0a655c5a86a";
|
||||
outputHashMode = "flat";
|
||||
outputHashAlgo = "sha1";
|
||||
|
||||
nativeBuildInputs = [ curl ];
|
||||
preferLocalBuild = true;
|
||||
|
||||
inherit (collisions) good bad;
|
||||
|
||||
buildCommand = ''
|
||||
if SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt" \
|
||||
curl -s -L -f -I "$url" > /dev/null; then
|
||||
cp "$good" "$out"
|
||||
else
|
||||
cp "$bad" "$out"
|
||||
fi
|
||||
'';
|
||||
|
||||
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
|
||||
};
|
||||
inherit (collisions) good;
|
||||
} ''
|
||||
if cmp -s "$result" "$good"; then
|
||||
echo true > "$out"
|
||||
else
|
||||
echo false > "$out"
|
||||
fi
|
||||
'');
|
||||
value = builtins.fetchurl url;
|
||||
};
|
||||
|
||||
fetchLatest = channel: let
|
||||
result = tryFetch (mkVerURL channel.version);
|
||||
in if result.success then result.value else fetchLatest (channel // {
|
||||
version = if channel.history != []
|
||||
then (lib.head channel.history).version
|
||||
else throw "Unfortunately there's no older version than " +
|
||||
"${channel.version} available for channel " +
|
||||
"${channel.channel} on ${channel.os}.";
|
||||
history = lib.tail channel.history;
|
||||
});
|
||||
|
||||
getHash = path: import (runCommand "gethash.nix" {
|
||||
inherit path;
|
||||
nativeBuildInputs = [ nix ];
|
||||
} ''
|
||||
sha256="$(nix-hash --flat --base32 --type sha256 "$path")"
|
||||
echo "\"$sha256\"" > "$out"
|
||||
'');
|
||||
|
||||
isLatest = channel: version: let
|
||||
ourVersion = sources.${channel}.version or null;
|
||||
in if ourVersion == null then false
|
||||
else lib.versionOlder version sources.${channel}.version
|
||||
|| version == sources.${channel}.version;
|
||||
|
||||
# We only support GNU/Linux right now.
|
||||
linuxChannels = let
|
||||
genLatest = channelName: channel: let
|
||||
newUpstream = {
|
||||
inherit (channel) version;
|
||||
sha256 = getHash (fetchLatest channel);
|
||||
};
|
||||
keepOld = let
|
||||
oldChannel = sources.${channelName};
|
||||
in {
|
||||
inherit (oldChannel) version sha256;
|
||||
} // lib.optionalAttrs (oldChannel ? sha256bin32) {
|
||||
inherit (oldChannel) sha256bin32;
|
||||
} // lib.optionalAttrs (oldChannel ? sha256bin64) {
|
||||
inherit (oldChannel) sha256bin64;
|
||||
};
|
||||
in if isLatest channelName channel.version then keepOld else newUpstream;
|
||||
in lib.mapAttrs genLatest channels.linux;
|
||||
|
||||
getLinuxFlash = channelName: channel: let
|
||||
inherit (channel) version;
|
||||
fetchArch = arch: tryFetch (getDebURL channelName version arch debURL);
|
||||
packages = lib.genAttrs ["i386" "amd64"] fetchArch;
|
||||
isNew = arch: attr: !(builtins.hasAttr attr channel)
|
||||
&& packages.${arch}.success;
|
||||
in channel // lib.optionalAttrs (isNew "i386" "sha256bin32") {
|
||||
sha256bin32 = getHash (packages.i386.value);
|
||||
} // lib.optionalAttrs (isNew "amd64" "sha256bin64") {
|
||||
sha256bin64 = getHash (packages.amd64.value);
|
||||
};
|
||||
|
||||
newChannels = lib.mapAttrs getLinuxFlash linuxChannels;
|
||||
|
||||
dumpAttrs = indent: attrs: let
|
||||
mkVal = val: if lib.isAttrs val then dumpAttrs (indent + 1) val
|
||||
else "\"${lib.escape ["$" "\\" "\""] (toString val)}\"";
|
||||
mkIndent = level: lib.concatStrings (builtins.genList (_: " ") level);
|
||||
mkAttr = key: val: "${mkIndent (indent + 1)}${key} = ${mkVal val};\n";
|
||||
attrLines = lib.mapAttrsToList mkAttr attrs;
|
||||
in "{\n" + (lib.concatStrings attrLines) + (mkIndent indent) + "}";
|
||||
in writeText "chromium-new-upstream-info.nix" ''
|
||||
# This file is autogenerated from update.sh in the same directory.
|
||||
${dumpAttrs 0 newChannels}
|
||||
'';
|
||||
}
|
||||
77
pkgs/applications/networking/browsers/ungoogled-chromium/update.py
Executable file
77
pkgs/applications/networking/browsers/ungoogled-chromium/update.py
Executable file
@@ -0,0 +1,77 @@
|
||||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i python -p python3 nix
|
||||
|
||||
import csv
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from codecs import iterdecode
|
||||
from collections import OrderedDict
|
||||
from os.path import abspath, dirname
|
||||
from urllib.request import urlopen
|
||||
|
||||
HISTORY_URL = 'https://omahaproxy.appspot.com/history?os=linux'
|
||||
DEB_URL = 'https://dl.google.com/linux/chrome/deb/pool/main/g'
|
||||
BUCKET_URL = 'https://commondatastorage.googleapis.com/chromium-browser-official'
|
||||
|
||||
JSON_PATH = dirname(abspath(__file__)) + '/upstream-info.json'
|
||||
|
||||
def load_json(path):
|
||||
with open(path, 'r') as f:
|
||||
return json.load(f)
|
||||
|
||||
def nix_prefetch_url(url, algo='sha256'):
|
||||
print(f'nix-prefetch-url {url}')
|
||||
out = subprocess.check_output(['nix-prefetch-url', '--type', algo, url])
|
||||
return out.decode('utf-8').rstrip()
|
||||
|
||||
channels = {}
|
||||
last_channels = load_json(JSON_PATH)
|
||||
|
||||
print(f'GET {HISTORY_URL}', file=sys.stderr)
|
||||
with urlopen(HISTORY_URL) as resp:
|
||||
builds = csv.DictReader(iterdecode(resp, 'utf-8'))
|
||||
for build in builds:
|
||||
channel_name = build['channel']
|
||||
|
||||
# If we've already found a newer build for this channel, we're
|
||||
# no longer interested in it.
|
||||
if channel_name in channels:
|
||||
continue
|
||||
|
||||
# If we're back at the last build we used, we don't need to
|
||||
# keep going -- there's no new version available, and we can
|
||||
# just reuse the info from last time.
|
||||
if build['version'] == last_channels[channel_name]['version']:
|
||||
channels[channel_name] = last_channels[channel_name]
|
||||
continue
|
||||
|
||||
channel = {'version': build['version']}
|
||||
suffix = 'unstable' if channel_name == 'dev' else channel_name
|
||||
|
||||
try:
|
||||
channel['sha256'] = nix_prefetch_url(f'{BUCKET_URL}/chromium-{build["version"]}.tar.xz')
|
||||
channel['sha256bin64'] = nix_prefetch_url(f'{DEB_URL}/google-chrome-{suffix}/google-chrome-{suffix}_{build["version"]}-1_amd64.deb')
|
||||
except subprocess.CalledProcessError:
|
||||
# This build isn't actually available yet. Continue to
|
||||
# the next one.
|
||||
continue
|
||||
|
||||
channels[channel_name] = channel
|
||||
|
||||
with open(JSON_PATH, 'w') as out:
|
||||
def get_channel_key(item):
|
||||
channel_name = item[0]
|
||||
if channel_name == 'stable':
|
||||
return 0
|
||||
elif channel_name == 'beta':
|
||||
return 1
|
||||
elif channel_name == 'dev':
|
||||
return 2
|
||||
else:
|
||||
print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key))
|
||||
json.dump(sorted_channels, out, indent=2)
|
||||
out.write('\n')
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
cd "$(dirname "$0")"
|
||||
sp="$(nix-build --builders "" -Q --no-out-link update.nix -A update)"
|
||||
cat "$sp" > upstream-info.nix
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"stable": {
|
||||
"version": "85.0.4183.102",
|
||||
"sha256": "032yh1mfwins7a62zw8kwwq8xw1n52a0a93lqz7qlyjaf9sd8s4a",
|
||||
"sha256bin64": "1i8xaxxnmg80vsia8hxnq58qi9k5nnbrl80d6d23g9lb7dbc9cpm"
|
||||
},
|
||||
"beta": {
|
||||
"version": "86.0.4240.30",
|
||||
"sha256": "1isj0zngb72k1hhn3h0s8mccg1cdmppz1mjmg19f2h306farzmzl",
|
||||
"sha256bin64": "10d8im2adqqnkd6265gngv6xlm5qsz6r13z6cbbchsss0ssr8fxa"
|
||||
},
|
||||
"dev": {
|
||||
"version": "87.0.4252.0",
|
||||
"sha256": "1lxlsdni63zh79hxvpwgmnfn67kgfzhz3yg9bkxghqchqykkz92y",
|
||||
"sha256bin64": "130hf7b35wcxpw05ddbqq89x10c0kays1vb9qg6xhq3zx2mk6ijw"
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
# This file is autogenerated from update.sh in the same directory.
|
||||
{
|
||||
beta = {
|
||||
sha256 = "0yf6j0459qzr677zsa2apmfz0x0ndlscvwj1a5v40nqjijchv5qp";
|
||||
sha256bin64 = "017ix9a74f2gzlg6in0x6fqgiw8bpk0rypr6wsqqkslywprypjd0";
|
||||
version = "84.0.4147.89";
|
||||
};
|
||||
dev = {
|
||||
sha256 = "1dbbr7s8vbhxd0sk4k2yqp630zp1r4gzkkd2a86pzlzq2mjhsk8a";
|
||||
sha256bin64 = "0bphfwi6nkj9nzrjjaffiv27xfblgdikyifsbjl6vv2pawkh335q";
|
||||
version = "85.0.4183.15";
|
||||
};
|
||||
stable = {
|
||||
sha256 = "0yf6j0459qzr677zsa2apmfz0x0ndlscvwj1a5v40nqjijchv5qp";
|
||||
sha256bin64 = "1hzhgvs2ykqsncpnbnhzh09sw1vlsdfjhs06z5gc80l47brdi3wz";
|
||||
version = "84.0.4147.89";
|
||||
};
|
||||
}
|
||||
@@ -16,18 +16,19 @@
|
||||
, wrapGAppsHook
|
||||
, gobject-introspection
|
||||
, glib-networking
|
||||
, librest
|
||||
, python3
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.1.0";
|
||||
version = "1.2.1";
|
||||
pname = "cawbird";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "IBBoard";
|
||||
repo = "cawbird";
|
||||
rev = "v${version}";
|
||||
sha256 = "0zghryx5y47ff8kxa65lvgmy1cnhvhazxml7r1lxixxj3d88wh7p";
|
||||
sha256 = "11s8x48syy5wjj23ab4bn5jxhi7l5sx7aw6q2ggk99v042hxh3h2";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -50,6 +51,7 @@ stdenv.mkDerivation rec {
|
||||
dconf
|
||||
gspell
|
||||
glib-networking
|
||||
librest
|
||||
] ++ (with gst_all_1; [
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
|
||||
@@ -15,13 +15,13 @@ with lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kubernetes";
|
||||
version = "1.18.8";
|
||||
version = "1.19.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubernetes";
|
||||
repo = "kubernetes";
|
||||
rev = "v${version}";
|
||||
sha256 = "1dswgxxbybwllf2lf89saarsrn4pkb2617wycim07cd7i1l1dv5n";
|
||||
sha256 = "1wnlw2rl14q7cb8shhldbavdamvl3w3mlfvymwfvmvxfxzhrjlaq";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
|
||||
|
||||
@@ -7,30 +7,30 @@ in {
|
||||
pname = "discord";
|
||||
binaryName = "Discord";
|
||||
desktopName = "Discord";
|
||||
version = "0.0.11";
|
||||
version = "0.0.12";
|
||||
src = fetchurl {
|
||||
url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
|
||||
sha256 = "1saqwigi1gjgy4q8rgnwyni57aaszi0w9vqssgyvfgzff8fpcx54";
|
||||
sha256 = "0qrzvc8cp8azb1b2wb5i4jh9smjfw5rxiw08bfqm8p3v74ycvwk8";
|
||||
};
|
||||
};
|
||||
ptb = callPackage ./base.nix rec {
|
||||
pname = "discord-ptb";
|
||||
binaryName = "DiscordPTB";
|
||||
desktopName = "Discord PTB";
|
||||
version = "0.0.21";
|
||||
version = "0.0.22";
|
||||
src = fetchurl {
|
||||
url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
|
||||
sha256 = "1i164wpi07d45w19i7l5hs47crc29k3plg4y9kc97x75rhh4xym1";
|
||||
sha256 = "06qyh8i9d7il6q7q7iaymbbcmdcgrj6rc4z4xik1ay3fr7qy299j";
|
||||
};
|
||||
};
|
||||
canary = callPackage ./base.nix rec {
|
||||
pname = "discord-canary";
|
||||
binaryName = "DiscordCanary";
|
||||
desktopName = "Discord Canary";
|
||||
version = "0.0.111";
|
||||
version = "0.0.112";
|
||||
src = fetchurl {
|
||||
url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
||||
sha256 = "0ngmb40pwfwydvxyfby89yp17lsvmv642jci9b12cyc3hlkf85n4";
|
||||
sha256 = "1ibw3lsk1060g6b79v78292q45ayqj3izrs3ilvg4gfwmfxmm1a0";
|
||||
};
|
||||
};
|
||||
}.${branch}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "element-desktop",
|
||||
"productName": "Element",
|
||||
"main": "src/electron-main.js",
|
||||
"version": "1.7.5",
|
||||
"version": "1.7.7",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "Element",
|
||||
"repository": {
|
||||
|
||||
@@ -722,11 +722,11 @@
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "bl___bl_4.0.2.tgz";
|
||||
name = "bl___bl_4.0.3.tgz";
|
||||
path = fetchurl {
|
||||
name = "bl___bl_4.0.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz";
|
||||
sha1 = "52b71e9088515d0606d9dd9cc7aa48dc1f98e73a";
|
||||
name = "bl___bl_4.0.3.tgz";
|
||||
url = "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz";
|
||||
sha1 = "12d6287adc29080e22a705e5764b2a9522cdc489";
|
||||
};
|
||||
}
|
||||
{
|
||||
@@ -801,14 +801,6 @@
|
||||
sha1 = "32713bc028f75c02fdb710d7c7bcec1f2c6070ef";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "buffer___buffer_5.4.3.tgz";
|
||||
path = fetchurl {
|
||||
name = "buffer___buffer_5.4.3.tgz";
|
||||
url = "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz";
|
||||
sha1 = "3fbc9c69eb713d323e3fc1a895eee0710c072115";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "buffer___buffer_5.6.0.tgz";
|
||||
path = fetchurl {
|
||||
@@ -4945,22 +4937,6 @@
|
||||
sha1 = "1eca1cf711aef814c04f62252a36a62f6cb23b57";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "readable_stream___readable_stream_2.3.6.tgz";
|
||||
path = fetchurl {
|
||||
name = "readable_stream___readable_stream_2.3.6.tgz";
|
||||
url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz";
|
||||
sha1 = "b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "readable_stream___readable_stream_3.4.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "readable_stream___readable_stream_3.4.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz";
|
||||
sha1 = "a51c26754658e0a3c21dbf59163bd45ba6f447fc";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "readable_stream___readable_stream_3.6.0.tgz";
|
||||
path = fetchurl {
|
||||
@@ -5201,6 +5177,14 @@
|
||||
sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "safe_buffer___safe_buffer_5.2.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "safe_buffer___safe_buffer_5.2.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz";
|
||||
sha1 = "1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "safer_buffer___safer_buffer_2.1.2.tgz";
|
||||
path = fetchurl {
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
|
||||
let
|
||||
executableName = "element-desktop";
|
||||
version = "1.7.5";
|
||||
version = "1.7.7";
|
||||
src = fetchFromGitHub {
|
||||
owner = "vector-im";
|
||||
repo = "riot-desktop";
|
||||
rev = "v${version}";
|
||||
sha256 = "0781yg15bzkw5bpfzbdkqix239djgsc7kjdvbilv1d1xxqz3462y";
|
||||
sha256 = "1h3v3d41ykgwn397nhm9zaqgf3n69zh592sjzrprvk1gsn5kj5h2";
|
||||
};
|
||||
electron = electron_9;
|
||||
|
||||
|
||||
@@ -12,11 +12,11 @@ let
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "element-web";
|
||||
version = "1.7.5";
|
||||
version = "1.7.7";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/vector-im/riot-web/releases/download/v${version}/riot-v${version}.tar.gz";
|
||||
sha256 = "07qc4hymdp1r2zn9gsgkpwxf6knk6xr88dc3iihlhipmlk46m58b";
|
||||
sha256 = "1hly102725qh4xjggxv85w1hyq26mhkgj3y6s76yar7i3smj6kpw";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
||||
@@ -10,11 +10,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "jitsi-meet-electron";
|
||||
version = "2.2.0";
|
||||
version = "2.3.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/jitsi/jitsi-meet-electron/releases/download/v${version}/jitsi-meet-x86_64.AppImage";
|
||||
sha256 = "0gqyqjj69x1gxwj4zhwazddnj5xzy598xqz7vwkpdm1ldzna2iyj";
|
||||
sha256 = "0af87lvqw3sagi2cayripm62q17nfd841xz0ghvbixzfnqkvgf7x";
|
||||
name = "${pname}-${version}.AppImage";
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ stdenv, fetchFromGitHub, cmake, wrapQtAppsHook
|
||||
, qtbase, qtmultimedia, qtx11extras, qttools, qtwebengine
|
||||
, libidn, qca2-qt5, libsecret, libXScrnSaver, hunspell
|
||||
, libidn, qca-qt5, libsecret, libXScrnSaver, hunspell
|
||||
, libgcrypt, libotr, html-tidy, libgpgerror, libsignal-protocol-c
|
||||
}:
|
||||
|
||||
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
buildInputs = [
|
||||
qtbase qtmultimedia qtx11extras qttools qtwebengine
|
||||
libidn qca2-qt5 libsecret libXScrnSaver hunspell
|
||||
libidn qca-qt5 libsecret libXScrnSaver hunspell
|
||||
libgcrypt libotr html-tidy libgpgerror libsignal-protocol-c
|
||||
];
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ stdenv, fetchFromGitHub, cmake, wrapQtAppsHook
|
||||
, qtbase, qtmultimedia, qtx11extras, qttools, qtwebengine
|
||||
, libidn, qca2-qt5, libXScrnSaver, hunspell
|
||||
, libidn, qca-qt5, libXScrnSaver, hunspell
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "psi";
|
||||
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
|
||||
nativeBuildInputs = [ cmake wrapQtAppsHook ];
|
||||
buildInputs = [
|
||||
qtbase qtmultimedia qtx11extras qttools qtwebengine
|
||||
libidn qca2-qt5 libXScrnSaver hunspell
|
||||
libidn qca-qt5 libXScrnSaver hunspell
|
||||
];
|
||||
enableParallelBuilding = true;
|
||||
meta = with stdenv.lib; {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib
|
||||
, cups, expat, libuuid, at-spi2-core, libappindicator-gtk3
|
||||
# Runtime dependencies:
|
||||
, systemd, libnotify, libdbusmenu
|
||||
, systemd, libnotify, libdbusmenu, libpulseaudio
|
||||
# Unfortunately this also overwrites the UI language (not just the spell
|
||||
# checking language!):
|
||||
, hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
|
||||
@@ -25,7 +25,7 @@ let
|
||||
else "");
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "signal-desktop";
|
||||
version = "1.35.1"; # Please backport all updates to the stable channel.
|
||||
version = "1.36.1"; # Please backport all updates to the stable channel.
|
||||
# All releases have a limited lifetime and "expire" 90 days after the release.
|
||||
# When releases "expire" the application becomes unusable until an update is
|
||||
# applied. The expiration date for the current release can be extracted with:
|
||||
@@ -35,7 +35,7 @@ in stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||
sha256 = "1nxj7h8yrp2sbxxd49q9xdh1zsqixcd01i83lr492f4322cg1yjf";
|
||||
sha256 = "0lc56g09g2xfwxwm046bcykvxd0nq63zazamnp268z28lnn937mc";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -122,6 +122,7 @@ in stdenv.mkDerivation rec {
|
||||
--replace /opt/Signal/signal-desktop $out/bin/signal-desktop
|
||||
|
||||
autoPatchelf --no-recurse -- $out/lib/Signal/
|
||||
patchelf --add-needed ${libpulseaudio}/lib/libpulse.so $out/lib/Signal/resources/app.asar.unpacked/node_modules/ringrtc/build/linux/libringrtc.node
|
||||
'';
|
||||
|
||||
# Tests if the application launches and waits for "Link your phone to Signal Desktop":
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ mkDerivation, lib, fetchFromGitHub, pkg-config, python3, cmake, ninja
|
||||
, qtbase, qtimageformats, libsForQt5, hunspell, xdg_utils, ffmpeg_3, openalSoft
|
||||
, qtbase, qtimageformats, libdbusmenu, hunspell, xdg_utils, ffmpeg_3, openalSoft
|
||||
, lzma, lz4, xxHash, zlib, minizip, openssl, libtgvoip, microsoft_gsl, tl-expected
|
||||
, range-v3
|
||||
}:
|
||||
@@ -21,7 +21,7 @@ mkDerivation rec {
|
||||
nativeBuildInputs = [ pkg-config python3 cmake ninja ];
|
||||
|
||||
buildInputs = [
|
||||
qtbase qtimageformats ffmpeg_3 openalSoft lzma lz4 xxHash libsForQt5.libdbusmenu
|
||||
qtbase qtimageformats ffmpeg_3 openalSoft lzma lz4 xxHash libdbusmenu
|
||||
zlib minizip openssl hunspell libtgvoip microsoft_gsl tl-expected range-v3
|
||||
];
|
||||
|
||||
|
||||
@@ -19,16 +19,17 @@ stdenv.mkDerivation rec {
|
||||
|
||||
preConfigure = ''
|
||||
export QMAKEFEATURES=${libcommuni}/features
|
||||
qmakeFlags="$qmakeFlags \
|
||||
COMMUNI_INSTALL_PREFIX=$out \
|
||||
COMMUNI_INSTALL_BINS=$out/bin \
|
||||
COMMUNI_INSTALL_PLUGINS=$out/lib/communi/plugins \
|
||||
COMMUNI_INSTALL_ICONS=$out/share/icons/hicolor \
|
||||
COMMUNI_INSTALL_DESKTOP=$out/share/applications \
|
||||
COMMUNI_INSTALL_THEMES=$out/share/communi/themes
|
||||
"
|
||||
'';
|
||||
|
||||
qmakeFlags = [
|
||||
"COMMUNI_INSTALL_PREFIX=${placeholder "out"}"
|
||||
"COMMUNI_INSTALL_BINS=${placeholder "out"}/bin"
|
||||
"COMMUNI_INSTALL_PLUGINS=${placeholder "out"}/lib/communi/plugins"
|
||||
"COMMUNI_INSTALL_ICONS=${placeholder "out"}/share/icons/hicolor"
|
||||
"COMMUNI_INSTALL_DESKTOP=${placeholder "out"}/share/applications"
|
||||
"COMMUNI_INSTALL_THEMES=${placeholder "out"}/share/communi/themes"
|
||||
];
|
||||
|
||||
postInstall = stdenv.lib.optionalString stdenv.isLinux ''
|
||||
substituteInPlace "$out/share/applications/communi.desktop" \
|
||||
--replace "/usr/bin" "$out/bin"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user