mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-22 08:30:57 +00:00
Compare commits
452 Commits
devShellTo
...
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 }:
|
outputs = { self }:
|
||||||
let
|
let
|
||||||
|
|
||||||
jobs = import ./pkgs/top-level/release.nix {
|
jobs = import ./pkgs/top-level/release.nix {
|
||||||
nixpkgs = self;
|
nixpkgs = self;
|
||||||
};
|
};
|
||||||
@@ -28,10 +27,31 @@
|
|||||||
lib = lib.extend (final: prev: {
|
lib = lib.extend (final: prev: {
|
||||||
nixosSystem = { modules, ... } @ args:
|
nixosSystem = { modules, ... } @ args:
|
||||||
import ./nixos/lib/eval-config.nix (args // {
|
import ./nixos/lib/eval-config.nix (args // {
|
||||||
modules = modules ++
|
modules =
|
||||||
[ { system.nixos.versionSuffix =
|
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"}";
|
".${final.substring 0 8 (self.lastModifiedDate or self.lastModified)}.${self.shortRev or "dirty"}";
|
||||||
system.nixos.revision = final.mkIf (self ? rev) self.rev;
|
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
|
predicates = let
|
||||||
featureSupport = feature: x: builtins.elem feature features.${x};
|
featureSupport = feature: x: builtins.elem feature features.${x} or [];
|
||||||
in {
|
in {
|
||||||
sse3Support = featureSupport "sse3";
|
sse3Support = featureSupport "sse3";
|
||||||
ssse3Support = featureSupport "ssse3";
|
ssse3Support = featureSupport "ssse3";
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ rec {
|
|||||||
armv7a-android-prebuilt = {
|
armv7a-android-prebuilt = {
|
||||||
config = "armv7a-unknown-linux-androideabi";
|
config = "armv7a-unknown-linux-androideabi";
|
||||||
sdkVer = "29";
|
sdkVer = "29";
|
||||||
ndkVer = "18b";
|
ndkVer = "21";
|
||||||
platform = platforms.armv7a-android;
|
platform = platforms.armv7a-android;
|
||||||
useAndroidPrebuilt = true;
|
useAndroidPrebuilt = true;
|
||||||
};
|
};
|
||||||
@@ -55,7 +55,7 @@ rec {
|
|||||||
aarch64-android-prebuilt = {
|
aarch64-android-prebuilt = {
|
||||||
config = "aarch64-unknown-linux-android";
|
config = "aarch64-unknown-linux-android";
|
||||||
sdkVer = "29";
|
sdkVer = "29";
|
||||||
ndkVer = "18b";
|
ndkVer = "21";
|
||||||
platform = platforms.aarch64-multiplatform;
|
platform = platforms.aarch64-multiplatform;
|
||||||
useAndroidPrebuilt = true;
|
useAndroidPrebuilt = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3541,6 +3541,12 @@
|
|||||||
githubId = 993484;
|
githubId = 993484;
|
||||||
name = "Greg Hale";
|
name = "Greg Hale";
|
||||||
};
|
};
|
||||||
|
immae = {
|
||||||
|
email = "ismael@bouya.org";
|
||||||
|
github = "immae";
|
||||||
|
githubId = 510202;
|
||||||
|
name = "Ismaël Bouya";
|
||||||
|
};
|
||||||
imuli = {
|
imuli = {
|
||||||
email = "i@imu.li";
|
email = "i@imu.li";
|
||||||
github = "imuli";
|
github = "imuli";
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ in
|
|||||||
packagesWith
|
packagesWith
|
||||||
(name: pkg:
|
(name: pkg:
|
||||||
(
|
(
|
||||||
if builtins.hasAttr "maintainers" pkg.meta
|
if builtins.hasAttr "meta" pkg && builtins.hasAttr "maintainers" pkg.meta
|
||||||
then (
|
then (
|
||||||
if builtins.isList pkg.meta.maintainers
|
if builtins.isList pkg.meta.maintainers
|
||||||
then builtins.elem maintainer_ pkg.meta.maintainers
|
then builtins.elem maintainer_ pkg.meta.maintainers
|
||||||
|
|||||||
@@ -29,6 +29,13 @@ with lib.maintainers; {
|
|||||||
scope = "Maintain ACME-related packages and modules.";
|
scope = "Maintain ACME-related packages and modules.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cinnamon = {
|
||||||
|
members = [
|
||||||
|
mkg20001
|
||||||
|
];
|
||||||
|
scope = "Maintain Cinnamon desktop environment and applications made by the LinuxMint team.";
|
||||||
|
};
|
||||||
|
|
||||||
freedesktop = {
|
freedesktop = {
|
||||||
members = [ jtojnar worldofpeace ];
|
members = [ jtojnar worldofpeace ];
|
||||||
scope = "Maintain Freedesktop.org packages for graphical desktop.";
|
scope = "Maintain Freedesktop.org packages for graphical desktop.";
|
||||||
|
|||||||
@@ -70,9 +70,13 @@
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
If you would like to continue the installation from a different machine you
|
If you would like to continue the installation from a different machine you
|
||||||
need to activate the SSH daemon via <command>systemctl start
|
can use activated SSH daemon. You need to copy your ssh key to either
|
||||||
sshd</command>. You then must set a password for either <literal>root</literal> or
|
<literal>/home/nixos/.ssh/authorized_keys</literal> or
|
||||||
<literal>nixos</literal> with <command>passwd</command> to be able to login.
|
<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>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -26,6 +26,18 @@
|
|||||||
<listitem>
|
<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>
|
<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>
|
||||||
|
<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>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<package>maxx</package> package removed along with <varname>services.xserver.desktopManager.maxx</varname> module.
|
<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>.
|
<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>
|
</para>
|
||||||
</listitem>
|
</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>
|
</itemizedlist>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
@@ -427,8 +729,8 @@ php.override {
|
|||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Add option <literal>services.nginx.enableSandbox</literal> to starting Nginx web server with additional sandbox/hardening options.
|
Nginx web server now starting with additional sandbox/hardening options. By default, write access
|
||||||
By default, write access to <literal>services.nginx.stateDir</literal> is allowed. To allow writing to other folders,
|
to <literal>services.nginx.stateDir</literal> is allowed. To allow writing to other folders,
|
||||||
use <literal>systemd.services.nginx.serviceConfig.ReadWritePaths</literal>
|
use <literal>systemd.services.nginx.serviceConfig.ReadWritePaths</literal>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ];
|
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.
|
<literal>config.systemd.services.${name}.path</literal> now returns a list of paths instead of a colon-separated string.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</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>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -864,6 +1192,12 @@ CREATE ROLE postgres LOGIN SUPERUSER;
|
|||||||
Default algorithm for ZRAM swap was changed to <literal>zstd</literal>.
|
Default algorithm for ZRAM swap was changed to <literal>zstd</literal>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</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>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The scripted networking system now uses <literal>.link</literal> files in
|
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>
|
<para>
|
||||||
Nginx module <literal>nginxModules.fastcgi-cache-purge</literal> renamed to official name <literal>nginxModules.cache-purge</literal>.
|
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>.
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -1080,5 +1418,20 @@ services.transmission.settings.rpc-bind-address = "0.0.0.0";
|
|||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</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>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ class Machine:
|
|||||||
match = re.search("run-(.+)-vm$", cmd)
|
match = re.search("run-(.+)-vm$", cmd)
|
||||||
if match:
|
if match:
|
||||||
self.name = match.group(1)
|
self.name = match.group(1)
|
||||||
|
self.logger = args["log"]
|
||||||
self.script = args.get("startCommand", self.create_startcommand(args))
|
self.script = args.get("startCommand", self.create_startcommand(args))
|
||||||
|
|
||||||
tmp_dir = os.environ.get("TMPDIR", tempfile.gettempdir())
|
tmp_dir = os.environ.get("TMPDIR", tempfile.gettempdir())
|
||||||
@@ -227,7 +227,10 @@ class Machine:
|
|||||||
os.makedirs(path, mode=0o700, exist_ok=True)
|
os.makedirs(path, mode=0o700, exist_ok=True)
|
||||||
return path
|
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.shared_dir = create_dir("shared-xchg")
|
||||||
|
|
||||||
self.booted = False
|
self.booted = False
|
||||||
@@ -235,7 +238,6 @@ class Machine:
|
|||||||
self.pid: Optional[int] = None
|
self.pid: Optional[int] = None
|
||||||
self.socket = None
|
self.socket = None
|
||||||
self.monitor: Optional[socket.socket] = None
|
self.monitor: Optional[socket.socket] = None
|
||||||
self.logger: Logger = args["log"]
|
|
||||||
self.allow_reboot = args.get("allowReboot", False)
|
self.allow_reboot = args.get("allowReboot", False)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -780,9 +782,10 @@ class Machine:
|
|||||||
self.log("QEMU running (pid {})".format(self.pid))
|
self.log("QEMU running (pid {})".format(self.pid))
|
||||||
|
|
||||||
def cleanup_statedir(self) -> None:
|
def cleanup_statedir(self) -> None:
|
||||||
self.log("delete the VM state directory")
|
if os.path.isdir(self.state_dir):
|
||||||
if os.path.isfile(self.state_dir):
|
|
||||||
shutil.rmtree(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:
|
def shutdown(self) -> None:
|
||||||
if not self.booted:
|
if not self.booted:
|
||||||
@@ -940,10 +943,10 @@ if __name__ == "__main__":
|
|||||||
for nr, vde_socket, _, _ in vde_sockets:
|
for nr, vde_socket, _, _ in vde_sockets:
|
||||||
os.environ["QEMU_VDE_SOCKET_{}".format(nr)] = vde_socket
|
os.environ["QEMU_VDE_SOCKET_{}".format(nr)] = vde_socket
|
||||||
|
|
||||||
machines = [create_machine({"startCommand": s}) for s in vm_scripts]
|
machines = [
|
||||||
for machine in machines:
|
create_machine({"startCommand": s, "keepVmState": cli_args.keep_vm_state})
|
||||||
if not cli_args.keep_vm_state:
|
for s in vm_scripts
|
||||||
machine.cleanup_statedir()
|
]
|
||||||
machine_eval = [
|
machine_eval = [
|
||||||
"{0} = machines[{1}]".format(m.name, idx) for idx, m in enumerate(machines)
|
"{0} = machines[{1}]".format(m.name, idx) for idx, m in enumerate(machines)
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -41,6 +41,12 @@ let
|
|||||||
pkgs.zstd
|
pkgs.zstd
|
||||||
];
|
];
|
||||||
|
|
||||||
|
defaultPackages = map (pkg: setPrio ((pkg.meta.priority or 5) + 3) pkg)
|
||||||
|
[ pkgs.perl
|
||||||
|
pkgs.rsync
|
||||||
|
pkgs.strace
|
||||||
|
];
|
||||||
|
|
||||||
in
|
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 {
|
pathsToLink = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
# Note: We need `/lib' to be among `pathsToLink' for NSS modules
|
# Note: We need `/lib' to be among `pathsToLink' for NSS modules
|
||||||
@@ -102,7 +123,7 @@ in
|
|||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
|
||||||
environment.systemPackages = requiredPackages;
|
environment.systemPackages = requiredPackages ++ config.environment.defaultPackages;
|
||||||
|
|
||||||
environment.pathsToLink =
|
environment.pathsToLink =
|
||||||
[ "/bin"
|
[ "/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
|
if [[ -z $flake ]]; then
|
||||||
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A vm -k "${extraBuildFlags[@]}")"
|
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A vm -k "${extraBuildFlags[@]}")"
|
||||||
else
|
else
|
||||||
echo "$0: 'build-vm' is not supported with '--flake'" >&2
|
nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.vm" \
|
||||||
exit 1
|
"${extraBuildFlags[@]}" "${lockFlags[@]}"
|
||||||
|
pathToConfig="$(readlink -f ./result)"
|
||||||
fi
|
fi
|
||||||
elif [ "$action" = build-vm-with-bootloader ]; then
|
elif [ "$action" = build-vm-with-bootloader ]; then
|
||||||
if [[ -z $flake ]]; then
|
if [[ -z $flake ]]; then
|
||||||
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A vmWithBootLoader -k "${extraBuildFlags[@]}")"
|
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A vmWithBootLoader -k "${extraBuildFlags[@]}")"
|
||||||
else
|
else
|
||||||
echo "$0: 'build-vm-with-bootloader' is not supported with '--flake'" >&2
|
nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.vmWithBootLoader" \
|
||||||
exit 1
|
"${extraBuildFlags[@]}" "${lockFlags[@]}"
|
||||||
|
pathToConfig="$(readlink -f ./result)"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
showSyntax
|
showSyntax
|
||||||
|
|||||||
@@ -22,7 +22,11 @@ let
|
|||||||
src = ./nixos-install.sh;
|
src = ./nixos-install.sh;
|
||||||
inherit (pkgs) runtimeShell;
|
inherit (pkgs) runtimeShell;
|
||||||
nix = config.nix.package.out;
|
nix = config.nix.package.out;
|
||||||
path = makeBinPath [ pkgs.nixUnstable nixos-enter ];
|
path = makeBinPath [
|
||||||
|
pkgs.nixUnstable
|
||||||
|
pkgs.jq
|
||||||
|
nixos-enter
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
nixos-rebuild =
|
nixos-rebuild =
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ in
|
|||||||
defaultChannel = mkOption {
|
defaultChannel = mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
type = types.str;
|
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.";
|
description = "Default NixOS channel to which the root user is subscribed.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,7 @@
|
|||||||
./hardware/printers.nix
|
./hardware/printers.nix
|
||||||
./hardware/raid/hpsa.nix
|
./hardware/raid/hpsa.nix
|
||||||
./hardware/steam-hardware.nix
|
./hardware/steam-hardware.nix
|
||||||
|
./hardware/system-76.nix
|
||||||
./hardware/tuxedo-keyboard.nix
|
./hardware/tuxedo-keyboard.nix
|
||||||
./hardware/usb-wwan.nix
|
./hardware/usb-wwan.nix
|
||||||
./hardware/onlykey.nix
|
./hardware/onlykey.nix
|
||||||
|
|||||||
@@ -51,22 +51,23 @@ with lib;
|
|||||||
services.mingetty.helpLine = ''
|
services.mingetty.helpLine = ''
|
||||||
The "nixos" and "root" accounts have empty passwords.
|
The "nixos" and "root" accounts have empty passwords.
|
||||||
|
|
||||||
Type `sudo systemctl start sshd` to start the SSH daemon.
|
An ssh daemon is running. You then must set a password
|
||||||
You then must set a password for either "root" or "nixos"
|
for either "root" or "nixos" with `passwd` or add an ssh key
|
||||||
with `passwd` to be able to login.
|
to /home/nixos/.ssh/authorized_keys be able to login.
|
||||||
'' + optionalString config.services.xserver.enable ''
|
'' + optionalString config.services.xserver.enable ''
|
||||||
Type `sudo systemctl start display-manager' to
|
Type `sudo systemctl start display-manager' to
|
||||||
start the graphical user interface.
|
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 = {
|
services.openssh = {
|
||||||
enable = true;
|
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";
|
permitRootLogin = "yes";
|
||||||
};
|
};
|
||||||
systemd.services.sshd.wantedBy = mkOverride 50 [];
|
|
||||||
|
|
||||||
# Enable wpa_supplicant, but don't start it by default.
|
# Enable wpa_supplicant, but don't start it by default.
|
||||||
networking.wireless.enable = mkDefault true;
|
networking.wireless.enable = mkDefault true;
|
||||||
|
|||||||
@@ -26,6 +26,6 @@ with lib;
|
|||||||
###### implementation
|
###### implementation
|
||||||
config = mkIf config.programs.qt5ct.enable {
|
config = mkIf config.programs.qt5ct.enable {
|
||||||
environment.variables.QT_QPA_PLATFORMTHEME = "qt5ct";
|
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"}
|
"auth optional ${pkgs.pam_mount}/lib/security/pam_mount.so"}
|
||||||
${optionalString cfg.enableKwallet
|
${optionalString cfg.enableKwallet
|
||||||
("auth optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
|
("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
|
${optionalString cfg.enableGnomeKeyring
|
||||||
"auth optional ${pkgs.gnome3.gnome-keyring}/lib/security/pam_gnome_keyring.so"}
|
"auth optional ${pkgs.gnome3.gnome-keyring}/lib/security/pam_gnome_keyring.so"}
|
||||||
${optionalString cfg.googleAuthenticator.enable
|
${optionalString cfg.googleAuthenticator.enable
|
||||||
@@ -471,7 +471,7 @@ let
|
|||||||
"session optional ${pkgs.apparmor-pam}/lib/security/pam_apparmor.so order=user,group,default debug"}
|
"session optional ${pkgs.apparmor-pam}/lib/security/pam_apparmor.so order=user,group,default debug"}
|
||||||
${optionalString (cfg.enableKwallet)
|
${optionalString (cfg.enableKwallet)
|
||||||
("session optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
|
("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)
|
${optionalString (cfg.enableGnomeKeyring)
|
||||||
"session optional ${pkgs.gnome3.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start"}
|
"session optional ${pkgs.gnome3.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start"}
|
||||||
${optionalString (config.virtualisation.lxc.lxcfs.enable)
|
${optionalString (config.virtualisation.lxc.lxcfs.enable)
|
||||||
|
|||||||
@@ -10,11 +10,10 @@ in
|
|||||||
security.rngd = {
|
security.rngd = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
Whether to enable the rng daemon, which adds entropy from
|
Whether to enable the rng daemon. Devices that the kernel recognises
|
||||||
hardware sources of randomness to the kernel entropy pool when
|
as entropy sources are handled automatically by krngd.
|
||||||
available.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
debug = mkOption {
|
debug = mkOption {
|
||||||
@@ -26,12 +25,6 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
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 = {
|
systemd.services.rngd = {
|
||||||
bindsTo = [ "dev-random.device" ];
|
bindsTo = [ "dev-random.device" ];
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ in {
|
|||||||
];
|
];
|
||||||
execPkgs = lib.concatMap (opt: let
|
execPkgs = lib.concatMap (opt: let
|
||||||
isSet = config.serviceConfig ? ${opt};
|
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";
|
unitAttrs = toplevelConfig.systemd.units."${name}.service";
|
||||||
allPkgs = lib.singleton (builtins.toJSON unitAttrs);
|
allPkgs = lib.singleton (builtins.toJSON unitAttrs);
|
||||||
unitPkgs = if fullUnit then allPkgs else execPkgs;
|
unitPkgs = if fullUnit then allPkgs else execPkgs;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ let
|
|||||||
size = 2048;
|
size = 2048;
|
||||||
};
|
};
|
||||||
CN = top.masterAddress;
|
CN = top.masterAddress;
|
||||||
hosts = cfg.cfsslAPIExtraSANs;
|
hosts = [top.masterAddress] ++ cfg.cfsslAPIExtraSANs;
|
||||||
});
|
});
|
||||||
|
|
||||||
cfsslAPITokenBaseName = "apitoken.secret";
|
cfsslAPITokenBaseName = "apitoken.secret";
|
||||||
@@ -228,7 +228,8 @@ in
|
|||||||
};
|
};
|
||||||
private_key = cert.privateKeyOptions;
|
private_key = cert.privateKeyOptions;
|
||||||
request = {
|
request = {
|
||||||
inherit (cert) CN hosts;
|
hosts = [cert.CN] ++ cert.hosts;
|
||||||
|
inherit (cert) CN;
|
||||||
key = {
|
key = {
|
||||||
algo = "rsa";
|
algo = "rsa";
|
||||||
size = 2048;
|
size = 2048;
|
||||||
|
|||||||
@@ -4,29 +4,19 @@ with lib;
|
|||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.monit;
|
cfg = config.services.monit;
|
||||||
extraConfig = pkgs.writeText "monitConfig" cfg.extraConfig;
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
|
||||||
(mkRenamedOptionModule [ "services" "monit" "config" ] ["services" "monit" "extraConfig" ])
|
|
||||||
];
|
|
||||||
|
|
||||||
options.services.monit = {
|
options.services.monit = {
|
||||||
|
|
||||||
enable = mkEnableOption "Monit";
|
enable = mkEnableOption "Monit";
|
||||||
|
|
||||||
configFiles = mkOption {
|
config = mkOption {
|
||||||
type = types.listOf types.path;
|
|
||||||
default = [];
|
|
||||||
description = "List of paths to be included in the monitrc file";
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = mkOption {
|
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = "Additional monit config as string";
|
description = "monitrc content";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
@@ -34,7 +24,7 @@ in
|
|||||||
environment.systemPackages = [ pkgs.monit ];
|
environment.systemPackages = [ pkgs.monit ];
|
||||||
|
|
||||||
environment.etc.monitrc = {
|
environment.etc.monitrc = {
|
||||||
text = concatMapStringsSep "\n" (path: "include ${path}") (cfg.configFiles ++ [extraConfig]);
|
text = cfg.config;
|
||||||
mode = "0400";
|
mode = "0400";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -629,7 +629,9 @@ in {
|
|||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
assertions = [
|
assertions = [
|
||||||
( let
|
( 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 {
|
in {
|
||||||
assertion = legacy == null;
|
assertion = legacy == null;
|
||||||
message = ''
|
message = ''
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ let
|
|||||||
makeOpenVPNJob = cfg: name:
|
makeOpenVPNJob = cfg: name:
|
||||||
let
|
let
|
||||||
|
|
||||||
path = (getAttr "openvpn-${name}" config.systemd.services).path;
|
path = makeBinPath (getAttr "openvpn-${name}" config.systemd.services).path;
|
||||||
|
|
||||||
upScript = ''
|
upScript = ''
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ let
|
|||||||
plugin_opts = cfg.pluginOpts;
|
plugin_opts = cfg.pluginOpts;
|
||||||
} // optionalAttrs (cfg.password != null) {
|
} // optionalAttrs (cfg.password != null) {
|
||||||
password = cfg.password;
|
password = cfg.password;
|
||||||
};
|
} // cfg.extraConfig;
|
||||||
|
|
||||||
configFile = pkgs.writeText "shadowsocks.json" (builtins.toJSON opts);
|
configFile = pkgs.writeText "shadowsocks.json" (builtins.toJSON opts);
|
||||||
|
|
||||||
@@ -112,6 +112,24 @@ in
|
|||||||
Options to pass to the plugin if one was specified
|
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";
|
description = "shadowsocks-libev Daemon";
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.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;
|
serviceConfig.PrivateTmp = true;
|
||||||
script = ''
|
script = ''
|
||||||
${optionalString (cfg.passwordFile != null) ''
|
${optionalString (cfg.passwordFile != null) ''
|
||||||
|
|||||||
@@ -329,5 +329,6 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
meta.doc = ./jitsi-meet.xml;
|
||||||
meta.maintainers = lib.teams.jitsi.members;
|
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
|
let
|
||||||
cfg = config.services.caddy;
|
cfg = config.services.caddy;
|
||||||
configFile = pkgs.writeText "Caddyfile" cfg.config;
|
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 {
|
in {
|
||||||
options.services.caddy = {
|
options.services.caddy = {
|
||||||
enable = mkEnableOption "Caddy web server";
|
enable = mkEnableOption "Caddy web server";
|
||||||
@@ -13,15 +33,26 @@ in {
|
|||||||
default = "";
|
default = "";
|
||||||
example = ''
|
example = ''
|
||||||
example.com {
|
example.com {
|
||||||
gzip
|
encode gzip
|
||||||
minify
|
log
|
||||||
log syslog
|
|
||||||
|
|
||||||
root /srv/http
|
root /srv/http
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
type = types.lines;
|
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 {
|
ca = mkOption {
|
||||||
@@ -50,33 +81,46 @@ in {
|
|||||||
The data directory, for storing certificates. Before 17.09, this
|
The data directory, for storing certificates. Before 17.09, this
|
||||||
would create a .caddy directory. With 17.09 the contents of the
|
would create a .caddy directory. With 17.09 the contents of the
|
||||||
.caddy directory are in the specified data directory instead.
|
.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 {
|
package = mkOption {
|
||||||
default = pkgs.caddy;
|
default = pkgs.caddy;
|
||||||
defaultText = "pkgs.caddy";
|
defaultText = "pkgs.caddy";
|
||||||
|
example = "pkgs.caddy1";
|
||||||
type = types.package;
|
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 {
|
config = mkIf cfg.enable {
|
||||||
systemd.services.caddy = {
|
systemd.services.caddy = {
|
||||||
description = "Caddy web server";
|
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" ];
|
after = [ "network-online.target" ];
|
||||||
wants = [ "network-online.target" ]; # systemd-networkd-wait-online.service
|
wants = [ "network-online.target" ]; # systemd-networkd-wait-online.service
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
environment = mkIf (versionAtLeast config.system.stateVersion "17.09")
|
environment = mkIf (versionAtLeast config.system.stateVersion "17.09" && !isCaddy2)
|
||||||
{ CADDYPATH = cfg.dataDir; };
|
{ CADDYPATH = cfg.dataDir; };
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = ''
|
ExecStart = if isCaddy2 then ''
|
||||||
|
${cfg.package}/bin/caddy run --config ${configJSON}
|
||||||
|
'' else ''
|
||||||
${cfg.package}/bin/caddy -log stdout -log-timestamps=false \
|
${cfg.package}/bin/caddy -log stdout -log-timestamps=false \
|
||||||
-root=/var/tmp -conf=${configFile} \
|
-root=/var/tmp -conf=${configFile} \
|
||||||
-ca=${cfg.ca} -email=${cfg.email} ${optionalString cfg.agree "-agree"}
|
-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";
|
Type = "simple";
|
||||||
User = "caddy";
|
User = "caddy";
|
||||||
Group = "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 {
|
user = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "nginx";
|
default = "nginx";
|
||||||
@@ -728,7 +720,6 @@ in
|
|||||||
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" "CAP_SYS_RESOURCE" ];
|
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" "CAP_SYS_RESOURCE" ];
|
||||||
# Security
|
# Security
|
||||||
NoNewPrivileges = true;
|
NoNewPrivileges = true;
|
||||||
} // optionalAttrs cfg.enableSandbox {
|
|
||||||
# Sandboxing
|
# Sandboxing
|
||||||
ProtectSystem = "strict";
|
ProtectSystem = "strict";
|
||||||
ProtectHome = mkDefault true;
|
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
|
./none.nix ./xterm.nix ./xfce.nix ./plasma5.nix ./lumina.nix
|
||||||
./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix
|
./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix
|
||||||
./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
|
./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
|
||||||
|
./cinnamon.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
|||||||
@@ -7,7 +7,9 @@ let
|
|||||||
xcfg = config.services.xserver;
|
xcfg = config.services.xserver;
|
||||||
cfg = xcfg.desktopManager.plasma5;
|
cfg = xcfg.desktopManager.plasma5;
|
||||||
|
|
||||||
inherit (pkgs) kdeApplications plasma5 libsForQt5 qt5;
|
inherit (pkgs) kdeApplications kdeFrameworks plasma5;
|
||||||
|
libsForQt5 = pkgs.libsForQt512;
|
||||||
|
qt5 = pkgs.qt512;
|
||||||
inherit (pkgs) writeText;
|
inherit (pkgs) writeText;
|
||||||
|
|
||||||
pulseaudio = config.hardware.pulseaudio;
|
pulseaudio = config.hardware.pulseaudio;
|
||||||
@@ -83,7 +85,7 @@ let
|
|||||||
# recognize that software that has been removed.
|
# recognize that software that has been removed.
|
||||||
rm -fv $HOME/.cache/ksycoca*
|
rm -fv $HOME/.cache/ksycoca*
|
||||||
|
|
||||||
${pkgs.libsForQt5.kservice}/bin/kbuildsycoca5
|
${libsForQt5.kservice}/bin/kbuildsycoca5
|
||||||
'';
|
'';
|
||||||
|
|
||||||
set_XDG_CONFIG_HOME = ''
|
set_XDG_CONFIG_HOME = ''
|
||||||
@@ -203,7 +205,9 @@ in
|
|||||||
KERNEL=="i2c-[0-9]*", TAG+="uaccess"
|
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
|
frameworkintegration
|
||||||
kactivities
|
kactivities
|
||||||
@@ -293,7 +297,7 @@ in
|
|||||||
|
|
||||||
qtvirtualkeyboard
|
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
|
# Phonon audio backend
|
||||||
@@ -301,11 +305,11 @@ in
|
|||||||
++ lib.optional (cfg.phononBackend == "vlc") libsForQt5.phonon-backend-vlc
|
++ lib.optional (cfg.phononBackend == "vlc") libsForQt5.phonon-backend-vlc
|
||||||
|
|
||||||
# Optional hardware support features
|
# 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.networking.networkmanager.enable plasma-nm
|
||||||
++ lib.optional config.hardware.pulseaudio.enable plasma-pa
|
++ lib.optional config.hardware.pulseaudio.enable plasma-pa
|
||||||
++ lib.optional config.powerManagement.enable powerdevil
|
++ 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.optionals config.services.samba.enable [ kdenetwork-filesharing pkgs.samba ]
|
||||||
++ lib.optional config.services.xserver.wacom.enable wacomtablet;
|
++ lib.optional config.services.xserver.wacom.enable wacomtablet;
|
||||||
|
|
||||||
|
|||||||
@@ -64,13 +64,9 @@ in
|
|||||||
|
|
||||||
services.xserver.displayManager.gdm = {
|
services.xserver.displayManager.gdm = {
|
||||||
|
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption "GDM, the GNOME Display Manager";
|
||||||
GDM, the GNOME Display Manager
|
|
||||||
'';
|
|
||||||
|
|
||||||
debug = mkEnableOption ''
|
debug = mkEnableOption "debugging messages in GDM";
|
||||||
debugging messages in GDM
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Auto login options specific to GDM
|
# Auto login options specific to GDM
|
||||||
autoLogin.delay = mkOption {
|
autoLogin.delay = mkOption {
|
||||||
|
|||||||
@@ -200,7 +200,9 @@ def main():
|
|||||||
else:
|
else:
|
||||||
# Update bootloader to latest if needed
|
# Update bootloader to latest if needed
|
||||||
systemd_version = subprocess.check_output(["@systemd@/bin/bootctl", "--version"], universal_newlines=True).split()[1]
|
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
|
# See status_binaries() in systemd bootctl.c for code which generates this
|
||||||
m = re.search("^\W+File:.*/EFI/(BOOT|systemd)/.*\.efi \(systemd-boot (\d+)\)$",
|
m = re.search("^\W+File:.*/EFI/(BOOT|systemd)/.*\.efi \(systemd-boot (\d+)\)$",
|
||||||
|
|||||||
@@ -218,6 +218,7 @@ done
|
|||||||
# Create device nodes in /dev.
|
# Create device nodes in /dev.
|
||||||
@preDeviceCommands@
|
@preDeviceCommands@
|
||||||
echo "running udev..."
|
echo "running udev..."
|
||||||
|
ln -sfn /proc/self/fd /dev/fd
|
||||||
mkdir -p /etc/systemd
|
mkdir -p /etc/systemd
|
||||||
ln -sfn @linkUnits@ /etc/systemd/network
|
ln -sfn @linkUnits@ /etc/systemd/network
|
||||||
mkdir -p /etc/udev
|
mkdir -p /etc/udev
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ let
|
|||||||
|
|
||||||
version = fileContents ../.version;
|
version = fileContents ../.version;
|
||||||
versionSuffix =
|
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
|
# 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,
|
# e.g. ‘nix-build -A tests.login.x86_64-linux’, or equivalently,
|
||||||
@@ -186,11 +186,6 @@ in rec {
|
|||||||
inherit system;
|
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).
|
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
|
||||||
ova = forMatchingSystems [ "x86_64-linux" ] (system:
|
ova = forMatchingSystems [ "x86_64-linux" ] (system:
|
||||||
|
|
||||||
|
|||||||
@@ -134,6 +134,10 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
|
||||||
|
peer0.wait_for_unit("network-online.target")
|
||||||
|
|
||||||
peer1.wait_for_unit("3proxy.service")
|
peer1.wait_for_unit("3proxy.service")
|
||||||
peer1.wait_for_open_port("9999")
|
peer1.wait_for_open_port("9999")
|
||||||
|
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ in
|
|||||||
sanoid = handleTest ./sanoid.nix {};
|
sanoid = handleTest ./sanoid.nix {};
|
||||||
sddm = handleTest ./sddm.nix {};
|
sddm = handleTest ./sddm.nix {};
|
||||||
service-runner = handleTest ./service-runner.nix {};
|
service-runner = handleTest ./service-runner.nix {};
|
||||||
shadowsocks = handleTest ./shadowsocks.nix {};
|
shadowsocks = handleTest ./shadowsocks {};
|
||||||
shattered-pixel-dungeon = handleTest ./shattered-pixel-dungeon.nix {};
|
shattered-pixel-dungeon = handleTest ./shattered-pixel-dungeon.nix {};
|
||||||
shiori = handleTest ./shiori.nix {};
|
shiori = handleTest ./shiori.nix {};
|
||||||
signal-desktop = handleTest ./signal-desktop.nix {};
|
signal-desktop = handleTest ./signal-desktop.nix {};
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "caddy";
|
name = "caddy";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ xfix ];
|
maintainers = [ xfix filalex77 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
@@ -9,9 +9,10 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||||||
services.caddy.enable = true;
|
services.caddy.enable = true;
|
||||||
services.caddy.config = ''
|
services.caddy.config = ''
|
||||||
http://localhost {
|
http://localhost {
|
||||||
gzip
|
encode gzip
|
||||||
|
|
||||||
root ${
|
file_server
|
||||||
|
root * ${
|
||||||
pkgs.runCommand "testdir" {} ''
|
pkgs.runCommand "testdir" {} ''
|
||||||
mkdir "$out"
|
mkdir "$out"
|
||||||
echo hello world > "$out/example.html"
|
echo hello world > "$out/example.html"
|
||||||
@@ -23,9 +24,10 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||||||
specialisation.etag.configuration = {
|
specialisation.etag.configuration = {
|
||||||
services.caddy.config = lib.mkForce ''
|
services.caddy.config = lib.mkForce ''
|
||||||
http://localhost {
|
http://localhost {
|
||||||
gzip
|
encode gzip
|
||||||
|
|
||||||
root ${
|
file_server
|
||||||
|
root * ${
|
||||||
pkgs.runCommand "testdir2" {} ''
|
pkgs.runCommand "testdir2" {} ''
|
||||||
mkdir "$out"
|
mkdir "$out"
|
||||||
echo changed > "$out/example.html"
|
echo changed > "$out/example.html"
|
||||||
@@ -59,9 +61,11 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||||||
)
|
)
|
||||||
etag = etag.replace("\r\n", " ")
|
etag = etag.replace("\r\n", " ")
|
||||||
http_code = webserver.succeed(
|
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
|
return etag
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -41,5 +41,10 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
|||||||
)
|
)
|
||||||
|
|
||||||
assert title == "Gotify"
|
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, ...} : {
|
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
name = "lxd-nftables";
|
name = "lxd-nftables";
|
||||||
|
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ patryk27 ];
|
maintainers = [ patryk27 ];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,15 +6,14 @@ let
|
|||||||
#
|
#
|
||||||
# I've chosen to import Alpine Linux, because its image is turbo-tiny and,
|
# I've chosen to import Alpine Linux, because its image is turbo-tiny and,
|
||||||
# generally, sufficient for our tests.
|
# generally, sufficient for our tests.
|
||||||
|
|
||||||
alpine-meta = pkgs.fetchurl {
|
alpine-meta = pkgs.fetchurl {
|
||||||
url = "https://uk.images.linuxcontainers.org/images/alpine/3.11/i386/default/20200608_13:00/lxd.tar.xz";
|
url = "https://tarballs.nixos.org/alpine/3.12/lxd.tar.xz";
|
||||||
sha256 = "1hkvaj3rr333zmx1759njy435lps33gl4ks8zfm7m4nqvipm26a0";
|
hash = "sha256-1tcKaO9lOkvqfmG/7FMbfAEToAuFy2YMewS8ysBKuLA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
alpine-rootfs = pkgs.fetchurl {
|
alpine-rootfs = pkgs.fetchurl {
|
||||||
url = "https://uk.images.linuxcontainers.org/images/alpine/3.11/i386/default/20200608_13:00/rootfs.tar.xz";
|
url = "https://tarballs.nixos.org/alpine/3.12/rootfs.tar.xz";
|
||||||
sha256 = "1v82zdra4j5xwsff09qlp7h5vbsg54s0j7rdg4rynichfid3r347";
|
hash = "sha256-Tba9sSoaiMtQLY45u7p5DMqXTSDgs/763L/SQp0bkCA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
lxd-config = pkgs.writeText "config.yaml" ''
|
lxd-config = pkgs.writeText "config.yaml" ''
|
||||||
@@ -44,8 +43,10 @@ let
|
|||||||
type: disk
|
type: disk
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
||||||
in {
|
in {
|
||||||
name = "lxd";
|
name = "lxd";
|
||||||
|
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ patryk27 ];
|
maintainers = [ patryk27 ];
|
||||||
};
|
};
|
||||||
@@ -53,7 +54,7 @@ in {
|
|||||||
machine = { lib, ... }: {
|
machine = { lib, ... }: {
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
# Since we're testing `limits.cpu`, we've gotta have a known number of
|
# Since we're testing `limits.cpu`, we've gotta have a known number of
|
||||||
# cores to lay on
|
# cores to lean on
|
||||||
cores = 2;
|
cores = 2;
|
||||||
|
|
||||||
# Ditto, for `limits.memory`
|
# Ditto, for `limits.memory`
|
||||||
@@ -67,6 +68,7 @@ in {
|
|||||||
testScript = ''
|
testScript = ''
|
||||||
machine.wait_for_unit("sockets.target")
|
machine.wait_for_unit("sockets.target")
|
||||||
machine.wait_for_unit("lxd.service")
|
machine.wait_for_unit("lxd.service")
|
||||||
|
machine.wait_for_file("/var/lib/lxd/unix.socket")
|
||||||
|
|
||||||
# It takes additional second for lxd to settle
|
# It takes additional second for lxd to settle
|
||||||
machine.sleep(1)
|
machine.sleep(1)
|
||||||
|
|||||||
@@ -27,12 +27,13 @@ in
|
|||||||
start_all()
|
start_all()
|
||||||
machine.wait_for_unit("magneticod")
|
machine.wait_for_unit("magneticod")
|
||||||
machine.wait_for_unit("magneticow")
|
machine.wait_for_unit("magneticow")
|
||||||
|
machine.wait_for_open_port(${toString port})
|
||||||
machine.succeed(
|
machine.succeed(
|
||||||
"${pkgs.curl}/bin/curl "
|
"${pkgs.curl}/bin/curl --fail "
|
||||||
+ "-u user:password http://localhost:${toString port}"
|
+ "-u user:password http://localhost:${toString port}"
|
||||||
)
|
)
|
||||||
assert "Unauthorised." in machine.succeed(
|
machine.fail(
|
||||||
"${pkgs.curl}/bin/curl "
|
"${pkgs.curl}/bin/curl --fail "
|
||||||
+ "-u user:wrongpwd http://localhost:${toString port}"
|
+ "-u user:wrongpwd http://localhost:${toString port}"
|
||||||
)
|
)
|
||||||
machine.shutdown()
|
machine.shutdown()
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||||||
];
|
];
|
||||||
services.nginx.enable = true;
|
services.nginx.enable = true;
|
||||||
services.nginx.package = pkgs.nginx-lua;
|
services.nginx.package = pkgs.nginx-lua;
|
||||||
services.nginx.enableSandbox = true;
|
|
||||||
services.nginx.virtualHosts.localhost = {
|
services.nginx.virtualHosts.localhost = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
location /test1-write {
|
location /test1-write {
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
{ name
|
||||||
name = "shadowsocks";
|
, plugin ? null
|
||||||
|
, pluginOpts ? ""
|
||||||
|
}:
|
||||||
|
|
||||||
|
import ../make-test-python.nix ({ pkgs, lib, ... }: {
|
||||||
|
inherit name;
|
||||||
meta = {
|
meta = {
|
||||||
maintainers = with lib.maintainers; [ hmenke ];
|
maintainers = with lib.maintainers; [ hmenke ];
|
||||||
};
|
};
|
||||||
@@ -22,8 +27,9 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
|||||||
port = 8488;
|
port = 8488;
|
||||||
fastOpen = false;
|
fastOpen = false;
|
||||||
mode = "tcp_and_udp";
|
mode = "tcp_and_udp";
|
||||||
plugin = "${pkgs.shadowsocks-v2ray-plugin}/bin/v2ray-plugin";
|
} // lib.optionalAttrs (plugin != null) {
|
||||||
pluginOpts = "server;host=nixos.org";
|
inherit plugin;
|
||||||
|
pluginOpts = "server;${pluginOpts}";
|
||||||
};
|
};
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -42,10 +48,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
|||||||
description = "connect to shadowsocks";
|
description = "connect to shadowsocks";
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
path = with pkgs; [
|
path = with pkgs; [ shadowsocks-libev ];
|
||||||
shadowsocks-libev
|
|
||||||
shadowsocks-v2ray-plugin
|
|
||||||
];
|
|
||||||
script = ''
|
script = ''
|
||||||
exec ss-local \
|
exec ss-local \
|
||||||
-s 192.168.0.1 \
|
-s 192.168.0.1 \
|
||||||
@@ -54,8 +57,9 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
|||||||
-k 'pa$$w0rd' \
|
-k 'pa$$w0rd' \
|
||||||
-m chacha20-ietf-poly1305 \
|
-m chacha20-ietf-poly1305 \
|
||||||
-a nobody \
|
-a nobody \
|
||||||
--plugin "${pkgs.shadowsocks-v2ray-plugin}/bin/v2ray-plugin" \
|
${lib.optionalString (plugin != null) ''
|
||||||
--plugin-opts "host=nixos.org"
|
--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
|
# start signal desktop
|
||||||
machine.execute("su - alice -c signal-desktop &")
|
machine.execute("su - alice -c signal-desktop &")
|
||||||
|
|
||||||
# wait for the "Link your phone to Signal Desktop" message
|
# Wait for the Signal window to appear. Since usually the tests
|
||||||
machine.wait_for_text("Link your phone to Signal Desktop")
|
# 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")
|
machine.screenshot("signal_desktop")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -5,6 +5,10 @@ import ../make-test-python.nix ({ pkgs, ... }: {
|
|||||||
};
|
};
|
||||||
nodes = {
|
nodes = {
|
||||||
client = { nodes, pkgs, ... }: {
|
client = { nodes, pkgs, ... }: {
|
||||||
|
networking.extraHosts = ''
|
||||||
|
${nodes.server.config.networking.primaryIPAddress} example.com
|
||||||
|
'';
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
(pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = nodes.server.config.networking.primaryIPAddress; })
|
(pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = nodes.server.config.networking.primaryIPAddress; })
|
||||||
];
|
];
|
||||||
@@ -46,6 +50,11 @@ import ../make-test-python.nix ({ pkgs, ... }: {
|
|||||||
module: ejabberd_service
|
module: ejabberd_service
|
||||||
access: local
|
access: local
|
||||||
shaper: fast
|
shaper: fast
|
||||||
|
-
|
||||||
|
port: 5444
|
||||||
|
module: ejabberd_http
|
||||||
|
request_handlers:
|
||||||
|
"/upload": mod_http_upload
|
||||||
|
|
||||||
## Disabling digest-md5 SASL authentication. digest-md5 requires plain-text
|
## Disabling digest-md5 SASL authentication. digest-md5 requires plain-text
|
||||||
## password storage (see auth_password_format option).
|
## password storage (see auth_password_format option).
|
||||||
@@ -180,6 +189,7 @@ import ../make-test-python.nix ({ pkgs, ... }: {
|
|||||||
mod_client_state: {}
|
mod_client_state: {}
|
||||||
mod_configure: {} # requires mod_adhoc
|
mod_configure: {} # requires mod_adhoc
|
||||||
## mod_delegation: {} # for xep0356
|
## mod_delegation: {} # for xep0356
|
||||||
|
mod_disco: {}
|
||||||
#mod_irc:
|
#mod_irc:
|
||||||
# host: "irc.@HOST@"
|
# host: "irc.@HOST@"
|
||||||
# default_encoding: "utf-8"
|
# default_encoding: "utf-8"
|
||||||
@@ -187,9 +197,9 @@ import ../make-test-python.nix ({ pkgs, ... }: {
|
|||||||
## mod_http_fileserver:
|
## mod_http_fileserver:
|
||||||
## docroot: "/var/www"
|
## docroot: "/var/www"
|
||||||
## accesslog: "/var/log/ejabberd/access.log"
|
## accesslog: "/var/log/ejabberd/access.log"
|
||||||
#mod_http_upload:
|
mod_http_upload:
|
||||||
# thumbnail: false # otherwise needs the identify command from ImageMagick installed
|
thumbnail: false # otherwise needs the identify command from ImageMagick installed
|
||||||
# put_url: "https://@HOST@:5444"
|
put_url: "http://@HOST@:5444/upload"
|
||||||
## # docroot: "@HOME@/upload"
|
## # docroot: "@HOME@/upload"
|
||||||
#mod_http_upload_quota:
|
#mod_http_upload_quota:
|
||||||
# max_days: 14
|
# max_days: 14
|
||||||
|
|||||||
@@ -36,7 +36,11 @@ class CthonTest(ClientXMPP):
|
|||||||
def timeout_callback(arg):
|
def timeout_callback(arg):
|
||||||
log.error("ERROR: Cannot upload file. XEP_0363 seems broken")
|
log.error("ERROR: Cannot upload file. XEP_0363 seems broken")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
try:
|
||||||
url = await self['xep_0363'].upload_file("${dummyFile}",timeout=10, timeout_callback=timeout_callback)
|
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!')
|
log.info('Upload success!')
|
||||||
# Test MUC
|
# Test MUC
|
||||||
self.plugin['xep_0045'].join_muc('testMucRoom', 'cthon98', wait=True)
|
self.plugin['xep_0045'].join_muc('testMucRoom', 'cthon98', wait=True)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig
|
{ mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig
|
||||||
, qtbase, qtsvg, qttools
|
, qtbase, qtsvg, qttools, perl
|
||||||
|
|
||||||
# Cantata doesn't build with cdparanoia enabled so we disable that
|
# Cantata doesn't build with cdparanoia enabled so we disable that
|
||||||
# default for now until I (or someone else) figure it out.
|
# default for now until I (or someone else) figure it out.
|
||||||
@@ -38,6 +38,8 @@ let
|
|||||||
|
|
||||||
withUdisks = (withTaglib && withDevices);
|
withUdisks = (withTaglib && withDevices);
|
||||||
|
|
||||||
|
perl' = perl.withPackages (ppkgs: [ ppkgs.URI ]);
|
||||||
|
|
||||||
in mkDerivation {
|
in mkDerivation {
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
|
|
||||||
@@ -48,7 +50,18 @@ in mkDerivation {
|
|||||||
sha256 = "0ix7xp352bziwz31mw79y7wxxmdn6060p8ry2px243ni1lz1qx1c";
|
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 withTaglib [ taglib taglib_extras ]
|
||||||
++ lib.optionals withReplaygain [ ffmpeg_3 speex mpg123 ]
|
++ lib.optionals withReplaygain [ ffmpeg_3 speex mpg123 ]
|
||||||
++ lib.optional withHttpStream qtmultimedia
|
++ 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 {
|
stdenv.mkDerivation {
|
||||||
name = "jackmix-0.5.2";
|
name = "jackmix-0.5.2";
|
||||||
@@ -14,6 +14,7 @@ stdenv.mkDerivation {
|
|||||||
qt4
|
qt4
|
||||||
lash
|
lash
|
||||||
jack
|
jack
|
||||||
|
alsaLib
|
||||||
];
|
];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
|||||||
@@ -6,11 +6,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "sonic-lineup";
|
pname = "sonic-lineup";
|
||||||
version = "1.0.1";
|
version = "1.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://code.soundsoftware.ac.uk/attachments/download/2610/${pname}-${version}.tar.gz";
|
url = "https://code.soundsoftware.ac.uk/attachments/download/2765/${pname}-${version}.tar.gz";
|
||||||
sha256 = "0w4v5zr81d8fh97y820r0vj1rrbl0kwgvhfkdnyl4hiabs97b1i7";
|
sha256 = "0k45k9fawcm4s5yy05x00pgww7j8m7k2cxcc7g0fn9vqy7vcbq9h";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
buildPythonApplication rec {
|
buildPythonApplication rec {
|
||||||
pname = "vorta";
|
pname = "vorta";
|
||||||
version = "0.7.0";
|
version = "0.7.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "borgbase";
|
owner = "borgbase";
|
||||||
repo = "vorta";
|
repo = "vorta";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1hz19c0lphwql881n7w0ls39bbl63lccx57c3klwfyzgsxcgdy2j";
|
sha256 = "069fq5gv324l2ap3g6m6i12lhq1iqm27dsmaagyc3sva945j0gxw";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|||||||
@@ -268,12 +268,12 @@ in
|
|||||||
|
|
||||||
clion = buildClion rec {
|
clion = buildClion rec {
|
||||||
name = "clion-${version}";
|
name = "clion-${version}";
|
||||||
version = "2020.2"; /* updated by script */
|
version = "2020.2.1"; /* updated by script */
|
||||||
description = "C/C++ IDE. New. Intelligent. Cross-platform";
|
description = "C/C++ IDE. New. Intelligent. Cross-platform";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
|
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
|
||||||
sha256 = "1j80k6r4nbr8abwkpx78sy3jzq3jsywn2k6g4mjx6h0adwxswymm"; /* updated by script */
|
sha256 = "1sma3ay02lajg6q1g3k05gi7jdja7cf9rxb9v0w62s6z87l719bv"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-clion";
|
wmClass = "jetbrains-clion";
|
||||||
update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
|
update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
|
||||||
@@ -281,12 +281,12 @@ in
|
|||||||
|
|
||||||
datagrip = buildDataGrip rec {
|
datagrip = buildDataGrip rec {
|
||||||
name = "datagrip-${version}";
|
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";
|
description = "Your Swiss Army Knife for Databases and SQL";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/datagrip/${name}.tar.gz";
|
url = "https://download.jetbrains.com/datagrip/${name}.tar.gz";
|
||||||
sha256 = "0d0m6v4lr6qhi79csdpcyiyd2hnhlsan9lpnjmhkdxd84i1dl15a"; /* updated by script */
|
sha256 = "1bk6z6mirrykypb4j2wa4744v0m9y1n7973qgj6z3dsifrq9q7zc"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-datagrip";
|
wmClass = "jetbrains-datagrip";
|
||||||
update-channel = "DataGrip RELEASE";
|
update-channel = "DataGrip RELEASE";
|
||||||
@@ -294,12 +294,12 @@ in
|
|||||||
|
|
||||||
goland = buildGoland rec {
|
goland = buildGoland rec {
|
||||||
name = "goland-${version}";
|
name = "goland-${version}";
|
||||||
version = "2020.2.1"; /* updated by script */
|
version = "2020.2.2"; /* updated by script */
|
||||||
description = "Up and Coming Go IDE";
|
description = "Up and Coming Go IDE";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/go/${name}.tar.gz";
|
url = "https://download.jetbrains.com/go/${name}.tar.gz";
|
||||||
sha256 = "15jd2yn4g3lya54ppcp8b0bvf2pp2khdvqba2g1aml16d5z8mkq6"; /* updated by script */
|
sha256 = "1r6bbx5hsg82l1pa3syfdi8nbsz6rrfszsw4dmwcnxvccp2hs3mh"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-goland";
|
wmClass = "jetbrains-goland";
|
||||||
update-channel = "GoLand RELEASE";
|
update-channel = "GoLand RELEASE";
|
||||||
@@ -307,12 +307,12 @@ in
|
|||||||
|
|
||||||
idea-community = buildIdea rec {
|
idea-community = buildIdea rec {
|
||||||
name = "idea-community-${version}";
|
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";
|
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
|
||||||
license = stdenv.lib.licenses.asl20;
|
license = stdenv.lib.licenses.asl20;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
|
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
|
||||||
sha256 = "0rymyyhgm42i487dhlxh78shyvq4hd56frgz7wrqf85hg2j5ha0y"; /* updated by script */
|
sha256 = "055hy5jy5151x3gf8hn7ar36br545qr253fz9wrc3b49wydg01x1"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-idea-ce";
|
wmClass = "jetbrains-idea-ce";
|
||||||
update-channel = "IntelliJ IDEA RELEASE";
|
update-channel = "IntelliJ IDEA RELEASE";
|
||||||
@@ -320,12 +320,12 @@ in
|
|||||||
|
|
||||||
idea-ultimate = buildIdea rec {
|
idea-ultimate = buildIdea rec {
|
||||||
name = "idea-ultimate-${version}";
|
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";
|
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jbr.tar.gz";
|
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";
|
wmClass = "jetbrains-idea";
|
||||||
update-channel = "IntelliJ IDEA RELEASE";
|
update-channel = "IntelliJ IDEA RELEASE";
|
||||||
@@ -333,12 +333,12 @@ in
|
|||||||
|
|
||||||
mps = buildMps rec {
|
mps = buildMps rec {
|
||||||
name = "mps-${version}";
|
name = "mps-${version}";
|
||||||
version = "2020.1.3"; /* updated by script */
|
version = "2020.1.4"; /* updated by script */
|
||||||
description = "Create your own domain-specific language";
|
description = "Create your own domain-specific language";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/mps/2020.1/MPS-${version}.tar.gz";
|
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";
|
wmClass = "jetbrains-mps";
|
||||||
update-channel = "MPS RELEASE";
|
update-channel = "MPS RELEASE";
|
||||||
@@ -346,12 +346,12 @@ in
|
|||||||
|
|
||||||
phpstorm = buildPhpStorm rec {
|
phpstorm = buildPhpStorm rec {
|
||||||
name = "phpstorm-${version}";
|
name = "phpstorm-${version}";
|
||||||
version = "2020.2"; /* updated by script */
|
version = "2020.2.1"; /* updated by script */
|
||||||
description = "Professional IDE for Web and PHP developers";
|
description = "Professional IDE for Web and PHP developers";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
|
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
|
||||||
sha256 = "1zxhb2w7nivnx8habcf5vii6bwzaihs5x8smy0zf8ngv3xwr6vjc"; /* updated by script */
|
sha256 = "14hz6w5lgn8ddscicm4s9xhi07j5adsq0bmyr8amzmj5q6jgw4p9"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-phpstorm";
|
wmClass = "jetbrains-phpstorm";
|
||||||
update-channel = "PhpStorm RELEASE";
|
update-channel = "PhpStorm RELEASE";
|
||||||
@@ -359,12 +359,12 @@ in
|
|||||||
|
|
||||||
pycharm-community = buildPycharm rec {
|
pycharm-community = buildPycharm rec {
|
||||||
name = "pycharm-community-${version}";
|
name = "pycharm-community-${version}";
|
||||||
version = "2020.2"; /* updated by script */
|
version = "2020.2.1"; /* updated by script */
|
||||||
description = "PyCharm Community Edition";
|
description = "PyCharm Community Edition";
|
||||||
license = stdenv.lib.licenses.asl20;
|
license = stdenv.lib.licenses.asl20;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||||
sha256 = "12pp3xp74dzgjrv2nz83dnqycb250kkgqlb3skjkdx9pabmfxck0"; /* updated by script */
|
sha256 = "0kml58v6clqj0j0vlvghrywxym2n9h41izazzn4srn7wjj9010fa"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-pycharm-ce";
|
wmClass = "jetbrains-pycharm-ce";
|
||||||
update-channel = "PyCharm RELEASE";
|
update-channel = "PyCharm RELEASE";
|
||||||
@@ -372,12 +372,12 @@ in
|
|||||||
|
|
||||||
pycharm-professional = buildPycharm rec {
|
pycharm-professional = buildPycharm rec {
|
||||||
name = "pycharm-professional-${version}";
|
name = "pycharm-professional-${version}";
|
||||||
version = "2020.2"; /* updated by script */
|
version = "2020.2.1"; /* updated by script */
|
||||||
description = "PyCharm Professional Edition";
|
description = "PyCharm Professional Edition";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||||
sha256 = "0xq0nba31yc7cm1lbgkmgfbr5kp5fq5k7j2n6kampm2hyx5fa0ak"; /* updated by script */
|
sha256 = "0ml9fg1dlfg8sdp9n8nlsj7z88dx0ac1kvlpk61p7q5di1lyxc94"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-pycharm";
|
wmClass = "jetbrains-pycharm";
|
||||||
update-channel = "PyCharm RELEASE";
|
update-channel = "PyCharm RELEASE";
|
||||||
@@ -385,12 +385,12 @@ in
|
|||||||
|
|
||||||
rider = buildRider rec {
|
rider = buildRider rec {
|
||||||
name = "rider-${version}";
|
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";
|
description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
|
url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
|
||||||
sha256 = "0fxgdxsrrl659lh45slikgck6jld90rd6nnj8gj3aixq0yp5pkix"; /* updated by script */
|
sha256 = "0xrk7n0mprzy7dfkx3vj5wasw5031jl61qkh89y6w031hp77vq7n"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-rider";
|
wmClass = "jetbrains-rider";
|
||||||
update-channel = "Rider RELEASE";
|
update-channel = "Rider RELEASE";
|
||||||
@@ -398,12 +398,12 @@ in
|
|||||||
|
|
||||||
ruby-mine = buildRubyMine rec {
|
ruby-mine = buildRubyMine rec {
|
||||||
name = "ruby-mine-${version}";
|
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";
|
description = "The Most Intelligent Ruby and Rails IDE";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
|
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
|
||||||
sha256 = "1caxd5qcxwwrdy3ma87gnywr5czg3lam1n2gwbnc7hdxgfnvn3qz"; /* updated by script */
|
sha256 = "1pkzql710bc4qdz5pdhh0yx9wkqx85qwkwm1jvvvxbvbsj299vcb"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-rubymine";
|
wmClass = "jetbrains-rubymine";
|
||||||
update-channel = "RubyMine RELEASE";
|
update-channel = "RubyMine RELEASE";
|
||||||
@@ -411,12 +411,12 @@ in
|
|||||||
|
|
||||||
webstorm = buildWebStorm rec {
|
webstorm = buildWebStorm rec {
|
||||||
name = "webstorm-${version}";
|
name = "webstorm-${version}";
|
||||||
version = "2020.2"; /* updated by script */
|
version = "2020.2.1"; /* updated by script */
|
||||||
description = "Professional IDE for Web and JavaScript development";
|
description = "Professional IDE for Web and JavaScript development";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
||||||
sha256 = "100j2q9hz0a50n3x3khk7hap7b496g6sx0y6q7n7vy2zayh5ibm5"; /* updated by script */
|
sha256 = "1sx67bms90fsc1bf6pqz1rd1x9aysj0xxb8d7cnclz6bv8kzhgfp"; /* updated by script */
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-webstorm";
|
wmClass = "jetbrains-webstorm";
|
||||||
update-channel = "WebStorm RELEASE";
|
update-channel = "WebStorm RELEASE";
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
, proj, gdal, geos, sqlite, postgresql, libmysqlclient, python2Packages, libLAS, proj-datumgrid
|
, proj, gdal, geos, sqlite, postgresql, libmysqlclient, python2Packages, libLAS, proj-datumgrid
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
let inherit (stdenv) lib; in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "grass";
|
name = "grass";
|
||||||
version = "7.6.1";
|
version = "7.6.1";
|
||||||
@@ -42,7 +44,7 @@ stdenv.mkDerivation rec {
|
|||||||
"--with-postgres-libs=${postgresql.lib}/lib/"
|
"--with-postgres-libs=${postgresql.lib}/lib/"
|
||||||
# it complains about missing libmysqld but doesn't really seem to need it
|
# it complains about missing libmysqld but doesn't really seem to need it
|
||||||
"--with-mysql"
|
"--with-mysql"
|
||||||
"--with-mysql-includes=${libmysqlclient}/include/mysql"
|
"--with-mysql-includes=${lib.getDev libmysqlclient}/include/mysql"
|
||||||
"--with-mysql-libs=${libmysqlclient}/lib/mysql"
|
"--with-mysql-libs=${libmysqlclient}/lib/mysql"
|
||||||
"--with-blas"
|
"--with-blas"
|
||||||
"--with-liblas=${libLAS}/bin/liblas-config"
|
"--with-liblas=${libLAS}/bin/liblas-config"
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
, qtmultimedia
|
, qtmultimedia
|
||||||
, qtsvg
|
, qtsvg
|
||||||
, qttools
|
, qttools
|
||||||
|
, libsecret
|
||||||
|
|
||||||
# optional client deps
|
# optional client deps
|
||||||
, giflib
|
, giflib
|
||||||
@@ -45,6 +46,7 @@ let
|
|||||||
qtmultimedia
|
qtmultimedia
|
||||||
qtsvg
|
qtsvg
|
||||||
qttools
|
qttools
|
||||||
|
libsecret
|
||||||
# optional:
|
# optional:
|
||||||
giflib # gif animation export support
|
giflib # gif animation export support
|
||||||
kdnssd # local server discovery with Zeroconf
|
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";
|
pname = "fontmatrix";
|
||||||
version = "0.6.0";
|
version = "0.6.0-qt5";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "fontmatrix";
|
owner = "fcoiffie";
|
||||||
repo = "fontmatrix";
|
repo = "fontmatrix";
|
||||||
rev = "v${version}";
|
rev = "1ff8382d8c85c18d9962918f461341ff4fe21993";
|
||||||
sha256 = "0aqndj1jhm6hjpwmj1qm92z2ljh7w78a5ff5ag47qywqha1ngn05";
|
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 ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
||||||
hardeningDisable = [ "format" ];
|
hardeningDisable = [ "format" ];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with lib; {
|
||||||
description = "Fontmatrix is a free/libre font explorer for Linux, Windows and Mac";
|
description = "Fontmatrix is a free/libre font explorer for Linux, Windows and Mac";
|
||||||
homepage = "https://github.com/fontmatrix/fontmatrix";
|
homepage = "https://github.com/fontmatrix/fontmatrix";
|
||||||
license = licenses.gpl2;
|
license = licenses.gpl2Plus;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{ stdenv, fetchFromGitHub, fetchpatch
|
{ stdenv, fetchFromGitHub, fetchpatch
|
||||||
, pkgconfig, wrapQtAppsHook
|
, pkgconfig, wrapQtAppsHook
|
||||||
, poppler, qt5, gnuplot
|
, poppler, gnuplot
|
||||||
|
, qmake, qtbase, qttools
|
||||||
}:
|
}:
|
||||||
|
|
||||||
# This package only builds ktikz without KDE integration because KDE4 is
|
# 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 ];
|
nativeBuildInputs = [ pkgconfig qttools qmake wrapQtAppsHook ];
|
||||||
QT_PLUGIN_PATH = "${qt5.qtbase}/${qt5.qtbase.qtPluginPrefix}";
|
QT_PLUGIN_PATH = "${qtbase}/${qtbase.qtPluginPrefix}";
|
||||||
|
|
||||||
buildInputs = [ qt5.qtbase poppler ];
|
buildInputs = [ qtbase poppler ];
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
qmakeFlags = [
|
qmakeFlags = [
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchFromGitHub, fftw, ncurses5, libpulseaudio, makeWrapper }:
|
{ stdenv, fetchFromGitHub, cmake, fftw, ncurses5, libpulseaudio, makeWrapper }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "1.8";
|
version = "1.8";
|
||||||
@@ -15,13 +15,13 @@ stdenv.mkDerivation rec {
|
|||||||
sed '1i#include <cmath>' -i src/Transformer/SpectrumCircleTransformer.cpp
|
sed '1i#include <cmath>' -i src/Transformer/SpectrumCircleTransformer.cpp
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
||||||
buildInputs = [ fftw ncurses5 libpulseaudio makeWrapper ];
|
buildInputs = [ fftw ncurses5 libpulseaudio makeWrapper ];
|
||||||
|
|
||||||
buildFlags = [ "ENABLE_PULSE=1" ];
|
buildFlags = [ "ENABLE_PULSE=1" ];
|
||||||
|
|
||||||
installPhase = ''
|
postInstall = ''
|
||||||
mkdir -p $out/bin
|
|
||||||
cp build/vis $out/bin/vis
|
|
||||||
# See https://github.com/dpayne/cli-visualizer/issues/62#issuecomment-330738075
|
# See https://github.com/dpayne/cli-visualizer/issues/62#issuecomment-330738075
|
||||||
wrapProgram $out/bin/vis --set TERM rxvt-256color
|
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 {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "electron-cash";
|
pname = "electron-cash";
|
||||||
version = "4.0.14";
|
version = "4.1.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Electron-Cash";
|
owner = "Electron-Cash";
|
||||||
repo = "Electron-Cash";
|
repo = "Electron-Cash";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1dp7cj1185h6xfz6jzh0iq58zvg3wq9hl96bkgxkf5h4ygni2vm6";
|
sha256 = "1ccfm6kkmbkvykfdzrisxvr0lx9kgq4l43ixk6v3xnvhnbfwz4s2";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = with python3Packages; [
|
propagatedBuildInputs = with python3Packages; [
|
||||||
@@ -35,6 +36,15 @@ python3Packages.buildPythonApplication rec {
|
|||||||
|
|
||||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
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 = ''
|
postPatch = ''
|
||||||
substituteInPlace contrib/requirements/requirements.txt \
|
substituteInPlace contrib/requirements/requirements.txt \
|
||||||
--replace "qdarkstyle==2.6.8" "qdarkstyle<3"
|
--replace "qdarkstyle==2.6.8" "qdarkstyle<3"
|
||||||
@@ -43,9 +53,7 @@ python3Packages.buildPythonApplication rec {
|
|||||||
--replace "(share_dir" "(\"share\""
|
--replace "(share_dir" "(\"share\""
|
||||||
'';
|
'';
|
||||||
|
|
||||||
checkInputs = with python3Packages; [
|
checkInputs = with python3Packages; [ pytest ];
|
||||||
pytest
|
|
||||||
];
|
|
||||||
|
|
||||||
checkPhase = ''
|
checkPhase = ''
|
||||||
unset HOME
|
unset HOME
|
||||||
|
|||||||
@@ -12,13 +12,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "nwg-launchers";
|
pname = "nwg-launchers";
|
||||||
version = "0.2.0";
|
version = "0.3.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "nwg-piotr";
|
owner = "nwg-piotr";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1mlym0mpg6njwgwniwlk95fk6wfwlzq8nwmkb5mkjlm2nqv5bdv1";
|
sha256 = "1p1bwsn7l4vp7y183735pgsfbh7dssdfn0wjzacl4s87arjdcgvb";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
@@ -3,13 +3,13 @@
|
|||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "tipp10";
|
pname = "tipp10";
|
||||||
version = "3.2.0";
|
version = "unstable-20200616";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
owner = "tipp10";
|
owner = "tipp10";
|
||||||
repo = pname;
|
repo = "tipp10";
|
||||||
rev = "v${version}";
|
rev = "2dd6d45c8a91cff7075675d8875721456cdd5f1b";
|
||||||
sha256 = "0fav5jlw6lw78iqrj7a65b8vd50hhyyaqyzmfrvyxirpsqhjk1v7";
|
sha256 = "16x51rv4r6cz5vsmrfbakqzbfxy456h82ibzacknp35f41cjdqq4";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake qttools ];
|
nativeBuildInputs = [ cmake qttools ];
|
||||||
|
|||||||
@@ -22,7 +22,14 @@ buildPythonApplication rec {
|
|||||||
watchdog
|
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";
|
LC_ALL="en_US.UTF-8";
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,8 @@ rustPlatform.buildRustPackage rec {
|
|||||||
postInstall = "make PREFIX=$out copy-data";
|
postInstall = "make PREFIX=$out copy-data";
|
||||||
|
|
||||||
# Sometimes tests fail when run in parallel
|
# Sometimes tests fail when run in parallel
|
||||||
checkFlags = [ "--test-threads=1" ];
|
#checkFlags = [ "--test-threads=1" ];
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
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";
|
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
|
, libXScrnSaver, libXcursor, libXtst, libGLU, libGL
|
||||||
, protobuf, speechd, libXdamage, cups
|
, protobuf, speechd, libXdamage, cups
|
||||||
, ffmpeg_3, libxslt, libxml2, at-spi2-core
|
, ffmpeg_3, libxslt, libxml2, at-spi2-core
|
||||||
, jre
|
, jre8
|
||||||
, pipewire_0_2
|
, pipewire_0_2
|
||||||
|
|
||||||
# optional dependencies
|
# optional dependencies
|
||||||
@@ -50,6 +50,8 @@ with stdenv.lib;
|
|||||||
# see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html
|
# see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html
|
||||||
|
|
||||||
let
|
let
|
||||||
|
jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
|
||||||
|
|
||||||
# The additional attributes for creating derivations based on the chromium
|
# The additional attributes for creating derivations based on the chromium
|
||||||
# source tree.
|
# source tree.
|
||||||
extraAttrs = buildFun base;
|
extraAttrs = buildFun base;
|
||||||
|
|||||||
@@ -55,6 +55,17 @@ let
|
|||||||
sha256 = "0h3wf4152zdvrbb0jbj49q6814lfl3rcy5mj8b2pl9s0ahvkbc6q";
|
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; };
|
browser = callPackage ./browser.nix { inherit channel enableWideVine; };
|
||||||
|
|||||||
@@ -44,11 +44,11 @@ let
|
|||||||
|
|
||||||
flash = stdenv.mkDerivation rec {
|
flash = stdenv.mkDerivation rec {
|
||||||
pname = "flashplayer-ppapi";
|
pname = "flashplayer-ppapi";
|
||||||
version = "32.0.0.414";
|
version = "32.0.0.433";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
||||||
sha256 = "0wzf5i6qf5wgjm905kd3qh97rj47fybl9g7z72vasilbx8q5wfwk";
|
sha256 = "1wfwnmai6wnwi6cfxwqix6n471jjyl6nc7p67sa7cfqwg16b53kx";
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,11 @@
|
|||||||
import csv
|
import csv
|
||||||
import json
|
import json
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
from codecs import iterdecode
|
from codecs import iterdecode
|
||||||
|
from collections import OrderedDict
|
||||||
from os.path import abspath, dirname
|
from os.path import abspath, dirname
|
||||||
from sys import stderr
|
|
||||||
from urllib.request import urlopen
|
from urllib.request import urlopen
|
||||||
|
|
||||||
HISTORY_URL = 'https://omahaproxy.appspot.com/history?os=linux'
|
HISTORY_URL = 'https://omahaproxy.appspot.com/history?os=linux'
|
||||||
@@ -27,7 +29,7 @@ def nix_prefetch_url(url, algo='sha256'):
|
|||||||
channels = {}
|
channels = {}
|
||||||
last_channels = load_json(JSON_PATH)
|
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:
|
with urlopen(HISTORY_URL) as resp:
|
||||||
builds = csv.DictReader(iterdecode(resp, 'utf-8'))
|
builds = csv.DictReader(iterdecode(resp, 'utf-8'))
|
||||||
for build in builds:
|
for build in builds:
|
||||||
@@ -59,5 +61,17 @@ with urlopen(HISTORY_URL) as resp:
|
|||||||
channels[channel_name] = channel
|
channels[channel_name] = channel
|
||||||
|
|
||||||
with open(JSON_PATH, 'w') as out:
|
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')
|
out.write('\n')
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
{
|
{
|
||||||
|
"stable": {
|
||||||
|
"version": "85.0.4183.121",
|
||||||
|
"sha256": "0a1xn39kmvyfpal6pgnylpy30z0322p3v7sx6vxi0r2naiz58670",
|
||||||
|
"sha256bin64": "08vqf1v91703aik47344bl409rsl4myar9bsd2lsvzqncncwsaca"
|
||||||
|
},
|
||||||
"beta": {
|
"beta": {
|
||||||
"version": "86.0.4240.22",
|
"version": "86.0.4240.42",
|
||||||
"sha256": "1qxacdwknrjwfp44mnqmq24n8sw4yaf0d1qnz39km2m4apc39svp",
|
"sha256": "06cfhiym9xmz2q86v6b6xcicrrp2pmr7karavylzz4fqvwd2v6fa",
|
||||||
"sha256bin64": "05qdzkq9daqjliqj7zxsa03903rv3kwaj627192ls6m33bacz9gp"
|
"sha256bin64": "1z5zmdc2i31iimps7p5z43vv4qi83c8ljb7x68zc1rvf8x62p7xj"
|
||||||
},
|
},
|
||||||
"dev": {
|
"dev": {
|
||||||
"version": "86.0.4240.8",
|
"version": "87.0.4263.3",
|
||||||
"sha256": "1x0kbc7xp6599jyn461mbmchbixivnxm0jsyfq0snhxz8x81z55q",
|
"sha256": "1ybfrlm4417lpbg5qcwhq5p6nnxrw68wzyy5zvb1sg1ma8s9hhkk",
|
||||||
"sha256bin64": "0y7drzxxfn0vmfq0m426l8xvkgyajb8pjydi0d7kzk6i92sjf45j"
|
"sha256bin64": "1f7a272kalglmdwmrrzb4iw3crvvpv3mhxca5jh75qpldn4gby6m"
|
||||||
},
|
|
||||||
"stable": {
|
|
||||||
"version": "85.0.4183.83",
|
|
||||||
"sha256": "0fz781bxx1rnjwfix2dgzq5w1lg3x6a9vd9k49gh4z5q092slr10",
|
|
||||||
"sha256bin64": "0fa3la2nvqr0w40j2qkbwnh36924fsp2ajsla6aky6hz08mq2q1g"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
, freetype, fontconfig, file, nspr, nss, libnotify
|
, freetype, fontconfig, file, nspr, nss, libnotify
|
||||||
, yasm, libGLU, libGL, sqlite, unzip, makeWrapper
|
, yasm, libGLU, libGL, sqlite, unzip, makeWrapper
|
||||||
, hunspell, libXdamage, libevent, libstartup_notification
|
, hunspell, libXdamage, libevent, libstartup_notification
|
||||||
, libvpx, libvpx_1_8
|
, libvpx_1_8
|
||||||
, icu, icu67, libpng, jemalloc, glib
|
, icu67, libpng, jemalloc, glib
|
||||||
, autoconf213, which, gnused, cargo, rustc, llvmPackages
|
, autoconf213, which, gnused, cargo, rustc, llvmPackages
|
||||||
, rust-cbindgen, nodejs, nasm, fetchpatch
|
, rust-cbindgen, nodejs, nasm, fetchpatch
|
||||||
, debugBuild ? false
|
, debugBuild ? false
|
||||||
@@ -112,17 +112,13 @@ stdenv.mkDerivation ({
|
|||||||
xorg.libXext unzip makeWrapper
|
xorg.libXext unzip makeWrapper
|
||||||
libevent libstartup_notification /* cairo */
|
libevent libstartup_notification /* cairo */
|
||||||
libpng jemalloc glib
|
libpng jemalloc glib
|
||||||
nasm
|
nasm icu67 libvpx_1_8
|
||||||
# >= 66 requires nasm for the AV1 lib dav1d
|
# >= 66 requires nasm for the AV1 lib dav1d
|
||||||
# yasm can potentially be removed in future versions
|
# yasm can potentially be removed in future versions
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1501796
|
# https://bugzilla.mozilla.org/show_bug.cgi?id=1501796
|
||||||
# https://groups.google.com/forum/#!msg/mozilla.dev.platform/o-8levmLU80/SM_zQvfzCQAJ
|
# https://groups.google.com/forum/#!msg/mozilla.dev.platform/o-8levmLU80/SM_zQvfzCQAJ
|
||||||
nspr nss
|
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 alsaSupport alsaLib
|
||||||
++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed
|
++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed
|
||||||
++ lib.optional gtk3Support gtk3
|
++ lib.optional gtk3Support gtk3
|
||||||
@@ -132,12 +128,10 @@ stdenv.mkDerivation ({
|
|||||||
AVFoundation MediaToolbox CoreLocation
|
AVFoundation MediaToolbox CoreLocation
|
||||||
Foundation libobjc AddressBook cups ];
|
Foundation libobjc AddressBook cups ];
|
||||||
|
|
||||||
NIX_CFLAGS_COMPILE = toString ([
|
NIX_CFLAGS_COMPILE = toString [
|
||||||
"-I${glib.dev}/include/gio-unix-2.0"
|
"-I${glib.dev}/include/gio-unix-2.0"
|
||||||
"-I${nss.dev}/include/nss"
|
"-I${nss.dev}/include/nss"
|
||||||
]
|
];
|
||||||
++ lib.optional (pname == "firefox-esr" && lib.versionOlder ffversion "69")
|
|
||||||
"-Wno-error=format-security");
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
rm -rf obj-x86_64-pc-linux-gnu
|
rm -rf obj-x86_64-pc-linux-gnu
|
||||||
@@ -228,16 +222,7 @@ stdenv.mkDerivation ({
|
|||||||
"--with-system-nspr"
|
"--with-system-nspr"
|
||||||
"--with-system-nss"
|
"--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.optional (stdenv.isDarwin) "--disable-xcode-checks"
|
||||||
++ lib.optionals (lib.versionOlder ffversion "69") [
|
|
||||||
"--enable-webrender=build"
|
|
||||||
]
|
|
||||||
|
|
||||||
++ flag alsaSupport "alsa"
|
++ flag alsaSupport "alsa"
|
||||||
++ flag pulseaudioSupport "pulseaudio"
|
++ flag pulseaudioSupport "pulseaudio"
|
||||||
@@ -305,16 +290,13 @@ stdenv.mkDerivation ({
|
|||||||
inherit execdir;
|
inherit execdir;
|
||||||
inherit browserName;
|
inherit browserName;
|
||||||
} // lib.optionalAttrs gtk3Support { inherit gtk3; };
|
} // 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
|
# 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
|
# care about changed hashes as we are already doing that when we
|
||||||
# fetch the sources. Any further modifications of the source tree
|
# 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";
|
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
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "flashplayer";
|
pname = "flashplayer";
|
||||||
version = "32.0.0.414";
|
version = "32.0.0.433";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url =
|
url =
|
||||||
@@ -85,14 +85,14 @@ stdenv.mkDerivation rec {
|
|||||||
sha256 =
|
sha256 =
|
||||||
if debug then
|
if debug then
|
||||||
if arch == "x86_64" then
|
if arch == "x86_64" then
|
||||||
"184qy9zxk9ynp6avz1j0ca5mxqqqlhrc0m7d1cjxv39jfdiyz51i"
|
"18hr026743swpdjjk7cg3hnpw2ws3q246xnkb326lyvv90wqlfni"
|
||||||
else
|
else
|
||||||
"1m8fay452zps5yw1qpsc6irxxdvqjhkwxg066ckxkjf68gln7cmn"
|
"1yhyirii6rmnk420imaa160r9akarb3jrrlyas5a8d2y65gya71g"
|
||||||
else
|
else
|
||||||
if arch == "x86_64" then
|
if arch == "x86_64" then
|
||||||
"0ng04yig7msq4mv01ngfsh7mkxia18j3k9clnp0y0sbpr60z8s83"
|
"0k80i98zkpf6r46y1aw2zg1dsgbirg6rc8q21vycpvln395jq0pf"
|
||||||
else
|
else
|
||||||
"0fndnhznqz28wfmm32fafx30pi517vvkxy1isp4krsfvyl7fmzhn";
|
"1qw6hjwv9y7qr333k4nlpd7fwyzbsk833sx2slfgjfhsbipr7p3r";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ unzip ];
|
nativeBuildInputs = [ unzip ];
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "flashplayer-standalone";
|
pname = "flashplayer-standalone";
|
||||||
version = "32.0.0.414";
|
version = "32.0.0.433";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url =
|
url =
|
||||||
@@ -60,9 +60,9 @@ stdenv.mkDerivation {
|
|||||||
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz";
|
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz";
|
||||||
sha256 =
|
sha256 =
|
||||||
if debug then
|
if debug then
|
||||||
"1sfvxi0ngk1ny912hw1zp0l3v6md6qqpvnyab3h45562m2fm6vqz"
|
"1ys523wwhvj96jph435lnyp07qzg9f70j349l7ggwgg96rflalpf"
|
||||||
else
|
else
|
||||||
"0pxb3fhwvajvb28w11iylx5rp0h1f4s2aiii53gz28sq082w9br4";
|
"1ycw2amis7yvidc6q87gls6rb305p89pr7mhzknc10v0nh34781m";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ unzip ];
|
nativeBuildInputs = [ unzip ];
|
||||||
|
|||||||
@@ -11,18 +11,18 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
libPath = lib.makeLibraryPath [ ffmpeg_3 ];
|
libPath = lib.makeLibraryPath [ ffmpeg_3 libpulseaudio ];
|
||||||
gtkVersion = if withGTK3 then "3" else "2";
|
gtkVersion = if withGTK3 then "3" else "2";
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "palemoon";
|
pname = "palemoon";
|
||||||
version = "28.12.0";
|
version = "28.13.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "MoonchildProductions";
|
owner = "MoonchildProductions";
|
||||||
repo = "Pale-Moon";
|
repo = "Pale-Moon";
|
||||||
rev = "${version}_Release";
|
rev = "${version}_Release";
|
||||||
sha256 = "1cc75972nhmxkkynkky1m2fijbf3qlzvpxsd98mxlx0b7h4d3l5l";
|
sha256 = "1lza6239kb32wnwd9cwddn11npg1qx7p69l7qy63h9c59w29iypa";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -88,12 +88,16 @@ in stdenv.mkDerivation rec {
|
|||||||
ac_add_options --disable-debug
|
ac_add_options --disable-debug
|
||||||
ac_add_options --disable-necko-wifi
|
ac_add_options --disable-necko-wifi
|
||||||
ac_add_options --disable-updater
|
ac_add_options --disable-updater
|
||||||
|
|
||||||
ac_add_options --with-pthreads
|
ac_add_options --with-pthreads
|
||||||
|
|
||||||
# Please see https://www.palemoon.org/redist.shtml for restrictions when using the official branding.
|
# Please see https://www.palemoon.org/redist.shtml for restrictions when using the official branding.
|
||||||
ac_add_options --enable-official-branding
|
ac_add_options --enable-official-branding
|
||||||
export MOZILLA_OFFICIAL=1
|
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 ]}
|
ac_add_options --x-libraries=${lib.makeLibraryPath [ xorg.libX11 ]}
|
||||||
|
|
||||||
export MOZ_PKG_SPECIAL=gtk$_GTK_VERSION
|
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
|
# default dependencies
|
||||||
, bzip2, flac, speex, libopus
|
, gnutar, bzip2, flac, speex, libopus
|
||||||
, libevent, expat, libjpeg, snappy
|
, libevent, expat, libjpeg, snappy
|
||||||
, libpng, libcap
|
, libpng, libcap
|
||||||
, xdg_utils, yasm, nasm, minizip, libwebp
|
, xdg_utils, yasm, nasm, minizip, libwebp
|
||||||
@@ -41,6 +41,7 @@
|
|||||||
, ungoogled-chromium
|
, ungoogled-chromium
|
||||||
, ungoogled ? false
|
, ungoogled ? false
|
||||||
|
|
||||||
|
, channel
|
||||||
, upstream-info
|
, upstream-info
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@@ -110,7 +111,7 @@ let
|
|||||||
versionRange = min-version: upto-version:
|
versionRange = min-version: upto-version:
|
||||||
let inherit (upstream-info) version;
|
let inherit (upstream-info) version;
|
||||||
result = versionAtLeast version min-version && versionOlder version upto-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
|
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."
|
then warn "chromium: stable version ${stable-version} is newer than a patchset bounded at ${upto-version}. You can safely delete it."
|
||||||
result
|
result
|
||||||
@@ -123,10 +124,13 @@ let
|
|||||||
};
|
};
|
||||||
base = rec {
|
base = rec {
|
||||||
name = "${packageName}-unwrapped-${version}";
|
name = "${packageName}-unwrapped-${version}";
|
||||||
inherit (upstream-info) channel version;
|
inherit (upstream-info) version;
|
||||||
inherit packageName buildType buildPath;
|
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 = [
|
nativeBuildInputs = [
|
||||||
ninja which python2Packages.python perl pkgconfig
|
ninja which python2Packages.python perl pkgconfig
|
||||||
@@ -151,8 +155,9 @@ let
|
|||||||
++ optional pulseSupport libpulseaudio
|
++ optional pulseSupport libpulseaudio
|
||||||
++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ];
|
++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ];
|
||||||
|
|
||||||
patches = [
|
patches = optionals (versionRange "68" "86") [
|
||||||
./patches/nix_plugin_paths_68.patch
|
./patches/nix_plugin_paths_68.patch
|
||||||
|
] ++ [
|
||||||
./patches/remove-webp-include-69.patch
|
./patches/remove-webp-include-69.patch
|
||||||
./patches/no-build-timestamps.patch
|
./patches/no-build-timestamps.patch
|
||||||
./patches/widevine-79.patch
|
./patches/widevine-79.patch
|
||||||
@@ -166,12 +171,18 @@ let
|
|||||||
#
|
#
|
||||||
# ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ]
|
# ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ]
|
||||||
# ++ optional (versionRange "68" "72") ( 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-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)
|
./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
|
# We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
|
||||||
substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
|
substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
|
||||||
--replace \
|
--replace \
|
||||||
@@ -300,8 +311,8 @@ let
|
|||||||
use_system_libdrm = true;
|
use_system_libdrm = true;
|
||||||
system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
|
system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
|
||||||
} // optionalAttrs ungoogled {
|
} // optionalAttrs ungoogled {
|
||||||
closure_compile = false;
|
|
||||||
enable_hangout_services_extension = false;
|
enable_hangout_services_extension = false;
|
||||||
|
enable_js_type_check = false;
|
||||||
enable_mdns = false;
|
enable_mdns = false;
|
||||||
enable_nacl_nonsfi = false;
|
enable_nacl_nonsfi = false;
|
||||||
enable_one_click_signin = false;
|
enable_one_click_signin = false;
|
||||||
@@ -313,7 +324,6 @@ let
|
|||||||
google_api_key = "";
|
google_api_key = "";
|
||||||
google_default_client_id = "";
|
google_default_client_id = "";
|
||||||
google_default_client_secret = "";
|
google_default_client_secret = "";
|
||||||
optimize_webui = false;
|
|
||||||
safe_browsing_mode = 0;
|
safe_browsing_mode = 0;
|
||||||
use_official_google_api_keys = false;
|
use_official_google_api_keys = false;
|
||||||
use_unofficial_version_number = false;
|
use_unofficial_version_number = false;
|
||||||
@@ -366,9 +376,11 @@ let
|
|||||||
origRpath="$(patchelf --print-rpath "$chromiumBinary")"
|
origRpath="$(patchelf --print-rpath "$chromiumBinary")"
|
||||||
patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary"
|
patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = ./update.py;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Remove some extraAttrs we supplied to the base attributes already.
|
# Remove some extraAttrs we supplied to the base attributes already.
|
||||||
in stdenv.mkDerivation (base // removeAttrs extraAttrs [
|
in stdenv.mkDerivation (base // removeAttrs extraAttrs [
|
||||||
"name" "gnFlags" "buildTargets"
|
"name" "gnFlags" "buildTargets"
|
||||||
])
|
] // { passthru = base.passthru // (extraAttrs.passthru or {}); })
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ newScope, config, stdenv, llvmPackages_9, llvmPackages_10
|
{ newScope, config, stdenv, fetchurl, makeWrapper
|
||||||
, makeWrapper, ed, gnugrep
|
, llvmPackages_10, llvmPackages_11, ed, gnugrep, coreutils, xdg_utils
|
||||||
, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
|
, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
|
||||||
, libva ? null
|
, libva ? null
|
||||||
, pipewire_0_2
|
, pipewire_0_2
|
||||||
@@ -29,24 +29,16 @@ let
|
|||||||
|
|
||||||
callPackage = newScope chromium;
|
callPackage = newScope chromium;
|
||||||
|
|
||||||
chromium = {
|
chromium = rec {
|
||||||
inherit stdenv llvmPackages;
|
inherit stdenv llvmPackages;
|
||||||
|
|
||||||
upstream-info = (callPackage ./update.nix {}).getChannel channel;
|
upstream-info = (lib.importJSON ./upstream-info.json).${channel};
|
||||||
|
|
||||||
mkChromiumDerivation = callPackage ./common.nix ({
|
mkChromiumDerivation = callPackage ./common.nix ({
|
||||||
inherit gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport useOzone;
|
inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs
|
||||||
|
cupsSupport pulseSupport useOzone;
|
||||||
inherit ungoogled;
|
inherit ungoogled;
|
||||||
# TODO: Remove after we can update gn for the stable channel (backward incompatible changes):
|
# 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: {
|
gnChromium = gn.overrideAttrs (oldAttrs: {
|
||||||
version = "2020-05-19";
|
version = "2020-05-19";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
@@ -55,6 +47,27 @@ let
|
|||||||
sha256 = "0197msabskgfbxvhzq73gc3wlr3n9cr4bzrhy5z5irbvy05lxk17";
|
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; };
|
browser = callPackage ./browser.nix { inherit channel enableWideVine; };
|
||||||
@@ -66,22 +79,33 @@ let
|
|||||||
ungoogled-chromium = callPackage ./ungoogled.nix {};
|
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}";
|
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";
|
name = "chrome-widevine-cdm";
|
||||||
|
|
||||||
# The .deb file for Google Chrome
|
src = chromeSrc;
|
||||||
src = upstream-info.binary;
|
|
||||||
|
|
||||||
phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ];
|
phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ];
|
||||||
|
|
||||||
unpackCmd = let
|
unpackCmd = let
|
||||||
widevineCdmPath =
|
widevineCdmPath =
|
||||||
if upstream-info.channel == "stable" then
|
if channel == "stable" then
|
||||||
"./opt/google/chrome/WidevineCdm"
|
"./opt/google/chrome/WidevineCdm"
|
||||||
else if upstream-info.channel == "beta" then
|
else if channel == "beta" then
|
||||||
"./opt/google/chrome-beta/WidevineCdm"
|
"./opt/google/chrome-beta/WidevineCdm"
|
||||||
else if upstream-info.channel == "dev" then
|
else if channel == "dev" then
|
||||||
"./opt/google/chrome-unstable/WidevineCdm"
|
"./opt/google/chrome-unstable/WidevineCdm"
|
||||||
else
|
else
|
||||||
throw "Unknown chromium channel.";
|
throw "Unknown chromium channel.";
|
||||||
@@ -191,10 +215,13 @@ in stdenv.mkDerivation {
|
|||||||
'' + ''
|
'' + ''
|
||||||
|
|
||||||
# libredirect causes chromium to deadlock on startup
|
# 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
|
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
|
w
|
||||||
EOF
|
EOF
|
||||||
@@ -214,6 +241,7 @@ in stdenv.mkDerivation {
|
|||||||
passthru = {
|
passthru = {
|
||||||
inherit (chromium) upstream-info browser;
|
inherit (chromium) upstream-info browser;
|
||||||
mkDerivation = chromium.mkChromiumDerivation;
|
mkDerivation = chromium.mkChromiumDerivation;
|
||||||
inherit sandboxExecutableName;
|
inherit chromeSrc sandboxExecutableName;
|
||||||
|
updateScript = ./update.py;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,11 +44,11 @@ let
|
|||||||
|
|
||||||
flash = stdenv.mkDerivation rec {
|
flash = stdenv.mkDerivation rec {
|
||||||
pname = "flashplayer-ppapi";
|
pname = "flashplayer-ppapi";
|
||||||
version = "32.0.0.414";
|
version = "32.0.0.433";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
||||||
sha256 = "0wzf5i6qf5wgjm905kd3qh97rj47fybl9g7z72vasilbx8q5wfwk";
|
sha256 = "1wfwnmai6wnwi6cfxwqix6n471jjyl6nc7p67sa7cfqwg16b53kx";
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"84.0.4147.89" = {
|
"85.0.4183.102" = {
|
||||||
rev = "84.0.4147.89-1";
|
rev = "85.0.4183.102-1";
|
||||||
sha256 = "1bqvcq3dj6615198j7cz3ylyyic5zpis06capvl6ybl1na3ainb0";
|
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
|
, wrapGAppsHook
|
||||||
, gobject-introspection
|
, gobject-introspection
|
||||||
, glib-networking
|
, glib-networking
|
||||||
|
, librest
|
||||||
, python3
|
, python3
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "1.1.0";
|
version = "1.2.1";
|
||||||
pname = "cawbird";
|
pname = "cawbird";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "IBBoard";
|
owner = "IBBoard";
|
||||||
repo = "cawbird";
|
repo = "cawbird";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0zghryx5y47ff8kxa65lvgmy1cnhvhazxml7r1lxixxj3d88wh7p";
|
sha256 = "11s8x48syy5wjj23ab4bn5jxhi7l5sx7aw6q2ggk99v042hxh3h2";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@@ -50,6 +51,7 @@ stdenv.mkDerivation rec {
|
|||||||
dconf
|
dconf
|
||||||
gspell
|
gspell
|
||||||
glib-networking
|
glib-networking
|
||||||
|
librest
|
||||||
] ++ (with gst_all_1; [
|
] ++ (with gst_all_1; [
|
||||||
gstreamer
|
gstreamer
|
||||||
gst-plugins-base
|
gst-plugins-base
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ with lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "kubernetes";
|
pname = "kubernetes";
|
||||||
version = "1.18.8";
|
version = "1.19.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kubernetes";
|
owner = "kubernetes";
|
||||||
repo = "kubernetes";
|
repo = "kubernetes";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1dswgxxbybwllf2lf89saarsrn4pkb2617wycim07cd7i1l1dv5n";
|
sha256 = "1wnlw2rl14q7cb8shhldbavdamvl3w3mlfvymwfvmvxfxzhrjlaq";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
|
nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
|
||||||
|
|||||||
@@ -7,30 +7,30 @@ in {
|
|||||||
pname = "discord";
|
pname = "discord";
|
||||||
binaryName = "Discord";
|
binaryName = "Discord";
|
||||||
desktopName = "Discord";
|
desktopName = "Discord";
|
||||||
version = "0.0.11";
|
version = "0.0.12";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
|
url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
|
||||||
sha256 = "1saqwigi1gjgy4q8rgnwyni57aaszi0w9vqssgyvfgzff8fpcx54";
|
sha256 = "0qrzvc8cp8azb1b2wb5i4jh9smjfw5rxiw08bfqm8p3v74ycvwk8";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
ptb = callPackage ./base.nix rec {
|
ptb = callPackage ./base.nix rec {
|
||||||
pname = "discord-ptb";
|
pname = "discord-ptb";
|
||||||
binaryName = "DiscordPTB";
|
binaryName = "DiscordPTB";
|
||||||
desktopName = "Discord PTB";
|
desktopName = "Discord PTB";
|
||||||
version = "0.0.21";
|
version = "0.0.22";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
|
url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
|
||||||
sha256 = "1i164wpi07d45w19i7l5hs47crc29k3plg4y9kc97x75rhh4xym1";
|
sha256 = "06qyh8i9d7il6q7q7iaymbbcmdcgrj6rc4z4xik1ay3fr7qy299j";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
canary = callPackage ./base.nix rec {
|
canary = callPackage ./base.nix rec {
|
||||||
pname = "discord-canary";
|
pname = "discord-canary";
|
||||||
binaryName = "DiscordCanary";
|
binaryName = "DiscordCanary";
|
||||||
desktopName = "Discord Canary";
|
desktopName = "Discord Canary";
|
||||||
version = "0.0.111";
|
version = "0.0.112";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
||||||
sha256 = "0ngmb40pwfwydvxyfby89yp17lsvmv642jci9b12cyc3hlkf85n4";
|
sha256 = "1ibw3lsk1060g6b79v78292q45ayqj3izrs3ilvg4gfwmfxmm1a0";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}.${branch}
|
}.${branch}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "element-desktop",
|
"name": "element-desktop",
|
||||||
"productName": "Element",
|
"productName": "Element",
|
||||||
"main": "src/electron-main.js",
|
"main": "src/electron-main.js",
|
||||||
"version": "1.7.5",
|
"version": "1.7.7",
|
||||||
"description": "A feature-rich client for Matrix.org",
|
"description": "A feature-rich client for Matrix.org",
|
||||||
"author": "Element",
|
"author": "Element",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -722,11 +722,11 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "bl___bl_4.0.2.tgz";
|
name = "bl___bl_4.0.3.tgz";
|
||||||
path = fetchurl {
|
path = fetchurl {
|
||||||
name = "bl___bl_4.0.2.tgz";
|
name = "bl___bl_4.0.3.tgz";
|
||||||
url = "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz";
|
url = "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz";
|
||||||
sha1 = "52b71e9088515d0606d9dd9cc7aa48dc1f98e73a";
|
sha1 = "12d6287adc29080e22a705e5764b2a9522cdc489";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -801,14 +801,6 @@
|
|||||||
sha1 = "32713bc028f75c02fdb710d7c7bcec1f2c6070ef";
|
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";
|
name = "buffer___buffer_5.6.0.tgz";
|
||||||
path = fetchurl {
|
path = fetchurl {
|
||||||
@@ -4945,22 +4937,6 @@
|
|||||||
sha1 = "1eca1cf711aef814c04f62252a36a62f6cb23b57";
|
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";
|
name = "readable_stream___readable_stream_3.6.0.tgz";
|
||||||
path = fetchurl {
|
path = fetchurl {
|
||||||
@@ -5201,6 +5177,14 @@
|
|||||||
sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
|
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";
|
name = "safer_buffer___safer_buffer_2.1.2.tgz";
|
||||||
path = fetchurl {
|
path = fetchurl {
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
executableName = "element-desktop";
|
executableName = "element-desktop";
|
||||||
version = "1.7.5";
|
version = "1.7.7";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "vector-im";
|
owner = "vector-im";
|
||||||
repo = "riot-desktop";
|
repo = "riot-desktop";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0781yg15bzkw5bpfzbdkqix239djgsc7kjdvbilv1d1xxqz3462y";
|
sha256 = "1h3v3d41ykgwn397nhm9zaqgf3n69zh592sjzrprvk1gsn5kj5h2";
|
||||||
};
|
};
|
||||||
electron = electron_9;
|
electron = electron_9;
|
||||||
|
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ let
|
|||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "element-web";
|
pname = "element-web";
|
||||||
version = "1.7.5";
|
version = "1.7.7";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/vector-im/riot-web/releases/download/v${version}/riot-v${version}.tar.gz";
|
url = "https://github.com/vector-im/riot-web/releases/download/v${version}/riot-v${version}.tar.gz";
|
||||||
sha256 = "07qc4hymdp1r2zn9gsgkpwxf6knk6xr88dc3iihlhipmlk46m58b";
|
sha256 = "1hly102725qh4xjggxv85w1hyq26mhkgj3y6s76yar7i3smj6kpw";
|
||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "jitsi-meet-electron";
|
pname = "jitsi-meet-electron";
|
||||||
version = "2.2.0";
|
version = "2.3.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/jitsi/jitsi-meet-electron/releases/download/v${version}/jitsi-meet-x86_64.AppImage";
|
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";
|
name = "${pname}-${version}.AppImage";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{ stdenv, fetchFromGitHub, cmake, wrapQtAppsHook
|
{ stdenv, fetchFromGitHub, cmake, wrapQtAppsHook
|
||||||
, qtbase, qtmultimedia, qtx11extras, qttools, qtwebengine
|
, 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
|
, libgcrypt, libotr, html-tidy, libgpgerror, libsignal-protocol-c
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
qtbase qtmultimedia qtx11extras qttools qtwebengine
|
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
|
libgcrypt libotr html-tidy libgpgerror libsignal-protocol-c
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{ stdenv, fetchFromGitHub, cmake, wrapQtAppsHook
|
{ stdenv, fetchFromGitHub, cmake, wrapQtAppsHook
|
||||||
, qtbase, qtmultimedia, qtx11extras, qttools, qtwebengine
|
, qtbase, qtmultimedia, qtx11extras, qttools, qtwebengine
|
||||||
, libidn, qca2-qt5, libXScrnSaver, hunspell
|
, libidn, qca-qt5, libXScrnSaver, hunspell
|
||||||
}:
|
}:
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "psi";
|
pname = "psi";
|
||||||
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
|
|||||||
nativeBuildInputs = [ cmake wrapQtAppsHook ];
|
nativeBuildInputs = [ cmake wrapQtAppsHook ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
qtbase qtmultimedia qtx11extras qttools qtwebengine
|
qtbase qtmultimedia qtx11extras qttools qtwebengine
|
||||||
libidn qca2-qt5 libXScrnSaver hunspell
|
libidn qca-qt5 libXScrnSaver hunspell
|
||||||
];
|
];
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib
|
, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib
|
||||||
, cups, expat, libuuid, at-spi2-core, libappindicator-gtk3
|
, cups, expat, libuuid, at-spi2-core, libappindicator-gtk3
|
||||||
# Runtime dependencies:
|
# Runtime dependencies:
|
||||||
, systemd, libnotify, libdbusmenu
|
, systemd, libnotify, libdbusmenu, libpulseaudio
|
||||||
# Unfortunately this also overwrites the UI language (not just the spell
|
# Unfortunately this also overwrites the UI language (not just the spell
|
||||||
# checking language!):
|
# checking language!):
|
||||||
, hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
|
, hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
|
||||||
@@ -25,7 +25,7 @@ let
|
|||||||
else "");
|
else "");
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "signal-desktop";
|
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.
|
# All releases have a limited lifetime and "expire" 90 days after the release.
|
||||||
# When releases "expire" the application becomes unusable until an update is
|
# When releases "expire" the application becomes unusable until an update is
|
||||||
# applied. The expiration date for the current release can be extracted with:
|
# applied. The expiration date for the current release can be extracted with:
|
||||||
@@ -35,7 +35,7 @@ in stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||||
sha256 = "1nxj7h8yrp2sbxxd49q9xdh1zsqixcd01i83lr492f4322cg1yjf";
|
sha256 = "0lc56g09g2xfwxwm046bcykvxd0nq63zazamnp268z28lnn937mc";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@@ -122,6 +122,7 @@ in stdenv.mkDerivation rec {
|
|||||||
--replace /opt/Signal/signal-desktop $out/bin/signal-desktop
|
--replace /opt/Signal/signal-desktop $out/bin/signal-desktop
|
||||||
|
|
||||||
autoPatchelf --no-recurse -- $out/lib/Signal/
|
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":
|
# 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
|
{ 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
|
, lzma, lz4, xxHash, zlib, minizip, openssl, libtgvoip, microsoft_gsl, tl-expected
|
||||||
, range-v3
|
, range-v3
|
||||||
}:
|
}:
|
||||||
@@ -21,7 +21,7 @@ mkDerivation rec {
|
|||||||
nativeBuildInputs = [ pkg-config python3 cmake ninja ];
|
nativeBuildInputs = [ pkg-config python3 cmake ninja ];
|
||||||
|
|
||||||
buildInputs = [
|
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
|
zlib minizip openssl hunspell libtgvoip microsoft_gsl tl-expected range-v3
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -19,16 +19,17 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export QMAKEFEATURES=${libcommuni}/features
|
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 ''
|
postInstall = stdenv.lib.optionalString stdenv.isLinux ''
|
||||||
substituteInPlace "$out/share/applications/communi.desktop" \
|
substituteInPlace "$out/share/applications/communi.desktop" \
|
||||||
--replace "/usr/bin" "$out/bin"
|
--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