···355 shortName = "Linux Kernel";
356 };
357358+ lumiguide = {
359+ # Verify additions by approval of an already existing member of the team.
360+ members = [
361+ roelvandijk
362+ lucus16
363+ ];
364+ scope = "Group registration for LumiGuide employees who collectively maintain packages.";
365+ shortName = "Lumiguide employees";
366+ };
367+368 lumina = {
369 members = [
370 romildo
-5
nixos/lib/eval-config.nix
···50 # they way through, but has the last priority behind everything else.
51 nixpkgs.system = lib.mkDefault system;
5253- # Stash the value of the `system` argument. When using `nesting.children`
54- # we want to have the same default value behavior (immediately above)
55- # without any interference from the user's configuration.
56- nixpkgs.initialSystem = system;
57-58 _module.args.pkgs = lib.mkIf (pkgs_ != null) (lib.mkForce pkgs_);
59 };
60 };
···50 # they way through, but has the last priority behind everything else.
51 nixpkgs.system = lib.mkDefault system;
520000053 _module.args.pkgs = lib.mkIf (pkgs_ != null) (lib.mkForce pkgs_);
54 };
55 };
+1-8
nixos/modules/misc/nixpkgs.nix
···67 imports = [
68 ./assertions.nix
69 ./meta.nix
070 ];
7172 options.nixpkgs = {
···217218 Ignored when <code>nixpkgs.localSystem</code> is set.
219 Ignored when <code>nixpkgs.pkgs</code> is set.
220- '';
221- };
222-223- initialSystem = mkOption {
224- type = types.str;
225- internal = true;
226- description = ''
227- Preserved value of <literal>system</literal> passed to <literal>eval-config.nix</literal>.
228 '';
229 };
230 };
···67 imports = [
68 ./assertions.nix
69 ./meta.nix
70+ (mkRemovedOptionModule [ "nixpkgs" "initialSystem" ] "The NixOS options `nesting.clone` and `nesting.children` have been deleted, and replaced with named specialisation. Therefore `nixpgks.initialSystem` has no effect anymore.")
71 ];
7273 options.nixpkgs = {
···218219 Ignored when <code>nixpkgs.localSystem</code> is set.
220 Ignored when <code>nixpkgs.pkgs</code> is set.
00000000221 '';
222 };
223 };
···14 PATHS_PLUGINS = if builtins.isNull cfg.declarativePlugins then "${cfg.dataDir}/plugins" else declarativePlugins;
15 PATHS_LOGS = "${cfg.dataDir}/log";
1617+ SERVER_SERVE_FROM_SUBPATH = boolToString cfg.server.serveFromSubPath;
18 SERVER_PROTOCOL = cfg.protocol;
19 SERVER_HTTP_ADDR = cfg.addr;
20 SERVER_HTTP_PORT = cfg.port;
···42 USERS_AUTO_ASSIGN_ORG = boolToString cfg.users.autoAssignOrg;
43 USERS_AUTO_ASSIGN_ORG_ROLE = cfg.users.autoAssignOrgRole;
4445+ AUTH_DISABLE_LOGIN_FORM = boolToString cfg.auth.disableLoginForm;
46+47 AUTH_ANONYMOUS_ENABLED = boolToString cfg.auth.anonymous.enable;
48 AUTH_ANONYMOUS_ORG_NAME = cfg.auth.anonymous.org_name;
49 AUTH_ANONYMOUS_ORG_ROLE = cfg.auth.anonymous.org_role;
50+51+ AUTH_AZUREAD_NAME = "Azure AD";
52+ AUTH_AZUREAD_ENABLED = boolToString cfg.auth.azuread.enable;
53+ AUTH_AZUREAD_ALLOW_SIGN_UP = boolToString cfg.auth.azuread.allowSignUp;
54+ AUTH_AZUREAD_CLIENT_ID = cfg.auth.azuread.clientId;
55+ AUTH_AZUREAD_SCOPES = "openid email profile";
56+ AUTH_AZUREAD_AUTH_URL = "https://login.microsoftonline.com/${cfg.auth.azuread.tenantId}/oauth2/v2.0/authorize";
57+ AUTH_AZUREAD_TOKEN_URL = "https://login.microsoftonline.com/${cfg.auth.azuread.tenantId}/oauth2/v2.0/token";
58+ AUTH_AZUREAD_ALLOWED_DOMAINS = cfg.auth.azuread.allowedDomains;
59+ AUTH_AZUREAD_ALLOWED_GROUPS = cfg.auth.azuread.allowedGroups;
60+ AUTH_AZUREAD_ROLE_ATTRIBUTE_STRICT = false;
61+62 AUTH_GOOGLE_ENABLED = boolToString cfg.auth.google.enable;
63 AUTH_GOOGLE_ALLOW_SIGN_UP = boolToString cfg.auth.google.allowSignUp;
64 AUTH_GOOGLE_CLIENT_ID = cfg.auth.google.clientId;
···499 };
500 };
501502+ server = {
503+ serveFromSubPath = mkOption {
504+ description = "Serve Grafana from subpath specified in rootUrl setting";
505+ default = false;
506+ type = types.bool;
507+ };
508+ };
509+510 smtp = {
511 enable = mkEnableOption "smtp";
512 host = mkOption {
···569 };
570571 auth = {
572+ disableLoginForm = mkOption {
573+ description = "Set to true to disable (hide) the login form, useful if you use OAuth";
574+ default = false;
575+ type = types.bool;
576+ };
577+578 anonymous = {
579 enable = mkOption {
580 description = "Whether to allow anonymous access.";
···592 type = types.str;
593 };
594 };
595+ azuread = {
596+ enable = mkOption {
597+ description = "Whether to allow Azure AD OAuth.";
598+ default = false;
599+ type = types.bool;
600+ };
601+ allowSignUp = mkOption {
602+ description = "Whether to allow sign up with Azure AD OAuth.";
603+ default = false;
604+ type = types.bool;
605+ };
606+ clientId = mkOption {
607+ description = "Azure AD OAuth client ID.";
608+ default = "";
609+ type = types.str;
610+ };
611+ clientSecretFile = mkOption {
612+ description = "Azure AD OAuth client secret.";
613+ default = null;
614+ type = types.nullOr types.path;
615+ };
616+ tenantId = mkOption {
617+ description = ''
618+ Tenant id used to create auth and token url. Default to "common"
619+ , let user sign in with any tenant.
620+ '';
621+ default = "common";
622+ type = types.str;
623+ };
624+ allowedDomains = mkOption {
625+ description = ''
626+ To limit access to authenticated users who are members of one or more groups,
627+ set allowedGroups to a comma- or space-separated list of group object IDs.
628+ You can find object IDs for a specific group on the Azure portal.
629+ '';
630+ default = "";
631+ type = types.str;
632+ };
633+ allowedGroups = mkOption {
634+ description = ''
635+ Limits access to users who belong to specific domains.
636+ Separate domains with space or comma.
637+ '';
638+ default = "";
639+ type = types.str;
640+ };
641+ };
642 google = {
643 enable = mkOption {
644 description = "Whether to allow Google OAuth2.";
···728 set -o errexit -o pipefail -o nounset -o errtrace
729 shopt -s inherit_errexit
730731+ ${optionalString (cfg.auth.azuread.clientSecretFile != null) ''
732+ GF_AUTH_AZUREAD_CLIENT_SECRET="$(<${escapeShellArg cfg.auth.azuread.clientSecretFile})"
733+ export GF_AUTH_AZUREAD_CLIENT_SECRET
734+ ''}
735 ${optionalString (cfg.auth.google.clientSecretFile != null) ''
736 GF_AUTH_GOOGLE_CLIENT_SECRET="$(<${escapeShellArg cfg.auth.google.clientSecretFile})"
737 export GF_AUTH_GOOGLE_CLIENT_SECRET
+1-1
nixos/tests/gitolite.nix
···107 with subtest("gitolite server starts"):
108 server.wait_for_unit("gitolite-init.service")
109 server.wait_for_unit("sshd.service")
110- client.succeed("ssh gitolite@server info")
111112 with subtest("admin can clone and configure gitolite-admin.git"):
113 client.succeed(
···107 with subtest("gitolite server starts"):
108 server.wait_for_unit("gitolite-init.service")
109 server.wait_for_unit("sshd.service")
110+ client.succeed("ssh -n gitolite@server info")
111112 with subtest("admin can clone and configure gitolite-admin.git"):
113 client.succeed(
···1+# How to update
2+3+1. `./fetchrepo.sh`
4+2. `./mkrepo.sh`
5+3. Check the `repo.json` diff for new stable versions of `tools`, `platform-tools`, `build-tools`, `emulator` and/or `ndk`
6+4. Update the relevant argument defaults in `compose-android-packages.nix`
···91 "-Dalsa=${if !libOnly then "enabled" else "disabled"}"
92 "-Dasyncns=${if !libOnly then "enabled" else "disabled"}"
93 "-Davahi=${if zeroconfSupport then "enabled" else "disabled"}"
94- "-Dbluez5=${if !libOnly then "enabled" else "disabled"}"
95 # advanced bluetooth audio codecs are provided by gstreamer
96 "-Dbluez5-gstreamer=${if (!libOnly && bluetoothSupport && advancedBluetoothCodecs) then "enabled" else "disabled"}"
97 "-Ddatabase=simple"
···91 "-Dalsa=${if !libOnly then "enabled" else "disabled"}"
92 "-Dasyncns=${if !libOnly then "enabled" else "disabled"}"
93 "-Davahi=${if zeroconfSupport then "enabled" else "disabled"}"
94+ "-Dbluez5=${if !libOnly && bluetoothSupport then "enabled" else "disabled"}"
95 # advanced bluetooth audio codecs are provided by gstreamer
96 "-Dbluez5-gstreamer=${if (!libOnly && bluetoothSupport && advancedBluetoothCodecs) then "enabled" else "disabled"}"
97 "-Ddatabase=simple"
+4
pkgs/servers/search/meilisearch/default.nix
···5, Security
6, DiskArbitration
7, Foundation
08}:
910let version = "0.23.1";
···25 ];
26 cargoSha256 = "sha256-dz+1IQZRSeMEagI2dnOtR3A8prg4UZ2Om0pd1BUhuhE=";
27 buildInputs = lib.optionals stdenv.isDarwin [ Security DiskArbitration Foundation ];
00028 meta = with lib; {
29 broken = stdenv.isDarwin;
30 description = "Powerful, fast, and an easy to use search engine ";
···5, Security
6, DiskArbitration
7, Foundation
8+, nixosTests
9}:
1011let version = "0.23.1";
···26 ];
27 cargoSha256 = "sha256-dz+1IQZRSeMEagI2dnOtR3A8prg4UZ2Om0pd1BUhuhE=";
28 buildInputs = lib.optionals stdenv.isDarwin [ Security DiskArbitration Foundation ];
29+ passthru.tests = {
30+ meilisearch = nixosTests.meilisearch;
31+ };
32 meta = with lib; {
33 broken = stdenv.isDarwin;
34 description = "Powerful, fast, and an easy to use search engine ";
+18-14
pkgs/shells/nushell/default.nix
···13, Security
14, nghttp2
15, libgit2
016, withExtraFeatures ? true
17, testers
18, nushell
···29 sha256 = "sha256-4thvUSOSvH/bv0aW7hGGQMvtXdS+yDfZzPRLZmPZQMQ=";
30 };
3132- cargoSha256 = "sha256-ALUp6sPcmnJy/A078umyKg8KBv23P0vv8mwoO9OU+DQ=";
00000000000000003334 nativeBuildInputs = [ pkg-config ]
35 ++ lib.optionals (withExtraFeatures && stdenv.isLinux) [ python3 ];
···40 ++ lib.optionals (withExtraFeatures && stdenv.isDarwin) [ AppKit nghttp2 libgit2 ];
4142 buildFeatures = lib.optional withExtraFeatures "extra";
43-44- # Since 0.34, nu has an indirect dependency on `zstd-sys` (via `polars` and
45- # `parquet`, for dataframe support), which by default has an impure build
46- # (git submodule for the `zstd` C library). The `pkg-config` feature flag
47- # fixes this, but it's hard to invoke this in the right place, because of
48- # the indirect dependencies. So add a direct dependency on `zstd-sys` here
49- # at the top level, along with this feature flag, to ensure that when
50- # `zstd-sys` is transitively invoked, it triggers a pure build using the
51- # system `zstd` library provided above.
52- #
53- # (If this patch needs updating, in a nushell repo add the zstd-sys line to
54- # Cargo.toml, then `cargo update --package zstd-sys` to update Cargo.lock.)
55- cargoPatches = [ ./use-system-zstd-lib.diff ];
5657 # TODO investigate why tests are broken on darwin
58 # failures show that tests try to write to paths
···13, Security
14, nghttp2
15, libgit2
16+, cargo-edit
17, withExtraFeatures ? true
18, testers
19, nushell
···30 sha256 = "sha256-4thvUSOSvH/bv0aW7hGGQMvtXdS+yDfZzPRLZmPZQMQ=";
31 };
3233+ cargoSha256 = "sha256-Vd8R9EsO52q840HqRzc37PirZZyTZr+Bnow5qHEacJ0=";
34+ # Since 0.34, nu has an indirect dependency on `zstd-sys` (via `polars` and
35+ # `parquet`, for dataframe support), which by default has an impure build
36+ # (git submodule for the `zstd` C library). The `pkg-config` feature flag
37+ # fixes this, but it's hard to invoke this in the right place, because of
38+ # the indirect dependencies. So add a direct dependency on `zstd-sys` here
39+ # at the top level, along with this feature flag, to ensure that when
40+ # `zstd-sys` is transitively invoked, it triggers a pure build using the
41+ # system `zstd` library provided above.
42+ depsExtraArgs = { nativeBuildInputs = [ cargo-edit ]; };
43+ # cargo add has been merged in to cargo so the above can be removed once 1.62.0 is available in nixpkgs
44+ # https://github.com/rust-lang/cargo/pull/10472
45+ cargoUpdateHook = ''
46+ cargo add zstd-sys --features pkg-config --offline
47+ # write the change to the lockfile
48+ cargo update --package zstd-sys --offline
49+ '';
5051 nativeBuildInputs = [ pkg-config ]
52 ++ lib.optionals (withExtraFeatures && stdenv.isLinux) [ python3 ];
···57 ++ lib.optionals (withExtraFeatures && stdenv.isDarwin) [ AppKit nghttp2 libgit2 ];
5859 buildFeatures = lib.optional withExtraFeatures "extra";
00000000000006061 # TODO investigate why tests are broken on darwin
62 # failures show that tests try to write to paths
-32
pkgs/shells/nushell/use-system-zstd-lib.diff
···1-diff --git a/Cargo.lock b/Cargo.lock
2-index 6cebf66d..b6e40cd9 100644
3---- a/Cargo.lock
4-+++ b/Cargo.lock
5-@@ -2443,6 +2443,7 @@ dependencies = [
6- "rstest",
7- "serial_test",
8- "tempfile",
9-+ "zstd-sys",
10- ]
11-12- [[package]]
13-@@ -5365,4 +5366,5 @@ checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b"
14- dependencies = [
15- "cc",
16- "libc",
17-+ "pkg-config",
18- ]
19-diff --git a/Cargo.toml b/Cargo.toml
20-index 0791d462..d520d9ae 100644
21---- a/Cargo.toml
22-+++ b/Cargo.toml
23-@@ -58,6 +58,9 @@ rayon = "1.5.1"
24- reedline = { version = "0.6.0", features = ["bashisms"]}
25- is_executable = "1.0.1"
26-27-+# Specify that the indirect dependency ztsd-sys should pick up the system zstd C library
28-+zstd-sys = { version = "2", features = [ "pkg-config" ] }
29-+
30- [dev-dependencies]
31- nu-test-support = { path="./crates/nu-test-support", version = "0.63.0" }
32- tempfile = "3.2.0"
···00000000000000000000000000000000
+5-3
pkgs/stdenv/darwin/make-bootstrap-tools.nix
···1{ pkgspath ? ../../.., test-pkgspath ? pkgspath
2-, system ? builtins.currentSystem, crossSystem ? null, bootstrapFiles ? null
003}:
45let cross = if crossSystem != null
···11 in (import "${pkgspath}/pkgs/stdenv/darwin" args').stagesDarwin;
12 }
13 else {};
14-in with import pkgspath ({ inherit system; } // cross // custom-bootstrap);
1516let
17 llvmPackages = llvmPackages_11;
···364 test-pkgs = import test-pkgspath {
365 # if the bootstrap tools are for another platform, we should be testing
366 # that platform.
367- system = if crossSystem != null then crossSystem else system;
368369 stdenvStages = args: let
370 args' = args // { inherit bootstrapLlvmVersion bootstrapFiles; };
···1{ pkgspath ? ../../.., test-pkgspath ? pkgspath
2+, localSystem ? { system = builtins.currentSystem; }
3+, crossSystem ? null
4+, bootstrapFiles ? null
5}:
67let cross = if crossSystem != null
···13 in (import "${pkgspath}/pkgs/stdenv/darwin" args').stagesDarwin;
14 }
15 else {};
16+in with import pkgspath ({ inherit localSystem; } // cross // custom-bootstrap);
1718let
19 llvmPackages = llvmPackages_11;
···366 test-pkgs = import test-pkgspath {
367 # if the bootstrap tools are for another platform, we should be testing
368 # that platform.
369+ localSystem = if crossSystem != null then crossSystem else localSystem;
370371 stdenvStages = args: let
372 args' = args // { inherit bootstrapLlvmVersion bootstrapFiles; };
···9 tempAllow pkgs.authy "2.1.0" [ "electron-9.4.4" ];
10 };
11 };
12- # Allow with forgetting
13- tempAllow = p: v: pa:
14- lib.optionals (lib.assertMsg (p.version == v) "${p.name} is no longer at version ${v}, consider removing the tempAllow") pa;
15- # For this test we don't _really_ care about the version though,
16- # only about evaluation strictness
17- tempAllowAlike = p: v: pa: builtins.seq v builtins.seq p.version pa;
0001819 in pkgs.hello;
20
···9 tempAllow pkgs.authy "2.1.0" [ "electron-9.4.4" ];
10 };
11 };
12+ # A simplification of `tempAllow` that doesn't check the version, but
13+ # has the same strictness characteristics. Actually checking a version
14+ # here would add undue maintenance.
15+ #
16+ # Original:
17+ # tempAllow = p: v: pa:
18+ # lib.optionals (lib.assertMsg (p.version == v) "${p.name} is no longer at version ${v}, consider removing the tempAllow") pa;
19+ #
20+ tempAllow = p: v: pa: builtins.seq v builtins.seq p.version pa;
2122 in pkgs.hello;
23