Merge branch 'staging-next' into staging
This commit is contained in:
+5
-8
@@ -11,9 +11,6 @@
|
||||
# This also holds true for GitHub teams. Since almost none of our teams have write
|
||||
# permissions, you need to list all members of the team with commit access individually.
|
||||
|
||||
# This file
|
||||
/.github/CODEOWNERS @edolstra
|
||||
|
||||
# GitHub actions
|
||||
/.github/workflows @NixOS/Security @Mic92 @zowoq
|
||||
/.github/workflows/merge-staging @FRidh
|
||||
@@ -22,12 +19,12 @@
|
||||
/.editorconfig @Mic92 @zowoq
|
||||
|
||||
# Libraries
|
||||
/lib @edolstra @infinisil
|
||||
/lib @infinisil
|
||||
/lib/systems @alyssais @ericson2314 @amjoseph-nixpkgs
|
||||
/lib/generators.nix @infinisil @edolstra @Profpatsch
|
||||
/lib/cli.nix @infinisil @edolstra @Profpatsch
|
||||
/lib/debug.nix @infinisil @edolstra @Profpatsch
|
||||
/lib/asserts.nix @infinisil @edolstra @Profpatsch
|
||||
/lib/generators.nix @infinisil @Profpatsch
|
||||
/lib/cli.nix @infinisil @Profpatsch
|
||||
/lib/debug.nix @infinisil @Profpatsch
|
||||
/lib/asserts.nix @infinisil @Profpatsch
|
||||
/lib/path.* @infinisil @fricklerhandwerk
|
||||
/lib/fileset @infinisil
|
||||
/doc/functions/fileset.section.md @infinisil
|
||||
|
||||
+10
-23
@@ -322,6 +322,8 @@ All the review template samples provided in this section are generic and meant a
|
||||
|
||||
To get more information about how to review specific parts of Nixpkgs, refer to the documents linked to in the [overview section][overview].
|
||||
|
||||
If a pull request contains documentation changes that might require feedback from the documentation team, ping @NixOS/documentation-team on the pull request.
|
||||
|
||||
If you consider having enough knowledge and experience in a topic and would like to be a long-term reviewer for related submissions, please contact the current reviewers for that topic. They will give you information about the reviewing process. The main reviewers for a topic can be hard to find as there is no list, but checking past pull requests to see who reviewed or git-blaming the code to see who committed to that topic can give some hints.
|
||||
|
||||
Container system, boot system and library changes are some examples of the pull requests fitting this category.
|
||||
@@ -512,34 +514,19 @@ To get a sense for what changes are considered mass rebuilds, see [previously me
|
||||
|
||||
- If you have commits `pkg-name: oh, forgot to insert whitespace`: squash commits in this case. Use `git rebase -i`.
|
||||
|
||||
- Format the commit messages in the following way:
|
||||
- For consistency, there should not be a period at the end of the commit message's summary line (the first line of the commit message).
|
||||
|
||||
```
|
||||
(pkg-name | nixos/<module>): (from -> to | init at version | refactor | etc)
|
||||
|
||||
(Motivation for change. Link to release notes. Additional information.)
|
||||
```
|
||||
|
||||
For consistency, there should not be a period at the end of the commit message's summary line (the first line of the commit message).
|
||||
|
||||
Examples:
|
||||
|
||||
* nginx: init at 2.0.1
|
||||
* firefox: 54.0.1 -> 55.0
|
||||
|
||||
https://www.mozilla.org/en-US/firefox/55.0/releasenotes/
|
||||
* nixos/hydra: add bazBaz option
|
||||
|
||||
Dual baz behavior is needed to do foo.
|
||||
* nixos/nginx: refactor config generation
|
||||
|
||||
The old config generation system used impure shell scripts and could break in specific circumstances (see #1234).
|
||||
|
||||
When adding yourself as maintainer, in the same pull request, make a separate
|
||||
- When adding yourself as maintainer in the same pull request, make a separate
|
||||
commit with the message `maintainers: add <handle>`.
|
||||
Add the commit before those making changes to the package or module.
|
||||
See [Nixpkgs Maintainers](./maintainers/README.md) for details.
|
||||
|
||||
- Make sure you read about any commit conventions specific to the area you're touching. See:
|
||||
- [Commit conventions](./pkgs/README.md#commit-conventions) for changes to `pkgs`.
|
||||
- [Commit conventions](./lib/README.md#commit-conventions) for changes to `lib`.
|
||||
- [Commit conventions](./nixos/README.md#commit-conventions) for changes to `nixos`.
|
||||
- [Commit conventions](./doc/README.md#commit-conventions) for changes to `doc`, the Nixpkgs manual.
|
||||
|
||||
### Writing good commit messages
|
||||
|
||||
In addition to writing properly formatted commit messages, it's important to include relevant information so other developers can later understand *why* a change was made. While this information usually can be found by digging code, mailing list/Discourse archives, pull request discussions or upstream changes, it may require a lot of work.
|
||||
|
||||
@@ -114,3 +114,24 @@ pear
|
||||
watermelon
|
||||
: green fruit with red flesh
|
||||
```
|
||||
|
||||
## Commit conventions
|
||||
|
||||
- Make sure you read about the [commit conventions](../CONTRIBUTING.md#commit-conventions) common to Nixpkgs as a whole.
|
||||
|
||||
- If creating a commit purely for documentation changes, format the commit message in the following way:
|
||||
|
||||
```
|
||||
doc: (documentation summary)
|
||||
|
||||
(Motivation for change, relevant links, additional information.)
|
||||
```
|
||||
|
||||
Examples:
|
||||
|
||||
* doc: update the kernel config documentation to use `nix-shell`
|
||||
* doc: add information about `nix-update-script`
|
||||
|
||||
Closes #216321.
|
||||
|
||||
- If the commit contains more than just documentation changes, follow the commit message format relevant for the rest of the changes.
|
||||
|
||||
@@ -25,7 +25,6 @@ perl.section.md
|
||||
pkg-config.section.md
|
||||
postgresql-test-hook.section.md
|
||||
python.section.md
|
||||
qt-4.section.md
|
||||
scons.section.md
|
||||
tetex-tex-live.section.md
|
||||
unzip.section.md
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
# Qt 4 {#qt-4}
|
||||
|
||||
Sets the `QTDIR` environment variable to Qt’s path.
|
||||
@@ -323,7 +323,7 @@ $ nix-shell -p haskellPackages.dhall-nixpkgs nix-prefetch-git
|
||||
```
|
||||
|
||||
:::{.note}
|
||||
`nix-prefetch-git` has to be in `$PATH` for `dhall-to-nixpkgs` to work.
|
||||
`nix-prefetch-git` is added to the `nix-shell -p` invocation above, because it has to be in `$PATH` for `dhall-to-nixpkgs` to work.
|
||||
:::
|
||||
|
||||
The utility takes care of automatically detecting remote imports and converting
|
||||
|
||||
@@ -20,7 +20,7 @@ In the following is an example expression using `buildGoModule`, the following a
|
||||
|
||||
To obtain the actual hash, set `vendorHash = lib.fakeHash;` and run the build ([more details here](#sec-source-hashes)).
|
||||
- `proxyVendor`: Fetches (go mod download) and proxies the vendor directory. This is useful if your code depends on c code and go mod tidy does not include the needed sources to build or if any dependency has case-insensitive conflicts which will produce platform-dependent `vendorHash` checksums.
|
||||
- `modPostBuild`: Shell commands to run after the build of the goModules executes `go mod vendor`, and before calculating fixed output derivation's `vendorHash` (or `vendorSha256`). Note that if you change this attribute, you need to update `vendorHash` (or `vendorSha256`) attribute.
|
||||
- `modPostBuild`: Shell commands to run after the build of the goModules executes `go mod vendor`, and before calculating fixed output derivation's `vendorHash`. Note that if you change this attribute, you need to update `vendorHash` attribute.
|
||||
|
||||
```nix
|
||||
pet = buildGoModule rec {
|
||||
|
||||
@@ -74,3 +74,23 @@ path/tests/prop.sh
|
||||
# Run the lib.fileset tests
|
||||
fileset/tests.sh
|
||||
```
|
||||
|
||||
## Commit conventions
|
||||
|
||||
- Make sure you read about the [commit conventions](../CONTRIBUTING.md#commit-conventions) common to Nixpkgs as a whole.
|
||||
|
||||
- Format the commit messages in the following way:
|
||||
|
||||
```
|
||||
lib.(section): (init | add additional argument | refactor | etc)
|
||||
|
||||
(Motivation for change. Additional information.)
|
||||
```
|
||||
|
||||
Examples:
|
||||
|
||||
* lib.getExe': check arguments
|
||||
* lib.fileset: Add an additional argument in the design docs
|
||||
|
||||
Closes #264537
|
||||
|
||||
|
||||
+1
-1
@@ -92,7 +92,7 @@ let
|
||||
concatMap flatten remove findSingle findFirst any all count
|
||||
optional optionals toList range replicate partition zipListsWith zipLists
|
||||
reverseList listDfs toposort sort naturalSort compareLists take
|
||||
drop sublist last init crossLists unique intersectLists
|
||||
drop sublist last init crossLists unique allUnique intersectLists
|
||||
subtractLists mutuallyExclusive groupBy groupBy';
|
||||
inherit (self.strings) concatStrings concatMapStrings concatImapStrings
|
||||
intersperse concatStringsSep concatMapStringsSep
|
||||
|
||||
@@ -238,6 +238,21 @@ Arguments:
|
||||
And it would be unclear how the library should behave if the one file wouldn't be added to the store:
|
||||
`toSource { root = ./file.nix; fileset = <empty>; }` has no reasonable result because returing an empty store path wouldn't match the file type, and there's no way to have an empty file store path, whatever that would mean.
|
||||
|
||||
### `fileFilter` takes a path
|
||||
|
||||
The `fileFilter` function takes a path, and not a file set, as its second argument.
|
||||
|
||||
- (-) Makes it harder to compose functions, since the file set type, the return value, can't be passed to the function itself like `fileFilter predicate fileset`
|
||||
- (+) It's still possible to use `intersection` to filter on file sets: `intersection fileset (fileFilter predicate ./.)`
|
||||
- (-) This does need an extra `./.` argument that's not obvious
|
||||
- (+) This could always be `/.` or the project directory, `intersection` will make it lazy
|
||||
- (+) In the future this will allow `fileFilter` to support a predicate property like `subpath` and/or `components` in a reproducible way.
|
||||
This wouldn't be possible if it took a file set, because file sets don't have a predictable absolute path.
|
||||
- (-) What about the base path?
|
||||
- (+) That can change depending on which files are included, so if it's used for `fileFilter`
|
||||
it would change the `subpath`/`components` value depending on which files are included.
|
||||
- (+) If necessary, this restriction can be relaxed later, the opposite wouldn't be possible
|
||||
|
||||
## To update in the future
|
||||
|
||||
Here's a list of places in the library that need to be updated in the future:
|
||||
|
||||
+17
-7
@@ -366,7 +366,7 @@ in {
|
||||
type :: String,
|
||||
...
|
||||
} -> Bool)
|
||||
-> FileSet
|
||||
-> Path
|
||||
-> FileSet
|
||||
|
||||
Example:
|
||||
@@ -380,7 +380,7 @@ in {
|
||||
fileFilter (file: hasPrefix "." file.name) ./.
|
||||
|
||||
# Include all regular files (not symlinks or others) in the current directory
|
||||
fileFilter (file: file.type == "regular")
|
||||
fileFilter (file: file.type == "regular") ./.
|
||||
*/
|
||||
fileFilter =
|
||||
/*
|
||||
@@ -397,14 +397,24 @@ in {
|
||||
Other attributes may be added in the future.
|
||||
*/
|
||||
predicate:
|
||||
# The file set to filter based on the predicate function
|
||||
fileset:
|
||||
# The path whose files to filter
|
||||
path:
|
||||
if ! isFunction predicate then
|
||||
throw ''
|
||||
lib.fileset.fileFilter: First argument is of type ${typeOf predicate}, but it should be a function.''
|
||||
lib.fileset.fileFilter: First argument is of type ${typeOf predicate}, but it should be a function instead.''
|
||||
else if ! isPath path then
|
||||
if path._type or "" == "fileset" then
|
||||
throw ''
|
||||
lib.fileset.fileFilter: Second argument is a file set, but it should be a path instead.
|
||||
If you need to filter files in a file set, use `intersection fileset (fileFilter pred ./.)` instead.''
|
||||
else
|
||||
throw ''
|
||||
lib.fileset.fileFilter: Second argument is of type ${typeOf path}, but it should be a path instead.''
|
||||
else if ! pathExists path then
|
||||
throw ''
|
||||
lib.fileset.fileFilter: Second argument (${toString path}) is a path that does not exist.''
|
||||
else
|
||||
_fileFilter predicate
|
||||
(_coerce "lib.fileset.fileFilter: Second argument" fileset);
|
||||
_fileFilter predicate path;
|
||||
|
||||
/*
|
||||
The file set containing all files that are in both of two given file sets.
|
||||
|
||||
+35
-21
@@ -786,29 +786,43 @@ rec {
|
||||
_differenceTree (path + "/${name}") lhsValue (rhs.${name} or null)
|
||||
) (_directoryEntries path lhs);
|
||||
|
||||
_fileFilter = predicate: fileset:
|
||||
# Filters all files in a path based on a predicate
|
||||
# Type: ({ name, type, ... } -> Bool) -> Path -> FileSet
|
||||
_fileFilter = predicate: root:
|
||||
let
|
||||
recurse = path: tree:
|
||||
mapAttrs (name: subtree:
|
||||
if isAttrs subtree || subtree == "directory" then
|
||||
recurse (path + "/${name}") subtree
|
||||
else if
|
||||
predicate {
|
||||
inherit name;
|
||||
type = subtree;
|
||||
# To ensure forwards compatibility with more arguments being added in the future,
|
||||
# adding an attribute which can't be deconstructed :)
|
||||
"lib.fileset.fileFilter: The predicate function passed as the first argument must be able to handle extra attributes for future compatibility. If you're using `{ name, file }:`, use `{ name, file, ... }:` instead." = null;
|
||||
}
|
||||
then
|
||||
subtree
|
||||
# Check the predicate for a single file
|
||||
# Type: String -> String -> filesetTree
|
||||
fromFile = name: type:
|
||||
if
|
||||
predicate {
|
||||
inherit name type;
|
||||
# To ensure forwards compatibility with more arguments being added in the future,
|
||||
# adding an attribute which can't be deconstructed :)
|
||||
"lib.fileset.fileFilter: The predicate function passed as the first argument must be able to handle extra attributes for future compatibility. If you're using `{ name, file }:`, use `{ name, file, ... }:` instead." = null;
|
||||
}
|
||||
then
|
||||
type
|
||||
else
|
||||
null;
|
||||
|
||||
# Check the predicate for all files in a directory
|
||||
# Type: Path -> filesetTree
|
||||
fromDir = path:
|
||||
mapAttrs (name: type:
|
||||
if type == "directory" then
|
||||
fromDir (path + "/${name}")
|
||||
else
|
||||
null
|
||||
) (_directoryEntries path tree);
|
||||
fromFile name type
|
||||
) (readDir path);
|
||||
|
||||
rootType = pathType root;
|
||||
in
|
||||
if fileset._internalIsEmptyWithoutBase then
|
||||
_emptyWithoutBase
|
||||
if rootType == "directory" then
|
||||
_create root (fromDir root)
|
||||
else
|
||||
_create fileset._internalBase
|
||||
(recurse fileset._internalBase fileset._internalTree);
|
||||
# Single files are turned into a directory containing that file or nothing.
|
||||
_create (dirOf root) {
|
||||
${baseNameOf root} =
|
||||
fromFile (baseNameOf root) rootType;
|
||||
};
|
||||
}
|
||||
|
||||
+21
-1
@@ -810,10 +810,18 @@ checkFileset 'difference ./. ./b'
|
||||
|
||||
## File filter
|
||||
|
||||
# The first argument needs to be a function
|
||||
expectFailure 'fileFilter null (abort "this is not needed")' 'lib.fileset.fileFilter: First argument is of type null, but it should be a function instead.'
|
||||
|
||||
# The second argument needs to be an existing path
|
||||
expectFailure 'fileFilter (file: abort "this is not needed") _emptyWithoutBase' 'lib.fileset.fileFilter: Second argument is a file set, but it should be a path instead.
|
||||
\s*If you need to filter files in a file set, use `intersection fileset \(fileFilter pred \./\.\)` instead.'
|
||||
expectFailure 'fileFilter (file: abort "this is not needed") null' 'lib.fileset.fileFilter: Second argument is of type null, but it should be a path instead.'
|
||||
expectFailure 'fileFilter (file: abort "this is not needed") ./a' 'lib.fileset.fileFilter: Second argument \('"$work"'/a\) is a path that does not exist.'
|
||||
|
||||
# The predicate is not called when there's no files
|
||||
tree=()
|
||||
checkFileset 'fileFilter (file: abort "this is not needed") ./.'
|
||||
checkFileset 'fileFilter (file: abort "this is not needed") _emptyWithoutBase'
|
||||
|
||||
# The predicate must be able to handle extra attributes
|
||||
touch a
|
||||
@@ -875,6 +883,18 @@ checkFileset 'union ./c/a (fileFilter (file: assert file.name != "a"; true) ./.)
|
||||
# but here we need to use ./c
|
||||
checkFileset 'union (fileFilter (file: assert file.name != "a"; true) ./.) ./c'
|
||||
|
||||
# Make sure single files are filtered correctly
|
||||
tree=(
|
||||
[a]=1
|
||||
[b]=0
|
||||
)
|
||||
checkFileset 'fileFilter (file: assert file.name == "a"; true) ./a'
|
||||
tree=(
|
||||
[a]=0
|
||||
[b]=0
|
||||
)
|
||||
checkFileset 'fileFilter (file: assert file.name == "a"; false) ./a'
|
||||
|
||||
## Tracing
|
||||
|
||||
# The second trace argument is returned
|
||||
|
||||
@@ -821,6 +821,19 @@ rec {
|
||||
*/
|
||||
unique = foldl' (acc: e: if elem e acc then acc else acc ++ [ e ]) [];
|
||||
|
||||
/* Check if list contains only unique elements. O(n^2) complexity.
|
||||
|
||||
Type: allUnique :: [a] -> bool
|
||||
|
||||
Example:
|
||||
allUnique [ 3 2 3 4 ]
|
||||
=> false
|
||||
allUnique [ 3 2 4 1 ]
|
||||
=> true
|
||||
*/
|
||||
allUnique = list: (length (unique list) == length list);
|
||||
|
||||
|
||||
/* Intersects list 'e' and another list. O(nm) complexity.
|
||||
|
||||
Example:
|
||||
|
||||
@@ -726,6 +726,15 @@ runTests {
|
||||
expected = 7;
|
||||
};
|
||||
|
||||
testAllUnique_true = {
|
||||
expr = allUnique [ 3 2 4 1 ];
|
||||
expected = true;
|
||||
};
|
||||
testAllUnique_false = {
|
||||
expr = allUnique [ 3 2 3 4 ];
|
||||
expected = false;
|
||||
};
|
||||
|
||||
# ATTRSETS
|
||||
|
||||
testConcatMapAttrs = {
|
||||
|
||||
@@ -3079,6 +3079,12 @@
|
||||
githubId = 1689801;
|
||||
name = "Mikhail Chekan";
|
||||
};
|
||||
chen = {
|
||||
email = "i@cuichen.cc";
|
||||
github = "cu1ch3n";
|
||||
githubId = 80438676;
|
||||
name = "Chen Cui";
|
||||
};
|
||||
ChengCat = {
|
||||
email = "yu@cheng.cat";
|
||||
github = "ChengCat";
|
||||
@@ -11714,6 +11720,12 @@
|
||||
githubId = 34864484;
|
||||
name = "Mikael Fangel";
|
||||
};
|
||||
mikecm = {
|
||||
email = "mikecmcleod@gmail.com";
|
||||
github = "MaxwellDupre";
|
||||
githubId = 14096356;
|
||||
name = "Michael McLeod";
|
||||
};
|
||||
mikefaille = {
|
||||
email = "michael@faille.io";
|
||||
github = "mikefaille";
|
||||
@@ -16513,6 +16525,11 @@
|
||||
githubId = 158321;
|
||||
name = "Stewart Mackenzie";
|
||||
};
|
||||
skovati = {
|
||||
github = "skovati";
|
||||
githubId = 49844593;
|
||||
name = "skovati";
|
||||
};
|
||||
skykanin = {
|
||||
github = "skykanin";
|
||||
githubId = 3789764;
|
||||
@@ -19245,12 +19262,6 @@
|
||||
githubId = 168610;
|
||||
name = "Ricardo M. Correia";
|
||||
};
|
||||
wjlroe = {
|
||||
email = "willroe@gmail.com";
|
||||
github = "wjlroe";
|
||||
githubId = 43315;
|
||||
name = "William Roe";
|
||||
};
|
||||
wladmis = {
|
||||
email = "dev@wladmis.org";
|
||||
github = "wladmis";
|
||||
|
||||
@@ -8,6 +8,27 @@ https://nixos.org/nixos and in the manual in doc/manual.
|
||||
|
||||
You can add new module to your NixOS configuration file (usually it’s `/etc/nixos/configuration.nix`). And do `sudo nixos-rebuild test -I nixpkgs=<path to your local nixpkgs folder> --fast`.
|
||||
|
||||
## Commit conventions
|
||||
|
||||
- Make sure you read about the [commit conventions](../CONTRIBUTING.md#commit-conventions) common to Nixpkgs as a whole.
|
||||
|
||||
- Format the commit messages in the following way:
|
||||
|
||||
```
|
||||
nixos/(module): (init module | add setting | refactor | etc)
|
||||
|
||||
(Motivation for change. Link to release notes. Additional information.)
|
||||
```
|
||||
|
||||
Examples:
|
||||
|
||||
* nixos/hydra: add bazBaz option
|
||||
|
||||
Dual baz behavior is needed to do foo.
|
||||
* nixos/nginx: refactor config generation
|
||||
|
||||
The old config generation system used impure shell scripts and could break in specific circumstances (see #1234).
|
||||
|
||||
## Reviewing contributions
|
||||
|
||||
When changing the bootloader installation process, extra care must be taken. Grub installations cannot be rolled back, hence changes may break people’s installations forever. For any non-trivial change to the bootloader please file a PR asking for review, especially from \@edolstra.
|
||||
|
||||
@@ -154,6 +154,8 @@
|
||||
|
||||
- The latest version of `clonehero` now stores custom content in `~/.clonehero`. See the [migration instructions](https://clonehero.net/2022/11/29/v23-to-v1-migration-instructions.html). Typically, these content files would exist along side the binary, but the previous build used a wrapper script that would store them in `~/.config/unity3d/srylain Inc_/Clone Hero`.
|
||||
|
||||
- `services.mastodon` doesn't support providing a TCP port to its `streaming` component anymore, as upstream implemented parallelization by running multiple instances instead of running multiple processes in one instance. Please create a PR if you are interested in this feature.
|
||||
|
||||
- The `services.hostapd` module was rewritten to support `passwordFile` like options, WPA3-SAE, and management of multiple interfaces. This breaks compatibility with older configurations.
|
||||
- `hostapd` is now started with additional systemd sandbox/hardening options for better security.
|
||||
- `services.hostapd.interface` was replaced with a per-radio and per-bss configuration scheme using [services.hostapd.radios](#opt-services.hostapd.radios).
|
||||
@@ -189,6 +191,8 @@
|
||||
|
||||
- JACK tools (`jack_*` except `jack_control`) have moved from the `jack2` package to `jack-example-tools`
|
||||
|
||||
- The `waagent` service does provisioning now
|
||||
|
||||
- The `matrix-synapse` package & module have undergone some significant internal changes, for most setups no intervention is needed, though:
|
||||
- The option [`services.matrix-synapse.package`](#opt-services.matrix-synapse.package) is now read-only. For modifying the package, use an overlay which modifies `matrix-synapse-unwrapped` instead. More on that below.
|
||||
- The `enableSystemd` & `enableRedis` arguments have been removed and `matrix-synapse` has been renamed to `matrix-synapse-unwrapped`. Also, several optional dependencies (such as `psycopg2` or `authlib`) have been removed.
|
||||
@@ -335,6 +339,8 @@
|
||||
|
||||
- Package `pash` was removed due to being archived upstream. Use `powershell` as an alternative.
|
||||
|
||||
- The option `services.plausible.releaseCookiePath` has been removed: Plausible does not use any distributed Erlang features, and does not plan to (see [discussion](https://github.com/NixOS/nixpkgs/pull/130297#issuecomment-1805851333)), so NixOS now disables them, and the Erlang cookie becomes unnecessary. You may delete the file that `releaseCookiePath` was set to.
|
||||
|
||||
- `security.sudo.extraRules` now includes `root`'s default rule, with ordering
|
||||
priority 400. This is functionally identical for users not specifying rule
|
||||
order, or relying on `mkBefore` and `mkAfter`, but may impact users calling
|
||||
@@ -379,6 +385,8 @@
|
||||
|
||||
- The `prayer` package as well as `services.prayer` have been removed because it's been unmaintained for several years and the author's website has vanished.
|
||||
|
||||
- The `chrony` NixOS module now tracks the Real-Time Clock drift from the System Clock with `rtcfile` and automatically adjusts it with `rtcautotrim` when it exceeds the maximum error specified in `services.chrony.autotrimThreshold` (default 30 seconds). If you enabled `rtcsync` in `extraConfig`, you should remove RTC related options from `extraConfig`. If you do not want chrony configured to keep the RTC in check, you can set `services.chrony.enableRTCTrimming = false;`
|
||||
|
||||
## Other Notable Changes {#sec-release-23.11-notable-changes}
|
||||
|
||||
- A new option `system.switch.enable` was added. By default, this is option is
|
||||
@@ -533,6 +541,8 @@ The module update takes care of the new config syntax and the data itself (user
|
||||
|
||||
- The Home Assistant module now offers support for installing custom components and lovelace modules. Available at [`services.home-assistant.customComponents`](#opt-services.home-assistant.customComponents) and [`services.home-assistant.customLovelaceModules`](#opt-services.home-assistant.customLovelaceModules).
|
||||
|
||||
- The argument `vendorSha256` of `buildGoModule` is deprecated. Use `vendorHash` instead. ([\#259999](https://github.com/NixOS/nixpkgs/pull/259999))
|
||||
|
||||
- `libass` now uses the native CoreText backend on Darwin, which may fix subtitle rendering issues with `mpv`, `ffmpeg`, etc.
|
||||
|
||||
## Nixpkgs internals {#sec-release-23.11-nixpkgs-internals}
|
||||
|
||||
@@ -345,6 +345,10 @@ let
|
||||
serviceConfig = commonServiceConfig // {
|
||||
Group = data.group;
|
||||
|
||||
# Let's Encrypt Failed Validation Limit allows 5 retries per hour, per account, hostname and hour.
|
||||
# This avoids eating them all up if something is misconfigured upon the first try.
|
||||
RestartSec = 15 * 60;
|
||||
|
||||
# Keep in mind that these directories will be deleted if the user runs
|
||||
# systemctl clean --what=state
|
||||
# acme/.lego/${cert} is listed for this reason.
|
||||
|
||||
@@ -192,10 +192,12 @@ in
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{ assertion = cfg.package.pname != "sudo-rs";
|
||||
message = "The NixOS `sudo` module does not work with `sudo-rs` yet."; }
|
||||
];
|
||||
assertions = [ {
|
||||
assertion = cfg.package.pname != "sudo-rs";
|
||||
message = ''
|
||||
NixOS' `sudo` module does not support `sudo-rs`; see `security.sudo-rs` instead.
|
||||
'';
|
||||
} ];
|
||||
|
||||
security.sudo.extraRules =
|
||||
let
|
||||
|
||||
@@ -28,10 +28,17 @@ in {
|
||||
'';
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc "Whether to open the TCP port in the firewall";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [cfg.settings.Port];
|
||||
|
||||
systemd.services.navidrome = {
|
||||
description = "Navidrome Media Server";
|
||||
after = [ "network.target" ];
|
||||
|
||||
@@ -187,13 +187,20 @@ in {
|
||||
# fwupd-refresh expects a user that we do not create, so just run with DynamicUser
|
||||
# instead and ensure we take ownership of /var/lib/fwupd
|
||||
services.fwupd-refresh.serviceConfig = {
|
||||
DynamicUser = true;
|
||||
StateDirectory = "fwupd";
|
||||
# Better for debugging, upstream sets stderr to null for some reason..
|
||||
StandardError = "inherit";
|
||||
};
|
||||
|
||||
timers.fwupd-refresh.wantedBy = [ "timers.target" ];
|
||||
};
|
||||
|
||||
users.users.fwupd-refresh = {
|
||||
isSystemUser = true;
|
||||
group = "fwupd-refresh";
|
||||
};
|
||||
users.groups.fwupd-refresh = {};
|
||||
|
||||
security.polkit.enable = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
boot.kernelModules = [ "autofs4" ];
|
||||
boot.kernelModules = [ "autofs" ];
|
||||
|
||||
systemd.services.autofs =
|
||||
{ description = "Automounts filesystems on demand";
|
||||
|
||||
@@ -28,6 +28,8 @@ in
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
nix.settings.extra-allowed-users = [ "harmonia" ];
|
||||
|
||||
systemd.services.harmonia = {
|
||||
description = "harmonia binary cache service";
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ let
|
||||
stateDir = cfg.directory;
|
||||
driftFile = "${stateDir}/chrony.drift";
|
||||
keyFile = "${stateDir}/chrony.keys";
|
||||
rtcFile = "${stateDir}/chrony.rtc";
|
||||
|
||||
configFile = pkgs.writeText "chrony.conf" ''
|
||||
${concatMapStringsSep "\n" (server: "server " + server + " " + cfg.serverOption + optionalString (cfg.enableNTS) " nts") cfg.servers}
|
||||
@@ -20,8 +21,10 @@ let
|
||||
|
||||
driftfile ${driftFile}
|
||||
keyfile ${keyFile}
|
||||
${optionalString (cfg.enableRTCTrimming) "rtcfile ${rtcFile}"}
|
||||
${optionalString (cfg.enableNTS) "ntsdumpdir ${stateDir}"}
|
||||
|
||||
${optionalString (cfg.enableRTCTrimming) "rtcautotrim ${builtins.toString cfg.autotrimThreshold}"}
|
||||
${optionalString (!config.time.hardwareClockInLocalTime) "rtconutc"}
|
||||
|
||||
${cfg.extraConfig}
|
||||
@@ -85,6 +88,33 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
enableRTCTrimming = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc ''
|
||||
Enable tracking of the RTC offset to the system clock and automatic trimming.
|
||||
See also [](#opt-services.chrony.autotrimThreshold)
|
||||
|
||||
::: {.note}
|
||||
This is not compatible with the `rtcsync` directive, which naively syncs the RTC time every 11 minutes.
|
||||
|
||||
Tracking the RTC drift will allow more precise timekeeping,
|
||||
especially on intermittently running devices, where the RTC is very relevant.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
|
||||
autotrimThreshold = mkOption {
|
||||
type = types.ints.positive;
|
||||
default = 30;
|
||||
example = 10;
|
||||
description = ''
|
||||
Maximum estimated error threshold for the `rtcautotrim` command.
|
||||
When reached, the RTC will be trimmed.
|
||||
Only used when [](#opt-services.chrony.enableRTCTrimming) is enabled.
|
||||
'';
|
||||
};
|
||||
|
||||
enableNTS = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@@ -141,7 +171,7 @@ in
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
meta.maintainers = with lib.maintainers; [ thoughtpolice ];
|
||||
meta.maintainers = with lib.maintainers; [ thoughtpolice vifino ];
|
||||
|
||||
environment.systemPackages = [ chronyPkg ];
|
||||
|
||||
@@ -156,12 +186,19 @@ in
|
||||
|
||||
services.timesyncd.enable = mkForce false;
|
||||
|
||||
# If chrony controls and tracks the RTC, writing it externally causes clock error.
|
||||
systemd.services.save-hwclock = lib.mkIf cfg.enableRTCTrimming {
|
||||
enable = lib.mkForce false;
|
||||
};
|
||||
|
||||
systemd.services.systemd-timedated.environment = { SYSTEMD_TIMEDATED_NTP_SERVICES = "chronyd.service"; };
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${stateDir} 0750 chrony chrony - -"
|
||||
"f ${driftFile} 0640 chrony chrony - -"
|
||||
"f ${keyFile} 0640 chrony chrony - -"
|
||||
] ++ lib.optionals cfg.enableRTCTrimming [
|
||||
"f ${rtcFile} 0640 chrony chrony - -"
|
||||
];
|
||||
|
||||
systemd.services.chronyd =
|
||||
|
||||
@@ -166,7 +166,7 @@ in {
|
||||
services.unbound.settings = {
|
||||
server = {
|
||||
directory = mkDefault cfg.stateDir;
|
||||
username = cfg.user;
|
||||
username = ''""'';
|
||||
chroot = ''""'';
|
||||
pidfile = ''""'';
|
||||
# when running under systemd there is no need to daemonize
|
||||
@@ -245,14 +245,13 @@ in {
|
||||
NotifyAccess = "main";
|
||||
Type = "notify";
|
||||
|
||||
# FIXME: Which of these do we actually need, can we drop the chroot flag?
|
||||
AmbientCapabilities = [
|
||||
"CAP_NET_BIND_SERVICE"
|
||||
"CAP_NET_RAW" # needed if ip-transparent is set to true
|
||||
];
|
||||
CapabilityBoundingSet = [
|
||||
"CAP_NET_BIND_SERVICE"
|
||||
"CAP_NET_RAW"
|
||||
"CAP_SETGID"
|
||||
"CAP_SETUID"
|
||||
"CAP_SYS_CHROOT"
|
||||
"CAP_SYS_RESOURCE"
|
||||
];
|
||||
|
||||
User = cfg.user;
|
||||
@@ -266,22 +265,19 @@ in {
|
||||
ProtectControlGroups = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectSystem = "strict";
|
||||
ProtectClock = true;
|
||||
ProtectHostname = true;
|
||||
ProtectProc = "invisible";
|
||||
ProcSubset = "pid";
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelTunables = true;
|
||||
RuntimeDirectory = "unbound";
|
||||
ConfigurationDirectory = "unbound";
|
||||
StateDirectory = "unbound";
|
||||
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_NETLINK" "AF_UNIX" ];
|
||||
RestrictRealtime = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"~@clock"
|
||||
"@cpu-emulation"
|
||||
"@debug"
|
||||
"@keyring"
|
||||
"@module"
|
||||
"mount"
|
||||
"@obsolete"
|
||||
"@resources"
|
||||
];
|
||||
SystemCallFilter = [ "@system-service" ];
|
||||
RestrictNamespaces = true;
|
||||
LockPersonality = true;
|
||||
RestrictSUIDSGID = true;
|
||||
|
||||
@@ -1,60 +1,61 @@
|
||||
{ config, options, lib, pkgs, utils, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.unifi;
|
||||
stateDir = "/var/lib/unifi";
|
||||
cmd = ''
|
||||
@${cfg.jrePackage}/bin/java java \
|
||||
${optionalString (lib.versionAtLeast (lib.getVersion cfg.jrePackage) "16")
|
||||
("--add-opens java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED "
|
||||
+ "--add-opens java.base/sun.security.util=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED "
|
||||
+ "--add-opens java.rmi/sun.rmi.transport=ALL-UNNAMED")} \
|
||||
${optionalString (cfg.initialJavaHeapSize != null) "-Xms${(toString cfg.initialJavaHeapSize)}m"} \
|
||||
${optionalString (cfg.maximumJavaHeapSize != null) "-Xmx${(toString cfg.maximumJavaHeapSize)}m"} \
|
||||
-jar ${stateDir}/lib/ace.jar
|
||||
'';
|
||||
cmd = lib.escapeShellArgs ([ "@${cfg.jrePackage}/bin/java" "java" ]
|
||||
++ lib.optionals (lib.versionAtLeast (lib.getVersion cfg.jrePackage) "16") [
|
||||
"--add-opens=java.base/java.lang=ALL-UNNAMED"
|
||||
"--add-opens=java.base/java.time=ALL-UNNAMED"
|
||||
"--add-opens=java.base/sun.security.util=ALL-UNNAMED"
|
||||
"--add-opens=java.base/java.io=ALL-UNNAMED"
|
||||
"--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"
|
||||
]
|
||||
++ (lib.optional (cfg.initialJavaHeapSize != null) "-Xms${(toString cfg.initialJavaHeapSize)}m")
|
||||
++ (lib.optional (cfg.maximumJavaHeapSize != null) "-Xmx${(toString cfg.maximumJavaHeapSize)}m")
|
||||
++ cfg.extraJvmOptions
|
||||
++ [ "-jar" "${stateDir}/lib/ace.jar" ]);
|
||||
in
|
||||
{
|
||||
|
||||
options = {
|
||||
|
||||
services.unifi.enable = mkOption {
|
||||
type = types.bool;
|
||||
services.unifi.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
Whether or not to enable the unifi controller service.
|
||||
'';
|
||||
};
|
||||
|
||||
services.unifi.jrePackage = mkOption {
|
||||
type = types.package;
|
||||
services.unifi.jrePackage = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = if (lib.versionAtLeast (lib.getVersion cfg.unifiPackage) "7.5") then pkgs.jdk17_headless else if (lib.versionAtLeast (lib.getVersion cfg.unifiPackage) "7.3") then pkgs.jdk11 else pkgs.jre8;
|
||||
defaultText = literalExpression ''if (lib.versionAtLeast (lib.getVersion cfg.unifiPackage) "7.5") then pkgs.jdk17_headless else if (lib.versionAtLeast (lib.getVersion cfg.unifiPackage) "7.3" then pkgs.jdk11 else pkgs.jre8'';
|
||||
defaultText = lib.literalExpression ''if (lib.versionAtLeast (lib.getVersion cfg.unifiPackage) "7.5") then pkgs.jdk17_headless else if (lib.versionAtLeast (lib.getVersion cfg.unifiPackage) "7.3" then pkgs.jdk11 else pkgs.jre8'';
|
||||
description = lib.mdDoc ''
|
||||
The JRE package to use. Check the release notes to ensure it is supported.
|
||||
'';
|
||||
};
|
||||
|
||||
services.unifi.unifiPackage = mkOption {
|
||||
type = types.package;
|
||||
services.unifi.unifiPackage = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.unifi5;
|
||||
defaultText = literalExpression "pkgs.unifi5";
|
||||
defaultText = lib.literalExpression "pkgs.unifi5";
|
||||
description = lib.mdDoc ''
|
||||
The unifi package to use.
|
||||
'';
|
||||
};
|
||||
|
||||
services.unifi.mongodbPackage = mkOption {
|
||||
type = types.package;
|
||||
services.unifi.mongodbPackage = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.mongodb-4_4;
|
||||
defaultText = literalExpression "pkgs.mongodb";
|
||||
defaultText = lib.literalExpression "pkgs.mongodb";
|
||||
description = lib.mdDoc ''
|
||||
The mongodb package to use. Please note: unifi7 officially only supports mongodb up until 3.6 but works with 4.4.
|
||||
'';
|
||||
};
|
||||
|
||||
services.unifi.openFirewall = mkOption {
|
||||
type = types.bool;
|
||||
services.unifi.openFirewall = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
Whether or not to open the minimum required ports on the firewall.
|
||||
@@ -65,8 +66,8 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
services.unifi.initialJavaHeapSize = mkOption {
|
||||
type = types.nullOr types.int;
|
||||
services.unifi.initialJavaHeapSize = lib.mkOption {
|
||||
type = with lib.types; nullOr int;
|
||||
default = null;
|
||||
example = 1024;
|
||||
description = lib.mdDoc ''
|
||||
@@ -75,8 +76,8 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
services.unifi.maximumJavaHeapSize = mkOption {
|
||||
type = types.nullOr types.int;
|
||||
services.unifi.maximumJavaHeapSize = lib.mkOption {
|
||||
type = with lib.types; nullOr int;
|
||||
default = null;
|
||||
example = 4096;
|
||||
description = lib.mdDoc ''
|
||||
@@ -85,9 +86,18 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
services.unifi.extraJvmOptions = lib.mkOption {
|
||||
type = with lib.types; listOf str;
|
||||
default = [ ];
|
||||
example = lib.literalExpression ''["-Xlog:gc"]'';
|
||||
description = lib.mdDoc ''
|
||||
Set extra options to pass to the JVM.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
users.users.unifi = {
|
||||
isSystemUser = true;
|
||||
@@ -97,7 +107,7 @@ in
|
||||
};
|
||||
users.groups.unifi = {};
|
||||
|
||||
networking.firewall = mkIf cfg.openFirewall {
|
||||
networking.firewall = lib.mkIf cfg.openFirewall {
|
||||
# https://help.ubnt.com/hc/en-us/articles/218506997
|
||||
allowedTCPPorts = [
|
||||
8080 # Port for UAP to inform controller.
|
||||
@@ -123,8 +133,8 @@ in
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${(removeSuffix "\n" cmd)} start";
|
||||
ExecStop = "${(removeSuffix "\n" cmd)} stop";
|
||||
ExecStart = "${cmd} start";
|
||||
ExecStop = "${cmd} stop";
|
||||
Restart = "on-failure";
|
||||
TimeoutSec = "5min";
|
||||
User = "unifi";
|
||||
@@ -166,7 +176,7 @@ in
|
||||
StateDirectory = "unifi";
|
||||
RuntimeDirectory = "unifi";
|
||||
LogsDirectory = "unifi";
|
||||
CacheDirectory= "unifi";
|
||||
CacheDirectory = "unifi";
|
||||
|
||||
TemporaryFileSystem = [
|
||||
# required as we want to create bind mounts below
|
||||
@@ -176,7 +186,7 @@ in
|
||||
# We must create the binary directories as bind mounts instead of symlinks
|
||||
# This is because the controller resolves all symlinks to absolute paths
|
||||
# to be used as the working directory.
|
||||
BindPaths = [
|
||||
BindPaths = [
|
||||
"/var/log/unifi:${stateDir}/logs"
|
||||
"/run/unifi:${stateDir}/run"
|
||||
"${cfg.unifiPackage}/dl:${stateDir}/dl"
|
||||
@@ -194,7 +204,7 @@ in
|
||||
|
||||
};
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "unifi" "dataDir" ] "You should move contents of dataDir to /var/lib/unifi/data" )
|
||||
(mkRenamedOptionModule [ "services" "unifi" "openPorts" ] [ "services" "unifi" "openFirewall" ])
|
||||
(lib.mkRemovedOptionModule [ "services" "unifi" "dataDir" ] "You should move contents of dataDir to /var/lib/unifi/data")
|
||||
(lib.mkRenamedOptionModule [ "services" "unifi" "openPorts" ] [ "services" "unifi" "openFirewall" ])
|
||||
];
|
||||
}
|
||||
|
||||
@@ -17,9 +17,6 @@ let
|
||||
WEB_CONCURRENCY = toString cfg.webProcesses;
|
||||
MAX_THREADS = toString cfg.webThreads;
|
||||
|
||||
# mastodon-streaming concurrency.
|
||||
STREAMING_CLUSTER_NUM = toString cfg.streamingProcesses;
|
||||
|
||||
DB_USER = cfg.database.user;
|
||||
|
||||
REDIS_HOST = cfg.redis.host;
|
||||
@@ -33,13 +30,15 @@ let
|
||||
PAPERCLIP_ROOT_PATH = "/var/lib/mastodon/public-system";
|
||||
PAPERCLIP_ROOT_URL = "/system";
|
||||
ES_ENABLED = if (cfg.elasticsearch.host != null) then "true" else "false";
|
||||
ES_HOST = cfg.elasticsearch.host;
|
||||
ES_PORT = toString(cfg.elasticsearch.port);
|
||||
|
||||
TRUSTED_PROXY_IP = cfg.trustedProxy;
|
||||
}
|
||||
// lib.optionalAttrs (cfg.database.host != "/run/postgresql" && cfg.database.port != null) { DB_PORT = toString cfg.database.port; }
|
||||
// lib.optionalAttrs cfg.smtp.authenticate { SMTP_LOGIN = cfg.smtp.user; }
|
||||
// lib.optionalAttrs (cfg.elasticsearch.host != null) { ES_HOST = cfg.elasticsearch.host; }
|
||||
// lib.optionalAttrs (cfg.elasticsearch.host != null) { ES_PORT = toString(cfg.elasticsearch.port); }
|
||||
// lib.optionalAttrs (cfg.elasticsearch.host != null) { ES_PRESET = cfg.elasticsearch.preset; }
|
||||
// lib.optionalAttrs (cfg.elasticsearch.user != null) { ES_USER = cfg.elasticsearch.user; }
|
||||
// cfg.extraConfig;
|
||||
|
||||
systemCallsList = [ "@cpu-emulation" "@debug" "@keyring" "@ipc" "@mount" "@obsolete" "@privileged" "@setuid" ];
|
||||
@@ -141,8 +140,44 @@ let
|
||||
})
|
||||
) cfg.sidekiqProcesses;
|
||||
|
||||
streamingUnits = builtins.listToAttrs
|
||||
(map (i: {
|
||||
name = "mastodon-streaming-${toString i}";
|
||||
value = {
|
||||
after = [ "network.target" "mastodon-init-dirs.service" ]
|
||||
++ lib.optional databaseActuallyCreateLocally "postgresql.service"
|
||||
++ lib.optional cfg.automaticMigrations "mastodon-init-db.service";
|
||||
requires = [ "mastodon-init-dirs.service" ]
|
||||
++ lib.optional databaseActuallyCreateLocally "postgresql.service"
|
||||
++ lib.optional cfg.automaticMigrations "mastodon-init-db.service";
|
||||
wantedBy = [ "mastodon.target" "mastodon-streaming.target" ];
|
||||
description = "Mastodon streaming ${toString i}";
|
||||
environment = env // { SOCKET = "/run/mastodon-streaming/streaming-${toString i}.socket"; };
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/run-streaming.sh";
|
||||
Restart = "always";
|
||||
RestartSec = 20;
|
||||
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ] ++ cfg.extraEnvFiles;
|
||||
WorkingDirectory = cfg.package;
|
||||
# Runtime directory and mode
|
||||
RuntimeDirectory = "mastodon-streaming";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
# System Call Filtering
|
||||
SystemCallFilter = [ ("~" + lib.concatStringsSep " " (systemCallsList ++ [ "@memlock" "@resources" ])) "pipe" "pipe2" ];
|
||||
} // cfgService;
|
||||
};
|
||||
})
|
||||
(lib.range 1 cfg.streamingProcesses));
|
||||
|
||||
in {
|
||||
|
||||
imports = [
|
||||
(lib.mkRemovedOptionModule
|
||||
[ "services" "mastodon" "streamingPort" ]
|
||||
"Mastodon currently doesn't support streaming via TCP ports. Please open a PR if you need this."
|
||||
)
|
||||
];
|
||||
|
||||
options = {
|
||||
services.mastodon = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "Mastodon, a federated social network server");
|
||||
@@ -191,18 +226,13 @@ in {
|
||||
default = "mastodon";
|
||||
};
|
||||
|
||||
streamingPort = lib.mkOption {
|
||||
description = lib.mdDoc "TCP port used by the mastodon-streaming service.";
|
||||
type = lib.types.port;
|
||||
default = 55000;
|
||||
};
|
||||
streamingProcesses = lib.mkOption {
|
||||
description = lib.mdDoc ''
|
||||
Processes used by the mastodon-streaming service.
|
||||
Defaults to the number of CPU cores minus one.
|
||||
Number of processes used by the mastodon-streaming service.
|
||||
Recommended is the amount of your CPU cores minus one.
|
||||
'';
|
||||
type = lib.types.nullOr lib.types.int;
|
||||
default = null;
|
||||
type = lib.types.ints.positive;
|
||||
example = 3;
|
||||
};
|
||||
|
||||
webPort = lib.mkOption {
|
||||
@@ -485,6 +515,31 @@ in {
|
||||
type = lib.types.port;
|
||||
default = 9200;
|
||||
};
|
||||
|
||||
preset = lib.mkOption {
|
||||
description = lib.mdDoc ''
|
||||
It controls the ElasticSearch indices configuration (number of shards and replica).
|
||||
'';
|
||||
type = lib.types.enum [ "single_node_cluster" "small_cluster" "large_cluster" ];
|
||||
default = "single_node_cluster";
|
||||
example = "large_cluster";
|
||||
};
|
||||
|
||||
user = lib.mkOption {
|
||||
description = lib.mdDoc "Used for optionally authenticating with Elasticsearch.";
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
example = "elasticsearch-mastodon";
|
||||
};
|
||||
|
||||
passwordFile = lib.mkOption {
|
||||
description = lib.mdDoc ''
|
||||
Path to file containing password for optionally authenticating with Elasticsearch.
|
||||
'';
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
example = "/var/lib/mastodon/secrets/elasticsearch-password";
|
||||
};
|
||||
};
|
||||
|
||||
package = lib.mkOption {
|
||||
@@ -603,6 +658,12 @@ in {
|
||||
after = [ "network.target" ];
|
||||
};
|
||||
|
||||
systemd.targets.mastodon-streaming = {
|
||||
description = "Target for all Mastodon streaming services";
|
||||
wantedBy = [ "multi-user.target" "mastodon.target" ];
|
||||
after = [ "network.target" ];
|
||||
};
|
||||
|
||||
systemd.services.mastodon-init-dirs = {
|
||||
script = ''
|
||||
umask 077
|
||||
@@ -631,6 +692,8 @@ in {
|
||||
DB_PASS="$(cat ${cfg.database.passwordFile})"
|
||||
'' + lib.optionalString cfg.smtp.authenticate ''
|
||||
SMTP_PASSWORD="$(cat ${cfg.smtp.passwordFile})"
|
||||
'' + lib.optionalString (cfg.elasticsearch.passwordFile != null) ''
|
||||
ES_PASS="$(cat ${cfg.elasticsearch.passwordFile})"
|
||||
'' + ''
|
||||
EOF
|
||||
'';
|
||||
@@ -688,33 +751,6 @@ in {
|
||||
++ lib.optional databaseActuallyCreateLocally "postgresql.service";
|
||||
};
|
||||
|
||||
systemd.services.mastodon-streaming = {
|
||||
after = [ "network.target" "mastodon-init-dirs.service" ]
|
||||
++ lib.optional databaseActuallyCreateLocally "postgresql.service"
|
||||
++ lib.optional cfg.automaticMigrations "mastodon-init-db.service";
|
||||
requires = [ "mastodon-init-dirs.service" ]
|
||||
++ lib.optional databaseActuallyCreateLocally "postgresql.service"
|
||||
++ lib.optional cfg.automaticMigrations "mastodon-init-db.service";
|
||||
wantedBy = [ "mastodon.target" ];
|
||||
description = "Mastodon streaming";
|
||||
environment = env // (if cfg.enableUnixSocket
|
||||
then { SOCKET = "/run/mastodon-streaming/streaming.socket"; }
|
||||
else { PORT = toString(cfg.streamingPort); }
|
||||
);
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/run-streaming.sh";
|
||||
Restart = "always";
|
||||
RestartSec = 20;
|
||||
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ] ++ cfg.extraEnvFiles;
|
||||
WorkingDirectory = cfg.package;
|
||||
# Runtime directory and mode
|
||||
RuntimeDirectory = "mastodon-streaming";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
# System Call Filtering
|
||||
SystemCallFilter = [ ("~" + lib.concatStringsSep " " (systemCallsList ++ [ "@memlock" "@resources" ])) "pipe" "pipe2" ];
|
||||
} // cfgService;
|
||||
};
|
||||
|
||||
systemd.services.mastodon-web = {
|
||||
after = [ "network.target" "mastodon-init-dirs.service" ]
|
||||
++ lib.optional databaseActuallyCreateLocally "postgresql.service"
|
||||
@@ -780,10 +816,20 @@ in {
|
||||
};
|
||||
|
||||
locations."/api/v1/streaming/" = {
|
||||
proxyPass = (if cfg.enableUnixSocket then "http://unix:/run/mastodon-streaming/streaming.socket" else "http://127.0.0.1:${toString(cfg.streamingPort)}/");
|
||||
proxyPass = "http://mastodon-streaming";
|
||||
proxyWebsockets = true;
|
||||
};
|
||||
};
|
||||
upstreams.mastodon-streaming = {
|
||||
extraConfig = ''
|
||||
least_conn;
|
||||
'';
|
||||
servers = builtins.listToAttrs
|
||||
(map (i: {
|
||||
name = "unix:/run/mastodon-streaming/streaming-${toString i}.socket";
|
||||
value = { };
|
||||
}) (lib.range 1 cfg.streamingProcesses));
|
||||
};
|
||||
};
|
||||
|
||||
services.postfix = lib.mkIf (cfg.smtp.createLocally && cfg.smtp.host == "127.0.0.1") {
|
||||
@@ -819,7 +865,7 @@ in {
|
||||
|
||||
users.groups.${cfg.group}.members = lib.optional cfg.configureNginx config.services.nginx.user;
|
||||
}
|
||||
{ systemd.services = sidekiqUnits; }
|
||||
{ systemd.services = lib.mkMerge [ sidekiqUnits streamingUnits ]; }
|
||||
]);
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ happy-river erictapen ];
|
||||
|
||||
@@ -11,13 +11,6 @@ in {
|
||||
|
||||
package = mkPackageOptionMD pkgs "plausible" { };
|
||||
|
||||
releaseCookiePath = mkOption {
|
||||
type = with types; either str path;
|
||||
description = lib.mdDoc ''
|
||||
The path to the file with release cookie. (used for remote connection to the running node).
|
||||
'';
|
||||
};
|
||||
|
||||
adminUser = {
|
||||
name = mkOption {
|
||||
default = "admin";
|
||||
@@ -92,6 +85,13 @@ in {
|
||||
framework docs](https://hexdocs.pm/phoenix/Mix.Tasks.Phx.Gen.Secret.html#content).
|
||||
'';
|
||||
};
|
||||
listenAddress = mkOption {
|
||||
default = "127.0.0.1";
|
||||
type = types.str;
|
||||
description = lib.mdDoc ''
|
||||
The IP address on which the server is listening.
|
||||
'';
|
||||
};
|
||||
port = mkOption {
|
||||
default = 8000;
|
||||
type = types.port;
|
||||
@@ -162,6 +162,10 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "plausible" "releaseCookiePath" ] "Plausible uses no distributed Erlang features, so this option is no longer necessary and was removed")
|
||||
];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{ assertion = cfg.adminUser.activate -> cfg.database.postgres.setup;
|
||||
@@ -180,8 +184,6 @@ in {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
services.epmd.enable = true;
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
systemd.services = mkMerge [
|
||||
@@ -209,6 +211,32 @@ in {
|
||||
# Configuration options from
|
||||
# https://plausible.io/docs/self-hosting-configuration
|
||||
PORT = toString cfg.server.port;
|
||||
LISTEN_IP = cfg.server.listenAddress;
|
||||
|
||||
# Note [plausible-needs-no-erlang-distributed-features]:
|
||||
# Plausible does not use, and does not plan to use, any of
|
||||
# Erlang's distributed features, see:
|
||||
# https://github.com/plausible/analytics/pull/1190#issuecomment-1018820934
|
||||
# Thus, disable distribution for improved simplicity and security:
|
||||
#
|
||||
# When distribution is enabled,
|
||||
# Elixir spwans the Erlang VM, which will listen by default on all
|
||||
# interfaces for messages between Erlang nodes (capable of
|
||||
# remote code execution); it can be protected by a cookie; see
|
||||
# https://erlang.org/doc/reference_manual/distributed.html#security).
|
||||
#
|
||||
# It would be possible to restrict the interface to one of our choice
|
||||
# (e.g. localhost or a VPN IP) similar to how we do it with `listenAddress`
|
||||
# for the Plausible web server; if distribution is ever needed in the future,
|
||||
# https://github.com/NixOS/nixpkgs/pull/130297 shows how to do it.
|
||||
#
|
||||
# But since Plausible does not use this feature in any way,
|
||||
# we just disable it.
|
||||
RELEASE_DISTRIBUTION = "none";
|
||||
# Additional safeguard, in case `RELEASE_DISTRIBUTION=none` ever
|
||||
# stops disabling the start of EPMD.
|
||||
ERL_EPMD_ADDRESS = "127.0.0.1";
|
||||
|
||||
DISABLE_REGISTRATION = if isBool cfg.server.disableRegistration then boolToString cfg.server.disableRegistration else cfg.server.disableRegistration;
|
||||
|
||||
RELEASE_TMP = "/var/lib/plausible/tmp";
|
||||
@@ -238,7 +266,10 @@ in {
|
||||
path = [ cfg.package ]
|
||||
++ optional cfg.database.postgres.setup config.services.postgresql.package;
|
||||
script = ''
|
||||
export RELEASE_COOKIE="$(< $CREDENTIALS_DIRECTORY/RELEASE_COOKIE )"
|
||||
# Elixir does not start up if `RELEASE_COOKIE` is not set,
|
||||
# even though we set `RELEASE_DISTRIBUTION=none` so the cookie should be unused.
|
||||
# Thus, make a random one, which should then be ignored.
|
||||
export RELEASE_COOKIE=$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 20)
|
||||
export ADMIN_USER_PWD="$(< $CREDENTIALS_DIRECTORY/ADMIN_USER_PWD )"
|
||||
export SECRET_KEY_BASE="$(< $CREDENTIALS_DIRECTORY/SECRET_KEY_BASE )"
|
||||
|
||||
@@ -265,7 +296,6 @@ in {
|
||||
LoadCredential = [
|
||||
"ADMIN_USER_PWD:${cfg.adminUser.passwordFile}"
|
||||
"SECRET_KEY_BASE:${cfg.server.secretKeybaseFile}"
|
||||
"RELEASE_COOKIE:${cfg.releaseCookiePath}"
|
||||
] ++ lib.optionals (cfg.mail.smtp.passwordFile != null) [ "SMTP_USER_PWD:${cfg.mail.smtp.passwordFile}"];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -96,8 +96,8 @@ in
|
||||
# (required, but can be null if only config changes
|
||||
# are needed)
|
||||
|
||||
extraStructuredConfig = { # attrset of extra configuration parameters
|
||||
FOO = lib.kernel.yes; # (without the CONFIG_ prefix, optional)
|
||||
extraStructuredConfig = { # attrset of extra configuration parameters without the CONFIG_ prefix
|
||||
FOO = lib.kernel.yes; # (optional)
|
||||
}; # values should generally be lib.kernel.yes,
|
||||
# lib.kernel.no or lib.kernel.module
|
||||
|
||||
@@ -105,8 +105,9 @@ in
|
||||
foo = true; # (may be checked by other NixOS modules, optional)
|
||||
};
|
||||
|
||||
extraConfig = "CONFIG_FOO y"; # extra configuration options in string form
|
||||
# (deprecated, use extraStructuredConfig instead, optional)
|
||||
extraConfig = "FOO y"; # extra configuration options in string form without the CONFIG_ prefix
|
||||
# (optional, multiple lines allowed to specify multiple options)
|
||||
# (deprecated, use extraStructuredConfig instead)
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -11,7 +11,23 @@ import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import warnings
|
||||
from typing import NamedTuple
|
||||
import json
|
||||
from typing import NamedTuple, Dict, List
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass
|
||||
class BootSpec:
|
||||
init: str
|
||||
initrd: str
|
||||
initrdSecrets: str
|
||||
kernel: str
|
||||
kernelParams: List[str]
|
||||
label: str
|
||||
system: str
|
||||
toplevel: str
|
||||
specialisations: Dict[str, "BootSpec"]
|
||||
|
||||
|
||||
|
||||
libc = ctypes.CDLL("libc.so.6")
|
||||
@@ -71,12 +87,20 @@ def write_loader_conf(profile: str | None, generation: int, specialisation: str
|
||||
os.rename("@efiSysMountPoint@/loader/loader.conf.tmp", "@efiSysMountPoint@/loader/loader.conf")
|
||||
|
||||
|
||||
def profile_path(profile: str | None, generation: int, specialisation: str | None, name: str) -> str:
|
||||
return os.path.realpath("%s/%s" % (system_dir(profile, generation, specialisation), name))
|
||||
def get_bootspec(profile: str | None, generation: int) -> BootSpec:
|
||||
boot_json_path = os.path.realpath("%s/%s" % (system_dir(profile, generation, None), "boot.json"))
|
||||
boot_json_f = open(boot_json_path, 'r')
|
||||
bootspec_json = json.load(boot_json_f)
|
||||
return bootspec_from_json(bootspec_json)
|
||||
|
||||
def bootspec_from_json(bootspec_json: Dict) -> BootSpec:
|
||||
specialisations = bootspec_json['org.nixos.specialisation.v1']
|
||||
specialisations = {k: bootspec_from_json(v) for k, v in specialisations.items()}
|
||||
return BootSpec(**bootspec_json['org.nixos.bootspec.v1'], specialisations=specialisations)
|
||||
|
||||
|
||||
def copy_from_profile(profile: str | None, generation: int, specialisation: str | None, name: str, dry_run: bool = False) -> str:
|
||||
store_file_path = profile_path(profile, generation, specialisation, name)
|
||||
def copy_from_file(file: str, dry_run: bool = False) -> str:
|
||||
store_file_path = os.path.realpath(file)
|
||||
suffix = os.path.basename(store_file_path)
|
||||
store_dir = os.path.basename(os.path.dirname(store_file_path))
|
||||
efi_file_path = "/efi/nixos/%s-%s.efi" % (store_dir, suffix)
|
||||
@@ -84,40 +108,19 @@ def copy_from_profile(profile: str | None, generation: int, specialisation: str
|
||||
copy_if_not_exists(store_file_path, "@efiSysMountPoint@%s" % (efi_file_path))
|
||||
return efi_file_path
|
||||
|
||||
|
||||
def describe_generation(profile: str | None, generation: int, specialisation: str | None) -> str:
|
||||
try:
|
||||
with open(profile_path(profile, generation, specialisation, "nixos-version")) as f:
|
||||
nixos_version = f.read()
|
||||
except IOError:
|
||||
nixos_version = "Unknown"
|
||||
|
||||
kernel_dir = os.path.dirname(profile_path(profile, generation, specialisation, "kernel"))
|
||||
module_dir = glob.glob("%s/lib/modules/*" % kernel_dir)[0]
|
||||
kernel_version = os.path.basename(module_dir)
|
||||
|
||||
build_time = int(os.path.getctime(system_dir(profile, generation, specialisation)))
|
||||
build_date = datetime.datetime.fromtimestamp(build_time).strftime('%F')
|
||||
|
||||
description = "@distroName@ {}, Linux Kernel {}, Built on {}".format(
|
||||
nixos_version, kernel_version, build_date
|
||||
)
|
||||
|
||||
return description
|
||||
|
||||
|
||||
def write_entry(profile: str | None, generation: int, specialisation: str | None,
|
||||
machine_id: str, current: bool) -> None:
|
||||
kernel = copy_from_profile(profile, generation, specialisation, "kernel")
|
||||
initrd = copy_from_profile(profile, generation, specialisation, "initrd")
|
||||
machine_id: str, bootspec: BootSpec, current: bool) -> None:
|
||||
if specialisation:
|
||||
bootspec = bootspec.specialisations[specialisation]
|
||||
kernel = copy_from_file(bootspec.kernel)
|
||||
initrd = copy_from_file(bootspec.initrd)
|
||||
|
||||
title = "@distroName@{profile}{specialisation}".format(
|
||||
profile=" [" + profile + "]" if profile else "",
|
||||
specialisation=" (%s)" % specialisation if specialisation else "")
|
||||
|
||||
try:
|
||||
append_initrd_secrets = profile_path(profile, generation, specialisation, "append-initrd-secrets")
|
||||
subprocess.check_call([append_initrd_secrets, "@efiSysMountPoint@%s" % (initrd)])
|
||||
subprocess.check_call([bootspec.initrdSecrets, "@efiSysMountPoint@%s" % (initrd)])
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
except subprocess.CalledProcessError:
|
||||
@@ -132,17 +135,19 @@ def write_entry(profile: str | None, generation: int, specialisation: str | None
|
||||
entry_file = "@efiSysMountPoint@/loader/entries/%s" % (
|
||||
generation_conf_filename(profile, generation, specialisation))
|
||||
tmp_path = "%s.tmp" % (entry_file)
|
||||
kernel_params = "init=%s " % profile_path(profile, generation, specialisation, "init")
|
||||
kernel_params = "init=%s " % bootspec.init
|
||||
|
||||
kernel_params = kernel_params + " ".join(bootspec.kernelParams)
|
||||
build_time = int(os.path.getctime(system_dir(profile, generation, specialisation)))
|
||||
build_date = datetime.datetime.fromtimestamp(build_time).strftime('%F')
|
||||
|
||||
with open(profile_path(profile, generation, specialisation, "kernel-params")) as params_file:
|
||||
kernel_params = kernel_params + params_file.read()
|
||||
with open(tmp_path, 'w') as f:
|
||||
f.write(BOOT_ENTRY.format(title=title,
|
||||
generation=generation,
|
||||
kernel=kernel,
|
||||
initrd=initrd,
|
||||
kernel_params=kernel_params,
|
||||
description=describe_generation(profile, generation, specialisation)))
|
||||
description=f"{bootspec.label}, built on {build_date}"))
|
||||
if machine_id is not None:
|
||||
f.write("machine-id %s\n" % machine_id)
|
||||
f.flush()
|
||||
@@ -173,21 +178,14 @@ def get_generations(profile: str | None = None) -> list[SystemIdentifier]:
|
||||
return configurations[-configurationLimit:]
|
||||
|
||||
|
||||
def get_specialisations(profile: str | None, generation: int, _: str | None) -> list[SystemIdentifier]:
|
||||
specialisations_dir = os.path.join(
|
||||
system_dir(profile, generation, None), "specialisation")
|
||||
if not os.path.exists(specialisations_dir):
|
||||
return []
|
||||
return [SystemIdentifier(profile, generation, spec) for spec in os.listdir(specialisations_dir)]
|
||||
|
||||
|
||||
def remove_old_entries(gens: list[SystemIdentifier]) -> None:
|
||||
rex_profile = re.compile(r"^@efiSysMountPoint@/loader/entries/nixos-(.*)-generation-.*\.conf$")
|
||||
rex_generation = re.compile(r"^@efiSysMountPoint@/loader/entries/nixos.*-generation-([0-9]+)(-specialisation-.*)?\.conf$")
|
||||
known_paths = []
|
||||
for gen in gens:
|
||||
known_paths.append(copy_from_profile(*gen, "kernel", True))
|
||||
known_paths.append(copy_from_profile(*gen, "initrd", True))
|
||||
bootspec = get_bootspec(gen.profile, gen.generation)
|
||||
known_paths.append(copy_from_file(bootspec.kernel, True))
|
||||
known_paths.append(copy_from_file(bootspec.initrd, True))
|
||||
for path in glob.iglob("@efiSysMountPoint@/loader/entries/nixos*-generation-[1-9]*.conf"):
|
||||
if rex_profile.match(path):
|
||||
prof = rex_profile.sub(r"\1", path)
|
||||
@@ -279,10 +277,11 @@ def install_bootloader(args: argparse.Namespace) -> None:
|
||||
remove_old_entries(gens)
|
||||
for gen in gens:
|
||||
try:
|
||||
is_default = os.path.dirname(profile_path(*gen, "init")) == args.default_config
|
||||
write_entry(*gen, machine_id, current=is_default)
|
||||
for specialisation in get_specialisations(*gen):
|
||||
write_entry(*specialisation, machine_id, current=is_default)
|
||||
bootspec = get_bootspec(gen.profile, gen.generation)
|
||||
is_default = os.path.dirname(bootspec.init) == args.default_config
|
||||
write_entry(*gen, machine_id, bootspec, current=is_default)
|
||||
for specialisation in bootspec.specialisations.keys():
|
||||
write_entry(gen.profile, gen.generation, specialisation, machine_id, bootspec, current=is_default)
|
||||
if is_default:
|
||||
write_loader_conf(*gen)
|
||||
except OSError as e:
|
||||
|
||||
@@ -370,7 +370,7 @@ in {
|
||||
|
||||
boot.initrd.availableKernelModules = [
|
||||
# systemd needs this for some features
|
||||
"autofs4"
|
||||
"autofs"
|
||||
# systemd-cryptenroll
|
||||
] ++ lib.optional cfg.enableTpm2 "tpm-tis"
|
||||
++ lib.optional (cfg.enableTpm2 && !(pkgs.stdenv.hostPlatform.isRiscV64 || pkgs.stdenv.hostPlatform.isArmv7)) "tpm-crb";
|
||||
|
||||
@@ -61,7 +61,7 @@ in
|
||||
|
||||
# Which provisioning agent to use. Supported values are "auto" (default), "waagent",
|
||||
# "cloud-init", or "disabled".
|
||||
Provisioning.Agent=disabled
|
||||
Provisioning.Agent=auto
|
||||
|
||||
# Password authentication for root account will be unavailable.
|
||||
Provisioning.DeleteRootPassword=n
|
||||
@@ -246,7 +246,7 @@ in
|
||||
pkgs.bash
|
||||
|
||||
# waagent's Microsoft.OSTCExtensions.VMAccessForLinux needs Python 3
|
||||
pkgs.python3
|
||||
pkgs.python39
|
||||
|
||||
# waagent's Microsoft.CPlat.Core.RunCommandLinux needs lsof
|
||||
pkgs.lsof
|
||||
@@ -259,5 +259,10 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
# waagent will generate files under /etc/sudoers.d during provisioning
|
||||
security.sudo.extraConfig = ''
|
||||
#includedir /etc/sudoers.d
|
||||
'';
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@@ -37,42 +37,5 @@ in
|
||||
inherit config lib pkgs;
|
||||
};
|
||||
|
||||
# Azure metadata is available as a CD-ROM drive.
|
||||
fileSystems."/metadata".device = "/dev/sr0";
|
||||
|
||||
systemd.services.fetch-ssh-keys = {
|
||||
description = "Fetch host keys and authorized_keys for root user";
|
||||
|
||||
wantedBy = [ "sshd.service" "waagent.service" ];
|
||||
before = [ "sshd.service" "waagent.service" ];
|
||||
|
||||
path = [ pkgs.coreutils ];
|
||||
script =
|
||||
''
|
||||
eval "$(cat /metadata/CustomData.bin)"
|
||||
if ! [ -z "$ssh_host_ecdsa_key" ]; then
|
||||
echo "downloaded ssh_host_ecdsa_key"
|
||||
echo "$ssh_host_ecdsa_key" > /etc/ssh/ssh_host_ed25519_key
|
||||
chmod 600 /etc/ssh/ssh_host_ed25519_key
|
||||
fi
|
||||
|
||||
if ! [ -z "$ssh_host_ecdsa_key_pub" ]; then
|
||||
echo "downloaded ssh_host_ecdsa_key_pub"
|
||||
echo "$ssh_host_ecdsa_key_pub" > /etc/ssh/ssh_host_ed25519_key.pub
|
||||
chmod 644 /etc/ssh/ssh_host_ed25519_key.pub
|
||||
fi
|
||||
|
||||
if ! [ -z "$ssh_root_auth_key" ]; then
|
||||
echo "downloaded ssh_root_auth_key"
|
||||
mkdir -m 0700 -p /root/.ssh
|
||||
echo "$ssh_root_auth_key" > /root/.ssh/authorized_keys
|
||||
chmod 600 /root/.ssh/authorized_keys
|
||||
fi
|
||||
'';
|
||||
serviceConfig.Type = "oneshot";
|
||||
serviceConfig.RemainAfterExit = true;
|
||||
serviceConfig.StandardError = "journal+console";
|
||||
serviceConfig.StandardOutput = "journal+console";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,9 +8,6 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
virtualisation.memorySize = 4096;
|
||||
services.plausible = {
|
||||
enable = true;
|
||||
releaseCookiePath = "${pkgs.runCommand "cookie" { } ''
|
||||
${pkgs.openssl}/bin/openssl rand -base64 64 >"$out"
|
||||
''}";
|
||||
adminUser = {
|
||||
email = "admin@example.org";
|
||||
passwordFile = "${pkgs.writeText "pwd" "foobar"}";
|
||||
@@ -28,6 +25,10 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
machine.wait_for_unit("plausible.service")
|
||||
machine.wait_for_open_port(8000)
|
||||
|
||||
# Ensure that the software does not make not make the machine
|
||||
# listen on any public interfaces by default.
|
||||
machine.fail("ss -tlpn 'src = 0.0.0.0 or src = [::]' | grep LISTEN")
|
||||
|
||||
machine.succeed("curl -f localhost:8000 >&2")
|
||||
|
||||
machine.succeed("curl -f localhost:8000/js/script.js >&2")
|
||||
|
||||
+18
-3
@@ -25,6 +25,18 @@
|
||||
|
||||
import ./make-test-python.nix ({ pkgs, ... }:
|
||||
let
|
||||
# Fix for https://github.com/ihabunek/toot/pull/405. Includes
|
||||
# https://github.com/ihabunek/toot/pull/405. TOREMOVE when
|
||||
# toot > 0.38.1
|
||||
patched-toot = pkgs.toot.overrideAttrs (old: {
|
||||
version = "unstable-24-09-2023";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "ihabunek";
|
||||
repo = "toot";
|
||||
rev = "30857f570d64a26da80d0024227a8259f7cb65b5";
|
||||
sha256 = "sha256-BxrI7UY9bfqPzS+VLqCFSmu4PkIkvhntcEeNJb1AzOs=";
|
||||
};
|
||||
});
|
||||
send-toot = pkgs.writeScriptBin "send-toot" ''
|
||||
set -eux
|
||||
# toot is using the requests library internally. This library
|
||||
@@ -164,9 +176,12 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
||||
'';
|
||||
|
||||
tls-cert = pkgs.runCommand "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
|
||||
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=pleroma.nixos.test' -days 36500
|
||||
mkdir -p $out
|
||||
cp key.pem cert.pem $out
|
||||
openssl req -x509 \
|
||||
-subj '/CN=pleroma.nixos.test/' -days 49710 \
|
||||
-addext 'subjectAltName = DNS:pleroma.nixos.test' \
|
||||
-keyout "$out/key.pem" -newkey ed25519 \
|
||||
-out "$out/cert.pem" -noenc
|
||||
'';
|
||||
|
||||
hosts = nodes: ''
|
||||
@@ -180,7 +195,7 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
||||
security.pki.certificateFiles = [ "${tls-cert}/cert.pem" ];
|
||||
networking.extraHosts = hosts nodes;
|
||||
environment.systemPackages = with pkgs; [
|
||||
toot
|
||||
patched-toot
|
||||
send-toot
|
||||
];
|
||||
};
|
||||
|
||||
@@ -16,7 +16,7 @@ in
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ erictapen izorkin ];
|
||||
|
||||
nodes = {
|
||||
database = {
|
||||
database = { config, ... }: {
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
@@ -24,11 +24,13 @@ in
|
||||
];
|
||||
};
|
||||
extraHosts = hosts;
|
||||
firewall.allowedTCPPorts = [ 5432 ];
|
||||
firewall.allowedTCPPorts = [ config.services.postgresql.port ];
|
||||
};
|
||||
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
# TODO remove once https://github.com/NixOS/nixpkgs/pull/266270 is resolved.
|
||||
package = pkgs.postgresql_14;
|
||||
enableTCPIP = true;
|
||||
authentication = ''
|
||||
hostnossl mastodon_local mastodon_test 192.168.2.201/32 md5
|
||||
@@ -41,7 +43,7 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
nginx = {
|
||||
nginx = { nodes, ... }: {
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
@@ -69,18 +71,14 @@ in
|
||||
tryFiles = "$uri @proxy";
|
||||
};
|
||||
locations."@proxy" = {
|
||||
proxyPass = "http://192.168.2.201:55001";
|
||||
proxyWebsockets = true;
|
||||
};
|
||||
locations."/api/v1/streaming/" = {
|
||||
proxyPass = "http://192.168.2.201:55002";
|
||||
proxyPass = "http://192.168.2.201:${toString nodes.server.services.mastodon.webPort}";
|
||||
proxyWebsockets = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
server = { pkgs, ... }: {
|
||||
server = { config, pkgs, ... }: {
|
||||
virtualisation.memorySize = 2048;
|
||||
|
||||
environment = {
|
||||
@@ -98,7 +96,10 @@ in
|
||||
];
|
||||
};
|
||||
extraHosts = hosts;
|
||||
firewall.allowedTCPPorts = [ 55001 55002 ];
|
||||
firewall.allowedTCPPorts = [
|
||||
config.services.mastodon.webPort
|
||||
config.services.mastodon.sidekiqPort
|
||||
];
|
||||
};
|
||||
|
||||
services.mastodon = {
|
||||
@@ -106,6 +107,7 @@ in
|
||||
configureNginx = false;
|
||||
localDomain = "mastodon.local";
|
||||
enableUnixSocket = false;
|
||||
streamingProcesses = 2;
|
||||
database = {
|
||||
createLocally = false;
|
||||
host = "192.168.2.102";
|
||||
|
||||
@@ -10,9 +10,8 @@
|
||||
|
||||
server.wait_for_unit("redis-mastodon.service")
|
||||
server.wait_for_unit("mastodon-sidekiq-all.service")
|
||||
server.wait_for_unit("mastodon-streaming.service")
|
||||
server.wait_for_unit("mastodon-streaming.target")
|
||||
server.wait_for_unit("mastodon-web.service")
|
||||
server.wait_for_open_port(55000)
|
||||
server.wait_for_open_port(55001)
|
||||
|
||||
# Check that mastodon-media-auto-remove is scheduled
|
||||
|
||||
@@ -40,11 +40,15 @@ in
|
||||
port = 31637;
|
||||
};
|
||||
|
||||
# TODO remove once https://github.com/NixOS/nixpkgs/pull/266270 is resolved.
|
||||
services.postgresql.package = pkgs.postgresql_14;
|
||||
|
||||
services.mastodon = {
|
||||
enable = true;
|
||||
configureNginx = true;
|
||||
localDomain = "mastodon.local";
|
||||
enableUnixSocket = false;
|
||||
streamingProcesses = 2;
|
||||
smtp = {
|
||||
createLocally = false;
|
||||
fromAddress = "mastodon@mastodon.local";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import ../make-test-python.nix ({ pkgs, ... }: {
|
||||
name = "ejabberd";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ ajs124 ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
nodes = {
|
||||
client = { nodes, pkgs, ... }: {
|
||||
|
||||
@@ -114,6 +114,25 @@ Now that this is out of the way. To add a package to Nixpkgs:
|
||||
|
||||
7. Optionally commit the new package and open a pull request [to nixpkgs](https://github.com/NixOS/nixpkgs/pulls), or use [the Patches category](https://discourse.nixos.org/t/about-the-patches-category/477) on Discourse for sending a patch without a GitHub account.
|
||||
|
||||
## Commit conventions
|
||||
|
||||
- Make sure you read about the [commit conventions](../CONTRIBUTING.md#commit-conventions) common to Nixpkgs as a whole.
|
||||
|
||||
- Format the commit messages in the following way:
|
||||
|
||||
```
|
||||
(pkg-name): (from -> to | init at version | refactor | etc)
|
||||
|
||||
(Motivation for change. Link to release notes. Additional information.)
|
||||
```
|
||||
|
||||
Examples:
|
||||
|
||||
* nginx: init at 2.0.1
|
||||
* firefox: 54.0.1 -> 55.0
|
||||
|
||||
https://www.mozilla.org/en-US/firefox/55.0/releasenotes/
|
||||
|
||||
## Category Hierarchy
|
||||
[categories]: #category-hierarchy
|
||||
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "goodvibes";
|
||||
version = "0.7.7";
|
||||
version = "0.7.9";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-7AhdygNl6st5ryaMjrloBvTVz6PN48Y6VVpde5g3+D4=";
|
||||
hash = "sha256-yXrCE3nsdZP4JHKVslzQafjZ380zC8sZv5TJf8dJqJw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -25,13 +25,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "reaper";
|
||||
version = "7.03";
|
||||
version = "7.05";
|
||||
|
||||
src = fetchurl {
|
||||
url = url_for_platform version stdenv.hostPlatform.qemuArch;
|
||||
hash = {
|
||||
x86_64-linux = "sha256-74fQXN6a3SqNZIc2MkOf2iWwP6oQToklbb3kBuaku6s=";
|
||||
aarch64-linux = "sha256-BF7iN8NdejqwZzHTFdys422p3qoNIm20IpFuaHdUx3U=";
|
||||
x86_64-linux = "sha256-P/PnbJPr4ErDz5ho1/dLERhqkKjdetHzKpCpfVZAYb0=";
|
||||
aarch64-linux = "sha256-PdnBVlHwoEEv2SPq/p5oyiOlduCEqL35gAY+QIJU1Ys=";
|
||||
}.${stdenv.hostPlatform.system};
|
||||
};
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "unifi-protect-backup";
|
||||
version = "0.9.4";
|
||||
version = "0.10.1";
|
||||
|
||||
format = "pyproject";
|
||||
|
||||
@@ -13,7 +13,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
owner = "ep1cman";
|
||||
repo = pname;
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-MFg518iodxdHbr7k5kpkTWI59Kk7pPwyIVswVcjasl8=";
|
||||
hash = "sha256-5SarQw4xvLzL2JyBOqv5AtMAk3T4IHJN7fwk+OmujLM=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "snarkos";
|
||||
version = "2.2.1";
|
||||
version = "2.2.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AleoHQ";
|
||||
repo = "snarkOS";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-vEoEnjVjxVnjZ3Lya1qO2kOypNu07aYSlrSya5NJZzs=";
|
||||
sha256 = "sha256-sq99lJqSJ436wdSjdOlooGD2PysZzbyb7hTfJ9OUg/U=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-CVHvBqfcTqWBtLFcEcs9y/LmQ4gXjX+dfqqZSxN+33A=";
|
||||
cargoHash = "sha256-0x/YKPLh5yf3y/CjrQF18yDfPJ8IlArVVczgyVPzpEI=";
|
||||
|
||||
# buildAndTestSubdir = "cli";
|
||||
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
, withX ? !(stdenv.isDarwin || noGui || withPgtk)
|
||||
, withXinput2 ? withX && lib.versionAtLeast version "29"
|
||||
, withXwidgets ? !stdenv.isDarwin && !noGui && (withGTK3 || withPgtk)
|
||||
, withSmallJaDic ? false
|
||||
|
||||
# Options
|
||||
, siteStart ? ./site-start.el
|
||||
@@ -337,6 +338,7 @@ mkDerivation (finalAttrs: {
|
||||
++ lib.optional withTreeSitter "--with-tree-sitter"
|
||||
++ lib.optional withXinput2 "--with-xinput2"
|
||||
++ lib.optional withXwidgets "--with-xwidgets"
|
||||
++ lib.optional withSmallJaDic "--with-small-ja-dic"
|
||||
;
|
||||
|
||||
env = lib.optionalAttrs withNativeCompilation {
|
||||
|
||||
@@ -65,8 +65,7 @@ in buildFHSEnv rec {
|
||||
progs_to_wrap=(
|
||||
"${unwrapped}"/quartus/bin/*
|
||||
"${unwrapped}"/quartus/sopc_builder/bin/qsys-{generate,edit,script}
|
||||
# Should we install all executables?
|
||||
"${unwrapped}"/modelsim_ase/bin/{vsim,vlog,vlib,vcom,vdel,vmap}
|
||||
"${unwrapped}"/modelsim_ase/bin/*
|
||||
"${unwrapped}"/modelsim_ase/linuxaloem/lmutil
|
||||
)
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
, poppler
|
||||
, qt5compat
|
||||
, qttools
|
||||
, qtwayland
|
||||
, withLua ? true, lua
|
||||
, withPython ? true, python3 }:
|
||||
|
||||
@@ -36,7 +37,8 @@ stdenv.mkDerivation rec {
|
||||
qt5compat
|
||||
qttools
|
||||
] ++ lib.optional withLua lua
|
||||
++ lib.optional withPython python3;
|
||||
++ lib.optional withPython python3
|
||||
++ lib.optional stdenv.isLinux qtwayland;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DQT_DEFAULT_MAJOR_VERSION=6"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -292,12 +292,12 @@
|
||||
};
|
||||
cpp = buildGrammar {
|
||||
language = "cpp";
|
||||
version = "0.0.0+rev=a90f170";
|
||||
version = "0.0.0+rev=d153fe1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-cpp";
|
||||
rev = "a90f170f92d5d70e7c2d4183c146e61ba5f3a457";
|
||||
hash = "sha256-e9Mz84lssaPR80hlogyjXx+jA8gD8YVp4T06qC6gRVI=";
|
||||
rev = "d153fe1c3385ee0521730ff4e0be9358e903b322";
|
||||
hash = "sha256-zxAz82XpTtKondA84L1sO3VByo8vLI4j154pWbxlV74=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-cpp";
|
||||
};
|
||||
@@ -714,12 +714,12 @@
|
||||
};
|
||||
gleam = buildGrammar {
|
||||
language = "gleam";
|
||||
version = "0.0.0+rev=3f93ccc";
|
||||
version = "0.0.0+rev=b2afa4f";
|
||||
src = fetchFromGitHub {
|
||||
owner = "gleam-lang";
|
||||
repo = "tree-sitter-gleam";
|
||||
rev = "3f93cccaf278cc4c9cf9a373ea2f6389174d634c";
|
||||
hash = "sha256-TjyAaxEtGVjnBdcw1uyeQhotNhZlQKvN1SgbZwKvm3M=";
|
||||
rev = "b2afa4fd6bb41a7bf912b034c653c90af7ae5122";
|
||||
hash = "sha256-Z1wutK2NyI5EMwTezeZp/g8JFD0p7kqBGCuh9Amyjgo=";
|
||||
};
|
||||
meta.homepage = "https://github.com/gleam-lang/tree-sitter-gleam";
|
||||
};
|
||||
@@ -901,12 +901,12 @@
|
||||
};
|
||||
hcl = buildGrammar {
|
||||
language = "hcl";
|
||||
version = "0.0.0+rev=b553906";
|
||||
version = "0.0.0+rev=fdf6463";
|
||||
src = fetchFromGitHub {
|
||||
owner = "MichaHoffmann";
|
||||
repo = "tree-sitter-hcl";
|
||||
rev = "b5539065432c08e4118eb3ee7c94902fdda85708";
|
||||
hash = "sha256-okLwoDGgK6aM5+8oelfRnuKqIimTs8Hc0N8Ikrm2eY0=";
|
||||
rev = "fdf6463216f1a45d83ba911cdb9f57445a8d3b51";
|
||||
hash = "sha256-UEjC3PeTQCvbtfk4a0EaLh+DXraUQIaSUGU6vszYP3E=";
|
||||
};
|
||||
meta.homepage = "https://github.com/MichaHoffmann/tree-sitter-hcl";
|
||||
};
|
||||
@@ -934,12 +934,12 @@
|
||||
};
|
||||
hlsl = buildGrammar {
|
||||
language = "hlsl";
|
||||
version = "0.0.0+rev=f2902bd";
|
||||
version = "0.0.0+rev=ac65c93";
|
||||
src = fetchFromGitHub {
|
||||
owner = "theHamsta";
|
||||
repo = "tree-sitter-hlsl";
|
||||
rev = "f2902bd614e3916bdf65e1bc9ad45ebd08417bba";
|
||||
hash = "sha256-tuie4Yzauejf+5Par2qnWfaQgOLhROL2le1+UTq5cSY=";
|
||||
rev = "ac65c934b3214e96e0f854be009a3bd51549bd14";
|
||||
hash = "sha256-rTBal4RBOFBKfb9cydvWH+JtCCMOlnnGMPb2X7LXRjE=";
|
||||
};
|
||||
meta.homepage = "https://github.com/theHamsta/tree-sitter-hlsl";
|
||||
};
|
||||
@@ -1011,12 +1011,12 @@
|
||||
};
|
||||
ini = buildGrammar {
|
||||
language = "ini";
|
||||
version = "0.0.0+rev=7f11a02";
|
||||
version = "0.0.0+rev=bcb84a2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "justinmk";
|
||||
repo = "tree-sitter-ini";
|
||||
rev = "7f11a02fb8891482068e0fe419965d7bade81a68";
|
||||
hash = "sha256-IIpKzpA4q1jpYVZ75VZaxWHaqNt8TA427eMOui2s71M=";
|
||||
rev = "bcb84a2d4bcd6f55b911c42deade75c8f90cb0c5";
|
||||
hash = "sha256-dYPeVTNWO4apY5dsjsKViavU7YtLeGTp6BzEemXhsEU=";
|
||||
};
|
||||
meta.homepage = "https://github.com/justinmk/tree-sitter-ini";
|
||||
};
|
||||
@@ -1220,12 +1220,12 @@
|
||||
};
|
||||
leo = buildGrammar {
|
||||
language = "leo";
|
||||
version = "0.0.0+rev=91d7aa6";
|
||||
version = "0.0.0+rev=23a9534";
|
||||
src = fetchFromGitHub {
|
||||
owner = "r001";
|
||||
repo = "tree-sitter-leo";
|
||||
rev = "91d7aa606f524cf4f5df7f4aacb45b4056fac704";
|
||||
hash = "sha256-8nea6Qg0eT5ciif+tzD13TcFqP9/uJVxgVSW93OdiVY=";
|
||||
rev = "23a9534d09d523d0dcee7dbf89e7c819e6835f6f";
|
||||
hash = "sha256-21Vqvc3HjmKi1FRKyswMcf8rPjkyAbjTayDYMsTUsBg=";
|
||||
};
|
||||
meta.homepage = "https://github.com/r001/tree-sitter-leo";
|
||||
};
|
||||
@@ -1319,24 +1319,24 @@
|
||||
};
|
||||
markdown = buildGrammar {
|
||||
language = "markdown";
|
||||
version = "0.0.0+rev=7ce4c69";
|
||||
version = "0.0.0+rev=f9820b2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "MDeiml";
|
||||
repo = "tree-sitter-markdown";
|
||||
rev = "7ce4c69fe92d1c10225e3d1b3676c87dd9427b45";
|
||||
hash = "sha256-UxpTkiRChAwNJBVS9y/lydI8R035EuRy3t39Y1mscq0=";
|
||||
rev = "f9820b2db958228f9be339b67d2de874d065866e";
|
||||
hash = "sha256-0T0P018Zb4tfU2D4PLhiW8tunOInlRtrHajPOVqOpwc=";
|
||||
};
|
||||
location = "tree-sitter-markdown";
|
||||
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
|
||||
};
|
||||
markdown_inline = buildGrammar {
|
||||
language = "markdown_inline";
|
||||
version = "0.0.0+rev=7ce4c69";
|
||||
version = "0.0.0+rev=f9820b2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "MDeiml";
|
||||
repo = "tree-sitter-markdown";
|
||||
rev = "7ce4c69fe92d1c10225e3d1b3676c87dd9427b45";
|
||||
hash = "sha256-UxpTkiRChAwNJBVS9y/lydI8R035EuRy3t39Y1mscq0=";
|
||||
rev = "f9820b2db958228f9be339b67d2de874d065866e";
|
||||
hash = "sha256-0T0P018Zb4tfU2D4PLhiW8tunOInlRtrHajPOVqOpwc=";
|
||||
};
|
||||
location = "tree-sitter-markdown-inline";
|
||||
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
|
||||
@@ -1498,12 +1498,12 @@
|
||||
};
|
||||
objdump = buildGrammar {
|
||||
language = "objdump";
|
||||
version = "0.0.0+rev=64e4741";
|
||||
version = "0.0.0+rev=28d3b2e";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ColinKennedy";
|
||||
repo = "tree-sitter-objdump";
|
||||
rev = "64e4741d58345c36ded639f5a3bcd7811be7f8f8";
|
||||
hash = "sha256-v5skJKQ/c0YeGVj3Vs+SNnFqTkp0mblZU4DyJ9hg7s4=";
|
||||
rev = "28d3b2e25a0b1881d1b47ed1924ca276c7003d45";
|
||||
hash = "sha256-OPqIhgItghXplQ78Vlwd0G6KtDWTVkaG17RPqx1b5JY=";
|
||||
};
|
||||
meta.homepage = "https://github.com/ColinKennedy/tree-sitter-objdump";
|
||||
};
|
||||
@@ -1766,12 +1766,12 @@
|
||||
};
|
||||
purescript = buildGrammar {
|
||||
language = "purescript";
|
||||
version = "0.0.0+rev=5ef5592";
|
||||
version = "0.0.0+rev=f89bd14";
|
||||
src = fetchFromGitHub {
|
||||
owner = "postsolar";
|
||||
repo = "tree-sitter-purescript";
|
||||
rev = "5ef5592674ea42de75fc2792972e4ea0b6e3da6c";
|
||||
hash = "sha256-V9cuENH/tpXt9mfZqJ2v4dxJvbwEHU8Ri+UxQafWemY=";
|
||||
rev = "f89bd149e44624342bf49f76245d3284f2beed9a";
|
||||
hash = "sha256-c4Zux+6kg9b9/0t9LOtfSdMMQbp1xwiQH8dz4BBB/pY=";
|
||||
};
|
||||
meta.homepage = "https://github.com/postsolar/tree-sitter-purescript";
|
||||
};
|
||||
@@ -2121,12 +2121,12 @@
|
||||
};
|
||||
sql = buildGrammar {
|
||||
language = "sql";
|
||||
version = "0.0.0+rev=5f928f4";
|
||||
version = "0.0.0+rev=9fe5aea";
|
||||
src = fetchFromGitHub {
|
||||
owner = "derekstride";
|
||||
repo = "tree-sitter-sql";
|
||||
rev = "5f928f404d2aa024abce8657778fc10c03f1511f";
|
||||
hash = "sha256-7W6vuaZjDZgoaxJexPPBjJZlutlTT+hTFL1dq9k2NSo=";
|
||||
rev = "9fe5aeaa8d58d00cc31c20a3ae923ae695ce2ce7";
|
||||
hash = "sha256-HnSZGrxrHlARPhgTJRO6P0FcmjOdB3c5eMpH9+5ZaX8=";
|
||||
};
|
||||
meta.homepage = "https://github.com/derekstride/tree-sitter-sql";
|
||||
};
|
||||
@@ -2277,12 +2277,12 @@
|
||||
};
|
||||
terraform = buildGrammar {
|
||||
language = "terraform";
|
||||
version = "0.0.0+rev=b553906";
|
||||
version = "0.0.0+rev=fdf6463";
|
||||
src = fetchFromGitHub {
|
||||
owner = "MichaHoffmann";
|
||||
repo = "tree-sitter-hcl";
|
||||
rev = "b5539065432c08e4118eb3ee7c94902fdda85708";
|
||||
hash = "sha256-okLwoDGgK6aM5+8oelfRnuKqIimTs8Hc0N8Ikrm2eY0=";
|
||||
rev = "fdf6463216f1a45d83ba911cdb9f57445a8d3b51";
|
||||
hash = "sha256-UEjC3PeTQCvbtfk4a0EaLh+DXraUQIaSUGU6vszYP3E=";
|
||||
};
|
||||
location = "dialects/terraform";
|
||||
meta.homepage = "https://github.com/MichaHoffmann/tree-sitter-hcl";
|
||||
@@ -2322,12 +2322,12 @@
|
||||
};
|
||||
tlaplus = buildGrammar {
|
||||
language = "tlaplus";
|
||||
version = "0.0.0+rev=204e858";
|
||||
version = "0.0.0+rev=d99cb5c";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tlaplus-community";
|
||||
repo = "tree-sitter-tlaplus";
|
||||
rev = "204e858899f7dd5713dea7b0148d6aa477d4a18f";
|
||||
hash = "sha256-AzCXFr6YAmbmEiBEN6MI+MeBDoEDrJB2vcZl/OEUqmg=";
|
||||
rev = "d99cb5c77bb0e733176d607a0875ac30e17e1e72";
|
||||
hash = "sha256-ShZlFHokmy3hhfTeh+/anz7a2bGDwWAdWIdi3X/lchQ=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tlaplus-community/tree-sitter-tlaplus";
|
||||
};
|
||||
@@ -2580,12 +2580,12 @@
|
||||
};
|
||||
wing = buildGrammar {
|
||||
language = "wing";
|
||||
version = "0.0.0+rev=238200d";
|
||||
version = "0.0.0+rev=eacf704";
|
||||
src = fetchFromGitHub {
|
||||
owner = "winglang";
|
||||
repo = "wing";
|
||||
rev = "238200d172538d5ff1228a929ea543465acfc410";
|
||||
hash = "sha256-a/8lbO8/+XhD3i6hjAxCA1rpovlkVHnDxz8xkc3bPoY=";
|
||||
rev = "eacf704338661b981fcf4fdb5ee44d898f038144";
|
||||
hash = "sha256-JwA49Up2G2/jobjqniQeJ1Rfko3PFfgINRvi/QswlCk=";
|
||||
};
|
||||
location = "libs/tree-sitter-wing";
|
||||
generate = true;
|
||||
|
||||
@@ -999,7 +999,7 @@ self: super: {
|
||||
pname = "sg-nvim-rust";
|
||||
inherit (old) version src;
|
||||
|
||||
cargoHash = "sha256-Rqs9INcc53SYGXHRyeTbLkGGU035i2i6n6A4ekFKve0=";
|
||||
cargoHash = "sha256-ITrjY15Haz8hEztWym4q8YW2h0R8/kOYPaIYJu87sN4=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
diff --git a/coq/__main__.py b/coq/__main__.py
|
||||
index 5a6c6fd2..e0d9eec8 100644
|
||||
index dd40afc1..36bcca21 100644
|
||||
--- a/coq/__main__.py
|
||||
+++ b/coq/__main__.py
|
||||
@@ -78,7 +78,7 @@ _EXEC_PATH = Path(executable)
|
||||
_EXEC_PATH = _EXEC_PATH.parent.resolve(strict=True) / _EXEC_PATH.name
|
||||
_REQ = REQUIREMENTS.read_text()
|
||||
|
||||
|
||||
-_IN_VENV = _RT_PY == _EXEC_PATH
|
||||
+_IN_VENV = True
|
||||
|
||||
|
||||
|
||||
|
||||
if command == "deps":
|
||||
@@ -152,7 +152,7 @@ elif command == "run":
|
||||
try:
|
||||
@@ -21,15 +21,15 @@ index 5a6c6fd2..e0d9eec8 100644
|
||||
else:
|
||||
import pynvim_pp
|
||||
diff --git a/coq/consts.py b/coq/consts.py
|
||||
index 5a027fe9..a3e0c5a4 100644
|
||||
index 804e92ab..5c090a93 100644
|
||||
--- a/coq/consts.py
|
||||
+++ b/coq/consts.py
|
||||
@@ -9,7 +9,7 @@ TOP_LEVEL = Path(__file__).resolve(strict=True).parent.parent
|
||||
@@ -10,7 +10,7 @@ TOP_LEVEL = Path(__file__).resolve(strict=True).parent.parent
|
||||
REQUIREMENTS = TOP_LEVEL / "requirements.txt"
|
||||
|
||||
|
||||
|
||||
|
||||
-VARS = TOP_LEVEL / ".vars"
|
||||
+VARS = Path.home() / ".cache/coq_nvim/vars"
|
||||
|
||||
|
||||
RT_DIR = VARS / "runtime"
|
||||
RT_PY = RT_DIR / "Scripts" / "python.exe" if IS_WIN else RT_DIR / "bin" / "python3"
|
||||
|
||||
+265
-11
@@ -149,6 +149,15 @@ version = "0.21.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
|
||||
|
||||
[[package]]
|
||||
name = "bincode"
|
||||
version = "1.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
@@ -200,6 +209,15 @@ version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
|
||||
|
||||
[[package]]
|
||||
name = "camino"
|
||||
version = "1.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cargo-lock"
|
||||
version = "9.0.0"
|
||||
@@ -212,6 +230,29 @@ dependencies = [
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cargo-platform"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cargo_metadata"
|
||||
version = "0.18.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb9ac64500cc83ce4b9f8dafa78186aa008c8dea77a09b94cd307fd0cd5022a8"
|
||||
dependencies = [
|
||||
"camino",
|
||||
"cargo-platform",
|
||||
"semver",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.83"
|
||||
@@ -360,6 +401,12 @@ version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
|
||||
|
||||
[[package]]
|
||||
name = "colorsys"
|
||||
version = "0.6.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "54261aba646433cb567ec89844be4c4825ca92a4f8afba52fc4dd88436e31bbd"
|
||||
|
||||
[[package]]
|
||||
name = "combine"
|
||||
version = "4.6.6"
|
||||
@@ -398,6 +445,15 @@ version = "0.8.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
|
||||
|
||||
[[package]]
|
||||
name = "crc32fast"
|
||||
version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-channel"
|
||||
version = "0.5.8"
|
||||
@@ -441,6 +497,41 @@ dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling"
|
||||
version = "0.20.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
|
||||
dependencies = [
|
||||
"darling_core",
|
||||
"darling_macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling_core"
|
||||
version = "0.20.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621"
|
||||
dependencies = [
|
||||
"fnv",
|
||||
"ident_case",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"strsim",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling_macro"
|
||||
version = "0.20.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
|
||||
dependencies = [
|
||||
"darling_core",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "deranged"
|
||||
version = "0.3.8"
|
||||
@@ -571,6 +662,16 @@ dependencies = [
|
||||
"utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "flate2"
|
||||
version = "1.0.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
|
||||
dependencies = [
|
||||
"crc32fast",
|
||||
"miniz_oxide",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.7"
|
||||
@@ -809,6 +910,20 @@ version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
|
||||
|
||||
[[package]]
|
||||
name = "highlighter"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"colorsys",
|
||||
"once_cell",
|
||||
"rgb2ansi256",
|
||||
"serde",
|
||||
"syntect",
|
||||
"tracing",
|
||||
"utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "home"
|
||||
version = "0.5.5"
|
||||
@@ -922,6 +1037,12 @@ dependencies = [
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ident_case"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "0.4.0"
|
||||
@@ -1095,6 +1216,37 @@ dependencies = [
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "line-wrap"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
|
||||
dependencies = [
|
||||
"safemem",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linked-hash-map"
|
||||
version = "0.5.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
|
||||
|
||||
[[package]]
|
||||
name = "linter"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"cargo_metadata",
|
||||
"once_cell",
|
||||
"parking_lot",
|
||||
"paths",
|
||||
"regex",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tokio",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.4.5"
|
||||
@@ -1128,7 +1280,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "maple"
|
||||
version = "0.1.46"
|
||||
version = "0.1.47"
|
||||
dependencies = [
|
||||
"built",
|
||||
"chrono",
|
||||
@@ -1156,9 +1308,12 @@ dependencies = [
|
||||
"futures",
|
||||
"grep-matcher",
|
||||
"grep-searcher",
|
||||
"highlighter",
|
||||
"icon",
|
||||
"ignore",
|
||||
"itertools",
|
||||
"linter",
|
||||
"maple_derive",
|
||||
"matcher",
|
||||
"once_cell",
|
||||
"parking_lot",
|
||||
@@ -1180,6 +1335,18 @@ dependencies = [
|
||||
"webbrowser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "maple_derive"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"darling",
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "matcher"
|
||||
version = "0.1.0"
|
||||
@@ -1195,9 +1362,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.5.0"
|
||||
version = "2.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||
checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
|
||||
|
||||
[[package]]
|
||||
name = "memmap2"
|
||||
@@ -1308,6 +1475,28 @@ version = "1.18.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
|
||||
|
||||
[[package]]
|
||||
name = "onig"
|
||||
version = "6.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"libc",
|
||||
"once_cell",
|
||||
"onig_sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "onig_sys"
|
||||
version = "69.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"pkg-config",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "overload"
|
||||
version = "0.1.1"
|
||||
@@ -1384,6 +1573,20 @@ version = "0.3.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
|
||||
|
||||
[[package]]
|
||||
name = "plist"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bdc0001cfea3db57a2e24bc0d818e9e20e554b5f97fabb9bc231dc240269ae06"
|
||||
dependencies = [
|
||||
"base64 0.21.2",
|
||||
"indexmap 1.9.3",
|
||||
"line-wrap",
|
||||
"quick-xml",
|
||||
"serde",
|
||||
"time 0.3.27",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "printer"
|
||||
version = "0.1.0"
|
||||
@@ -1406,6 +1609,15 @@ dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quick-xml"
|
||||
version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "81b9228215d82c7b61490fec1de287136b5de6f5700f6e58ea9ad61a7964ca51"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.33"
|
||||
@@ -1474,25 +1686,25 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.9.3"
|
||||
version = "1.9.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a"
|
||||
checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
|
||||
dependencies = [
|
||||
"aho-corasick 1.0.4",
|
||||
"memchr",
|
||||
"regex-automata",
|
||||
"regex-syntax 0.7.4",
|
||||
"regex-syntax 0.7.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.3.6"
|
||||
version = "0.3.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"
|
||||
checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
|
||||
dependencies = [
|
||||
"aho-corasick 1.0.4",
|
||||
"memchr",
|
||||
"regex-syntax 0.7.4",
|
||||
"regex-syntax 0.7.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1503,9 +1715,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.7.4"
|
||||
version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
|
||||
checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
|
||||
|
||||
[[package]]
|
||||
name = "reqwest"
|
||||
@@ -1546,6 +1758,12 @@ dependencies = [
|
||||
"winreg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rgb2ansi256"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ebca96b1c05912d531790498048bab5b7b97a756a7bb9df71fa4ef7ef9814e1"
|
||||
|
||||
[[package]]
|
||||
name = "ring"
|
||||
version = "0.16.20"
|
||||
@@ -1627,6 +1845,12 @@ version = "1.0.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
|
||||
|
||||
[[package]]
|
||||
name = "safemem"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
|
||||
|
||||
[[package]]
|
||||
name = "same-file"
|
||||
version = "1.0.6"
|
||||
@@ -1804,6 +2028,27 @@ dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syntect"
|
||||
version = "5.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e02b4b303bf8d08bfeb0445cba5068a3d306b6baece1d5582171a9bf49188f91"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"bitflags 1.3.2",
|
||||
"flate2",
|
||||
"fnv",
|
||||
"once_cell",
|
||||
"onig",
|
||||
"plist",
|
||||
"regex-syntax 0.7.5",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror",
|
||||
"walkdir",
|
||||
"yaml-rust",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.47"
|
||||
@@ -2486,3 +2731,12 @@ dependencies = [
|
||||
"cfg-if",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yaml-rust"
|
||||
version = "0.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
|
||||
dependencies = [
|
||||
"linked-hash-map",
|
||||
]
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "0.46";
|
||||
version = "0.47";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "liuchengxu";
|
||||
repo = "vim-clap";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-KWBuoZ2GxjwIu7L1PPq/7u3iuYFp5QrlsleL2RQTdUE=";
|
||||
hash = "sha256-CYv5AZsGvN2dtN7t58b50a8PH7804Lnm4d4wAX6Mm5Q=";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
||||
@@ -15,11 +15,11 @@ let
|
||||
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
|
||||
|
||||
sha256 = {
|
||||
x86_64-linux = "1v2lcbmb0g3pw58mmiqd2j9c7r7dcl371nxc6w9rsmcbf7s0f8h0";
|
||||
x86_64-darwin = "11if8l556rsvacwbsknv2hnqfwkad99klgnwx4kjcbm8g63ra3ab";
|
||||
aarch64-linux = "1fmahjn99cvylm8r4cf4b1654gyyk6n6mqad1l0cncpypdxc2pdw";
|
||||
aarch64-darwin = "053jnxpkpfh5a8nfx557ib6byhi4dd1dnxasp4igy59cbx25an9q";
|
||||
armv7l-linux = "0qc48mg34pkr23p3wnlczvfspfii3qn6ikbkgj1qsagxn9ycqjak";
|
||||
x86_64-linux = "1h2s90h1a4b4r9rqafd5fj95mx21xqlp3msv8fxfjd2kkfl8bdcl";
|
||||
x86_64-darwin = "1cprq4cy01cmyqrvv5p9f09k7h5p4nj9jbk4lrlnyj1z2xvhcls1";
|
||||
aarch64-linux = "0g9j14vnan10r014309s6mdkizjfpbd83bf1kxx2kk625n87xszc";
|
||||
aarch64-darwin = "10rw2dy3khpxa292zygxi67amxd6s351ha8nxvav5m9xfxlgd2qn";
|
||||
armv7l-linux = "0bw0hfhvwv7wbh2daxgxaxm34v5z5ak4nmmk45ksxc4xsmjc5v23";
|
||||
}.${system} or throwSystem;
|
||||
|
||||
sourceRoot = lib.optionalString (!stdenv.isDarwin) ".";
|
||||
@@ -29,7 +29,7 @@ in
|
||||
|
||||
# Please backport all compatible updates to the stable release.
|
||||
# This is important for the extension ecosystem.
|
||||
version = "1.84.2.23314";
|
||||
version = "1.84.2.23317";
|
||||
pname = "vscodium";
|
||||
|
||||
executableName = "codium";
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "hydrus";
|
||||
version = "549";
|
||||
version = "551";
|
||||
format = "other";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hydrusnetwork";
|
||||
repo = "hydrus";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-y3WFQhPE8H0198Xu3Dn9YAqaX8YvFJcdt90tebTg7qw=";
|
||||
hash = "sha256-P/U44ndfucbRnwGLdSnnA0VE4K40zPz3wtNpQj8rh5Q=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "structorizer";
|
||||
version = "3.32-12";
|
||||
version = "3.32-14";
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "fesch";
|
||||
repo = "Structorizer.Desktop";
|
||||
rev = version;
|
||||
hash = "sha256-DZktq07MoXBg2AwHOoPLTbON/giSqDZOfmaMkZl1w1g=";
|
||||
hash = "sha256-pnzvfXH4KC067aqqH9h1+T3K+6IzIYw8IJCMdmGrN6c=";
|
||||
};
|
||||
|
||||
patches = [ ./makeStructorizer.patch ./makeBigJar.patch ];
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, dpkg
|
||||
, autoPatchelfHook
|
||||
, wrapQtAppsHook
|
||||
, qtbase
|
||||
, qtdeclarative
|
||||
, qtsvg
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "texturepacker";
|
||||
version = "7.1.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.codeandweb.com/download/texturepacker/${finalAttrs.version}/TexturePacker-${finalAttrs.version}.deb";
|
||||
hash = "sha256-9HbmdMPTp6qZCEU/lIZv4HbjKUlEtPVval+y0tiYObc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
dpkg
|
||||
autoPatchelfHook
|
||||
wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin $out/lib
|
||||
cp usr/lib/texturepacker/{libGrantlee_Templates.so.5,libHQX.so.1.0.0,libPVRTexLib.so} $out/lib
|
||||
cp usr/lib/texturepacker/TexturePacker $out/bin
|
||||
cp -r usr/share $out
|
||||
'';
|
||||
|
||||
meta = {
|
||||
changelog = "https://www.codeandweb.com/texturepacker/download";
|
||||
description = "Sprite sheet creator and game graphics optimizer";
|
||||
homepage = "https://www.codeandweb.com/texturepacker";
|
||||
license = lib.licenses.unfree;
|
||||
mainProgram = "TexturePacker";
|
||||
maintainers = with lib.maintainers; [ tomasajt ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
})
|
||||
@@ -16,11 +16,10 @@ stdenv.mkDerivation rec {
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "system-makedeps.patch";
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/system-makedeps.patch?h=llpp&id=0d2913056aaf3dbf7431e57b7b08b55568ba076c";
|
||||
hash = "sha256-t9PLXsM8+exCeYqJBe0LSDK0D2rpktmozS8qNcEAcHo=";
|
||||
name = "system-makedeps-and-ocaml5.patch";
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/system-makedeps-and-ocaml5.patch?h=llpp&id=32955e115f914bb96348d288f9af9c6e3e80a02b";
|
||||
hash = "sha256-3rcPsR+M8Jx7M8GHUIsw0WNBvp6aE7BcPr4yk2vT9Ik=";
|
||||
})
|
||||
./fix-mupdf.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
--- a/link.c
|
||||
+++ b/link.c
|
||||
@@ -1522,8 +1522,9 @@ static void *mainloop (void UNUSED_ATTR *unused)
|
||||
if (pdf && nameddest && *nameddest) {
|
||||
fz_point xy;
|
||||
struct pagedim *pdim;
|
||||
- int pageno = pdf_lookup_anchor (state.ctx, pdf, nameddest,
|
||||
+ fz_location location = fz_resolve_link (state.ctx, state.doc, nameddest,
|
||||
&xy.x, &xy.y);
|
||||
+ int pageno = location.page;
|
||||
pdim = pdimofpageno (pageno);
|
||||
xy = fz_transform_point (xy, pdim->ctm);
|
||||
printd ("a %d %d %d", pageno, (int) xy.x, (int) xy.y);
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/scripts/wrap/cpp.py b/scripts/wrap/cpp.py
|
||||
index 51ac5f1..b5c0b5a 100644
|
||||
--- a/scripts/wrap/cpp.py
|
||||
+++ b/scripts/wrap/cpp.py
|
||||
@@ -4595,7 +4595,7 @@ def cpp_source(
|
||||
*/
|
||||
typedef unsigned long size_t;
|
||||
'''))
|
||||
- if state.state_.macos:
|
||||
+ if state.state_.linux or state.state_.macos:
|
||||
f.write( textwrap.dedent('''
|
||||
/*
|
||||
Workaround on MacOS: we need to define fixed-size int types
|
||||
@@ -1,7 +1,6 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
, fetchpatch
|
||||
, fetchFromGitHub
|
||||
, copyDesktopItems
|
||||
, makeDesktopItem
|
||||
@@ -26,19 +25,26 @@
|
||||
, enableGL ? true
|
||||
, freeglut
|
||||
, libGLU
|
||||
, enableOcr ? false
|
||||
, leptonica
|
||||
, tesseract
|
||||
, enableCxx ? false
|
||||
, python3
|
||||
, enablePython ? false
|
||||
, which
|
||||
, swig
|
||||
, xcbuild
|
||||
, gitUpdater
|
||||
|
||||
# for passthru.tests
|
||||
, cups-filters
|
||||
, python3
|
||||
, zathura
|
||||
, mupdf
|
||||
}:
|
||||
let
|
||||
|
||||
# OpenJPEG version is hardcoded in package source
|
||||
openJpegVersion = with stdenv;
|
||||
lib.versions.majorMinor (lib.getVersion openjpeg);
|
||||
assert enablePython -> enableCxx;
|
||||
|
||||
let
|
||||
|
||||
freeglut-mupdf = freeglut.overrideAttrs (old: rec {
|
||||
pname = "freeglut-mupdf";
|
||||
@@ -53,35 +59,46 @@ let
|
||||
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.23.0";
|
||||
version = "1.23.5";
|
||||
pname = "mupdf";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://mupdf.com/downloads/archive/${pname}-${version}-source.tar.gz";
|
||||
sha256 = "sha256-3kFAaS5pMULDEeAwrBVuOO4XXXq2wb4QxcmuljhGFk4=";
|
||||
sha256 = "sha256-blZ5zfqu+cfoniljlSIM4sEz7T3K1RpHhmczbG6uxwY=";
|
||||
};
|
||||
|
||||
patches = [ ./0001-Use-command-v-in-favor-of-which.patch
|
||||
./0002-Add-Darwin-deps.patch
|
||||
./0003-Fix-cpp-build.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
sed -i "s/__OPENJPEG__VERSION__/${openJpegVersion}/" source/fitz/load-jpx.c
|
||||
substituteInPlace Makerules --replace "(shell pkg-config" "(shell $PKG_CONFIG"
|
||||
'';
|
||||
|
||||
# Use shared libraries to decrease size
|
||||
buildFlags = [ "shared" ];
|
||||
patchShebangs scripts/mupdfwrap.py
|
||||
|
||||
# slip in makeFlags when building bindings
|
||||
sed -i -e 's/^\( *make_args *=\)/\1 """ $(echo ''${makeFlagsArray[@]@Q})"""/' scripts/wrap/__main__.py
|
||||
|
||||
# fix libclang unnamed struct format
|
||||
for wrapper in ./scripts/wrap/{cpp,state}.py; do
|
||||
substituteInPlace "$wrapper" --replace 'struct (unnamed' '(unnamed struct'
|
||||
done
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"prefix=$(out)"
|
||||
"shared=yes"
|
||||
"USE_SYSTEM_LIBS=yes"
|
||||
"PKG_CONFIG=${buildPackages.pkg-config}/bin/${buildPackages.pkg-config.targetPrefix}pkg-config"
|
||||
] ++ lib.optionals (!enableX11) [ "HAVE_X11=no" ]
|
||||
++ lib.optionals (!enableGL) [ "HAVE_GLUT=no" ];
|
||||
++ lib.optionals (!enableGL) [ "HAVE_GLUT=no" ]
|
||||
++ lib.optionals (enableOcr) [ "USE_TESSERACT=yes" ];
|
||||
|
||||
nativeBuildInputs = [ pkg-config ]
|
||||
++ lib.optional (enableGL || enableX11) copyDesktopItems
|
||||
++ lib.optionals (enableCxx || enablePython) [ python3 python3.pkgs.setuptools python3.pkgs.libclang ]
|
||||
++ lib.optionals (enablePython) [ which swig ]
|
||||
++ lib.optional stdenv.isDarwin desktopToDarwinBundle;
|
||||
|
||||
buildInputs = [ freetype harfbuzz openjpeg jbig2dec libjpeg gumbo ]
|
||||
@@ -89,11 +106,12 @@ stdenv.mkDerivation rec {
|
||||
++ lib.optionals enableX11 [ libX11 libXext libXi libXrandr ]
|
||||
++ lib.optionals enableCurl [ curl openssl ]
|
||||
++ lib.optionals enableGL (
|
||||
if stdenv.isDarwin then
|
||||
with darwin.apple_sdk.frameworks; [ GLUT OpenGL ]
|
||||
else
|
||||
[ freeglut-mupdf libGLU ]
|
||||
)
|
||||
if stdenv.isDarwin then
|
||||
with darwin.apple_sdk.frameworks; [ GLUT OpenGL ]
|
||||
else
|
||||
[ freeglut-mupdf libGLU ]
|
||||
)
|
||||
++ lib.optionals enableOcr [ leptonica tesseract ]
|
||||
;
|
||||
outputs = [ "bin" "dev" "out" "man" "doc" ];
|
||||
|
||||
@@ -102,6 +120,12 @@ stdenv.mkDerivation rec {
|
||||
rm -rf thirdparty/{curl,freetype,glfw,harfbuzz,jbig2dec,libjpeg,openjpeg,zlib}
|
||||
'';
|
||||
|
||||
postBuild = lib.optionalString (enableCxx || enablePython) ''
|
||||
for dir in build/*; do
|
||||
./scripts/mupdfwrap.py -d "$dir" -b ${lib.optionalString (enableCxx) "01"}${lib.optionalString (enablePython) "23"}
|
||||
done
|
||||
'';
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = pname;
|
||||
@@ -136,7 +160,7 @@ stdenv.mkDerivation rec {
|
||||
Name: mupdf
|
||||
Description: Library for rendering PDF documents
|
||||
Version: ${version}
|
||||
Libs: -L$out/lib -lmupdf -lmupdf-third
|
||||
Libs: -L$out/lib -lmupdf
|
||||
Cflags: -I$dev/include
|
||||
EOF
|
||||
|
||||
@@ -148,7 +172,16 @@ stdenv.mkDerivation rec {
|
||||
ln -s "$bin/bin/mupdf-gl" "$bin/bin/mupdf"
|
||||
'' else lib.optionalString (enableX11) ''
|
||||
ln -s "$bin/bin/mupdf-x11" "$bin/bin/mupdf"
|
||||
'');
|
||||
'') + (lib.optionalString (enableCxx) ''
|
||||
cp platform/c++/include/mupdf/*.h $out/include/mupdf
|
||||
cp build/*/libmupdfcpp.so $out/lib
|
||||
'') + (lib.optionalString (enablePython) (''
|
||||
mkdir -p $out/${python3.sitePackages}/mupdf
|
||||
cp build/*/_mupdf.so $out/${python3.sitePackages}
|
||||
cp build/*/mupdf.py $out/${python3.sitePackages}/mupdf/__init__.py
|
||||
'' + lib.optionalString (stdenv.isDarwin) ''
|
||||
install_name_tool -add_rpath $out/lib $out/${python3.sitePackages}/_mupdf.so
|
||||
''));
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -156,6 +189,7 @@ stdenv.mkDerivation rec {
|
||||
tests = {
|
||||
inherit cups-filters zathura;
|
||||
inherit (python3.pkgs) pikepdf pymupdf;
|
||||
mupdf-all = mupdf.override { enableCurl = true; enableGL = true; enableOcr = true; enableCxx = true; enablePython = true; };
|
||||
};
|
||||
|
||||
updateScript = gitUpdater {
|
||||
@@ -169,7 +203,7 @@ stdenv.mkDerivation rec {
|
||||
description = "Lightweight PDF, XPS, and E-book viewer and toolkit written in portable C";
|
||||
changelog = "https://git.ghostscript.com/?p=mupdf.git;a=blob_plain;f=CHANGES;hb=${version}";
|
||||
license = licenses.agpl3Plus;
|
||||
maintainers = with maintainers; [ vrthra fpletz ];
|
||||
maintainers = with maintainers; [ vrthra fpletz lilyinstarlight ];
|
||||
platforms = platforms.unix;
|
||||
mainProgram = "mupdf";
|
||||
};
|
||||
|
||||
@@ -58,7 +58,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pdf_viewer_build_config.pro \
|
||||
--replace "-lmupdf-threads" "-lgumbo -lharfbuzz -lfreetype -ljbig2dec -ljpeg -lopenjp2"
|
||||
--replace "-lmupdf-threads" "-lgumbo -lharfbuzz -lfreetype -ljbig2dec -ljpeg -lopenjp2" \
|
||||
--replace "-lmupdf-third" ""
|
||||
substituteInPlace pdf_viewer/main.cpp \
|
||||
--replace "/usr/share/sioyek" "$out/share" \
|
||||
--replace "/etc/sioyek" "$out/etc"
|
||||
|
||||
@@ -41,6 +41,10 @@ stdenv.mkDerivation rec {
|
||||
|
||||
PKG_CONFIG_ZATHURA_PLUGINDIR= "lib/zathura";
|
||||
|
||||
postPatch = ''
|
||||
sed -i -e '/^mupdfthird =/d' -e 's/, mupdfthird//g' meson.build
|
||||
'';
|
||||
|
||||
passthru.updateScript = gitUpdater {
|
||||
url = "https://git.pwmt.org/pwmt/zathura-pdf-mupdf.git";
|
||||
};
|
||||
|
||||
@@ -92,11 +92,11 @@ in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "brave";
|
||||
version = "1.59.124";
|
||||
version = "1.60.118";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
||||
sha256 = "sha256-uY9i0TxTsSvOfMA98amxwWpQh1nsRVEgxeSZ2sv8NEU=";
|
||||
sha256 = "sha256-Lo9F7z8gJJRId7LBfVTj18C65swDr8C7Mt1gNmXoSoY=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "helmfile";
|
||||
version = "0.158.0";
|
||||
version = "0.158.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "helmfile";
|
||||
repo = "helmfile";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-768rlhkh8scQbzLvWyjyQSba4zCY/ydYreve+HmcFgw=";
|
||||
sha256 = "sha256-ohf8MUUTZ3YNon12QpSRE80RaHvWsbrZk/slgEVbgoo=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-ip01Uj720Sa11ni+8//U1PkHgiY6ttftvMHdxZgfKLk=";
|
||||
vendorHash = "sha256-rA8egwzvvhArQboWpH2ZZTSJGTyzHUIl6aLusPfr8tw=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{ stdenv, lib, buildGoModule, fetchFromGitHub, installShellFiles, testers, k9s }:
|
||||
{ stdenv, lib, buildGoModule, fetchFromGitHub, installShellFiles, testers, nix-update-script, k9s }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "k9s";
|
||||
version = "0.28.0";
|
||||
version = "0.28.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "derailed";
|
||||
repo = "k9s";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-qFZLl37Y9g9LMRnWacwz46cgjVreLg2WyWZrSj3T4ok=";
|
||||
sha256 = "sha256-3ij77aBNufSEP3wf8wtQ/aBehE45fwrgofCmyXxuyPM=";
|
||||
};
|
||||
|
||||
ldflags = [
|
||||
@@ -20,7 +20,7 @@ buildGoModule rec {
|
||||
|
||||
tags = [ "netgo" ];
|
||||
|
||||
vendorHash = "sha256-TfU1IzTdrWQpK/YjQQImRGeo7byaXUI182xSed+21PU=";
|
||||
vendorHash = "sha256-kgi5ZfbjkSiJ/uZkfpeMhonSt/4sO3RKARpoww1FsTo=";
|
||||
|
||||
# TODO investigate why some config tests are failing
|
||||
doCheck = !(stdenv.isDarwin && stdenv.isAarch64);
|
||||
@@ -28,10 +28,13 @@ buildGoModule rec {
|
||||
preCheck = "export HOME=$(mktemp -d)";
|
||||
# For arch != x86
|
||||
# {"level":"fatal","error":"could not create any of the following paths: /homeless-shelter/.config, /etc/xdg","time":"2022-06-28T15:52:36Z","message":"Unable to create configuration directory for k9s"}
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = k9s;
|
||||
command = "HOME=$(mktemp -d) k9s version -s";
|
||||
inherit version;
|
||||
passthru = {
|
||||
tests.version = testers.testVersion {
|
||||
package = k9s;
|
||||
command = "HOME=$(mktemp -d) k9s version -s";
|
||||
inherit version;
|
||||
};
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kaniko";
|
||||
version = "1.17.0";
|
||||
version = "1.18.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "GoogleContainerTools";
|
||||
repo = "kaniko";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-O4FPz62QnvG+Q2l4Gr/O0XFpkXE2G4RO/G6KNDdanzk=";
|
||||
hash = "sha256-EMBCJc9x4oduFSHMYajc/Pf8nHwRP7qMsvJUbnDkjdk=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kn";
|
||||
version = "1.11.1";
|
||||
version = "1.12.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "knative";
|
||||
repo = "client";
|
||||
rev = "knative-v${version}";
|
||||
sha256 = "sha256-tVUe/EHraPVxikzGilmX2fDCX81lPGPy+Sa9OoVmpYM=";
|
||||
sha256 = "sha256-Xp5PpHIcjh02qesnyrz53yydIAClx0OrBE75Sz5pifg=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -61,8 +61,8 @@ rec {
|
||||
};
|
||||
|
||||
kops_1_28 = mkKops rec {
|
||||
version = "1.28.0";
|
||||
sha256 = "sha256-a/3amvgGG7Gro6K7uIi20jwCo+JAlSuPB3/EUf75hxc=";
|
||||
version = "1.28.1";
|
||||
sha256 = "sha256-jVaSqBdxg70XODwmFIpufJGXqB4r0UfNc/J+ZnjkhDU=";
|
||||
rev = "v${version}";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kube-router";
|
||||
version = "2.0.0";
|
||||
version = "2.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cloudnativelabs";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-7laXw0tC25zPTeLJlB/rX6WVcRFCd6DCB+3EUPnE4cM=";
|
||||
hash = "sha256-Iwo+I1EfclkF4FL8QM3xGkIFxakmelI+hSUepLwfFSw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-qJA6gnb+VIkJD24iq6yyn8r4zYY19ZywcyalwfaTtbo=";
|
||||
vendorHash = "sha256-VjPesQ27GcwnFQrNI+VYzJ4/aahcjASbfMi//Zs/KLM=";
|
||||
|
||||
CGO_ENABLED = 0;
|
||||
|
||||
|
||||
@@ -14,15 +14,15 @@
|
||||
let
|
||||
package = buildGoModule rec {
|
||||
pname = "opentofu";
|
||||
version = "1.6.0-alpha4";
|
||||
version = "1.6.0-alpha5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "opentofu";
|
||||
repo = "opentofu";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-JkYMGD6hNMcMYPXnFUm/6T0EfzeAfG4oQuyqcNv3hVE=";
|
||||
hash = "sha256-nkDDq9/ruiSvACw997DgnswwTVzCaZ5K9oT2bKrBYWA=";
|
||||
};
|
||||
vendorHash = "sha256-kE61inSQ8aCFnPf8plVRUJgruSFVOsogJAbI1zvJdb4=";
|
||||
vendorHash = "sha256-mUakrS3d4UXA5XKyuiIUbGsCAiUMwVbYr8UWOyAtA8Y=";
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
postConfigure = ''
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "starboard";
|
||||
version = "0.15.16";
|
||||
version = "0.15.17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aquasecurity";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-n4gChQQMVdtEKW2WqQAEVtlU2fFxLxBem2yAJzDjx2Q=";
|
||||
sha256 = "sha256-RzwLc29f+u/m1x5R199M8XQQ5nn33ofYi3AyMCimMtA=";
|
||||
# populate values that require us to use git. By doing this in postFetch we
|
||||
# can delete .git afterwards and maintain better reproducibility of the src.
|
||||
leaveDotGit = true;
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "stern";
|
||||
version = "1.26.0";
|
||||
version = "1.27.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stern";
|
||||
repo = "stern";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-86XoYzw1bnIWwGiFgRl9RcZSYrF4byYKnDlJ4QSqXV0=";
|
||||
sha256 = "sha256-W8jGUs63R6QpwuTgzK5yVLhKGXypvKOyCWHT2xdb6eM=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-LLVd9WB8ixH78CHYe0sS4sCDCD+6SQ7PxWr2MHiAOxI=";
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "talosctl";
|
||||
version = "1.5.4";
|
||||
version = "1.5.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "siderolabs";
|
||||
repo = "talos";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-l0cR5BDUREBOOac/b87re5lzq3maz8Tg3msalXV6zAs=";
|
||||
hash = "sha256-15sNXiJ/s3MlrXFXPxA7mQ+/36HRSZF6XKos6XEHi1Y=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-/l0crKz1Pks2yiQ+t/rY2ZxB+jYCymSfoILtHYtQ7K8=";
|
||||
vendorHash = "sha256-fGl16Wsb1tW9+wZBg5yY73t7n+EJ1dVx5IlzY2B8PJA=";
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "tektoncd-cli";
|
||||
version = "0.32.1";
|
||||
version = "0.32.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tektoncd";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-qxKWyNQRWc0krdIfG6Mkn8ZZSkCkb0V41nIUsN5azGo=";
|
||||
sha256 = "sha256-CNjZpiIKkky4BVmz6pN5tdADIt6hlnWY8ig9Rdt6qmI=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -46,6 +46,8 @@ let
|
||||
name = "source-${rev}";
|
||||
inherit owner repo rev hash;
|
||||
};
|
||||
# nixpkgs-update: no auto update
|
||||
# easier to update all providers together
|
||||
|
||||
meta = {
|
||||
inherit homepage;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"aci": {
|
||||
"hash": "sha256-rJ4xiBLrwhYkVPFDo6vZkk+w3v07EuK5a2gn1cbEA6Q=",
|
||||
"hash": "sha256-RcMT8KD2V9JsAoQCznHpWIe+DHcTfKuW6gJlnxw9Kxo=",
|
||||
"homepage": "https://registry.terraform.io/providers/CiscoDevNet/aci",
|
||||
"owner": "CiscoDevNet",
|
||||
"repo": "terraform-provider-aci",
|
||||
"rev": "v2.10.1",
|
||||
"rev": "v2.11.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -28,29 +28,29 @@
|
||||
"vendorHash": "sha256-jK7JuARpoxq7hvq5+vTtUwcYot0YqlOZdtDwq4IqKvk="
|
||||
},
|
||||
"aiven": {
|
||||
"hash": "sha256-3agD22viTP+yntNg2nyYi5OpknXnfI2Jk/xEcvXgia8=",
|
||||
"hash": "sha256-RxqrgekgPkLUTJsrEVfQPTOodv/hNWXFV7c/1Mg6mt0=",
|
||||
"homepage": "https://registry.terraform.io/providers/aiven/aiven",
|
||||
"owner": "aiven",
|
||||
"repo": "terraform-provider-aiven",
|
||||
"rev": "v4.8.2",
|
||||
"rev": "v4.9.3",
|
||||
"spdx": "MIT",
|
||||
"vendorHash": "sha256-sVPby/MLAgU7DfBDACqxvkLWblBhisHcUaoOgR3fMaM="
|
||||
"vendorHash": "sha256-gRcWzrI8qNpP/xxGV6MOYm79h4mH4hH+NW8W2BbGdYw="
|
||||
},
|
||||
"akamai": {
|
||||
"hash": "sha256-4AosPUVnwq8Ptw1O6jT1V8xahmTigGpBqm4JJjzMXus=",
|
||||
"hash": "sha256-Du0ANsAHzV6zKobpiJzdy26JgIW1NRO6fbAHNMCDbaI=",
|
||||
"homepage": "https://registry.terraform.io/providers/akamai/akamai",
|
||||
"owner": "akamai",
|
||||
"repo": "terraform-provider-akamai",
|
||||
"rev": "v5.3.0",
|
||||
"rev": "v5.4.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-Iuz5yxuxRwzj8BvoEXp8ePzaSA/vb7WbffljO1dBtxU="
|
||||
"vendorHash": "sha256-4w3zYSO0GIL636FFuv1X4covAyFHVQ2Ah9N4RUQd7wM="
|
||||
},
|
||||
"alicloud": {
|
||||
"hash": "sha256-ZcING8FOCZE+Wrpr2Gov0WmdjQUZU3K3Moj+0gMVKuQ=",
|
||||
"hash": "sha256-GdoesVK4awNjMMBE6YuLIMh23WyMLKxABWLQ/y5H4kw=",
|
||||
"homepage": "https://registry.terraform.io/providers/aliyun/alicloud",
|
||||
"owner": "aliyun",
|
||||
"repo": "terraform-provider-alicloud",
|
||||
"rev": "v1.211.1",
|
||||
"rev": "v1.212.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -82,66 +82,66 @@
|
||||
"vendorHash": "sha256-q9PO9tMbaXTs3nBLElwU05GcDZMZqNmLVVGDmiSRSfo="
|
||||
},
|
||||
"artifactory": {
|
||||
"hash": "sha256-knQZsPb41JJjtSLV51/c33jlXM5Jud0QIaB/78iFQKs=",
|
||||
"hash": "sha256-F491M8AS+nh4fCPUA/6R9c6MQ6CB29QJsWjk1L5LOwI=",
|
||||
"homepage": "https://registry.terraform.io/providers/jfrog/artifactory",
|
||||
"owner": "jfrog",
|
||||
"repo": "terraform-provider-artifactory",
|
||||
"rev": "v9.7.2",
|
||||
"rev": "v9.8.0",
|
||||
"spdx": "Apache-2.0",
|
||||
"vendorHash": "sha256-H91JHkL32B1arXlqwhhK8M24s3lW3O8gMXd+0waMIKQ="
|
||||
"vendorHash": "sha256-Ne0ed+H6lPEH5uTYS98pLIf+7B1w+HSM77tGGG9E5RQ="
|
||||
},
|
||||
"auth0": {
|
||||
"hash": "sha256-QljqPcupvU7AgVSuarpd0FwLuAPJI9umgsgMXc2/v6w=",
|
||||
"hash": "sha256-ShwoPwEQLNX1+LB84iWrS5VopKt8kao35/iVVGLDZck=",
|
||||
"homepage": "https://registry.terraform.io/providers/auth0/auth0",
|
||||
"owner": "auth0",
|
||||
"repo": "terraform-provider-auth0",
|
||||
"rev": "v0.50.0",
|
||||
"rev": "v1.1.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-+ZYbaQICwcABnJE9p6Lwk0gXqeHfO/TLkvwvLD9v8ng="
|
||||
"vendorHash": "sha256-fD3epndk6L+zjtUNalis9VJCxWKOBScYGHkUFRnLNLQ="
|
||||
},
|
||||
"avi": {
|
||||
"hash": "sha256-xis3uVCK+dck6R5ru8suNQov9qTLwLIdeQCAR9Jwqcs=",
|
||||
"hash": "sha256-EGpHajrTTOx7LrFHzsrrkGMqsuUEJLJAN6AJ48QdJis=",
|
||||
"homepage": "https://registry.terraform.io/providers/vmware/avi",
|
||||
"owner": "vmware",
|
||||
"proxyVendor": true,
|
||||
"repo": "terraform-provider-avi",
|
||||
"rev": "v22.1.4",
|
||||
"rev": "v22.1.5",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-vORXHX6VKP/JHP/InB2b9Rqej2JIIDOzS3r05wO2I+c="
|
||||
"vendorHash": "sha256-1+VDh9hR/2Knl5oV9ZQiPCt+F7VmaTU4MI1+o8Msu8M="
|
||||
},
|
||||
"aviatrix": {
|
||||
"hash": "sha256-T/GPJBcKxWhBxB7fVACkkwRm6dqixQpkAzi6UYw6TRw=",
|
||||
"hash": "sha256-PRYtkq4CLEbUJ7YOSlvDyz+z4icLi0DBkDCTs/tNoIQ=",
|
||||
"homepage": "https://registry.terraform.io/providers/AviatrixSystems/aviatrix",
|
||||
"owner": "AviatrixSystems",
|
||||
"repo": "terraform-provider-aviatrix",
|
||||
"rev": "v3.1.2",
|
||||
"rev": "v3.1.3",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"aws": {
|
||||
"hash": "sha256-tiSCEHOjhOXW4XcQ3FrkNg6AVtFrDLqVe0fB3o1KAmU=",
|
||||
"hash": "sha256-4ecgttYOAQ/I+ma1eSPomiJ4rdT9F1gtQUu4OS4stlQ=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/aws",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-aws",
|
||||
"rev": "v5.22.0",
|
||||
"rev": "v5.25.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-pRnQUCuAk02dM5NozNirH7c+meewwf0DMjwZlazD30Q="
|
||||
"vendorHash": "sha256-twXEX5emBPQUMQcf11S9ZKfuaGv74LtXUE2LxqmN2xo="
|
||||
},
|
||||
"azuread": {
|
||||
"hash": "sha256-aTIxJgKk0bRvJyONn7iGLbsEbfe0Vzmtk+bTj3tZFPI=",
|
||||
"hash": "sha256-PwHnyw0sZurUMLWKUmC3ULB8bc9adIU5C9WzVqBsLBA=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/azuread",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-azuread",
|
||||
"rev": "v2.43.0",
|
||||
"rev": "v2.45.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"azurerm": {
|
||||
"hash": "sha256-jgnWSOwcocdWS531sjOFYiNx43Orx78WfS0glHRznfw=",
|
||||
"hash": "sha256-sGZvfjq2F1BjvqgYel0P/ofGmHXv8c7OhfXGGoXB2+Q=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/azurerm",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-azurerm",
|
||||
"rev": "v3.77.0",
|
||||
"rev": "v3.80.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -155,11 +155,11 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"baiducloud": {
|
||||
"hash": "sha256-h4CWzwvxRhA0DYjkVC44/hbwQMZ6uWGQqOqaM0mkYt8=",
|
||||
"hash": "sha256-N2WfSCro4jVZSXTe41hs4uQsmnhbsfl/J2o51YEOsB4=",
|
||||
"homepage": "https://registry.terraform.io/providers/baidubce/baiducloud",
|
||||
"owner": "baidubce",
|
||||
"repo": "terraform-provider-baiducloud",
|
||||
"rev": "v1.19.19",
|
||||
"rev": "v1.19.20",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -173,13 +173,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"bitbucket": {
|
||||
"hash": "sha256-En53+Lj7cQxzkKgXDPWNptVbg0wMAc5WRmsilBOlgEM=",
|
||||
"hash": "sha256-dO+2sg+4Xg+9fxKe/hGF0EBS4yGZAzhIBgcBhT/VDWk=",
|
||||
"homepage": "https://registry.terraform.io/providers/DrFaust92/bitbucket",
|
||||
"owner": "DrFaust92",
|
||||
"repo": "terraform-provider-bitbucket",
|
||||
"rev": "v2.35.0",
|
||||
"rev": "v2.37.2",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-xaa/NAJfKlSM4P9o4xNsJhL5ZyUGNYMC9/WbCqMKiLM="
|
||||
"vendorHash": "sha256-2s8ATVlSVa6n/OSay0oTdJXGdfnCwX6da3Pcu/xYcPY="
|
||||
},
|
||||
"brightbox": {
|
||||
"hash": "sha256-pwFbCP+qDL/4IUfbPRCkddkbsEEeAu7Wp12/mDL0ABA=",
|
||||
@@ -191,22 +191,22 @@
|
||||
"vendorHash": "sha256-/dOiXO2aPkuZaFiwv/6AXJdIADgx8T7eOwvJfBBoqg8="
|
||||
},
|
||||
"buildkite": {
|
||||
"hash": "sha256-WVDbC8zLKrKi3dvpYmu8n0W/+YJKrpyQhA2ubcu76J8=",
|
||||
"hash": "sha256-+H2ivPSrNBybUSYX2sLL4V8uqLTsJZp7AN1AYQQ/f90=",
|
||||
"homepage": "https://registry.terraform.io/providers/buildkite/buildkite",
|
||||
"owner": "buildkite",
|
||||
"repo": "terraform-provider-buildkite",
|
||||
"rev": "v1.0.4",
|
||||
"rev": "v1.0.6",
|
||||
"spdx": "MIT",
|
||||
"vendorHash": "sha256-UleQAfbWR4Zv0U+LgDs9JFcqTN5yLwHGw5EUUi8SnUs="
|
||||
"vendorHash": "sha256-GzHqmSS0yWH+pNGA7ZbfpRkjUsc2F9vlJ9XEOjKxFS4="
|
||||
},
|
||||
"checkly": {
|
||||
"hash": "sha256-AFufcitZh9UwkO1p52PjjZEpYxLLdtLWQlUJm4PJjWI=",
|
||||
"hash": "sha256-HfmEh+7RmCIjBvacBW6sX3PL295oHOo8Z+5YsFyl0/4=",
|
||||
"homepage": "https://registry.terraform.io/providers/checkly/checkly",
|
||||
"owner": "checkly",
|
||||
"repo": "terraform-provider-checkly",
|
||||
"rev": "v1.7.1",
|
||||
"rev": "v1.7.2",
|
||||
"spdx": null,
|
||||
"vendorHash": "sha256-8zzuU5ddu/1zx72soBLIrvpWHy+Yl3bsuc+IksTBfM4="
|
||||
"vendorHash": "sha256-iAAsTiBX1/EOCFgLv7bmTVW5ga5ef4GIEJSHo4w76Tg="
|
||||
},
|
||||
"ciscoasa": {
|
||||
"hash": "sha256-xzc44FEy2MPo51Faq/VFwg411JK9e0kQucpt0vdN8yg=",
|
||||
@@ -227,13 +227,13 @@
|
||||
"vendorHash": "sha256-dR/7rtDNj9bIRh6JMwXhWvLiAhXfrGnqS9QvfDH9eGw="
|
||||
},
|
||||
"cloudflare": {
|
||||
"hash": "sha256-xnAEEKKHbVeITO1RRCyt2/LEDlqUqCf6jDHShhKLDwU=",
|
||||
"hash": "sha256-FdKz6EmpxhqM+wcCAuwTCOCxhV0LI4+7d12fNxOSd7Q=",
|
||||
"homepage": "https://registry.terraform.io/providers/cloudflare/cloudflare",
|
||||
"owner": "cloudflare",
|
||||
"repo": "terraform-provider-cloudflare",
|
||||
"rev": "v4.17.0",
|
||||
"rev": "v4.19.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-i5pO4dY3dnNy4XlIPk5CMYMqXzKyfwQWjettF5vPXr0="
|
||||
"vendorHash": "sha256-PwIFz2T+iXR6+A/yrF4+kxWr2SxLDUY8XDO5aTeg89M="
|
||||
},
|
||||
"cloudfoundry": {
|
||||
"hash": "sha256-yEqsdgTSlwppt6ILRZQ6Epyh5WVN6Il3xsBOa/NfIdo=",
|
||||
@@ -254,11 +254,11 @@
|
||||
"vendorHash": "sha256-h4CO3sC41RPSmkTlWUCiRvQ1NRZkT2v1uHFOemvBN8s="
|
||||
},
|
||||
"cloudscale": {
|
||||
"hash": "sha256-OK5djIzIqS4qrVtgMMCiVqslO/rftTc/ft/rNQCxpOM=",
|
||||
"hash": "sha256-SDivLkP1y/qBVNSiyCjV6zPTbLUplxzD3gNxzkjC51M=",
|
||||
"homepage": "https://registry.terraform.io/providers/cloudscale-ch/cloudscale",
|
||||
"owner": "cloudscale-ch",
|
||||
"repo": "terraform-provider-cloudscale",
|
||||
"rev": "v4.2.1",
|
||||
"rev": "v4.2.2",
|
||||
"spdx": "MIT",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -273,13 +273,13 @@
|
||||
"vendorHash": "sha256-UJHDX/vx3n/RTuQ50Y6TAhpEEFk9yBoaz8yK02E8Fhw="
|
||||
},
|
||||
"consul": {
|
||||
"hash": "sha256-2oujZd7tqvMnp48m3bs45p5dRC7U5a7hsiS5qBuPUHU=",
|
||||
"hash": "sha256-mGLI/TAovyBvowI6AwRPcmYqwnPEe4ibDhFj1t7I+oM=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/consul",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-consul",
|
||||
"rev": "v2.18.0",
|
||||
"rev": "v2.19.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-0SRbKFKl1lfiiMDZW20ak9m09T3tSOH/fc+UwGeXmuk="
|
||||
"vendorHash": "sha256-sOnEgGTboK+vbNQYUOP0TxLe2JsqBUFo6/k55paIsmM="
|
||||
},
|
||||
"ct": {
|
||||
"hash": "sha256-c1cqTfMlZ5fXDNMYLsk4447X0p/qIQYvRTqVY8cSs+E=",
|
||||
@@ -291,13 +291,13 @@
|
||||
"vendorHash": "sha256-ZCMSmOCPEMxCSpl3DjIUGPj1W/KNJgyjtHpmQ19JquA="
|
||||
},
|
||||
"datadog": {
|
||||
"hash": "sha256-Etp25ZcKy+13SbsEtpVnNgF8GpYhO27JwlV8wRkaSOo=",
|
||||
"hash": "sha256-IU9eBWYqI/a9EsYhI6kPom1PK/H403Dxr7eSXYFL5Do=",
|
||||
"homepage": "https://registry.terraform.io/providers/DataDog/datadog",
|
||||
"owner": "DataDog",
|
||||
"repo": "terraform-provider-datadog",
|
||||
"rev": "v3.31.0",
|
||||
"rev": "v3.32.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-0sfHf+aBV2vVScbyCPFtI6wj5KE6kNoioh4tyHhNOKc="
|
||||
"vendorHash": "sha256-C+N+LQ6qjpRrUNzCaiauIor+noD+0igTfR7RnrZdNwU="
|
||||
},
|
||||
"dexidp": {
|
||||
"hash": "sha256-Sy/xkhuNTocCoD7Nlq+pbvYiat4du4vZtOOZD2Ig3OA=",
|
||||
@@ -318,11 +318,11 @@
|
||||
"vendorHash": "sha256-BpXhKjfxyCLdGRHn1GexW0MoLj4/C6Bn7scZ76JARxQ="
|
||||
},
|
||||
"digitalocean": {
|
||||
"hash": "sha256-i8jB3eLrhzvTq6ibc2u8XLK3SX41NU3dY1aGTwJtEq0=",
|
||||
"hash": "sha256-8T2xWKKoPU54ukMClva/fgZXGDMh92Oi0IacjnbgCCI=",
|
||||
"homepage": "https://registry.terraform.io/providers/digitalocean/digitalocean",
|
||||
"owner": "digitalocean",
|
||||
"repo": "terraform-provider-digitalocean",
|
||||
"rev": "v2.30.0",
|
||||
"rev": "v2.32.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -345,13 +345,13 @@
|
||||
"vendorHash": "sha256-SvyeMKuAJ4vu++7Fx0hutx3vQvgf1sh1PFSLPRqJPjw="
|
||||
},
|
||||
"dnsimple": {
|
||||
"hash": "sha256-07YEICB3brMzq2ft6gcovqFZ5OYmBR0IY6X67StAV/g=",
|
||||
"hash": "sha256-6QubFsPp3sOmCSgIpRH+x+Q9YDDnOnfX5UzV+iy3uh4=",
|
||||
"homepage": "https://registry.terraform.io/providers/dnsimple/dnsimple",
|
||||
"owner": "dnsimple",
|
||||
"repo": "terraform-provider-dnsimple",
|
||||
"rev": "v1.3.0",
|
||||
"rev": "v1.3.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-Ne5qnxU/n8y71fIegLYsQQxCqmVMT8RwHc+TXGshAJA="
|
||||
"vendorHash": "sha256-TTRxLal+oao8UtZpeZ4/HdR99WHGXARZWKqy1baT/mE="
|
||||
},
|
||||
"docker": {
|
||||
"hash": "sha256-UyHOI8C0eDV5YllAi9clHp/CEldHjIp3FHHMPy1rK58=",
|
||||
@@ -381,20 +381,20 @@
|
||||
"vendorHash": "sha256-oVTanZpCWs05HwyIKW2ajiBPz1HXOFzBAt5Us+EtTRw="
|
||||
},
|
||||
"equinix": {
|
||||
"hash": "sha256-cUHVp4oVQ2e1d6kkByI1QsvODZCvkbw0goW3BjRk5Xw=",
|
||||
"hash": "sha256-7RnThTuYTO1W0nBZAilUB5WOp8Rng14aNBiax6M9FwQ=",
|
||||
"homepage": "https://registry.terraform.io/providers/equinix/equinix",
|
||||
"owner": "equinix",
|
||||
"repo": "terraform-provider-equinix",
|
||||
"rev": "v1.18.0",
|
||||
"rev": "v1.19.0",
|
||||
"spdx": "MIT",
|
||||
"vendorHash": "sha256-woYNslCzOOg9m8/Dfk42ZAWJDi8HZeqyVQw1MuRhoOE="
|
||||
"vendorHash": "sha256-nq380VsSog+nsL+U1KXkVUJqq3t4dJkrfbBH8tHm48E="
|
||||
},
|
||||
"exoscale": {
|
||||
"hash": "sha256-KtuGrHPSNSyuwAXYpOHiVX2svWj5+6EkXb/wZAnW/6E=",
|
||||
"hash": "sha256-Fc2/IT8L1jn0Oh8zT0C/Am4eoumQe0VRYqBDc/enEuY=",
|
||||
"homepage": "https://registry.terraform.io/providers/exoscale/exoscale",
|
||||
"owner": "exoscale",
|
||||
"repo": "terraform-provider-exoscale",
|
||||
"rev": "v0.53.0",
|
||||
"rev": "v0.53.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -417,13 +417,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"flexibleengine": {
|
||||
"hash": "sha256-DKbUjKwaJtBU0zFBz+C4hAKIys//mMKYBy0QFLHDY8s=",
|
||||
"hash": "sha256-+RAuFh88idG49nV4HVPgaGxADw/k/sUSTqrzWjf15tw=",
|
||||
"homepage": "https://registry.terraform.io/providers/FlexibleEngineCloud/flexibleengine",
|
||||
"owner": "FlexibleEngineCloud",
|
||||
"repo": "terraform-provider-flexibleengine",
|
||||
"rev": "v1.42.0",
|
||||
"rev": "v1.43.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-RqYzqKPzb5GcrzHnEDZC7GaBt1zP8g28Wo3WNAe07Ck="
|
||||
"vendorHash": "sha256-yin+UVMkqIxMSoVB4TD6Nv8F24FnEGZP5PFVpmuO2Fg="
|
||||
},
|
||||
"fortios": {
|
||||
"hash": "sha256-RpcKMndbO3wbkHmrINkbsQ+UeFsZrQ7x02dv8ZpFMec=",
|
||||
@@ -445,42 +445,42 @@
|
||||
"vendorHash": "sha256-uWTY8cFztXFrQQ7GW6/R+x9M6vHmsb934ldq+oeW5vk="
|
||||
},
|
||||
"github": {
|
||||
"hash": "sha256-Np7aecFKdYqRPgdSfca5t7ExBvjx9zDSZJTk/GcFCLM=",
|
||||
"hash": "sha256-hlUVYgisdMa60XWb4z3erZS/8QBHEFGrjREsWh4azEE=",
|
||||
"homepage": "https://registry.terraform.io/providers/integrations/github",
|
||||
"owner": "integrations",
|
||||
"repo": "terraform-provider-github",
|
||||
"rev": "v5.40.0",
|
||||
"rev": "v5.42.0",
|
||||
"spdx": "MIT",
|
||||
"vendorHash": null
|
||||
},
|
||||
"gitlab": {
|
||||
"hash": "sha256-9fY1TTKQ02OkCRsMVE+NqsUiWga8lF38/5sB1YxKAEg=",
|
||||
"hash": "sha256-eONOqinRXs9lPz4d8WDb9lA0XcJuNqzgsZrmJAZ42t8=",
|
||||
"homepage": "https://registry.terraform.io/providers/gitlabhq/gitlab",
|
||||
"owner": "gitlabhq",
|
||||
"repo": "terraform-provider-gitlab",
|
||||
"rev": "v16.4.1",
|
||||
"rev": "v16.5.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-tMFNjdXIlyBELrLRKkJySXlQbuHDybVhSTw/J3dXZ7w="
|
||||
"vendorHash": "sha256-2t50Gsyf8gxG/byjgNyw5GEturU0MgBvZuJyc49s4t0="
|
||||
},
|
||||
"google": {
|
||||
"hash": "sha256-9svwUHvA5fuYjfiFWQLQs1yOejYprsiSF+58nPWN/Vs=",
|
||||
"hash": "sha256-o4tyG0Q4sqBktreYEKJ+1QlNXx/BEPmAGOTTzTcFnP8=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/google",
|
||||
"owner": "hashicorp",
|
||||
"proxyVendor": true,
|
||||
"repo": "terraform-provider-google",
|
||||
"rev": "v5.2.0",
|
||||
"rev": "v5.6.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-aVJuAYF5S/fkFHRk34HIN9p+P9MgHGh0RpeqC3/gchY="
|
||||
"vendorHash": "sha256-9nz3VLTi4RfGBDAE7JBUWXrJRajwAyxoeEH+VSP0wyQ="
|
||||
},
|
||||
"google-beta": {
|
||||
"hash": "sha256-z8b77hlIcB1Uthkl+aWQH9bkkRb+A9Y/EEUxNTU4wR4=",
|
||||
"hash": "sha256-+5Fm/aT90bD6RpQrUGjmpmahPTjOfsRJAaZuZsrPQn4=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/google-beta",
|
||||
"owner": "hashicorp",
|
||||
"proxyVendor": true,
|
||||
"repo": "terraform-provider-google-beta",
|
||||
"rev": "v5.2.0",
|
||||
"rev": "v5.6.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-aVJuAYF5S/fkFHRk34HIN9p+P9MgHGh0RpeqC3/gchY="
|
||||
"vendorHash": "sha256-9nz3VLTi4RfGBDAE7JBUWXrJRajwAyxoeEH+VSP0wyQ="
|
||||
},
|
||||
"googleworkspace": {
|
||||
"hash": "sha256-dedYnsKHizxJZibuvJOMbJoux0W6zgKaK5fxIofKqCY=",
|
||||
@@ -492,13 +492,13 @@
|
||||
"vendorHash": "sha256-fqVBnAivVekV+4tpkl+E6eNA3wi8mhLevJRCs3W7L2g="
|
||||
},
|
||||
"grafana": {
|
||||
"hash": "sha256-3KVJ7mP6ehJnU0DxzR9rvMylw8VNFTTM+C/NBz2C1+E=",
|
||||
"hash": "sha256-8GBhJvv0JYHh98l1IRMsodYlFAkW5Lt1dJ03mPzTcts=",
|
||||
"homepage": "https://registry.terraform.io/providers/grafana/grafana",
|
||||
"owner": "grafana",
|
||||
"repo": "terraform-provider-grafana",
|
||||
"rev": "v2.3.3",
|
||||
"rev": "v2.6.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-kYNlClQoeU4s8j2dk1x33YtNkjs8a2KMPkzm4z/e0Z4="
|
||||
"vendorHash": "sha256-DOkDVQPTwB0l1VlfbvwJYiKRi/GE85cPzaY4JKnewaA="
|
||||
},
|
||||
"gridscale": {
|
||||
"hash": "sha256-gyUDWG7h3fRU0l0uyfmxd0Oi1TtQHnJutqahDoPZWgM=",
|
||||
@@ -510,13 +510,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"hcloud": {
|
||||
"hash": "sha256-kuC4tm8ob9bg7iLcUaGEHMYh6XaZp4rQiVlnbo1Xzek=",
|
||||
"hash": "sha256-9yW3VbxtD+oSxmc2R9yzZisMTAOwjzyCzvZBRdFdH/w=",
|
||||
"homepage": "https://registry.terraform.io/providers/hetznercloud/hcloud",
|
||||
"owner": "hetznercloud",
|
||||
"repo": "terraform-provider-hcloud",
|
||||
"rev": "v1.42.1",
|
||||
"rev": "v1.44.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-r8njRjQGYESeHuD8pF6rRUe1j2VVMwoDITFi2StC5bk="
|
||||
"vendorHash": "sha256-oGABaZRnwZdS5qPmksT4x7Tin2WpU2Jk9pejeHbghm8="
|
||||
},
|
||||
"helm": {
|
||||
"hash": "sha256-pgV1xXhg8WIyF4RhJwAenTI6eAmtINveO8zqrKzLajQ=",
|
||||
@@ -565,11 +565,11 @@
|
||||
"vendorHash": "sha256-hxT9mpKifb63wlCUeUzgVo4UB2TnYZy9lXF4fmGYpc4="
|
||||
},
|
||||
"huaweicloud": {
|
||||
"hash": "sha256-/dZ2WHzCF8vAFmpg0eUaCSzMy+5v7D24NPkJhCrjhLw=",
|
||||
"hash": "sha256-V6Ar0MXK7i927eDq8uvHZc3ivVonK9KBKqSZCCESgq0=",
|
||||
"homepage": "https://registry.terraform.io/providers/huaweicloud/huaweicloud",
|
||||
"owner": "huaweicloud",
|
||||
"repo": "terraform-provider-huaweicloud",
|
||||
"rev": "v1.56.1",
|
||||
"rev": "v1.57.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -592,13 +592,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"ibm": {
|
||||
"hash": "sha256-38AkbG68901Lc66B2nk+9FAWHQ9WZ0w0zAWseWbyOOw=",
|
||||
"hash": "sha256-Od+aunGMjcQ4AF60dxWNAUVMQiAkFMSAquOhUp3icug=",
|
||||
"homepage": "https://registry.terraform.io/providers/IBM-Cloud/ibm",
|
||||
"owner": "IBM-Cloud",
|
||||
"repo": "terraform-provider-ibm",
|
||||
"rev": "v1.58.1",
|
||||
"rev": "v1.59.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-8/5baDHKV5Plm1DnNtyrh7FgMjT9zr9ifxTosi7o5sg="
|
||||
"vendorHash": "sha256-qp1TZmDr7X+2MCdlGTBLubJ7hF5Y9jqoFaj5mxgNLHE="
|
||||
},
|
||||
"icinga2": {
|
||||
"hash": "sha256-Y/Oq0aTzP+oSKPhHiHY9Leal4HJJm7TNDpcdqkUsCmk=",
|
||||
@@ -610,11 +610,11 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"infoblox": {
|
||||
"hash": "sha256-655WGpwE1BmWRdikvHtxxX8u4kOZ9cSLCZDr6QGfn5Y=",
|
||||
"hash": "sha256-rjqtqfmQQoJIhMtP6sFOu/XfJ691E77P0Bf9gjml2yg=",
|
||||
"homepage": "https://registry.terraform.io/providers/infobloxopen/infoblox",
|
||||
"owner": "infobloxopen",
|
||||
"repo": "terraform-provider-infoblox",
|
||||
"rev": "v2.4.1",
|
||||
"rev": "v2.5.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -691,13 +691,13 @@
|
||||
"vendorHash": "sha256-dHzyNvzxNltCAmwYWQHOEKkhgfylUUhOtBPiBqIS1Qg="
|
||||
},
|
||||
"linode": {
|
||||
"hash": "sha256-yzEbkK2fOXNkuMYjtsXXRI3tV+OngzVeJoDiu+iTr5w=",
|
||||
"hash": "sha256-ScuHyfnco5Xz6HrZ9YPQLdWKo1Hqu7LRteLHH2JxHXQ=",
|
||||
"homepage": "https://registry.terraform.io/providers/linode/linode",
|
||||
"owner": "linode",
|
||||
"repo": "terraform-provider-linode",
|
||||
"rev": "v2.9.2",
|
||||
"rev": "v2.9.7",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-G4A1nCM2R/6yWSUP+OSHrd6k6bz0Cp7wc40IU2AnS5s="
|
||||
"vendorHash": "sha256-5ALsYOuWLFGbIR3yVKmPeb0tQnx63p4WC98WdcxXeZ4="
|
||||
},
|
||||
"linuxbox": {
|
||||
"hash": "sha256-MzasMVtXO7ZeZ+qEx2Z+7881fOIA0SFzSvXVHeEROtg=",
|
||||
@@ -718,20 +718,20 @@
|
||||
"vendorHash": "sha256-ZjS40Xc8y2UBPn4rX3EgRoSapRvMEeVMGZE6z9tpsAQ="
|
||||
},
|
||||
"lxd": {
|
||||
"hash": "sha256-0/nIdfCsmPaUkGkSkmWWioc6RZGTb0XWtvprjuDg2gU=",
|
||||
"hash": "sha256-2th4/2uLFnmSFKI94bSSt4OSX9wiML/OkThR6SbUCPE=",
|
||||
"homepage": "https://registry.terraform.io/providers/terraform-lxd/lxd",
|
||||
"owner": "terraform-lxd",
|
||||
"repo": "terraform-provider-lxd",
|
||||
"rev": "v1.10.2",
|
||||
"rev": "v1.10.4",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-DMOyP8BX1502a+Hd7rwhpV2/nT0ECFKmKDPtWE6o0IM="
|
||||
"vendorHash": "sha256-gcXX4XIyY2X7ZSDMVVzGL/ltaf8Z1/Zx8oJo/IDrIBA="
|
||||
},
|
||||
"mailgun": {
|
||||
"hash": "sha256-r1E2Y5JRu77T29ebUNTXUEypnrsfYYbBhvpKZGt5T9w=",
|
||||
"hash": "sha256-fg1I1lt2cA0DgxLnxYrm0V55pD9AkpAdonXVGYeFZwQ=",
|
||||
"homepage": "https://registry.terraform.io/providers/wgebis/mailgun",
|
||||
"owner": "wgebis",
|
||||
"repo": "terraform-provider-mailgun",
|
||||
"rev": "v0.7.4",
|
||||
"rev": "v0.7.5",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-yUXxq8NTOv8ZmWp0WiIID2cRU6AZiItIs99uGZpt9dc="
|
||||
},
|
||||
@@ -754,13 +754,13 @@
|
||||
"vendorHash": "sha256-QxbZv6YMa5/I4bTeQBNdmG3EKtLEmstnH7HMiZzFJrI="
|
||||
},
|
||||
"minio": {
|
||||
"hash": "sha256-1Qnjn/13h+r7VeFPwpKMzQiK5EzhSghxHCOyahWXbVs=",
|
||||
"hash": "sha256-i3YYBffP7Jp3f0wN1ZwP+c7C8WN8EKUh7JOKzbH0R/I=",
|
||||
"homepage": "https://registry.terraform.io/providers/aminueza/minio",
|
||||
"owner": "aminueza",
|
||||
"repo": "terraform-provider-minio",
|
||||
"rev": "v1.18.0",
|
||||
"spdx": "Apache-2.0",
|
||||
"vendorHash": "sha256-cufN4QYXE+bqDKLUV+Rdslr5CgbI0DvoFVWVQiBVomw="
|
||||
"rev": "v2.0.1",
|
||||
"spdx": "AGPL-3.0",
|
||||
"vendorHash": "sha256-aIIkj0KpkIR+CsgPk4NCfhG7BMKaAQZy/49unQx4nWQ="
|
||||
},
|
||||
"mongodbatlas": {
|
||||
"hash": "sha256-SMIc78haJiH0XdTr9OBGWOcvXfYQW9thcNkCOxmNxDw=",
|
||||
@@ -790,13 +790,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"newrelic": {
|
||||
"hash": "sha256-b9wHTSxDT657qTfv73O8A2YnwJPSWYONrElcyYyeH60=",
|
||||
"hash": "sha256-6SwAieZc7Qe8r+olZUUV46myax/M57t4VfWDrXMK8Hk=",
|
||||
"homepage": "https://registry.terraform.io/providers/newrelic/newrelic",
|
||||
"owner": "newrelic",
|
||||
"repo": "terraform-provider-newrelic",
|
||||
"rev": "v3.27.3",
|
||||
"rev": "v3.27.7",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-qZqmw55Fsn3XaDvyorouy391iM6KXQxX5gJGrKR3URU="
|
||||
"vendorHash": "sha256-9+AcCcAX/oEnljMCuJQ9B/aRkAB/074r4G/XWnLv/KU="
|
||||
},
|
||||
"nomad": {
|
||||
"hash": "sha256-urxTfyBv/vuX3Xowca625aNEsU4sxkmd24tis2YjR3Y=",
|
||||
@@ -827,31 +827,31 @@
|
||||
},
|
||||
"nutanix": {
|
||||
"deleteVendor": true,
|
||||
"hash": "sha256-TV2jp7zmBdBpKGBrGfluUTFRUa2wq9MnTi+nfjqRG+4=",
|
||||
"hash": "sha256-Okjb4MS28gY1UdYA8+qs45VV5QcGabvMn5bc+nhzbt4=",
|
||||
"homepage": "https://registry.terraform.io/providers/nutanix/nutanix",
|
||||
"owner": "nutanix",
|
||||
"repo": "terraform-provider-nutanix",
|
||||
"rev": "v1.9.3",
|
||||
"rev": "v1.9.4",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-LRIfxQGwG988HE5fftGl6JmBG7tTknvmgpm4Fu1NbWI="
|
||||
},
|
||||
"oci": {
|
||||
"hash": "sha256-gMVGLURSXzT9TXXHJlL3F5WN+XI4o22bkPFh/jPtUrw=",
|
||||
"hash": "sha256-gk5KegQozeDg6ZqYsy+DxMczBOKxH0v3mHFRau/alFY=",
|
||||
"homepage": "https://registry.terraform.io/providers/oracle/oci",
|
||||
"owner": "oracle",
|
||||
"repo": "terraform-provider-oci",
|
||||
"rev": "v5.17.0",
|
||||
"rev": "v5.20.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"okta": {
|
||||
"hash": "sha256-0UvJCEHoCsONskvihQidGo834qEZR1hZMczNF+C7fqw=",
|
||||
"hash": "sha256-LCOuRsAX0ftacS0ecNQpYXKKumfCZ9a10bSuRJtD20E=",
|
||||
"homepage": "https://registry.terraform.io/providers/okta/okta",
|
||||
"owner": "okta",
|
||||
"repo": "terraform-provider-okta",
|
||||
"rev": "v4.5.0",
|
||||
"rev": "v4.6.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-LwExX17GlyzxMcn95c2T9FawoS03fHH58RmHoPTsjBA="
|
||||
"vendorHash": "sha256-ZhF1c4cez43cCumU+PYufpEcprRDxY7hVCNQHdIEDtI="
|
||||
},
|
||||
"oktaasa": {
|
||||
"hash": "sha256-2LhxgowqKvDDDOwdznusL52p2DKP+UiXALHcs9ZQd0U=",
|
||||
@@ -872,58 +872,58 @@
|
||||
"vendorHash": "sha256-W7UGOtyFsIMXPqFDnde2XlzU7klR7Fs00mSuJ9ID20A="
|
||||
},
|
||||
"openstack": {
|
||||
"hash": "sha256-Iauu0sQf8wq4Ev8JflxrthXYe99YDnt5ZzWQ/q3Bjfw=",
|
||||
"hash": "sha256-sFv7n5tf3aAwe6R1XeJdU3XMDF9ZMCM3t/vVLegZaXM=",
|
||||
"homepage": "https://registry.terraform.io/providers/terraform-provider-openstack/openstack",
|
||||
"owner": "terraform-provider-openstack",
|
||||
"repo": "terraform-provider-openstack",
|
||||
"rev": "v1.52.1",
|
||||
"rev": "v1.53.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-NnB8deqIeiB66Kba9LWT62fyI23HL57VcsTickoTRwI="
|
||||
"vendorHash": "sha256-hVsqlWTZoYAMWMeismKhiqFxSFbkTBSIEMSLZx5stnQ="
|
||||
},
|
||||
"opentelekomcloud": {
|
||||
"hash": "sha256-ozaIQiYpo0M0yuFSk70kw3tPZbEhZjHkq1FzUKOZP4Q=",
|
||||
"hash": "sha256-3p5R8thq5iWaeAsvqoA03UK6hzVGi4DlEe3PHJBP3xA=",
|
||||
"homepage": "https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud",
|
||||
"owner": "opentelekomcloud",
|
||||
"repo": "terraform-provider-opentelekomcloud",
|
||||
"rev": "v1.35.10",
|
||||
"rev": "v1.35.11",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-cFZO7GSv2+FpSZcYNRbuRkX3DJ7m0JwW/TCPo41F800="
|
||||
"vendorHash": "sha256-MD3tywosRUbkzeXQA2yTHr3p8RJlzNZVbrlTesDHpMI="
|
||||
},
|
||||
"opsgenie": {
|
||||
"hash": "sha256-3iPprhDd9nnF9NnaGHp8rQ57rvA1jxZuSjIFsfGtEMU=",
|
||||
"hash": "sha256-IIQtbRKfLbJz5J/T/YzVWSivMeuyKO6iKlXmbrslpQo=",
|
||||
"homepage": "https://registry.terraform.io/providers/opsgenie/opsgenie",
|
||||
"owner": "opsgenie",
|
||||
"repo": "terraform-provider-opsgenie",
|
||||
"rev": "v0.6.32",
|
||||
"rev": "v0.6.34",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"ovh": {
|
||||
"hash": "sha256-FvWA1uS70sterPTSBMBclrMtNjxWPZPTgSuEdslUgvg=",
|
||||
"hash": "sha256-s8Tg1j47J0sj9Jt98mS4rFgtGl4uFIfdaQDNXOV8Bbg=",
|
||||
"homepage": "https://registry.terraform.io/providers/ovh/ovh",
|
||||
"owner": "ovh",
|
||||
"repo": "terraform-provider-ovh",
|
||||
"rev": "v0.34.0",
|
||||
"rev": "v0.35.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"pagerduty": {
|
||||
"hash": "sha256-h1yy/TfiqYgAmQ5A2vn3WFrgI70JDX7G/3289tfFTHc=",
|
||||
"hash": "sha256-4TplBhRU4k7ucDCsgWcqEok9tOADuZAwqOonAY+eLdY=",
|
||||
"homepage": "https://registry.terraform.io/providers/PagerDuty/pagerduty",
|
||||
"owner": "PagerDuty",
|
||||
"repo": "terraform-provider-pagerduty",
|
||||
"rev": "v3.0.2",
|
||||
"rev": "v3.1.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"pass": {
|
||||
"hash": "sha256-hFgNWw6ZmATo0bFZvJL9z/lJF506KsBewigGoFj67sM=",
|
||||
"hash": "sha256-QGcHOsyUINH4bqK14OEzNm4b7oMK/4hwN9SuKt4m6t8=",
|
||||
"homepage": "https://registry.terraform.io/providers/camptocamp/pass",
|
||||
"owner": "camptocamp",
|
||||
"repo": "terraform-provider-pass",
|
||||
"rev": "v2.0.0",
|
||||
"rev": "v2.1.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-sV6JPKzpA1+uoUBmdWpUSk70cl9ofQqr7USbK+4RVDs="
|
||||
"vendorHash": "sha256-LWyfkhyTr6xHtt8nCdqid/zKwGerYVxSEpqSe853S9w="
|
||||
},
|
||||
"postgresql": {
|
||||
"hash": "sha256-r1Im4bhAakBe0PoDTpiQWPfnoFBtMCrAyL7qBa1yTQc=",
|
||||
@@ -944,13 +944,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"project": {
|
||||
"hash": "sha256-UO9GBBoOzA1stMq8naXWtxomme6CVdlngVCLQlbZDv0=",
|
||||
"hash": "sha256-bLzJT+ZyBtnehpiR02tyCcI5xOC2vJxBlYW1cLX7yqI=",
|
||||
"homepage": "https://registry.terraform.io/providers/jfrog/project",
|
||||
"owner": "jfrog",
|
||||
"repo": "terraform-provider-project",
|
||||
"rev": "v1.3.3",
|
||||
"rev": "v1.3.4",
|
||||
"spdx": "Apache-2.0",
|
||||
"vendorHash": "sha256-Tj+NefCIacwpPS9rNPPxV2lLeKsXJMZhf9Xo+Rzz6gI="
|
||||
"vendorHash": "sha256-ZDscj89bnLiubB+cxWjK1v9DXc5RX21pxfksJd6pQxk="
|
||||
},
|
||||
"proxmox": {
|
||||
"hash": "sha256-ikXLLNoAjrnGGGI3fHTKFXm8YwqNazE/U39JTjOBsW4=",
|
||||
@@ -998,22 +998,22 @@
|
||||
"vendorHash": "sha256-dMT3PEYNu9NxwLmY5SHa79yeVSB8Pi3UBEHiGvGGVmU="
|
||||
},
|
||||
"rundeck": {
|
||||
"hash": "sha256-PVLehIrj4vleOtcpNcHfpk6NOKsmrF8FCJXILlru7Ss=",
|
||||
"hash": "sha256-VPkHnSOTnRvvX6+K0L0q5IqSSFCE6VPdg2BaSejFMNc=",
|
||||
"homepage": "https://registry.terraform.io/providers/rundeck/rundeck",
|
||||
"owner": "rundeck",
|
||||
"repo": "terraform-provider-rundeck",
|
||||
"rev": "v0.4.6",
|
||||
"rev": "v0.4.7",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"scaleway": {
|
||||
"hash": "sha256-Fx77O5FHRZAFGNojWUxPPhlJ+hv2XVvh4RVYnMt1WXQ=",
|
||||
"hash": "sha256-lOoxgWps6r4/7JhK0Z0Iz5EA2mHYNrdIgOntRqXFrH8=",
|
||||
"homepage": "https://registry.terraform.io/providers/scaleway/scaleway",
|
||||
"owner": "scaleway",
|
||||
"repo": "terraform-provider-scaleway",
|
||||
"rev": "v2.30.0",
|
||||
"rev": "v2.33.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-4fIFZRAx0Vkl7QK13Vp/QJN+WDtk40RsvGYm6wPnfAI="
|
||||
"vendorHash": "sha256-tly9+vClV/IGivNBY114lNXxnYjJVvhVAi1tEyCtIoo="
|
||||
},
|
||||
"secret": {
|
||||
"hash": "sha256-MmAnA/4SAPqLY/gYcJSTnEttQTsDd2kEdkQjQj6Bb+A=",
|
||||
@@ -1070,13 +1070,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"snowflake": {
|
||||
"hash": "sha256-p2VN5M9OCEdA0olIx5HmB3g62sZVnJZEob40p8UgIXs=",
|
||||
"hash": "sha256-O5Nt+CcVppo5w4gD+NQ/XrRbkJicIzQrh5gffjPNvvw=",
|
||||
"homepage": "https://registry.terraform.io/providers/Snowflake-Labs/snowflake",
|
||||
"owner": "Snowflake-Labs",
|
||||
"repo": "terraform-provider-snowflake",
|
||||
"rev": "v0.74.0",
|
||||
"rev": "v0.75.0",
|
||||
"spdx": "MIT",
|
||||
"vendorHash": "sha256-lxjAtxY++tITodDbdxZorIzkJXKPHqO/UZqBr5IBNys="
|
||||
"vendorHash": "sha256-VD3zXfaa2fmq85a/k7LPbDVS1gA5xHC2F3Ojqpmt8MI="
|
||||
},
|
||||
"sops": {
|
||||
"hash": "sha256-ZastswL5AVurQY3xn6yx3M1BMvQ9RjfcZdXX0S/oZqw=",
|
||||
@@ -1088,13 +1088,13 @@
|
||||
"vendorHash": "sha256-8W1PK4T98iK1N6EB6AVjvr1P9Ja51+kSOmYAEosxrh8="
|
||||
},
|
||||
"spotinst": {
|
||||
"hash": "sha256-banhAkXLg3iWH7/eiPodOreReqaDskmlCdNIPZYbM3E=",
|
||||
"hash": "sha256-mYLIOnWI1yzfmuKikDib4PIDLJulGBqvo2OkGmUt7fw=",
|
||||
"homepage": "https://registry.terraform.io/providers/spotinst/spotinst",
|
||||
"owner": "spotinst",
|
||||
"repo": "terraform-provider-spotinst",
|
||||
"rev": "v1.147.0",
|
||||
"rev": "v1.149.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-sr2VAFSc6VfLW0KNGQMxYuAITjFaWOQaJjIlaMYamS0="
|
||||
"vendorHash": "sha256-6UUXMcfyIiZWc7HSy3P8gc7i1L9cVjifwREfmw05Qco="
|
||||
},
|
||||
"stackpath": {
|
||||
"hash": "sha256-7KQUddq+M35WYyAIAL8sxBjAaXFcsczBRO1R5HURUZg=",
|
||||
@@ -1142,22 +1142,22 @@
|
||||
"vendorHash": "sha256-0HRhwUGDE4y7UFlXyD0w8zl4NV5436L4SRhrb8vQGyc="
|
||||
},
|
||||
"tencentcloud": {
|
||||
"hash": "sha256-TJKLBMgxQXKhdKG7HCUFLWAtWCoZFla4CvSeN1a2k44=",
|
||||
"hash": "sha256-o9PY7kZAsF/bOkmIa0QKW2SabK0u56FtjMxmlKNROBg=",
|
||||
"homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud",
|
||||
"owner": "tencentcloudstack",
|
||||
"repo": "terraform-provider-tencentcloud",
|
||||
"rev": "v1.81.38",
|
||||
"rev": "v1.81.45",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"tfe": {
|
||||
"hash": "sha256-MTPtt87Kq3gOxF85Wwc6SWRy90+kK4BeHivAQTo32f8=",
|
||||
"hash": "sha256-HsoqWDwze/INB3KfQzwKKGbyKiU7xfsI4Bg/4/xFGr4=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/tfe",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-tfe",
|
||||
"rev": "v0.49.2",
|
||||
"rev": "v0.50.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-PQanCxvb1sT5SSLNH4fKFwF8j5ycU+6Os63GZuyBUSo="
|
||||
"vendorHash": "sha256-D8ouBW20jzFi365gDgL2sRk2IERSgJN3PFb7e1Akl50="
|
||||
},
|
||||
"thunder": {
|
||||
"hash": "sha256-wS50I4iTnHq0rDUoz7tQXpqW84wugQQiw42xhzxFiRw=",
|
||||
@@ -1215,23 +1215,23 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"utils": {
|
||||
"hash": "sha256-YkEklRSjAvBzySfc4nmmOaDmzcQlW9uAtoJMMHOqJEQ=",
|
||||
"hash": "sha256-WbJy1lwEX6RCYxZydCJ+0U/mJB4NoYiUg9+zf8Mxnwk=",
|
||||
"homepage": "https://registry.terraform.io/providers/cloudposse/utils",
|
||||
"owner": "cloudposse",
|
||||
"repo": "terraform-provider-utils",
|
||||
"rev": "1.12.0",
|
||||
"rev": "1.14.0",
|
||||
"spdx": "Apache-2.0",
|
||||
"vendorHash": "sha256-aMN25qa67m2Z8ZdMqtob0rj70Oy+E8bXEiRVb1HmGOk="
|
||||
"vendorHash": "sha256-vFfwa8DfmiHpbBbXPNovPC7SFoXRjyHRwOVqBcWCEtI="
|
||||
},
|
||||
"vault": {
|
||||
"hash": "sha256-HWEPeIhYCdM6m1hEuX5ozZFl5yRlND0heF+sl+uaNHM=",
|
||||
"hash": "sha256-9SOHw46KChe7bGInsIIyy0pyNG3K7CXNEomHkmpt8d4=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/vault",
|
||||
"owner": "hashicorp",
|
||||
"proxyVendor": true,
|
||||
"repo": "terraform-provider-vault",
|
||||
"rev": "v3.21.0",
|
||||
"rev": "v3.22.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-tas0801GM+E1yuMEFoFo8GfizeJaDwKfvK8TsCf/big="
|
||||
"vendorHash": "sha256-HvjbXSAkbTmADyWQaw0lZV3nZUEIYiAB3VahYvIQeb4="
|
||||
},
|
||||
"vcd": {
|
||||
"hash": "sha256-ltdkB9PqmuCs5daRjcThVhy1wIoDW21yBiwtRo/pMss=",
|
||||
@@ -1261,11 +1261,11 @@
|
||||
"vendorHash": "sha256-OzcDMLWwnBYIkBcL6U1t9oCNhZZokBUf2TONb+OfgPE="
|
||||
},
|
||||
"vra7": {
|
||||
"hash": "sha256-AVN2WDVDAc11p0i/d8wb/AvITMStrtsIq+MqXWYdwL8=",
|
||||
"hash": "sha256-03qXrYDpmPc7gHELzjS5miLm5NPTrF0AV1sUSCM0/4o=",
|
||||
"homepage": "https://registry.terraform.io/providers/vmware/vra7",
|
||||
"owner": "vmware",
|
||||
"repo": "terraform-provider-vra7",
|
||||
"rev": "v3.0.10",
|
||||
"rev": "v3.0.11",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -1279,30 +1279,30 @@
|
||||
"vendorHash": "sha256-4ulRYzb4bzk0TztT04CwqlnMGw8tp7YnoCm2/NqGN7Y="
|
||||
},
|
||||
"vultr": {
|
||||
"hash": "sha256-8pj+udTNTjT/tXggOaIOThRQkYoI3v68rEssSUojM2A=",
|
||||
"hash": "sha256-9HEuJXV6spLoLEVwdNid+MfVrBvrdUKjHWkDvQLSG+s=",
|
||||
"homepage": "https://registry.terraform.io/providers/vultr/vultr",
|
||||
"owner": "vultr",
|
||||
"repo": "terraform-provider-vultr",
|
||||
"rev": "v2.16.4",
|
||||
"rev": "v2.17.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"wavefront": {
|
||||
"hash": "sha256-FvRrX8T9PDz5gJZuE9sARfa9ERaEFMk0vmX4xDcrbVY=",
|
||||
"hash": "sha256-yNNtOkodzwxKvHQq9GZlUicezGW6u2ih6ry/cOtJQGM=",
|
||||
"homepage": "https://registry.terraform.io/providers/vmware/wavefront",
|
||||
"owner": "vmware",
|
||||
"repo": "terraform-provider-wavefront",
|
||||
"rev": "v5.0.4",
|
||||
"rev": "v5.1.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-GuOdD1m3elBj9k7YfUYbyqJNzIwmZZ1O1lplpBUPH+g="
|
||||
"vendorHash": "sha256-GRnVhGpVgFI83Lg34Zv1xgV5Kp8ioKTFV5uaqS80ATg="
|
||||
},
|
||||
"yandex": {
|
||||
"hash": "sha256-t4NvehAHS0U9kPQsA6otAga9YQWZ0rJrm3YFi9SgKQY=",
|
||||
"hash": "sha256-QirLhOAvOcsMFR0ZWHCCI2wbfcD5hfHSlZ0bguvAHiI=",
|
||||
"homepage": "https://registry.terraform.io/providers/yandex-cloud/yandex",
|
||||
"owner": "yandex-cloud",
|
||||
"repo": "terraform-provider-yandex",
|
||||
"rev": "v0.100.0",
|
||||
"rev": "v0.102.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-2+VeNaTZK4K3jqcKnSfzqlIvfzJF9HFv04Z99ImCWT8="
|
||||
"vendorHash": "sha256-y8M50X2F4olM1I0i32uUd/FASY9wUnMOF5k4AEP6b9I="
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,9 +167,9 @@ rec {
|
||||
mkTerraform = attrs: pluggable (generic attrs);
|
||||
|
||||
terraform_1 = mkTerraform {
|
||||
version = "1.6.3";
|
||||
hash = "sha256-2ai0WAknz4rt33BuBoqnTCsfPNHmet9+PdgYeeJKQkQ=";
|
||||
vendorHash = "sha256-ZtaXUX0PgL1nwXgohcfCyj/fLPAodx8amHEsQnlOQrc=";
|
||||
version = "1.6.4";
|
||||
hash = "sha256-kA0H+JxyMV6RKRr20enTOzfwj2Lk2IP4vivfHv02+w8=";
|
||||
vendorHash = "sha256-cxnvEwtZLXYZzCITJgYk8hDRndLLC8YTD+RvgcNska0=";
|
||||
patches = [ ./provider-path-0_15.patch ];
|
||||
passthru = {
|
||||
inherit plugins;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
openssl,
|
||||
parted,
|
||||
procps, # for pidof,
|
||||
python3,
|
||||
python39, # the latest python version that waagent test against according to https://github.com/Azure/WALinuxAgent/blob/28345a55f9b21dae89472111635fd6e41809d958/.github/workflows/ci_pr.yml#L75
|
||||
shadow, # for useradd, usermod
|
||||
util-linux, # for (u)mount, fdisk, sfdisk, mkswap
|
||||
}:
|
||||
@@ -19,7 +19,7 @@ let
|
||||
inherit (lib) makeBinPath;
|
||||
|
||||
in
|
||||
python3.pkgs.buildPythonPackage rec {
|
||||
python39.pkgs.buildPythonPackage rec {
|
||||
pname = "waagent";
|
||||
version = "2.8.0.11";
|
||||
src = fetchFromGitHub {
|
||||
@@ -28,9 +28,14 @@ python3.pkgs.buildPythonPackage rec {
|
||||
rev = "04ded9f0b708cfaf4f9b68eead1aef4cc4f32eeb";
|
||||
sha256 = "0fvjanvsz1zyzhbjr2alq5fnld43mdd776r2qid5jy5glzv0xbhf";
|
||||
};
|
||||
patches = [
|
||||
# Suppress the following error when waagent try to configure sshd:
|
||||
# Read-only file system: '/etc/ssh/sshd_config'
|
||||
./dont-configure-sshd.patch
|
||||
];
|
||||
doCheck = false;
|
||||
|
||||
buildInputs = with python3.pkgs; [ distro ];
|
||||
buildInputs = with python39.pkgs; [ distro ];
|
||||
runtimeDeps = [
|
||||
findutils
|
||||
gnugrep
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From 383e7c826906baedcd12ae7c20a4a5d4b32b104a Mon Sep 17 00:00:00 2001
|
||||
From: "Yang, Bo" <bo@preemo.io>
|
||||
Date: Wed, 8 Nov 2023 23:08:07 +0000
|
||||
Subject: [PATCH] Don't configure sshd
|
||||
|
||||
---
|
||||
azurelinuxagent/pa/provision/default.py | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/azurelinuxagent/pa/provision/default.py b/azurelinuxagent/pa/provision/default.py
|
||||
index 91fe04edab..48edf01490 100644
|
||||
--- a/azurelinuxagent/pa/provision/default.py
|
||||
+++ b/azurelinuxagent/pa/provision/default.py
|
||||
@@ -237,9 +237,6 @@ def config_user_account(self, ovfenv):
|
||||
self.osutil.conf_sudoer(ovfenv.username,
|
||||
nopasswd=ovfenv.user_password is None)
|
||||
|
||||
- logger.info("Configure sshd")
|
||||
- self.osutil.conf_sshd(ovfenv.disable_ssh_password_auth)
|
||||
-
|
||||
self.deploy_ssh_pubkeys(ovfenv)
|
||||
self.deploy_ssh_keypairs(ovfenv)
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "weave-gitops";
|
||||
version = "0.34.0";
|
||||
version = "0.35.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "weaveworks";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-W7Q5rsmNEDUGofQumbs9HaByQEb7sj4tOT7ZpIe98E4=";
|
||||
sha256 = "sha256-H/l/b6yPoNZeBG1TPc9PCBpZg4ETnF9FmYnbRmKl8c8=";
|
||||
};
|
||||
|
||||
ldflags = [ "-s" "-w" "-X github.com/weaveworks/weave-gitops/cmd/gitops/version.Version=${version}" ];
|
||||
|
||||
vendorHash = "sha256-+UxrhtwYP+ctn+y7IxKKLO5RVoiUSl4ky0xprXr98Jc=";
|
||||
vendorHash = "sha256-le34zvlgquxOv0xdOPfpf7/ZuoPd9MEfp8Gshigvtas=";
|
||||
|
||||
subPackages = [ "cmd/gitops" ];
|
||||
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "gmailctl";
|
||||
version = "0.10.6";
|
||||
version = "0.10.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mbrt";
|
||||
repo = "gmailctl";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-OpRkBHNWRrBhh6nGrV7dZT01xsSlbANCk+g7b8SidG0=";
|
||||
hash = "sha256-OpRkBHNWRrBhh6nGrV7dZT01xsSlbANCk+g7b8SidG0=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-+r0WHrKARcxW1hUY1HwAXk0X6ZQrbgBj9+GjIJV5DS0=";
|
||||
|
||||
@@ -12,25 +12,25 @@ in {
|
||||
|
||||
guiStable = mkGui {
|
||||
channel = "stable";
|
||||
version = "2.2.43";
|
||||
hash = "sha256-+2dcyWnTJqGaH9yhknYc9/0gnj3qh80eAy6uxG7+fFM=";
|
||||
version = "2.2.44.1";
|
||||
hash = "sha256-Ae1Yij81/rhZOMMfLYaQKR4Dxx1gDGZBpBj0gLCSToI=";
|
||||
};
|
||||
|
||||
guiPreview = mkGui {
|
||||
channel = "stable";
|
||||
version = "2.2.43";
|
||||
hash = "sha256-+2dcyWnTJqGaH9yhknYc9/0gnj3qh80eAy6uxG7+fFM=";
|
||||
version = "2.2.44.1";
|
||||
hash = "sha256-Ae1Yij81/rhZOMMfLYaQKR4Dxx1gDGZBpBj0gLCSToI=";
|
||||
};
|
||||
|
||||
serverStable = mkServer {
|
||||
channel = "stable";
|
||||
version = "2.2.43";
|
||||
hash = "sha256-xWt2qzeqBtt86Wv3dYl4GXkfjr+7WAKn5HdDeUzOQd8=";
|
||||
version = "2.2.44.1";
|
||||
hash = "sha256-YtYXTEZj5009L8OU7jdhegYu5Xll3jZAW6NJFWOvxHQ=";
|
||||
};
|
||||
|
||||
serverPreview = mkServer {
|
||||
channel = "stable";
|
||||
version = "2.2.43";
|
||||
hash = "sha256-xWt2qzeqBtt86Wv3dYl4GXkfjr+7WAKn5HdDeUzOQd8=";
|
||||
version = "2.2.44.1";
|
||||
hash = "sha256-YtYXTEZj5009L8OU7jdhegYu5Xll3jZAW6NJFWOvxHQ=";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
, fetchFromGitHub
|
||||
, qt5
|
||||
, wrapQtAppsHook
|
||||
, testers
|
||||
, gns3-gui
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
@@ -56,6 +58,11 @@ python3.pkgs.buildPythonApplication rec {
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
'';
|
||||
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = gns3-gui;
|
||||
command = "${lib.getExe gns3-gui} --version";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Graphical Network Simulator 3 GUI (${channel} release)";
|
||||
longDescription = ''
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
, fetchFromGitHub
|
||||
, pkgsStatic
|
||||
, stdenv
|
||||
, testers
|
||||
, gns3-server
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication {
|
||||
@@ -32,7 +34,6 @@ python3.pkgs.buildPythonApplication {
|
||||
aiohttp-cors
|
||||
async-generator
|
||||
distro
|
||||
importlib-resources
|
||||
jinja2
|
||||
jsonschema
|
||||
multidict
|
||||
@@ -45,6 +46,8 @@ python3.pkgs.buildPythonApplication {
|
||||
truststore
|
||||
yarl
|
||||
zipstream
|
||||
] ++ lib.optionals (pythonOlder "3.9") [
|
||||
importlib-resources
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
|
||||
@@ -72,6 +75,11 @@ python3.pkgs.buildPythonApplication {
|
||||
"--reruns 3"
|
||||
];
|
||||
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = gns3-server;
|
||||
command = "${lib.getExe gns3-server} --version";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Graphical Network Simulator 3 server (${channel} release)";
|
||||
longDescription = ''
|
||||
@@ -84,5 +92,6 @@ python3.pkgs.buildPythonApplication {
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ anthonyroussel ];
|
||||
mainProgram = "gns3server";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "alfaview";
|
||||
version = "9.4.0";
|
||||
version = "9.5.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://assets.alfaview.com/stable/linux/deb/${pname}_${version}.deb";
|
||||
sha256 = "sha256-bOK6QP9uLMJP9pgts4EyvW0WIKqcfhtvb1heG629Q38=";
|
||||
hash = "sha256-UQg7yGKdjZWrJpPAaHpPz9aQuxLvuRDXeQaOg7WorwE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -76,6 +76,7 @@ stdenv.mkDerivation rec {
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ wolfangaukang hexchen ];
|
||||
mainProgram = "alfaview";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
, sqlcipher
|
||||
, stdenv
|
||||
, CoreServices
|
||||
, testers
|
||||
, deltachat-desktop
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -33,16 +35,16 @@ let
|
||||
in
|
||||
buildNpmPackage rec {
|
||||
pname = "deltachat-desktop";
|
||||
version = "unstable-2023-11-03";
|
||||
version = "1.41.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "deltachat";
|
||||
repo = "deltachat-desktop";
|
||||
rev = "40152e9543eb773fc27e7a4f96ef1eecebe9310e";
|
||||
hash = "sha256-9GPXFUCu9GKa/bJgO8CIPMLccI6WAJ6PhfoyJ6s/DHE=";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-ITcBIm47OiGy/i6jnG6r1OoStjRPystOts6ViLioLNY=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-g3nkgqZNoq+xuwXbXLHEMVpHH6Sq3792xhITCx7WvOc=";
|
||||
npmDepsHash = "sha256-+t6m2kDUOh6kIkbZgol/CQciDTxUZSkTr1amPywrMb4=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
@@ -116,6 +118,12 @@ buildNpmPackage rec {
|
||||
];
|
||||
});
|
||||
|
||||
passthru.tests = {
|
||||
version = testers.testVersion {
|
||||
package = deltachat-desktop;
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Email-based instant messaging for Desktop";
|
||||
homepage = "https://github.com/deltachat/deltachat-desktop";
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Generated by ./update.sh - do not update manually!
|
||||
# Last updated: 2023-10-16
|
||||
# Last updated: 2023-11-14
|
||||
{
|
||||
version = "3.2.1-17412";
|
||||
urlhash = "423936b9";
|
||||
arm64_hash = "sha256-gvKBcfQafDtNioFg4Cyy92VMAX4uKL5H7wBkxQgDwjI=";
|
||||
amd64_hash = "sha256-cg2YXB1/pf5eDRHFgzydIb4GICjh9XRtCquPspgCL6c=";
|
||||
version = "3.2.2-18394";
|
||||
urlhash = "fd2e886e";
|
||||
arm64_hash = "sha256-6E3h7Z4936YKZb+G0FoMb90T3EzH8z07mmGMnL4SDFk=";
|
||||
amd64_hash = "sha256-L1M8O0FzVKLXNNYGGMPf1Nbh/DFxLHBlbzapr7uz5Sk=";
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ payload=$(curl https://im.qq.com/rainbow/linuxQQDownload | grep -oP "var params=
|
||||
amd64_url=$(jq -r .x64DownloadUrl.deb <<< "$payload")
|
||||
arm64_url=$(jq -r .armDownloadUrl.deb <<< "$payload")
|
||||
|
||||
urlhash=$(grep -oP "(?<=QQNT/)[a-e0-9]+(?=/linuxqq)" <<< "$amd64_url")
|
||||
urlhash=$(grep -oP "(?<=QQNT/)[a-f0-9]+(?=/linuxqq)" <<< "$amd64_url")
|
||||
version=$(grep -oP "(?<=/linuxqq_).*(?=_amd64.deb)" <<< "$amd64_url")
|
||||
|
||||
amd64_hash=$(nix-prefetch-url $amd64_url)
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
(if stdenv.isDarwin then darwin.apple_sdk_11_0.llvmPackages_14.stdenv else stdenv).mkDerivation rec {
|
||||
pname = "signalbackup-tools";
|
||||
version = "20231107-1";
|
||||
version = "20231114";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bepaald";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-5JF/cU2yz1TDKUSAiZJ5LQfvsGSQtuww543O03gkZ+Y=";
|
||||
hash = "sha256-5ZDHAv8le1MLS394fto4Rg19J/b2QkZZ70Sn0Yap/hs=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -19,18 +19,18 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "teams-for-linux";
|
||||
version = "1.3.18";
|
||||
version = "1.3.19";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "IsmaelMartinez";
|
||||
repo = "teams-for-linux";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-evOwjHUmeGw8AUpXSig8zVW2cpJbWkNTH/RUuNipFsQ=";
|
||||
hash = "sha256-+n26VTNRymPdzMbSz8AZsQ73xOHizOFAstw6toKfZQM=";
|
||||
};
|
||||
|
||||
offlineCache = fetchYarnDeps {
|
||||
yarnLock = "${finalAttrs.src}/yarn.lock";
|
||||
hash = "sha256-tMC8/qHYli7+OTdxVWRDEyCNzrkYA+zKlHJXlTsl+W0=";
|
||||
hash = "sha256-SxUdTzk8WngkKwT05U8HJsK8+8ezcJWdiT/ettxpeEE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ yarn fixup_yarn_lock nodejs copyDesktopItems makeWrapper ];
|
||||
@@ -102,7 +102,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
description = "Unofficial Microsoft Teams client for Linux";
|
||||
homepage = "https://github.com/IsmaelMartinez/teams-for-linux";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ muscaln lilyinstarlight qjoly ];
|
||||
maintainers = with lib.maintainers; [ muscaln lilyinstarlight qjoly chvp ];
|
||||
platforms = lib.platforms.unix;
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kubo";
|
||||
version = "0.23.0"; # When updating, also check if the repo version changed and adjust repoVersion below
|
||||
version = "0.24.0"; # When updating, also check if the repo version changed and adjust repoVersion below
|
||||
rev = "v${version}";
|
||||
|
||||
passthru.repoVersion = "15"; # Also update kubo-migrator when changing the repo version
|
||||
@@ -15,7 +15,7 @@ buildGoModule rec {
|
||||
# Kubo makes changes to its source tarball that don't match the git source.
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ipfs/kubo/releases/download/${rev}/kubo-source.tar.gz";
|
||||
hash = "sha256-ycXn8h8sFGJXVMldneN51lZgXoPaZ/XeXLtqqJ4w6H0=";
|
||||
hash = "sha256-stSjLvg8G1EiXon3Qby4wLgbhX7Aaj9pnxcvE32/42k=";
|
||||
};
|
||||
|
||||
# tarball contains multiple files/directories
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
let
|
||||
thunderbird-unwrapped = thunderbirdPackages.thunderbird-115;
|
||||
|
||||
version = "115.3.2";
|
||||
version = "115.4.2";
|
||||
majVer = lib.versions.major version;
|
||||
|
||||
betterbird-patches = fetchFromGitHub {
|
||||
owner = "Betterbird";
|
||||
repo = "thunderbird-patches";
|
||||
rev = "${version}-bb15";
|
||||
rev = "${version}-bb17";
|
||||
postFetch = ''
|
||||
echo "Retrieving external patches"
|
||||
|
||||
@@ -36,7 +36,7 @@ let
|
||||
. ./external.sh
|
||||
rm external.sh
|
||||
'';
|
||||
hash = "sha256-6alAGEid7ipr01I52TB0xrlLroCIc03N2IagGJq8te8=";
|
||||
hash = "sha256-hfM1VzYD0TsjZik0MLXBAkD5ecyvbg7jn2pKdrzMEfo=";
|
||||
};
|
||||
in ((buildMozillaMach {
|
||||
pname = "betterbird";
|
||||
@@ -49,7 +49,7 @@ in ((buildMozillaMach {
|
||||
src = fetchurl {
|
||||
# https://download.cdn.mozilla.net/pub/thunderbird/releases/
|
||||
url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
|
||||
hash = "sha256-kn35avKqUdMix8VJrKJjSWViMLe/WnnxNasPpM7/cdM=";
|
||||
hash = "sha256-PAjj7FvIA7uB0yngkL4KYKZoYU1CF2qQTF5+sG2VLtI=";
|
||||
};
|
||||
|
||||
extraPostPatch = thunderbird-unwrapped.extraPostPatch or "" + /* bash */ ''
|
||||
|
||||
@@ -139,6 +139,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
include <local/bin.transmission-daemon>
|
||||
}
|
||||
EOF
|
||||
install -Dm0444 -t $out/share/icons ../qt/icons/transmission.svg
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "seafile-client";
|
||||
version = "9.0.3";
|
||||
version = "9.0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "haiwen";
|
||||
repo = "seafile-client";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-zoo34mhNZTEwxjSy8XgmZfEjkujmWj34OtDJQSCb/zk=";
|
||||
sha256 = "sha256-Qt4Y7s2BMwuKXTYjHAzK40HgAsxlk98af3irOXT4/Vs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ mkDerivation, backintime-common, python3 }:
|
||||
{ lib, mkDerivation, backintime-common, python3, polkit, which, su, coreutils, util-linux }:
|
||||
|
||||
let
|
||||
python' = python3.withPackages (ps: with ps; [ pyqt5 backintime-common packaging ]);
|
||||
@@ -21,6 +21,29 @@ mkDerivation {
|
||||
|
||||
preFixup = ''
|
||||
wrapQtApp "$out/bin/backintime-qt" \
|
||||
--prefix PATH : "${backintime-common}/bin:$PATH"
|
||||
--prefix PATH : "${lib.getBin backintime-common}/bin:$PATH"
|
||||
|
||||
substituteInPlace "$out/share/polkit-1/actions/net.launchpad.backintime.policy" \
|
||||
--replace "/usr/bin/backintime-qt" "$out/bin/backintime-qt"
|
||||
|
||||
substituteInPlace "$out/share/applications/backintime-qt-root.desktop" \
|
||||
--replace "/usr/bin/backintime-qt" "backintime-qt"
|
||||
|
||||
substituteInPlace "$out/share/backintime/qt/serviceHelper.py" \
|
||||
--replace "'which'" "'${lib.getBin which}/bin/which'" \
|
||||
--replace "/bin/su" "${lib.getBin su}/bin/su" \
|
||||
--replace "/usr/bin/backintime" "${lib.getBin backintime-common}/bin/backintime" \
|
||||
--replace "/usr/bin/nice" "${lib.getBin coreutils}/bin/nice" \
|
||||
--replace "/usr/bin/ionice" "${lib.getBin util-linux}/bin/ionice"
|
||||
|
||||
substituteInPlace "$out/share/dbus-1/system-services/net.launchpad.backintime.serviceHelper.service" \
|
||||
--replace "/usr/bin/python3" "${lib.getBin python'}/bin/python3" \
|
||||
--replace "/usr/share/backintime" "$out/share/backintime"
|
||||
|
||||
substituteInPlace "$out/bin/backintime-qt_polkit" \
|
||||
--replace "/usr/bin/backintime-qt" "$out/bin/backintime-qt"
|
||||
|
||||
wrapProgram "$out/bin/backintime-qt_polkit" \
|
||||
--prefix PATH : "${lib.getBin polkit}/bin:$PATH"
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "storj-uplink";
|
||||
version = "1.90.1";
|
||||
version = "1.90.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "storj";
|
||||
repo = "storj";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-LJtNsemNbN+TLyUxSgB/wftKxOfI/y/t+qv1TjcsXzQ=";
|
||||
hash = "sha256-VEO9LV6hzEd4IDnSPE5H0CDlwgRFEg4cheDx/RUGQug=";
|
||||
};
|
||||
|
||||
subPackages = [ "cmd/uplink" ];
|
||||
|
||||
@@ -72,7 +72,7 @@ stdenv.mkDerivation rec {
|
||||
"-DUSE_POPPLER=${if usePoppler then "ON" else "OFF"}"
|
||||
"-DUSE_MUPDF=${if useMupdf then "ON" else "OFF"}"
|
||||
"-DUSE_QTPDF=OFF"
|
||||
"-DLINK_MUPDF_THIRD=ON"
|
||||
"-DLINK_MUPDF_THIRD=OFF"
|
||||
"-DUSE_EXTERNAL_RENDERER=${if useExternalRenderer then "ON" else "OFF"}"
|
||||
"-DLINK_MUJS=OFF"
|
||||
"-DLINK_GUMBO=ON"
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "fava";
|
||||
version = "1.26.1";
|
||||
version = "1.26.2";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-pj4kaQDXahjhN7bu7xxT/ZuoCfPdGyo898482S5gnlE=";
|
||||
hash = "sha256-+rMuVfe6BDAcZgJkBb18YLFZirOBfad6WGbWtAT21uI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with python3.pkgs; [ setuptools-scm ];
|
||||
@@ -31,6 +31,11 @@ python3.pkgs.buildPythonApplication rec {
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace 'setuptools_scm>=8.0' 'setuptools_scm'
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
export HOME=$TEMPDIR
|
||||
'';
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user