mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-14 06:00:33 +03:00
Merge remote-tracking branch 'origin/master' into staging-next
This commit is contained in:
commit
d50a1e97b1
221 changed files with 9495 additions and 4187 deletions
|
@ -23,6 +23,7 @@ let
|
||||||
{ name = "fileset"; description = "file set functions"; }
|
{ name = "fileset"; description = "file set functions"; }
|
||||||
{ name = "sources"; description = "source filtering functions"; }
|
{ name = "sources"; description = "source filtering functions"; }
|
||||||
{ name = "cli"; description = "command-line serialization functions"; }
|
{ name = "cli"; description = "command-line serialization functions"; }
|
||||||
|
{ name = "generators"; description = "functions that create file formats from nix data structures"; }
|
||||||
{ name = "gvariant"; description = "GVariant formatted string serialization functions"; }
|
{ name = "gvariant"; description = "GVariant formatted string serialization functions"; }
|
||||||
{ name = "customisation"; description = "Functions to customise (derivation-related) functions, derivatons, or attribute sets"; }
|
{ name = "customisation"; description = "Functions to customise (derivation-related) functions, derivatons, or attribute sets"; }
|
||||||
{ name = "meta"; description = "functions for derivation metadata"; }
|
{ name = "meta"; description = "functions for derivation metadata"; }
|
||||||
|
|
|
@ -54,4 +54,4 @@ merge:"diff3"
|
||||||
Nix store paths can be converted to strings by enclosing a derivation attribute like so: `"${drv}"`.
|
Nix store paths can be converted to strings by enclosing a derivation attribute like so: `"${drv}"`.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
Detailed documentation for each generator can be found in `lib/generators.nix`.
|
Detailed documentation for each generator can be found [here](#sec-functions-library-generators)
|
||||||
|
|
|
@ -17,7 +17,7 @@ let
|
||||||
else "";
|
else "";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
/*
|
/**
|
||||||
Restrict a derivation to a predictable set of attribute names, so
|
Restrict a derivation to a predictable set of attribute names, so
|
||||||
that the returned attrset is not strict in the actual derivation,
|
that the returned attrset is not strict in the actual derivation,
|
||||||
saving a lot of computation when the derivation is non-trivial.
|
saving a lot of computation when the derivation is non-trivial.
|
||||||
|
@ -62,25 +62,36 @@ in
|
||||||
|
|
||||||
(lazyDerivation { inherit derivation }).pythonPath
|
(lazyDerivation { inherit derivation }).pythonPath
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
Takes an attribute set with the following attributes
|
||||||
|
|
||||||
|
`derivation`
|
||||||
|
: The derivation to be wrapped.
|
||||||
|
|
||||||
|
`meta`
|
||||||
|
: Optional meta attribute.
|
||||||
|
|
||||||
|
While this function is primarily about derivations, it can improve
|
||||||
|
the `meta` package attribute, which is usually specified through
|
||||||
|
`mkDerivation`.
|
||||||
|
|
||||||
|
`passthru`
|
||||||
|
: Optional extra values to add to the returned attrset.
|
||||||
|
|
||||||
|
This can be used for adding package attributes, such as `tests`.
|
||||||
|
|
||||||
|
`outputs`
|
||||||
|
: Optional list of assumed outputs. Default: ["out"]
|
||||||
|
|
||||||
|
This must match the set of outputs that the returned derivation has.
|
||||||
|
You must use this when the derivation has multiple outputs.
|
||||||
*/
|
*/
|
||||||
lazyDerivation =
|
lazyDerivation =
|
||||||
args@{
|
args@{
|
||||||
# The derivation to be wrapped.
|
derivation,
|
||||||
derivation
|
meta ? null,
|
||||||
, # Optional meta attribute.
|
passthru ? { },
|
||||||
#
|
|
||||||
# While this function is primarily about derivations, it can improve
|
|
||||||
# the `meta` package attribute, which is usually specified through
|
|
||||||
# `mkDerivation`.
|
|
||||||
meta ? null
|
|
||||||
, # Optional extra values to add to the returned attrset.
|
|
||||||
#
|
|
||||||
# This can be used for adding package attributes, such as `tests`.
|
|
||||||
passthru ? { }
|
|
||||||
, # Optional list of assumed outputs. Default: ["out"]
|
|
||||||
#
|
|
||||||
# This must match the set of outputs that the returned derivation has.
|
|
||||||
# You must use this when the derivation has multiple outputs.
|
|
||||||
outputs ? [ "out" ]
|
outputs ? [ "out" ]
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
|
@ -149,29 +160,50 @@ in
|
||||||
// genAttrs outputs (outputName: checked.${outputName})
|
// genAttrs outputs (outputName: checked.${outputName})
|
||||||
// passthru;
|
// passthru;
|
||||||
|
|
||||||
/* Conditionally set a derivation attribute.
|
/**
|
||||||
|
Conditionally set a derivation attribute.
|
||||||
|
|
||||||
Because `mkDerivation` sets `__ignoreNulls = true`, a derivation
|
Because `mkDerivation` sets `__ignoreNulls = true`, a derivation
|
||||||
attribute set to `null` will not impact the derivation output hash.
|
attribute set to `null` will not impact the derivation output hash.
|
||||||
Thus, this function passes through its `value` argument if the `cond`
|
Thus, this function passes through its `value` argument if the `cond`
|
||||||
is `true`, but returns `null` if not.
|
is `true`, but returns `null` if not.
|
||||||
|
|
||||||
Type: optionalDrvAttr :: Bool -> a -> a | Null
|
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
(stdenv.mkDerivation {
|
|
||||||
name = "foo";
|
`cond`
|
||||||
x = optionalDrvAttr true 1;
|
|
||||||
y = optionalDrvAttr false 1;
|
: Condition
|
||||||
}).drvPath == (stdenv.mkDerivation {
|
|
||||||
name = "foo";
|
`value`
|
||||||
x = 1;
|
|
||||||
}).drvPath
|
: Attribute value
|
||||||
=> true
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
optionalDrvAttr :: Bool -> a -> a | Null
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.derivations.optionalDrvAttr` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
(stdenv.mkDerivation {
|
||||||
|
name = "foo";
|
||||||
|
x = optionalDrvAttr true 1;
|
||||||
|
y = optionalDrvAttr false 1;
|
||||||
|
}).drvPath == (stdenv.mkDerivation {
|
||||||
|
name = "foo";
|
||||||
|
x = 1;
|
||||||
|
}).drvPath
|
||||||
|
=> true
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
optionalDrvAttr =
|
optionalDrvAttr =
|
||||||
# Condition
|
|
||||||
cond:
|
cond:
|
||||||
# Attribute value
|
|
||||||
value: if cond then value else null;
|
value: if cond then value else null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
Functions for querying information about the filesystem
|
Functions for querying information about the filesystem
|
||||||
without copying any files to the Nix store.
|
without copying any files to the Nix store.
|
||||||
*/
|
*/
|
||||||
|
@ -29,19 +29,35 @@ in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/**
|
||||||
The type of a path. The path needs to exist and be accessible.
|
The type of a path. The path needs to exist and be accessible.
|
||||||
The result is either "directory" for a directory, "regular" for a regular file, "symlink" for a symlink, or "unknown" for anything else.
|
The result is either "directory" for a directory, "regular" for a regular file, "symlink" for a symlink, or "unknown" for anything else.
|
||||||
|
|
||||||
Type:
|
# Inputs
|
||||||
pathType :: Path -> String
|
|
||||||
|
|
||||||
Example:
|
path
|
||||||
pathType /.
|
|
||||||
=> "directory"
|
|
||||||
|
|
||||||
pathType /some/file.nix
|
: The path to query
|
||||||
=> "regular"
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
pathType :: Path -> String
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.filesystem.pathType` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
pathType /.
|
||||||
|
=> "directory"
|
||||||
|
|
||||||
|
pathType /some/file.nix
|
||||||
|
=> "regular"
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
pathType =
|
pathType =
|
||||||
builtins.readFileType or
|
builtins.readFileType or
|
||||||
|
@ -59,53 +75,97 @@ in
|
||||||
else (readDir (dirOf path)).${baseNameOf path}
|
else (readDir (dirOf path)).${baseNameOf path}
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
Whether a path exists and is a directory.
|
Whether a path exists and is a directory.
|
||||||
|
|
||||||
Type:
|
|
||||||
pathIsDirectory :: Path -> Bool
|
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
pathIsDirectory /.
|
|
||||||
=> true
|
|
||||||
|
|
||||||
pathIsDirectory /this/does/not/exist
|
`path`
|
||||||
=> false
|
|
||||||
|
|
||||||
pathIsDirectory /some/file.nix
|
: 1\. Function argument
|
||||||
=> false
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
pathIsDirectory :: Path -> Bool
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.filesystem.pathIsDirectory` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
pathIsDirectory /.
|
||||||
|
=> true
|
||||||
|
|
||||||
|
pathIsDirectory /this/does/not/exist
|
||||||
|
=> false
|
||||||
|
|
||||||
|
pathIsDirectory /some/file.nix
|
||||||
|
=> false
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
pathIsDirectory = path:
|
pathIsDirectory = path:
|
||||||
pathExists path && pathType path == "directory";
|
pathExists path && pathType path == "directory";
|
||||||
|
|
||||||
/*
|
/**
|
||||||
Whether a path exists and is a regular file, meaning not a symlink or any other special file type.
|
Whether a path exists and is a regular file, meaning not a symlink or any other special file type.
|
||||||
|
|
||||||
Type:
|
|
||||||
pathIsRegularFile :: Path -> Bool
|
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
pathIsRegularFile /.
|
|
||||||
=> false
|
|
||||||
|
|
||||||
pathIsRegularFile /this/does/not/exist
|
`path`
|
||||||
=> false
|
|
||||||
|
|
||||||
pathIsRegularFile /some/file.nix
|
: 1\. Function argument
|
||||||
=> true
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
pathIsRegularFile :: Path -> Bool
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.filesystem.pathIsRegularFile` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
pathIsRegularFile /.
|
||||||
|
=> false
|
||||||
|
|
||||||
|
pathIsRegularFile /this/does/not/exist
|
||||||
|
=> false
|
||||||
|
|
||||||
|
pathIsRegularFile /some/file.nix
|
||||||
|
=> true
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
pathIsRegularFile = path:
|
pathIsRegularFile = path:
|
||||||
pathExists path && pathType path == "regular";
|
pathExists path && pathType path == "regular";
|
||||||
|
|
||||||
/*
|
/**
|
||||||
A map of all haskell packages defined in the given path,
|
A map of all haskell packages defined in the given path,
|
||||||
identified by having a cabal file with the same name as the
|
identified by having a cabal file with the same name as the
|
||||||
directory itself.
|
directory itself.
|
||||||
|
|
||||||
Type: Path -> Map String Path
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`root`
|
||||||
|
|
||||||
|
: The directory within to search
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
Path -> Map String Path
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
haskellPathsInDir =
|
haskellPathsInDir =
|
||||||
# The directory within to search
|
|
||||||
root:
|
root:
|
||||||
let # Files in the root
|
let # Files in the root
|
||||||
root-files = builtins.attrNames (builtins.readDir root);
|
root-files = builtins.attrNames (builtins.readDir root);
|
||||||
|
@ -120,17 +180,30 @@ in
|
||||||
builtins.pathExists (value + "/${name}.cabal")
|
builtins.pathExists (value + "/${name}.cabal")
|
||||||
) root-files-with-paths;
|
) root-files-with-paths;
|
||||||
in builtins.listToAttrs cabal-subdirs;
|
in builtins.listToAttrs cabal-subdirs;
|
||||||
/*
|
/**
|
||||||
Find the first directory containing a file matching 'pattern'
|
Find the first directory containing a file matching 'pattern'
|
||||||
upward from a given 'file'.
|
upward from a given 'file'.
|
||||||
Returns 'null' if no directories contain a file matching 'pattern'.
|
Returns 'null' if no directories contain a file matching 'pattern'.
|
||||||
|
|
||||||
Type: RegExp -> Path -> Nullable { path : Path; matches : [ MatchResults ]; }
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`pattern`
|
||||||
|
|
||||||
|
: The pattern to search for
|
||||||
|
|
||||||
|
`file`
|
||||||
|
|
||||||
|
: The file to start searching upward from
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
RegExp -> Path -> Nullable { path : Path; matches : [ MatchResults ]; }
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
locateDominatingFile =
|
locateDominatingFile =
|
||||||
# The pattern to search for
|
|
||||||
pattern:
|
pattern:
|
||||||
# The file to start searching upward from
|
|
||||||
file:
|
file:
|
||||||
let go = path:
|
let go = path:
|
||||||
let files = builtins.attrNames (builtins.readDir path);
|
let files = builtins.attrNames (builtins.readDir path);
|
||||||
|
@ -150,13 +223,23 @@ in
|
||||||
in go (if isDir then file else parent);
|
in go (if isDir then file else parent);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
Given a directory, return a flattened list of all files within it recursively.
|
Given a directory, return a flattened list of all files within it recursively.
|
||||||
|
|
||||||
Type: Path -> [ Path ]
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`dir`
|
||||||
|
|
||||||
|
: The path to recursively list
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
Path -> [ Path ]
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
listFilesRecursive =
|
listFilesRecursive =
|
||||||
# The path to recursively list
|
|
||||||
dir:
|
dir:
|
||||||
lib.flatten (lib.mapAttrsToList (name: type:
|
lib.flatten (lib.mapAttrsToList (name: type:
|
||||||
if type == "directory" then
|
if type == "directory" then
|
||||||
|
@ -165,7 +248,7 @@ in
|
||||||
dir + "/${name}"
|
dir + "/${name}"
|
||||||
) (builtins.readDir dir));
|
) (builtins.readDir dir));
|
||||||
|
|
||||||
/*
|
/**
|
||||||
Transform a directory tree containing package files suitable for
|
Transform a directory tree containing package files suitable for
|
||||||
`callPackage` into a matching nested attribute set of derivations.
|
`callPackage` into a matching nested attribute set of derivations.
|
||||||
|
|
||||||
|
@ -223,40 +306,57 @@ in
|
||||||
As a result, directories with no `.nix` files (including empty
|
As a result, directories with no `.nix` files (including empty
|
||||||
directories) will be transformed into empty attribute sets.
|
directories) will be transformed into empty attribute sets.
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
packagesFromDirectoryRecursive {
|
|
||||||
inherit (pkgs) callPackage;
|
Structured function argument
|
||||||
|
|
||||||
|
: Attribute set containing the following attributes.
|
||||||
|
Additional attributes are ignored.
|
||||||
|
|
||||||
|
`callPackage`
|
||||||
|
|
||||||
|
: `pkgs.callPackage`
|
||||||
|
|
||||||
|
Type: `Path -> AttrSet -> a`
|
||||||
|
|
||||||
|
`directory`
|
||||||
|
|
||||||
|
: The directory to read package files from
|
||||||
|
|
||||||
|
Type: `Path`
|
||||||
|
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
packagesFromDirectoryRecursive :: AttrSet -> AttrSet
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.filesystem.packagesFromDirectoryRecursive` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
packagesFromDirectoryRecursive {
|
||||||
|
inherit (pkgs) callPackage;
|
||||||
|
directory = ./my-packages;
|
||||||
|
}
|
||||||
|
=> { ... }
|
||||||
|
|
||||||
|
lib.makeScope pkgs.newScope (
|
||||||
|
self: packagesFromDirectoryRecursive {
|
||||||
|
callPackage = self.callPackage;
|
||||||
directory = ./my-packages;
|
directory = ./my-packages;
|
||||||
}
|
}
|
||||||
=> { ... }
|
)
|
||||||
|
=> { ... }
|
||||||
|
```
|
||||||
|
|
||||||
lib.makeScope pkgs.newScope (
|
:::
|
||||||
self: packagesFromDirectoryRecursive {
|
|
||||||
callPackage = self.callPackage;
|
|
||||||
directory = ./my-packages;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
=> { ... }
|
|
||||||
|
|
||||||
Type:
|
|
||||||
packagesFromDirectoryRecursive :: AttrSet -> AttrSet
|
|
||||||
*/
|
*/
|
||||||
packagesFromDirectoryRecursive =
|
packagesFromDirectoryRecursive =
|
||||||
# Options.
|
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
`pkgs.callPackage`
|
|
||||||
|
|
||||||
Type:
|
|
||||||
Path -> AttrSet -> a
|
|
||||||
*/
|
|
||||||
callPackage,
|
callPackage,
|
||||||
/*
|
|
||||||
The directory to read package files from
|
|
||||||
|
|
||||||
Type:
|
|
||||||
Path
|
|
||||||
*/
|
|
||||||
directory,
|
directory,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
|
@ -1,18 +1,23 @@
|
||||||
/* Functions that generate widespread file
|
/**
|
||||||
* formats from nix data structures.
|
Functions that generate widespread file
|
||||||
*
|
formats from nix data structures.
|
||||||
* They all follow a similar interface:
|
|
||||||
* generator { config-attrs } data
|
They all follow a similar interface:
|
||||||
*
|
|
||||||
* `config-attrs` are “holes” in the generators
|
```nix
|
||||||
* with sensible default implementations that
|
generator { config-attrs } data
|
||||||
* can be overwritten. The default implementations
|
```
|
||||||
* are mostly generators themselves, called with
|
|
||||||
* their respective default values; they can be reused.
|
`config-attrs` are “holes” in the generators
|
||||||
*
|
with sensible default implementations that
|
||||||
* Tests can be found in ./tests/misc.nix
|
can be overwritten. The default implementations
|
||||||
* Documentation in the manual, #sec-generators
|
are mostly generators themselves, called with
|
||||||
*/
|
their respective default values; they can be reused.
|
||||||
|
|
||||||
|
Tests can be found in ./tests/misc.nix
|
||||||
|
|
||||||
|
Further Documentation can be found [here](#sec-generators).
|
||||||
|
*/
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -68,11 +73,20 @@ let
|
||||||
;
|
;
|
||||||
|
|
||||||
## -- HELPER FUNCTIONS & DEFAULTS --
|
## -- HELPER FUNCTIONS & DEFAULTS --
|
||||||
|
in rec {
|
||||||
|
/**
|
||||||
|
Convert a value to a sensible default string representation.
|
||||||
|
The builtin `toString` function has some strange defaults,
|
||||||
|
suitable for bash scripts but not much else.
|
||||||
|
|
||||||
/* Convert a value to a sensible default string representation.
|
# Inputs
|
||||||
* The builtin `toString` function has some strange defaults,
|
|
||||||
* suitable for bash scripts but not much else.
|
Options
|
||||||
*/
|
: Empty set, there may be configuration options in the future
|
||||||
|
|
||||||
|
`v`
|
||||||
|
: 2\. Function argument
|
||||||
|
*/
|
||||||
mkValueStringDefault = {}: v:
|
mkValueStringDefault = {}: v:
|
||||||
let err = t: v: abort
|
let err = t: v: abort
|
||||||
("generators.mkValueStringDefault: " +
|
("generators.mkValueStringDefault: " +
|
||||||
|
@ -100,15 +114,36 @@ let
|
||||||
else err "this value is" (toString v);
|
else err "this value is" (toString v);
|
||||||
|
|
||||||
|
|
||||||
/* Generate a line of key k and value v, separated by
|
/**
|
||||||
* character sep. If sep appears in k, it is escaped.
|
Generate a line of key k and value v, separated by
|
||||||
* Helper for synaxes with different separators.
|
character sep. If sep appears in k, it is escaped.
|
||||||
*
|
Helper for synaxes with different separators.
|
||||||
* mkValueString specifies how values should be formatted.
|
|
||||||
*
|
mkValueString specifies how values should be formatted.
|
||||||
* mkKeyValueDefault {} ":" "f:oo" "bar"
|
|
||||||
* > "f\:oo:bar"
|
```nix
|
||||||
*/
|
mkKeyValueDefault {} ":" "f:oo" "bar"
|
||||||
|
> "f\:oo:bar"
|
||||||
|
```
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
Structured function argument
|
||||||
|
: mkValueString (optional, default: `mkValueStringDefault {}`)
|
||||||
|
: Function to convert values to strings
|
||||||
|
|
||||||
|
`sep`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
|
|
||||||
|
`k`
|
||||||
|
|
||||||
|
: 3\. Function argument
|
||||||
|
|
||||||
|
`v`
|
||||||
|
|
||||||
|
: 4\. Function argument
|
||||||
|
*/
|
||||||
mkKeyValueDefault = {
|
mkKeyValueDefault = {
|
||||||
mkValueString ? mkValueStringDefault {}
|
mkValueString ? mkValueStringDefault {}
|
||||||
}: sep: k: v:
|
}: sep: k: v:
|
||||||
|
@ -118,10 +153,23 @@ let
|
||||||
## -- FILE FORMAT GENERATORS --
|
## -- FILE FORMAT GENERATORS --
|
||||||
|
|
||||||
|
|
||||||
/* Generate a key-value-style config file from an attrset.
|
/**
|
||||||
*
|
Generate a key-value-style config file from an attrset.
|
||||||
* mkKeyValue is the same as in toINI.
|
|
||||||
*/
|
# Inputs
|
||||||
|
|
||||||
|
Structured function argument
|
||||||
|
|
||||||
|
: mkKeyValue (optional, default: `mkKeyValueDefault {} "="`)
|
||||||
|
: format a setting line from key and value
|
||||||
|
|
||||||
|
: listsAsDuplicateKeys (optional, default: `false`)
|
||||||
|
: allow lists as values for duplicate keys
|
||||||
|
|
||||||
|
: indent (optional, default: `""`)
|
||||||
|
: Initial indentation level
|
||||||
|
|
||||||
|
*/
|
||||||
toKeyValue = {
|
toKeyValue = {
|
||||||
mkKeyValue ? mkKeyValueDefault {} "=",
|
mkKeyValue ? mkKeyValueDefault {} "=",
|
||||||
listsAsDuplicateKeys ? false,
|
listsAsDuplicateKeys ? false,
|
||||||
|
@ -134,32 +182,51 @@ let
|
||||||
in attrs: concatStrings (concatLists (mapAttrsToList mkLines attrs));
|
in attrs: concatStrings (concatLists (mapAttrsToList mkLines attrs));
|
||||||
|
|
||||||
|
|
||||||
/* Generate an INI-style config file from an
|
/**
|
||||||
* attrset of sections to an attrset of key-value pairs.
|
Generate an INI-style config file from an
|
||||||
*
|
attrset of sections to an attrset of key-value pairs.
|
||||||
* generators.toINI {} {
|
|
||||||
* foo = { hi = "${pkgs.hello}"; ciao = "bar"; };
|
# Inputs
|
||||||
* baz = { "also, integers" = 42; };
|
|
||||||
* }
|
Structured function argument
|
||||||
*
|
|
||||||
*> [baz]
|
: mkSectionName (optional, default: `(name: escape [ "[" "]" ] name)`)
|
||||||
*> also, integers=42
|
: apply transformations (e.g. escapes) to section names
|
||||||
*>
|
|
||||||
*> [foo]
|
: mkKeyValue (optional, default: `{} "="`)
|
||||||
*> ciao=bar
|
: format a setting line from key and value
|
||||||
*> hi=/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10
|
|
||||||
*
|
: listsAsDuplicateKeys (optional, default: `false`)
|
||||||
* The mk* configuration attributes can generically change
|
: allow lists as values for duplicate keys
|
||||||
* the way sections and key-value strings are generated.
|
|
||||||
*
|
# Examples
|
||||||
* For more examples see the test cases in ./tests/misc.nix.
|
:::{.example}
|
||||||
*/
|
## `lib.generators.toINI` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
generators.toINI {} {
|
||||||
|
foo = { hi = "${pkgs.hello}"; ciao = "bar"; };
|
||||||
|
baz = { "also, integers" = 42; };
|
||||||
|
}
|
||||||
|
|
||||||
|
> [baz]
|
||||||
|
> also, integers=42
|
||||||
|
>
|
||||||
|
> [foo]
|
||||||
|
> ciao=bar
|
||||||
|
> hi=/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10
|
||||||
|
```
|
||||||
|
|
||||||
|
The mk* configuration attributes can generically change
|
||||||
|
the way sections and key-value strings are generated.
|
||||||
|
|
||||||
|
For more examples see the test cases in ./tests/misc.nix.
|
||||||
|
|
||||||
|
:::
|
||||||
|
*/
|
||||||
toINI = {
|
toINI = {
|
||||||
# apply transformations (e.g. escapes) to section names
|
|
||||||
mkSectionName ? (name: escape [ "[" "]" ] name),
|
mkSectionName ? (name: escape [ "[" "]" ] name),
|
||||||
# format a setting line from key and value
|
|
||||||
mkKeyValue ? mkKeyValueDefault {} "=",
|
mkKeyValue ? mkKeyValueDefault {} "=",
|
||||||
# allow lists as values for duplicate keys
|
|
||||||
listsAsDuplicateKeys ? false
|
listsAsDuplicateKeys ? false
|
||||||
}: attrsOfAttrs:
|
}: attrsOfAttrs:
|
||||||
let
|
let
|
||||||
|
@ -174,43 +241,70 @@ let
|
||||||
# map input to ini sections
|
# map input to ini sections
|
||||||
mapAttrsToStringsSep "\n" mkSection attrsOfAttrs;
|
mapAttrsToStringsSep "\n" mkSection attrsOfAttrs;
|
||||||
|
|
||||||
/* Generate an INI-style config file from an attrset
|
/**
|
||||||
* specifying the global section (no header), and an
|
Generate an INI-style config file from an attrset
|
||||||
* attrset of sections to an attrset of key-value pairs.
|
specifying the global section (no header), and an
|
||||||
*
|
attrset of sections to an attrset of key-value pairs.
|
||||||
* generators.toINIWithGlobalSection {} {
|
|
||||||
* globalSection = {
|
# Inputs
|
||||||
* someGlobalKey = "hi";
|
|
||||||
* };
|
1\. Structured function argument
|
||||||
* sections = {
|
|
||||||
* foo = { hi = "${pkgs.hello}"; ciao = "bar"; };
|
: mkSectionName (optional, default: `(name: escape [ "[" "]" ] name)`)
|
||||||
* baz = { "also, integers" = 42; };
|
: apply transformations (e.g. escapes) to section names
|
||||||
* }
|
|
||||||
*
|
: mkKeyValue (optional, default: `{} "="`)
|
||||||
*> someGlobalKey=hi
|
: format a setting line from key and value
|
||||||
*>
|
|
||||||
*> [baz]
|
: listsAsDuplicateKeys (optional, default: `false`)
|
||||||
*> also, integers=42
|
: allow lists as values for duplicate keys
|
||||||
*>
|
|
||||||
*> [foo]
|
2\. Structured function argument
|
||||||
*> ciao=bar
|
|
||||||
*> hi=/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10
|
: globalSection (required)
|
||||||
*
|
: global section key-value pairs
|
||||||
* The mk* configuration attributes can generically change
|
|
||||||
* the way sections and key-value strings are generated.
|
: sections (optional, default: `{}`)
|
||||||
*
|
: attrset of sections to key-value pairs
|
||||||
* For more examples see the test cases in ./tests/misc.nix.
|
|
||||||
*
|
# Examples
|
||||||
* If you don’t need a global section, you can also use
|
:::{.example}
|
||||||
* `generators.toINI` directly, which only takes
|
## `lib.generators.toINIWithGlobalSection` usage example
|
||||||
* the part in `sections`.
|
|
||||||
*/
|
```nix
|
||||||
|
generators.toINIWithGlobalSection {} {
|
||||||
|
globalSection = {
|
||||||
|
someGlobalKey = "hi";
|
||||||
|
};
|
||||||
|
sections = {
|
||||||
|
foo = { hi = "${pkgs.hello}"; ciao = "bar"; };
|
||||||
|
baz = { "also, integers" = 42; };
|
||||||
|
}
|
||||||
|
|
||||||
|
> someGlobalKey=hi
|
||||||
|
>
|
||||||
|
> [baz]
|
||||||
|
> also, integers=42
|
||||||
|
>
|
||||||
|
> [foo]
|
||||||
|
> ciao=bar
|
||||||
|
> hi=/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10
|
||||||
|
```
|
||||||
|
|
||||||
|
The mk* configuration attributes can generically change
|
||||||
|
the way sections and key-value strings are generated.
|
||||||
|
|
||||||
|
For more examples see the test cases in ./tests/misc.nix.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
If you don’t need a global section, you can also use
|
||||||
|
`generators.toINI` directly, which only takes
|
||||||
|
the part in `sections`.
|
||||||
|
*/
|
||||||
toINIWithGlobalSection = {
|
toINIWithGlobalSection = {
|
||||||
# apply transformations (e.g. escapes) to section names
|
|
||||||
mkSectionName ? (name: escape [ "[" "]" ] name),
|
mkSectionName ? (name: escape [ "[" "]" ] name),
|
||||||
# format a setting line from key and value
|
|
||||||
mkKeyValue ? mkKeyValueDefault {} "=",
|
mkKeyValue ? mkKeyValueDefault {} "=",
|
||||||
# allow lists as values for duplicate keys
|
|
||||||
listsAsDuplicateKeys ? false
|
listsAsDuplicateKeys ? false
|
||||||
}: { globalSection, sections ? {} }:
|
}: { globalSection, sections ? {} }:
|
||||||
( if globalSection == {}
|
( if globalSection == {}
|
||||||
|
@ -219,24 +313,43 @@ let
|
||||||
+ "\n")
|
+ "\n")
|
||||||
+ (toINI { inherit mkSectionName mkKeyValue listsAsDuplicateKeys; } sections);
|
+ (toINI { inherit mkSectionName mkKeyValue listsAsDuplicateKeys; } sections);
|
||||||
|
|
||||||
/* Generate a git-config file from an attrset.
|
/**
|
||||||
*
|
Generate a git-config file from an attrset.
|
||||||
* It has two major differences from the regular INI format:
|
|
||||||
*
|
It has two major differences from the regular INI format:
|
||||||
* 1. values are indented with tabs
|
|
||||||
* 2. sections can have sub-sections
|
1. values are indented with tabs
|
||||||
*
|
2. sections can have sub-sections
|
||||||
* generators.toGitINI {
|
|
||||||
* url."ssh://git@github.com/".insteadOf = "https://github.com";
|
Further: https://git-scm.com/docs/git-config#EXAMPLES
|
||||||
* user.name = "edolstra";
|
|
||||||
* }
|
# Examples
|
||||||
*
|
:::{.example}
|
||||||
*> [url "ssh://git@github.com/"]
|
## `lib.generators.toGitINI` usage example
|
||||||
*> insteadOf = "https://github.com"
|
|
||||||
*>
|
```nix
|
||||||
*> [user]
|
generators.toGitINI {
|
||||||
*> name = "edolstra"
|
url."ssh://git@github.com/".insteadOf = "https://github.com";
|
||||||
*/
|
user.name = "edolstra";
|
||||||
|
}
|
||||||
|
|
||||||
|
> [url "ssh://git@github.com/"]
|
||||||
|
> insteadOf = "https://github.com"
|
||||||
|
>
|
||||||
|
> [user]
|
||||||
|
> name = "edolstra"
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`attrs`
|
||||||
|
|
||||||
|
: Key-value pairs to be converted to a git-config file.
|
||||||
|
See: https://git-scm.com/docs/git-config#_variables for possible values.
|
||||||
|
|
||||||
|
*/
|
||||||
toGitINI = attrs:
|
toGitINI = attrs:
|
||||||
let
|
let
|
||||||
mkSectionName = name:
|
mkSectionName = name:
|
||||||
|
@ -280,20 +393,40 @@ let
|
||||||
in
|
in
|
||||||
toINI_ (gitFlattenAttrs attrs);
|
toINI_ (gitFlattenAttrs attrs);
|
||||||
|
|
||||||
# mkKeyValueDefault wrapper that handles dconf INI quirks.
|
/**
|
||||||
# The main differences of the format is that it requires strings to be quoted.
|
mkKeyValueDefault wrapper that handles dconf INI quirks.
|
||||||
|
The main differences of the format is that it requires strings to be quoted.
|
||||||
|
*/
|
||||||
mkDconfKeyValue = mkKeyValueDefault { mkValueString = v: toString (gvariant.mkValue v); } "=";
|
mkDconfKeyValue = mkKeyValueDefault { mkValueString = v: toString (gvariant.mkValue v); } "=";
|
||||||
|
|
||||||
# Generates INI in dconf keyfile style. See https://help.gnome.org/admin/system-admin-guide/stable/dconf-keyfiles.html.en
|
/**
|
||||||
# for details.
|
Generates INI in dconf keyfile style. See https://help.gnome.org/admin/system-admin-guide/stable/dconf-keyfiles.html.en
|
||||||
|
for details.
|
||||||
|
*/
|
||||||
toDconfINI = toINI { mkKeyValue = mkDconfKeyValue; };
|
toDconfINI = toINI { mkKeyValue = mkDconfKeyValue; };
|
||||||
|
|
||||||
|
/**
|
||||||
|
Recurses through a `Value` limited to a certain depth. (`depthLimit`)
|
||||||
|
|
||||||
|
If the depth is exceeded, an error is thrown, unless `throwOnDepthLimit` is set to `false`.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
Structured function argument
|
||||||
|
|
||||||
|
: depthLimit (required)
|
||||||
|
: If this option is not null, the given value will stop evaluating at a certain depth
|
||||||
|
|
||||||
|
: throwOnDepthLimit (optional, default: `true`)
|
||||||
|
: If this option is true, an error will be thrown, if a certain given depth is exceeded
|
||||||
|
|
||||||
|
Value
|
||||||
|
: The value to be evaluated recursively
|
||||||
|
*/
|
||||||
withRecursion =
|
withRecursion =
|
||||||
{
|
{
|
||||||
/* If this option is not null, the given value will stop evaluating at a certain depth */
|
depthLimit,
|
||||||
depthLimit
|
throwOnDepthLimit ? true
|
||||||
/* If this option is true, an error will be thrown, if a certain given depth is exceeded */
|
|
||||||
, throwOnDepthLimit ? true
|
|
||||||
}:
|
}:
|
||||||
assert isInt depthLimit;
|
assert isInt depthLimit;
|
||||||
let
|
let
|
||||||
|
@ -323,20 +456,33 @@ let
|
||||||
in
|
in
|
||||||
mapAny 0;
|
mapAny 0;
|
||||||
|
|
||||||
/* Pretty print a value, akin to `builtins.trace`.
|
/**
|
||||||
* Should probably be a builtin as well.
|
Pretty print a value, akin to `builtins.trace`.
|
||||||
* The pretty-printed string should be suitable for rendering default values
|
|
||||||
* in the NixOS manual. In particular, it should be as close to a valid Nix expression
|
Should probably be a builtin as well.
|
||||||
* as possible.
|
|
||||||
*/
|
The pretty-printed string should be suitable for rendering default values
|
||||||
|
in the NixOS manual. In particular, it should be as close to a valid Nix expression
|
||||||
|
as possible.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
Structured function argument
|
||||||
|
: allowPrettyValues
|
||||||
|
: If this option is true, attrsets like { __pretty = fn; val = …; }
|
||||||
|
will use fn to convert val to a pretty printed representation.
|
||||||
|
(This means fn is type Val -> String.)
|
||||||
|
: multiline
|
||||||
|
: If this option is true, the output is indented with newlines for attribute sets and lists
|
||||||
|
: indent
|
||||||
|
: Initial indentation level
|
||||||
|
|
||||||
|
Value
|
||||||
|
: The value to be pretty printed
|
||||||
|
*/
|
||||||
toPretty = {
|
toPretty = {
|
||||||
/* If this option is true, attrsets like { __pretty = fn; val = …; }
|
|
||||||
will use fn to convert val to a pretty printed representation.
|
|
||||||
(This means fn is type Val -> String.) */
|
|
||||||
allowPrettyValues ? false,
|
allowPrettyValues ? false,
|
||||||
/* If this option is true, the output is indented with newlines for attribute sets and lists */
|
|
||||||
multiline ? true,
|
multiline ? true,
|
||||||
/* Initial indentation level */
|
|
||||||
indent ? ""
|
indent ? ""
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
|
@ -397,7 +543,17 @@ let
|
||||||
else abort "generators.toPretty: should never happen (v = ${v})";
|
else abort "generators.toPretty: should never happen (v = ${v})";
|
||||||
in go indent;
|
in go indent;
|
||||||
|
|
||||||
# PLIST handling
|
/**
|
||||||
|
Translate a simple Nix expression to [Plist notation](https://en.wikipedia.org/wiki/Property_list).
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
Options
|
||||||
|
: Empty set, there may be configuration options in the future
|
||||||
|
|
||||||
|
Value
|
||||||
|
: The value to be converted to Plist
|
||||||
|
*/
|
||||||
toPlist = {}: v: let
|
toPlist = {}: v: let
|
||||||
expr = ind: x:
|
expr = ind: x:
|
||||||
if x == null then "" else
|
if x == null then "" else
|
||||||
|
@ -447,9 +603,21 @@ let
|
||||||
${expr "" v}
|
${expr "" v}
|
||||||
</plist>'';
|
</plist>'';
|
||||||
|
|
||||||
/* Translate a simple Nix expression to Dhall notation.
|
/**
|
||||||
* Note that integers are translated to Integer and never
|
Translate a simple Nix expression to Dhall notation.
|
||||||
* the Natural type.
|
|
||||||
|
Note that integers are translated to Integer and never
|
||||||
|
the Natural type.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
Options
|
||||||
|
|
||||||
|
: Empty set, there may be configuration options in the future
|
||||||
|
|
||||||
|
Value
|
||||||
|
|
||||||
|
: The value to be converted to Dhall
|
||||||
*/
|
*/
|
||||||
toDhall = { }@args: v:
|
toDhall = { }@args: v:
|
||||||
let concatItems = concatStringsSep ", ";
|
let concatItems = concatStringsSep ", ";
|
||||||
|
@ -471,46 +639,71 @@ ${expr "" v}
|
||||||
else
|
else
|
||||||
toJSON v;
|
toJSON v;
|
||||||
|
|
||||||
/*
|
/**
|
||||||
Translate a simple Nix expression to Lua representation with occasional
|
Translate a simple Nix expression to Lua representation with occasional
|
||||||
Lua-inlines that can be constructed by mkLuaInline function.
|
Lua-inlines that can be constructed by mkLuaInline function.
|
||||||
|
|
||||||
Configuration:
|
Configuration:
|
||||||
* multiline - by default is true which results in indented block-like view.
|
|
||||||
* indent - initial indent.
|
|
||||||
* asBindings - by default generate single value, but with this use attrset to set global vars.
|
|
||||||
|
|
||||||
Attention:
|
* multiline - by default is true which results in indented block-like view.
|
||||||
Regardless of multiline parameter there is no trailing newline.
|
* indent - initial indent.
|
||||||
|
* asBindings - by default generate single value, but with this use attrset to set global vars.
|
||||||
|
|
||||||
Example:
|
Attention:
|
||||||
generators.toLua {}
|
|
||||||
{
|
Regardless of multiline parameter there is no trailing newline.
|
||||||
cmd = [ "typescript-language-server" "--stdio" ];
|
|
||||||
settings.workspace.library = mkLuaInline ''vim.api.nvim_get_runtime_file("", true)'';
|
|
||||||
}
|
# Inputs
|
||||||
->
|
|
||||||
|
Structured function argument
|
||||||
|
|
||||||
|
: multiline (optional, default: `true`)
|
||||||
|
: If this option is true, the output is indented with newlines for attribute sets and lists
|
||||||
|
: indent (optional, default: `""`)
|
||||||
|
: Initial indentation level
|
||||||
|
: asBindings (optional, default: `false`)
|
||||||
|
: Interpret as variable bindings
|
||||||
|
|
||||||
|
Value
|
||||||
|
|
||||||
|
: The value to be converted to Lua
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
toLua :: AttrSet -> Any -> String
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.generators.toLua` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
generators.toLua {}
|
||||||
{
|
{
|
||||||
["cmd"] = {
|
cmd = [ "typescript-language-server" "--stdio" ];
|
||||||
"typescript-language-server",
|
settings.workspace.library = mkLuaInline ''vim.api.nvim_get_runtime_file("", true)'';
|
||||||
"--stdio"
|
|
||||||
},
|
|
||||||
["settings"] = {
|
|
||||||
["workspace"] = {
|
|
||||||
["library"] = (vim.api.nvim_get_runtime_file("", true))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
->
|
||||||
|
{
|
||||||
|
["cmd"] = {
|
||||||
|
"typescript-language-server",
|
||||||
|
"--stdio"
|
||||||
|
},
|
||||||
|
["settings"] = {
|
||||||
|
["workspace"] = {
|
||||||
|
["library"] = (vim.api.nvim_get_runtime_file("", true))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Type:
|
:::
|
||||||
toLua :: AttrSet -> Any -> String
|
|
||||||
*/
|
*/
|
||||||
toLua = {
|
toLua = {
|
||||||
/* If this option is true, the output is indented with newlines for attribute sets and lists */
|
|
||||||
multiline ? true,
|
multiline ? true,
|
||||||
/* Initial indentation level */
|
|
||||||
indent ? "",
|
indent ? "",
|
||||||
/* Interpret as variable bindings */
|
|
||||||
asBindings ? false,
|
asBindings ? false,
|
||||||
}@args: v:
|
}@args: v:
|
||||||
let
|
let
|
||||||
|
@ -559,44 +752,55 @@ ${expr "" v}
|
||||||
else
|
else
|
||||||
abort "generators.toLua: type ${typeOf v} is unsupported";
|
abort "generators.toLua: type ${typeOf v} is unsupported";
|
||||||
|
|
||||||
/*
|
/**
|
||||||
Mark string as Lua expression to be inlined when processed by toLua.
|
Mark string as Lua expression to be inlined when processed by toLua.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkLuaInline :: String -> AttrSet
|
# Inputs
|
||||||
|
|
||||||
|
`expr`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkLuaInline :: String -> AttrSet
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkLuaInline = expr: { _type = "lua-inline"; inherit expr; };
|
mkLuaInline = expr: { _type = "lua-inline"; inherit expr; };
|
||||||
|
} // {
|
||||||
|
/**
|
||||||
|
Generates JSON from an arbitrary (non-function) value.
|
||||||
|
For more information see the documentation of the builtin.
|
||||||
|
|
||||||
in
|
# Inputs
|
||||||
|
|
||||||
# Everything in this attrset is the public interface of the file.
|
Options
|
||||||
{
|
|
||||||
inherit
|
|
||||||
mkDconfKeyValue
|
|
||||||
mkKeyValueDefault
|
|
||||||
mkLuaInline
|
|
||||||
mkValueStringDefault
|
|
||||||
toDconfINI
|
|
||||||
toDhall
|
|
||||||
toGitINI
|
|
||||||
toINI
|
|
||||||
toINIWithGlobalSection
|
|
||||||
toKeyValue
|
|
||||||
toLua
|
|
||||||
toPlist
|
|
||||||
toPretty
|
|
||||||
withRecursion
|
|
||||||
;
|
|
||||||
|
|
||||||
/* Generates JSON from an arbitrary (non-function) value.
|
: Empty set, there may be configuration options in the future
|
||||||
* For more information see the documentation of the builtin.
|
|
||||||
*/
|
|
||||||
toJSON = {}: toJSON;
|
|
||||||
|
|
||||||
/* YAML has been a strict superset of JSON since 1.2, so we
|
Value
|
||||||
* use toJSON. Before it only had a few differences referring
|
|
||||||
* to implicit typing rules, so it should work with older
|
: The value to be converted to JSON
|
||||||
* parsers as well.
|
*/
|
||||||
*/
|
toJSON = {}: lib.strings.toJSON;
|
||||||
toYAML = {}: toJSON;
|
|
||||||
|
/**
|
||||||
|
YAML has been a strict superset of JSON since 1.2, so we
|
||||||
|
use toJSON. Before it only had a few differences referring
|
||||||
|
to implicit typing rules, so it should work with older
|
||||||
|
parsers as well.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
Options
|
||||||
|
|
||||||
|
: Empty set, there may be configuration options in the future
|
||||||
|
|
||||||
|
Value
|
||||||
|
|
||||||
|
: The value to be converted to YAML
|
||||||
|
*/
|
||||||
|
toYAML = {}: lib.strings.toJSON;
|
||||||
}
|
}
|
||||||
|
|
405
lib/gvariant.nix
405
lib/gvariant.nix
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
A partial and basic implementation of GVariant formatted strings.
|
A partial and basic implementation of GVariant formatted strings.
|
||||||
See [GVariant Format Strings](https://docs.gtk.org/glib/gvariant-format-strings.html) for details.
|
See [GVariant Format Strings](https://docs.gtk.org/glib/gvariant-format-strings.html) for details.
|
||||||
|
|
||||||
|
@ -41,17 +41,28 @@ let
|
||||||
variant = "v";
|
variant = "v";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Check if a value is a GVariant value
|
|
||||||
|
|
||||||
Type:
|
|
||||||
isGVariant :: Any -> Bool
|
|
||||||
*/
|
|
||||||
isGVariant = v: v._type or "" == "gvariant";
|
|
||||||
|
|
||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
|
|
||||||
inherit type isGVariant;
|
inherit type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Check if a value is a GVariant value
|
||||||
|
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`v`
|
||||||
|
|
||||||
|
: value to check
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
isGVariant :: Any -> Bool
|
||||||
|
```
|
||||||
|
*/
|
||||||
|
isGVariant = v: v._type or "" == "gvariant";
|
||||||
|
|
||||||
intConstructors = [
|
intConstructors = [
|
||||||
{
|
{
|
||||||
|
@ -100,11 +111,22 @@ rec {
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
/* Returns the GVariant value that most closely matches the given Nix value.
|
/**
|
||||||
If no GVariant value can be found unambiguously then error is thrown.
|
Returns the GVariant value that most closely matches the given Nix value.
|
||||||
|
If no GVariant value can be found unambiguously then error is thrown.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkValue :: Any -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`v`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkValue :: Any -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkValue = v:
|
mkValue = v:
|
||||||
if builtins.isBool v then
|
if builtins.isBool v then
|
||||||
|
@ -132,14 +154,32 @@ rec {
|
||||||
else
|
else
|
||||||
throw "The GVariant type of “${builtins.typeOf v}” can't be inferred.";
|
throw "The GVariant type of “${builtins.typeOf v}” can't be inferred.";
|
||||||
|
|
||||||
/* Returns the GVariant array from the given type of the elements and a Nix list.
|
/**
|
||||||
|
Returns the GVariant array from the given type of the elements and a Nix list.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkArray :: [Any] -> gvariant
|
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
# Creating a string array
|
|
||||||
lib.gvariant.mkArray [ "a" "b" "c" ]
|
`elems`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkArray :: [Any] -> gvariant
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.gvariant.mkArray` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# Creating a string array
|
||||||
|
lib.gvariant.mkArray [ "a" "b" "c" ]
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
mkArray = elems:
|
mkArray = elems:
|
||||||
let
|
let
|
||||||
|
@ -153,31 +193,67 @@ rec {
|
||||||
"@${self.type} [${concatMapStringsSep "," toString self.value}]";
|
"@${self.type} [${concatMapStringsSep "," toString self.value}]";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Returns the GVariant array from the given empty Nix list.
|
/**
|
||||||
|
Returns the GVariant array from the given empty Nix list.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkEmptyArray :: gvariant.type -> gvariant
|
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
# Creating an empty string array
|
|
||||||
lib.gvariant.mkEmptyArray (lib.gvariant.type.string)
|
`elemType`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkEmptyArray :: gvariant.type -> gvariant
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.gvariant.mkEmptyArray` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# Creating an empty string array
|
||||||
|
lib.gvariant.mkEmptyArray (lib.gvariant.type.string)
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
mkEmptyArray = elemType: mkPrimitive (type.arrayOf elemType) [ ] // {
|
mkEmptyArray = elemType: mkPrimitive (type.arrayOf elemType) [ ] // {
|
||||||
__toString = self: "@${self.type} []";
|
__toString = self: "@${self.type} []";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Returns the GVariant variant from the given Nix value. Variants are containers
|
/**
|
||||||
of different GVariant type.
|
Returns the GVariant variant from the given Nix value. Variants are containers
|
||||||
|
of different GVariant type.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkVariant :: Any -> gvariant
|
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
lib.gvariant.mkArray [
|
|
||||||
(lib.gvariant.mkVariant "a string")
|
`elem`
|
||||||
(lib.gvariant.mkVariant (lib.gvariant.mkInt32 1))
|
|
||||||
]
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkVariant :: Any -> gvariant
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.gvariant.mkVariant` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
lib.gvariant.mkArray [
|
||||||
|
(lib.gvariant.mkVariant "a string")
|
||||||
|
(lib.gvariant.mkVariant (lib.gvariant.mkInt32 1))
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
mkVariant = elem:
|
mkVariant = elem:
|
||||||
let gvarElem = mkValue elem;
|
let gvarElem = mkValue elem;
|
||||||
|
@ -185,23 +261,43 @@ rec {
|
||||||
__toString = self: "<${toString self.value}>";
|
__toString = self: "<${toString self.value}>";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Returns the GVariant dictionary entry from the given key and value.
|
/**
|
||||||
|
Returns the GVariant dictionary entry from the given key and value.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkDictionaryEntry :: String -> Any -> gvariant
|
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
# A dictionary describing an Epiphany’s search provider
|
|
||||||
[
|
`name`
|
||||||
(lib.gvariant.mkDictionaryEntry "url" (lib.gvariant.mkVariant "https://duckduckgo.com/?q=%s&t=epiphany"))
|
|
||||||
(lib.gvariant.mkDictionaryEntry "bang" (lib.gvariant.mkVariant "!d"))
|
: The key of the entry
|
||||||
(lib.gvariant.mkDictionaryEntry "name" (lib.gvariant.mkVariant "DuckDuckGo"))
|
|
||||||
]
|
`value`
|
||||||
|
|
||||||
|
: The value of the entry
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkDictionaryEntry :: String -> Any -> gvariant
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.gvariant.mkDictionaryEntry` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# A dictionary describing an Epiphany’s search provider
|
||||||
|
[
|
||||||
|
(lib.gvariant.mkDictionaryEntry "url" (lib.gvariant.mkVariant "https://duckduckgo.com/?q=%s&t=epiphany"))
|
||||||
|
(lib.gvariant.mkDictionaryEntry "bang" (lib.gvariant.mkVariant "!d"))
|
||||||
|
(lib.gvariant.mkDictionaryEntry "name" (lib.gvariant.mkVariant "DuckDuckGo"))
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
mkDictionaryEntry =
|
mkDictionaryEntry =
|
||||||
# The key of the entry
|
|
||||||
name:
|
name:
|
||||||
# The value of the entry
|
|
||||||
value:
|
value:
|
||||||
let
|
let
|
||||||
name' = mkValue name;
|
name' = mkValue name;
|
||||||
|
@ -212,10 +308,25 @@ rec {
|
||||||
__toString = self: "@${self.type} {${name'},${value'}}";
|
__toString = self: "@${self.type} {${name'},${value'}}";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Returns the GVariant maybe from the given element type.
|
/**
|
||||||
|
Returns the GVariant maybe from the given element type.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkMaybe :: gvariant.type -> Any -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`elemType`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`elem`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkMaybe :: gvariant.type -> Any -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkMaybe = elemType: elem:
|
mkMaybe = elemType: elem:
|
||||||
mkPrimitive (type.maybeOf elemType) elem // {
|
mkPrimitive (type.maybeOf elemType) elem // {
|
||||||
|
@ -226,24 +337,57 @@ rec {
|
||||||
"just ${toString self.value}";
|
"just ${toString self.value}";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Returns the GVariant nothing from the given element type.
|
/**
|
||||||
|
Returns the GVariant nothing from the given element type.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkNothing :: gvariant.type -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`elemType`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkNothing :: gvariant.type -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkNothing = elemType: mkMaybe elemType null;
|
mkNothing = elemType: mkMaybe elemType null;
|
||||||
|
|
||||||
/* Returns the GVariant just from the given Nix value.
|
/**
|
||||||
|
Returns the GVariant just from the given Nix value.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkJust :: Any -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`elem`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkJust :: Any -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkJust = elem: let gvarElem = mkValue elem; in mkMaybe gvarElem.type gvarElem;
|
mkJust = elem: let gvarElem = mkValue elem; in mkMaybe gvarElem.type gvarElem;
|
||||||
|
|
||||||
/* Returns the GVariant tuple from the given Nix list.
|
/**
|
||||||
|
Returns the GVariant tuple from the given Nix list.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkTuple :: [Any] -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`elems`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkTuple :: [Any] -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkTuple = elems:
|
mkTuple = elems:
|
||||||
let
|
let
|
||||||
|
@ -255,20 +399,42 @@ rec {
|
||||||
"@${self.type} (${concatMapStringsSep "," toString self.value})";
|
"@${self.type} (${concatMapStringsSep "," toString self.value})";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Returns the GVariant boolean from the given Nix bool value.
|
/**
|
||||||
|
Returns the GVariant boolean from the given Nix bool value.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkBoolean :: Bool -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`v`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkBoolean :: Bool -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkBoolean = v:
|
mkBoolean = v:
|
||||||
mkPrimitive type.boolean v // {
|
mkPrimitive type.boolean v // {
|
||||||
__toString = self: if self.value then "true" else "false";
|
__toString = self: if self.value then "true" else "false";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Returns the GVariant string from the given Nix string value.
|
/**
|
||||||
|
Returns the GVariant string from the given Nix string value.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkString :: String -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`v`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkString :: String -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkString = v:
|
mkString = v:
|
||||||
let sanitize = s: replaceStrings [ "\n" ] [ "\\n" ] (escape [ "'" "\\" ] s);
|
let sanitize = s: replaceStrings [ "\n" ] [ "\\n" ] (escape [ "'" "\\" ] s);
|
||||||
|
@ -276,72 +442,129 @@ rec {
|
||||||
__toString = self: "'${sanitize self.value}'";
|
__toString = self: "'${sanitize self.value}'";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Returns the GVariant object path from the given Nix string value.
|
/**
|
||||||
|
Returns the GVariant object path from the given Nix string value.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkObjectpath :: String -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`v`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkObjectpath :: String -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkObjectpath = v:
|
mkObjectpath = v:
|
||||||
mkPrimitive type.string v // {
|
mkPrimitive type.string v // {
|
||||||
__toString = self: "objectpath '${escape [ "'" ] self.value}'";
|
__toString = self: "objectpath '${escape [ "'" ] self.value}'";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Returns the GVariant uchar from the given Nix int value.
|
/**
|
||||||
|
Returns the GVariant uchar from the given Nix int value.
|
||||||
|
|
||||||
Type:
|
# Type
|
||||||
mkUchar :: Int -> gvariant
|
|
||||||
|
```
|
||||||
|
mkUchar :: Int -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkUchar = mkPrimitive type.uchar;
|
mkUchar = mkPrimitive type.uchar;
|
||||||
|
|
||||||
/* Returns the GVariant int16 from the given Nix int value.
|
/**
|
||||||
|
Returns the GVariant int16 from the given Nix int value.
|
||||||
|
|
||||||
Type:
|
# Type
|
||||||
mkInt16 :: Int -> gvariant
|
|
||||||
|
```
|
||||||
|
mkInt16 :: Int -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkInt16 = mkPrimitive type.int16;
|
mkInt16 = mkPrimitive type.int16;
|
||||||
|
|
||||||
/* Returns the GVariant uint16 from the given Nix int value.
|
/**
|
||||||
|
Returns the GVariant uint16 from the given Nix int value.
|
||||||
|
|
||||||
Type:
|
# Type
|
||||||
mkUint16 :: Int -> gvariant
|
|
||||||
|
```
|
||||||
|
mkUint16 :: Int -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkUint16 = mkPrimitive type.uint16;
|
mkUint16 = mkPrimitive type.uint16;
|
||||||
|
|
||||||
/* Returns the GVariant int32 from the given Nix int value.
|
/**
|
||||||
|
Returns the GVariant int32 from the given Nix int value.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkInt32 :: Int -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`v`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkInt32 :: Int -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkInt32 = v:
|
mkInt32 = v:
|
||||||
mkPrimitive type.int32 v // {
|
mkPrimitive type.int32 v // {
|
||||||
__toString = self: toString self.value;
|
__toString = self: toString self.value;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Returns the GVariant uint32 from the given Nix int value.
|
/**
|
||||||
|
Returns the GVariant uint32 from the given Nix int value.
|
||||||
|
|
||||||
Type:
|
# Type
|
||||||
mkUint32 :: Int -> gvariant
|
|
||||||
|
```
|
||||||
|
mkUint32 :: Int -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkUint32 = mkPrimitive type.uint32;
|
mkUint32 = mkPrimitive type.uint32;
|
||||||
|
|
||||||
/* Returns the GVariant int64 from the given Nix int value.
|
/**
|
||||||
|
Returns the GVariant int64 from the given Nix int value.
|
||||||
|
|
||||||
Type:
|
# Type
|
||||||
mkInt64 :: Int -> gvariant
|
|
||||||
|
```
|
||||||
|
mkInt64 :: Int -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkInt64 = mkPrimitive type.int64;
|
mkInt64 = mkPrimitive type.int64;
|
||||||
|
|
||||||
/* Returns the GVariant uint64 from the given Nix int value.
|
/**
|
||||||
|
Returns the GVariant uint64 from the given Nix int value.
|
||||||
|
|
||||||
Type:
|
# Type
|
||||||
mkUint64 :: Int -> gvariant
|
|
||||||
|
```
|
||||||
|
mkUint64 :: Int -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkUint64 = mkPrimitive type.uint64;
|
mkUint64 = mkPrimitive type.uint64;
|
||||||
|
|
||||||
/* Returns the GVariant double from the given Nix float value.
|
/**
|
||||||
|
Returns the GVariant double from the given Nix float value.
|
||||||
|
|
||||||
Type:
|
|
||||||
mkDouble :: Float -> gvariant
|
# Inputs
|
||||||
|
|
||||||
|
`v`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
mkDouble :: Float -> gvariant
|
||||||
|
```
|
||||||
*/
|
*/
|
||||||
mkDouble = v:
|
mkDouble = v:
|
||||||
mkPrimitive type.double v // {
|
mkPrimitive type.double v // {
|
||||||
|
|
355
lib/meta.nix
355
lib/meta.nix
|
@ -1,5 +1,7 @@
|
||||||
/* Some functions for manipulating meta attributes, as well as the
|
/**
|
||||||
name attribute. */
|
Some functions for manipulating meta attributes, as well as the
|
||||||
|
name attribute.
|
||||||
|
*/
|
||||||
|
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
|
||||||
|
@ -11,90 +13,225 @@ in
|
||||||
rec {
|
rec {
|
||||||
|
|
||||||
|
|
||||||
/* Add to or override the meta attributes of the given
|
/**
|
||||||
derivation.
|
Add to or override the meta attributes of the given
|
||||||
|
derivation.
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
addMetaAttrs {description = "Bla blah";} somePkg
|
|
||||||
|
`newAttrs`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`drv`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
|
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.meta.addMetaAttrs` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
addMetaAttrs {description = "Bla blah";} somePkg
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
addMetaAttrs = newAttrs: drv:
|
addMetaAttrs = newAttrs: drv:
|
||||||
drv // { meta = (drv.meta or {}) // newAttrs; };
|
drv // { meta = (drv.meta or {}) // newAttrs; };
|
||||||
|
|
||||||
|
|
||||||
/* Disable Hydra builds of given derivation.
|
/**
|
||||||
|
Disable Hydra builds of given derivation.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`drv`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
*/
|
*/
|
||||||
dontDistribute = drv: addMetaAttrs { hydraPlatforms = []; } drv;
|
dontDistribute = drv: addMetaAttrs { hydraPlatforms = []; } drv;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
Change the [symbolic name of a derivation](https://nixos.org/manual/nix/stable/language/derivations.html#attr-name).
|
Change the [symbolic name of a derivation](https://nixos.org/manual/nix/stable/language/derivations.html#attr-name).
|
||||||
|
|
||||||
:::{.warning}
|
:::{.warning}
|
||||||
Dependent derivations will be rebuilt when the symbolic name is changed.
|
Dependent derivations will be rebuilt when the symbolic name is changed.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`name`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`drv`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
*/
|
*/
|
||||||
setName = name: drv: drv // {inherit name;};
|
setName = name: drv: drv // {inherit name;};
|
||||||
|
|
||||||
|
|
||||||
/* Like `setName`, but takes the previous name as an argument.
|
/**
|
||||||
|
Like `setName`, but takes the previous name as an argument.
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
updateName (oldName: oldName + "-experimental") somePkg
|
|
||||||
|
`updater`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`drv`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
|
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.meta.updateName` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
updateName (oldName: oldName + "-experimental") somePkg
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
updateName = updater: drv: drv // {name = updater (drv.name);};
|
updateName = updater: drv: drv // {name = updater (drv.name);};
|
||||||
|
|
||||||
|
|
||||||
/* Append a suffix to the name of a package (before the version
|
/**
|
||||||
part). */
|
Append a suffix to the name of a package (before the version
|
||||||
|
part).
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`suffix`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
*/
|
||||||
appendToName = suffix: updateName (name:
|
appendToName = suffix: updateName (name:
|
||||||
let x = builtins.parseDrvName name; in "${x.name}-${suffix}-${x.version}");
|
let x = builtins.parseDrvName name; in "${x.name}-${suffix}-${x.version}");
|
||||||
|
|
||||||
|
|
||||||
/* Apply a function to each derivation and only to derivations in an attrset.
|
/**
|
||||||
|
Apply a function to each derivation and only to derivations in an attrset.
|
||||||
|
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`f`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`set`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
*/
|
*/
|
||||||
mapDerivationAttrset = f: set: lib.mapAttrs (name: pkg: if lib.isDerivation pkg then (f pkg) else pkg) set;
|
mapDerivationAttrset = f: set: lib.mapAttrs (name: pkg: if lib.isDerivation pkg then (f pkg) else pkg) set;
|
||||||
|
|
||||||
/* Set the nix-env priority of the package.
|
/**
|
||||||
|
Set the nix-env priority of the package.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`priority`
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`drv`
|
||||||
|
: 2\. Function argument
|
||||||
*/
|
*/
|
||||||
setPrio = priority: addMetaAttrs { inherit priority; };
|
setPrio = priority: addMetaAttrs { inherit priority; };
|
||||||
|
|
||||||
/* Decrease the nix-env priority of the package, i.e., other
|
/**
|
||||||
versions/variants of the package will be preferred.
|
Decrease the nix-env priority of the package, i.e., other
|
||||||
|
versions/variants of the package will be preferred.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`drv`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
*/
|
*/
|
||||||
lowPrio = setPrio 10;
|
lowPrio = setPrio 10;
|
||||||
|
|
||||||
/* Apply lowPrio to an attrset with derivations
|
/**
|
||||||
|
Apply lowPrio to an attrset with derivations
|
||||||
|
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`set`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
*/
|
*/
|
||||||
lowPrioSet = set: mapDerivationAttrset lowPrio set;
|
lowPrioSet = set: mapDerivationAttrset lowPrio set;
|
||||||
|
|
||||||
|
|
||||||
/* Increase the nix-env priority of the package, i.e., this
|
/**
|
||||||
version/variant of the package will be preferred.
|
Increase the nix-env priority of the package, i.e., this
|
||||||
|
version/variant of the package will be preferred.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`drv`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
*/
|
*/
|
||||||
hiPrio = setPrio (-10);
|
hiPrio = setPrio (-10);
|
||||||
|
|
||||||
/* Apply hiPrio to an attrset with derivations
|
/**
|
||||||
|
Apply hiPrio to an attrset with derivations
|
||||||
|
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`set`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
*/
|
*/
|
||||||
hiPrioSet = set: mapDerivationAttrset hiPrio set;
|
hiPrioSet = set: mapDerivationAttrset hiPrio set;
|
||||||
|
|
||||||
|
|
||||||
/* Check to see if a platform is matched by the given `meta.platforms`
|
/**
|
||||||
element.
|
Check to see if a platform is matched by the given `meta.platforms`
|
||||||
|
element.
|
||||||
|
|
||||||
A `meta.platform` pattern is either
|
A `meta.platform` pattern is either
|
||||||
|
|
||||||
1. (legacy) a system string.
|
1. (legacy) a system string.
|
||||||
|
|
||||||
2. (modern) a pattern for the entire platform structure (see `lib.systems.inspect.platformPatterns`).
|
2. (modern) a pattern for the entire platform structure (see `lib.systems.inspect.platformPatterns`).
|
||||||
|
|
||||||
3. (modern) a pattern for the platform `parsed` field (see `lib.systems.inspect.patterns`).
|
3. (modern) a pattern for the platform `parsed` field (see `lib.systems.inspect.patterns`).
|
||||||
|
|
||||||
We can inject these into a pattern for the whole of a structured platform,
|
We can inject these into a pattern for the whole of a structured platform,
|
||||||
and then match that.
|
and then match that.
|
||||||
|
|
||||||
Example:
|
|
||||||
lib.meta.platformMatch { system = "aarch64-darwin"; } "aarch64-darwin"
|
# Inputs
|
||||||
=> true
|
|
||||||
|
`platform`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`elem`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
|
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.meta.platformMatch` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
lib.meta.platformMatch { system = "aarch64-darwin"; } "aarch64-darwin"
|
||||||
|
=> true
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
platformMatch = platform: elem: (
|
platformMatch = platform: elem: (
|
||||||
# Check with simple string comparison if elem was a string.
|
# Check with simple string comparison if elem was a string.
|
||||||
|
@ -112,39 +249,70 @@ rec {
|
||||||
) platform
|
) platform
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Check if a package is available on a given platform.
|
/**
|
||||||
|
Check if a package is available on a given platform.
|
||||||
|
|
||||||
A package is available on a platform if both
|
A package is available on a platform if both
|
||||||
|
|
||||||
1. One of `meta.platforms` pattern matches the given
|
1. One of `meta.platforms` pattern matches the given
|
||||||
platform, or `meta.platforms` is not present.
|
platform, or `meta.platforms` is not present.
|
||||||
|
|
||||||
2. None of `meta.badPlatforms` pattern matches the given platform.
|
2. None of `meta.badPlatforms` pattern matches the given platform.
|
||||||
|
|
||||||
Example:
|
|
||||||
lib.meta.availableOn { system = "aarch64-darwin"; } pkg.zsh
|
# Inputs
|
||||||
=> true
|
|
||||||
|
`platform`
|
||||||
|
|
||||||
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`pkg`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
|
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.meta.availableOn` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
lib.meta.availableOn { system = "aarch64-darwin"; } pkg.zsh
|
||||||
|
=> true
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
availableOn = platform: pkg:
|
availableOn = platform: pkg:
|
||||||
((!pkg?meta.platforms) || any (platformMatch platform) pkg.meta.platforms) &&
|
((!pkg?meta.platforms) || any (platformMatch platform) pkg.meta.platforms) &&
|
||||||
all (elem: !platformMatch platform elem) (pkg.meta.badPlatforms or []);
|
all (elem: !platformMatch platform elem) (pkg.meta.badPlatforms or []);
|
||||||
|
|
||||||
/* Get the corresponding attribute in lib.licenses
|
/**
|
||||||
from the SPDX ID.
|
Get the corresponding attribute in lib.licenses
|
||||||
For SPDX IDs, see
|
from the SPDX ID.
|
||||||
https://spdx.org/licenses
|
For SPDX IDs, see
|
||||||
|
https://spdx.org/licenses
|
||||||
|
|
||||||
Type:
|
# Type
|
||||||
getLicenseFromSpdxId :: str -> AttrSet
|
|
||||||
|
|
||||||
Example:
|
```
|
||||||
lib.getLicenseFromSpdxId "MIT" == lib.licenses.mit
|
getLicenseFromSpdxId :: str -> AttrSet
|
||||||
=> true
|
```
|
||||||
lib.getLicenseFromSpdxId "mIt" == lib.licenses.mit
|
|
||||||
=> true
|
# Examples
|
||||||
lib.getLicenseFromSpdxId "MY LICENSE"
|
:::{.example}
|
||||||
=> trace: warning: getLicenseFromSpdxId: No license matches the given SPDX ID: MY LICENSE
|
## `lib.meta.getLicenseFromSpdxId` usage example
|
||||||
=> { shortName = "MY LICENSE"; }
|
|
||||||
|
```nix
|
||||||
|
lib.getLicenseFromSpdxId "MIT" == lib.licenses.mit
|
||||||
|
=> true
|
||||||
|
lib.getLicenseFromSpdxId "mIt" == lib.licenses.mit
|
||||||
|
=> true
|
||||||
|
lib.getLicenseFromSpdxId "MY LICENSE"
|
||||||
|
=> trace: warning: getLicenseFromSpdxId: No license matches the given SPDX ID: MY LICENSE
|
||||||
|
=> { shortName = "MY LICENSE"; }
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
getLicenseFromSpdxId =
|
getLicenseFromSpdxId =
|
||||||
let
|
let
|
||||||
|
@ -156,15 +324,34 @@ rec {
|
||||||
{ shortName = licstr; }
|
{ shortName = licstr; }
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Get the path to the main program of a package based on meta.mainProgram
|
/**
|
||||||
|
Get the path to the main program of a package based on meta.mainProgram
|
||||||
|
|
||||||
Type: getExe :: package -> string
|
|
||||||
|
|
||||||
Example:
|
# Inputs
|
||||||
getExe pkgs.hello
|
|
||||||
=> "/nix/store/g124820p9hlv4lj8qplzxw1c44dxaw1k-hello-2.12/bin/hello"
|
`x`
|
||||||
getExe pkgs.mustache-go
|
|
||||||
=> "/nix/store/am9ml4f4ywvivxnkiaqwr0hyxka1xjsf-mustache-go-1.3.0/bin/mustache"
|
: 1\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
getExe :: package -> string
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.meta.getExe` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
getExe pkgs.hello
|
||||||
|
=> "/nix/store/g124820p9hlv4lj8qplzxw1c44dxaw1k-hello-2.12/bin/hello"
|
||||||
|
getExe pkgs.mustache-go
|
||||||
|
=> "/nix/store/am9ml4f4ywvivxnkiaqwr0hyxka1xjsf-mustache-go-1.3.0/bin/mustache"
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
getExe = x: getExe' x (x.meta.mainProgram or (
|
getExe = x: getExe' x (x.meta.mainProgram or (
|
||||||
# This could be turned into an error when 23.05 is at end of life
|
# This could be turned into an error when 23.05 is at end of life
|
||||||
|
@ -173,14 +360,38 @@ rec {
|
||||||
x
|
x
|
||||||
));
|
));
|
||||||
|
|
||||||
/* Get the path of a program of a derivation.
|
/**
|
||||||
|
Get the path of a program of a derivation.
|
||||||
|
|
||||||
Type: getExe' :: derivation -> string -> string
|
|
||||||
Example:
|
# Inputs
|
||||||
getExe' pkgs.hello "hello"
|
|
||||||
=> "/nix/store/g124820p9hlv4lj8qplzxw1c44dxaw1k-hello-2.12/bin/hello"
|
`x`
|
||||||
getExe' pkgs.imagemagick "convert"
|
|
||||||
=> "/nix/store/5rs48jamq7k6sal98ymj9l4k2bnwq515-imagemagick-7.1.1-15/bin/convert"
|
: 1\. Function argument
|
||||||
|
|
||||||
|
`y`
|
||||||
|
|
||||||
|
: 2\. Function argument
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
getExe' :: derivation -> string -> string
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.meta.getExe'` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
getExe' pkgs.hello "hello"
|
||||||
|
=> "/nix/store/g124820p9hlv4lj8qplzxw1c44dxaw1k-hello-2.12/bin/hello"
|
||||||
|
getExe' pkgs.imagemagick "convert"
|
||||||
|
=> "/nix/store/5rs48jamq7k6sal98ymj9l4k2bnwq515-imagemagick-7.1.1-15/bin/convert"
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
*/
|
*/
|
||||||
getExe' = x: y:
|
getExe' = x: y:
|
||||||
assert assertMsg (isDerivation x)
|
assert assertMsg (isDerivation x)
|
||||||
|
|
|
@ -5883,6 +5883,13 @@
|
||||||
githubId = 13485450;
|
githubId = 13485450;
|
||||||
name = "Emmanuel Rosa";
|
name = "Emmanuel Rosa";
|
||||||
};
|
};
|
||||||
|
emneo = {
|
||||||
|
name = "emneo";
|
||||||
|
email = "emneo@kreog.com";
|
||||||
|
github = "emneo-dev";
|
||||||
|
githubId = 44233177;
|
||||||
|
keys = [ { fingerprint = "5FD0 400D 0E78 EAF9 8431 4880 8EBF C4B9 24C6 2D20"; } ];
|
||||||
|
};
|
||||||
emptyflask = {
|
emptyflask = {
|
||||||
email = "jon@emptyflask.dev";
|
email = "jon@emptyflask.dev";
|
||||||
github = "emptyflask";
|
github = "emptyflask";
|
||||||
|
@ -11097,12 +11104,6 @@
|
||||||
githubId = 621759;
|
githubId = 621759;
|
||||||
name = "Lassulus";
|
name = "Lassulus";
|
||||||
};
|
};
|
||||||
laurailway = {
|
|
||||||
email = "laurailway.git@posteo.net";
|
|
||||||
github = "LAURAilway";
|
|
||||||
githubId = 118690640;
|
|
||||||
name = "Laura";
|
|
||||||
};
|
|
||||||
laurent-f1z1 = {
|
laurent-f1z1 = {
|
||||||
email = "laurent.nixpkgs@fainsin.bzh";
|
email = "laurent.nixpkgs@fainsin.bzh";
|
||||||
github = "Laurent2916";
|
github = "Laurent2916";
|
||||||
|
@ -14202,7 +14203,7 @@
|
||||||
networkexception = {
|
networkexception = {
|
||||||
name = "networkException";
|
name = "networkException";
|
||||||
email = "nix@nwex.de";
|
email = "nix@nwex.de";
|
||||||
matrix = "@networkexception:chat.upi.li";
|
matrix = "@networkexception:nwex.de";
|
||||||
github = "networkException";
|
github = "networkException";
|
||||||
githubId = 42888162;
|
githubId = 42888162;
|
||||||
keys = [ { fingerprint = "A0B9 48C5 A263 55C2 035F 8567 FBB7 2A94 52D9 1A72"; } ];
|
keys = [ { fingerprint = "A0B9 48C5 A263 55C2 035F 8567 FBB7 2A94 52D9 1A72"; } ];
|
||||||
|
@ -20332,6 +20333,12 @@
|
||||||
email = "tomaszierl@outlook.com";
|
email = "tomaszierl@outlook.com";
|
||||||
name = "Tomkoid";
|
name = "Tomkoid";
|
||||||
};
|
};
|
||||||
|
Tommimon = {
|
||||||
|
name = "Tommaso Montanari";
|
||||||
|
email = "sefymw7q8@mozmail.com";
|
||||||
|
github = "Tommimon";
|
||||||
|
githubId = 37435103;
|
||||||
|
};
|
||||||
tomodachi94 = {
|
tomodachi94 = {
|
||||||
email = "tomodachi94@protonmail.com";
|
email = "tomodachi94@protonmail.com";
|
||||||
matrix = "@tomodachi94:matrix.org";
|
matrix = "@tomodachi94:matrix.org";
|
||||||
|
|
|
@ -58,6 +58,8 @@
|
||||||
nvimpager settings: user commands in `-c` and `--cmd` now override the
|
nvimpager settings: user commands in `-c` and `--cmd` now override the
|
||||||
respective default settings because they are executed later.
|
respective default settings because they are executed later.
|
||||||
|
|
||||||
|
- `pkgs.nextcloud27` has been removed since it's EOL.
|
||||||
|
|
||||||
- `services.forgejo.mailerPasswordFile` has been deprecated by the drop-in replacement `services.forgejo.secrets.mailer.PASSWD`,
|
- `services.forgejo.mailerPasswordFile` has been deprecated by the drop-in replacement `services.forgejo.secrets.mailer.PASSWD`,
|
||||||
which is part of the new free-form `services.forgejo.secrets` option.
|
which is part of the new free-form `services.forgejo.secrets` option.
|
||||||
`services.forgejo.secrets` is a small wrapper over systemd's `LoadCredential=`. It has the same structure (sections/keys) as
|
`services.forgejo.secrets` is a small wrapper over systemd's `LoadCredential=`. It has the same structure (sections/keys) as
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
x86_64-linux = "/nix/store/yrsmzlw2lgbknzwic1gy1gmv3l2w1ax8-nix-2.18.3";
|
x86_64-linux = "/nix/store/1w4b47zhp33md29wjhgg549pc281vv02-nix-2.18.4";
|
||||||
i686-linux = "/nix/store/ds9381l9mlwfaclvqnkzn3jl4qb8m3y1-nix-2.18.3";
|
i686-linux = "/nix/store/hz02kn0ffn3wdi2xs7lndpr88v4v4fp2-nix-2.18.4";
|
||||||
aarch64-linux = "/nix/store/hw1zny3f8520zyskmp1qaybv1ir5ilxh-nix-2.18.3";
|
aarch64-linux = "/nix/store/90zwqa9z2fgldc7ki1p5gfvglchjh9r6-nix-2.18.4";
|
||||||
x86_64-darwin = "/nix/store/z08yc4sl1fr65q53wz6pw30h67qafaln-nix-2.18.3";
|
x86_64-darwin = "/nix/store/bd1ix5mj9lj2yh7bqnmdjc24zlg5jivk-nix-2.18.4";
|
||||||
aarch64-darwin = "/nix/store/p57m7m0wrz8sqxiwinzpwzqzak82zn75-nix-2.18.3";
|
aarch64-darwin = "/nix/store/5hvsmklhqiay5i4q5vdkg60p8qpc69rz-nix-2.18.4";
|
||||||
}
|
}
|
||||||
|
|
|
@ -243,6 +243,7 @@
|
||||||
./programs/nh.nix
|
./programs/nh.nix
|
||||||
./programs/nix-index.nix
|
./programs/nix-index.nix
|
||||||
./programs/nix-ld.nix
|
./programs/nix-ld.nix
|
||||||
|
./programs/nix-required-mounts.nix
|
||||||
./programs/nm-applet.nix
|
./programs/nm-applet.nix
|
||||||
./programs/nncp.nix
|
./programs/nncp.nix
|
||||||
./programs/noisetorch.nix
|
./programs/noisetorch.nix
|
||||||
|
|
118
nixos/modules/programs/nix-required-mounts.nix
Normal file
118
nixos/modules/programs/nix-required-mounts.nix
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.programs.nix-required-mounts;
|
||||||
|
package = pkgs.nix-required-mounts;
|
||||||
|
|
||||||
|
Mount =
|
||||||
|
with lib;
|
||||||
|
types.submodule {
|
||||||
|
options.host = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = "Host path to mount";
|
||||||
|
};
|
||||||
|
options.guest = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = "Location in the sandbox to mount the host path at";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Pattern =
|
||||||
|
with lib.types;
|
||||||
|
types.submodule (
|
||||||
|
{ config, name, ... }:
|
||||||
|
{
|
||||||
|
options.onFeatures = lib.mkOption {
|
||||||
|
type = listOf types.str;
|
||||||
|
description = "Which requiredSystemFeatures should trigger relaxation of the sandbox";
|
||||||
|
default = [ name ];
|
||||||
|
};
|
||||||
|
options.paths = lib.mkOption {
|
||||||
|
type = listOf (oneOf [
|
||||||
|
path
|
||||||
|
Mount
|
||||||
|
]);
|
||||||
|
description = "A list of glob patterns, indicating which paths to expose to the sandbox";
|
||||||
|
};
|
||||||
|
options.unsafeFollowSymlinks = lib.mkEnableOption ''
|
||||||
|
Instructs the hook to mount the symlink targets as well, when any of
|
||||||
|
the `paths` contain symlinks. This may not work correctly with glob
|
||||||
|
patterns.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
driverPaths = [
|
||||||
|
pkgs.addOpenGLRunpath.driverLink
|
||||||
|
|
||||||
|
# mesa:
|
||||||
|
config.hardware.opengl.package
|
||||||
|
|
||||||
|
# nvidia_x11, etc:
|
||||||
|
] ++ config.hardware.opengl.extraPackages; # nvidia_x11
|
||||||
|
|
||||||
|
defaults = {
|
||||||
|
nvidia-gpu.onFeatures = package.allowedPatterns.nvidia-gpu.onFeatures;
|
||||||
|
nvidia-gpu.paths = package.allowedPatterns.nvidia-gpu.paths ++ driverPaths;
|
||||||
|
nvidia-gpu.unsafeFollowSymlinks = false;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
meta.maintainers = with lib.maintainers; [ SomeoneSerge ];
|
||||||
|
options.programs.nix-required-mounts = {
|
||||||
|
enable = lib.mkEnableOption "Expose extra paths to the sandbox depending on derivations' requiredSystemFeatures";
|
||||||
|
presets.nvidia-gpu.enable = lib.mkEnableOption ''
|
||||||
|
Declare the support for derivations that require an Nvidia GPU to be
|
||||||
|
available, e.g. derivations with `requiredSystemFeatures = [ "cuda" ]`.
|
||||||
|
This mounts the corresponding userspace drivers and device nodes in the
|
||||||
|
sandbox, but only for derivations that request these special features.
|
||||||
|
|
||||||
|
You may extend or override the exposed paths via the
|
||||||
|
`programs.nix-required-mounts.allowedPatterns.nvidia-gpu.paths` option.
|
||||||
|
'';
|
||||||
|
allowedPatterns =
|
||||||
|
with lib.types;
|
||||||
|
lib.mkOption rec {
|
||||||
|
type = attrsOf Pattern;
|
||||||
|
description = "The hook config, describing which paths to mount for which system features";
|
||||||
|
default = { };
|
||||||
|
defaultText = lib.literalExpression ''
|
||||||
|
{
|
||||||
|
opengl.paths = config.hardware.opengl.extraPackages ++ [
|
||||||
|
config.hardware.opengl.package
|
||||||
|
pkgs.addOpenGLRunpath.driverLink
|
||||||
|
"/dev/dri"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
example.require-ipfs.paths = [ "/ipfs" ];
|
||||||
|
example.require-ipfs.onFeatures = [ "ifps" ];
|
||||||
|
};
|
||||||
|
extraWrapperArgs = lib.mkOption {
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
default = [ ];
|
||||||
|
description = "List of extra arguments (such as `--add-flags -v`) to pass to the hook's wrapper";
|
||||||
|
};
|
||||||
|
package = lib.mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
default = package.override { inherit (cfg) allowedPatterns extraWrapperArgs; };
|
||||||
|
description = "The final package with the final config applied";
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable (
|
||||||
|
lib.mkMerge [
|
||||||
|
{ nix.settings.pre-build-hook = lib.getExe cfg.package; }
|
||||||
|
(lib.mkIf cfg.presets.nvidia-gpu.enable {
|
||||||
|
nix.settings.system-features = cfg.allowedPatterns.nvidia-gpu.onFeatures;
|
||||||
|
programs.nix-required-mounts.allowedPatterns = {
|
||||||
|
inherit (defaults) nvidia-gpu;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
|
@ -38,12 +38,13 @@ in
|
||||||
xwayland.enable = lib.mkEnableOption "XWayland" // { default = true; };
|
xwayland.enable = lib.mkEnableOption "XWayland" // { default = true; };
|
||||||
|
|
||||||
systemd.setPath.enable = lib.mkEnableOption null // {
|
systemd.setPath.enable = lib.mkEnableOption null // {
|
||||||
default = true;
|
default = lib.versionOlder cfg.package.version "0.41.2";
|
||||||
|
defaultText = lib.literalExpression ''lib.versionOlder cfg.package.version "0.41.2"'';
|
||||||
example = false;
|
example = false;
|
||||||
description = ''
|
description = ''
|
||||||
Set environment path of systemd to include the current system's bin directory.
|
Set environment path of systemd to include the current system's bin directory.
|
||||||
This is needed in Hyprland setups, where opening links in applications do not work.
|
This is needed in Hyprland setups, where opening links in applications do not work.
|
||||||
Enabled by default.
|
Enabled by default for Hyprland versions older than 0.41.2.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib) types;
|
inherit (lib) types mkBefore;
|
||||||
|
|
||||||
cfg = config.services.ollama;
|
cfg = config.services.ollama;
|
||||||
ollamaPackage = cfg.package.override {
|
ollamaPackage = cfg.package.override {
|
||||||
|
@ -132,6 +132,14 @@ in
|
||||||
Since `ollama run` is mostly a shell around the ollama server, this is usually sufficient.
|
Since `ollama run` is mostly a shell around the ollama server, this is usually sufficient.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
loadModels = lib.mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [ ];
|
||||||
|
description = ''
|
||||||
|
The models to download as soon as the service starts.
|
||||||
|
Search for models of your choice from: https://ollama.com/library
|
||||||
|
'';
|
||||||
|
};
|
||||||
openFirewall = lib.mkOption {
|
openFirewall = lib.mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
|
@ -161,6 +169,14 @@ in
|
||||||
DynamicUser = cfg.sandbox;
|
DynamicUser = cfg.sandbox;
|
||||||
ReadWritePaths = cfg.writablePaths;
|
ReadWritePaths = cfg.writablePaths;
|
||||||
};
|
};
|
||||||
|
postStart = mkBefore ''
|
||||||
|
set -x
|
||||||
|
export OLLAMA_HOST=${lib.escapeShellArg cfg.host}:${builtins.toString cfg.port}
|
||||||
|
for model in ${lib.escapeShellArgs cfg.loadModels}
|
||||||
|
do
|
||||||
|
${lib.escapeShellArg (lib.getExe ollamaPackage)} pull "$model"
|
||||||
|
done
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall = lib.mkIf cfg.openFirewall { allowedTCPPorts = [ cfg.port ]; };
|
networking.firewall = lib.mkIf cfg.openFirewall { allowedTCPPorts = [ cfg.port ]; };
|
||||||
|
|
|
@ -24,7 +24,7 @@ let
|
||||||
level = "info";
|
level = "info";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
configFile = toml.generate "scion-control.toml" (defaultConfig // cfg.settings);
|
configFile = toml.generate "scion-control.toml" (recursiveUpdate defaultConfig cfg.settings);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.services.scion.scion-control = {
|
options.services.scion.scion-control = {
|
||||||
|
|
|
@ -21,7 +21,7 @@ let
|
||||||
level = "info";
|
level = "info";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
configFile = toml.generate "scion-daemon.toml" (defaultConfig // cfg.settings);
|
configFile = toml.generate "scion-daemon.toml" (recursiveUpdate defaultConfig cfg.settings);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.services.scion.scion-daemon = {
|
options.services.scion.scion-daemon = {
|
||||||
|
|
|
@ -15,7 +15,7 @@ let
|
||||||
level = "info";
|
level = "info";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
configFile = toml.generate "scion-dispatcher.toml" (defaultConfig // cfg.settings);
|
configFile = toml.generate "scion-dispatcher.toml" (recursiveUpdate defaultConfig cfg.settings);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.services.scion.scion-dispatcher = {
|
options.services.scion.scion-dispatcher = {
|
||||||
|
|
|
@ -11,7 +11,7 @@ let
|
||||||
config_dir = "/etc/scion";
|
config_dir = "/etc/scion";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
configFile = toml.generate "scion-router.toml" (defaultConfig // cfg.settings);
|
configFile = toml.generate "scion-router.toml" (recursiveUpdate defaultConfig cfg.settings);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.services.scion.scion-router = {
|
options.services.scion.scion-router = {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
|
@ -17,6 +17,9 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.scion
|
||||||
|
];
|
||||||
services.scion = {
|
services.scion = {
|
||||||
scion-dispatcher.enable = true;
|
scion-dispatcher.enable = true;
|
||||||
scion-daemon.enable = true;
|
scion-daemon.enable = true;
|
||||||
|
|
|
@ -160,7 +160,7 @@ in
|
||||||
ProtectProc = "invisible";
|
ProtectProc = "invisible";
|
||||||
ProtectSystem = "strict";
|
ProtectSystem = "strict";
|
||||||
ReadWritePaths = [
|
ReadWritePaths = [
|
||||||
"/var/lib/quickwit"
|
cfg.dataDir
|
||||||
];
|
];
|
||||||
RestrictAddressFamilies = [
|
RestrictAddressFamilies = [
|
||||||
"AF_NETLINK"
|
"AF_NETLINK"
|
||||||
|
|
|
@ -18,6 +18,8 @@ in {
|
||||||
geoclue2 to determine the current location.
|
geoclue2 to determine the current location.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
package = mkPackageOption pkgs "localtime" { };
|
||||||
|
geoclue2Package = mkPackageOption pkgs "geoclue2-with-demo-agent" { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -29,14 +31,14 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
# Install the polkit rules.
|
# Install the polkit rules.
|
||||||
environment.systemPackages = [ pkgs.localtime ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.services.localtimed = {
|
systemd.services.localtimed = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
partOf = [ "localtimed-geoclue-agent.service" ];
|
partOf = [ "localtimed-geoclue-agent.service" ];
|
||||||
after = [ "localtimed-geoclue-agent.service" ];
|
after = [ "localtimed-geoclue-agent.service" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.localtime}/bin/localtimed";
|
ExecStart = "${cfg.package}/bin/localtimed";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
Type = "exec";
|
Type = "exec";
|
||||||
User = "localtimed";
|
User = "localtimed";
|
||||||
|
@ -48,7 +50,7 @@ in {
|
||||||
partOf = [ "geoclue.service" ];
|
partOf = [ "geoclue.service" ];
|
||||||
after = [ "geoclue.service" ];
|
after = [ "geoclue.service" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.geoclue2-with-demo-agent}/libexec/geoclue-2.0/demos/agent";
|
ExecStart = "${cfg.geoclue2Package}/libexec/geoclue-2.0/demos/agent";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
Type = "exec";
|
Type = "exec";
|
||||||
User = "localtimed";
|
User = "localtimed";
|
||||||
|
|
|
@ -300,7 +300,7 @@ in {
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
description = "Which package to use for the Nextcloud instance.";
|
description = "Which package to use for the Nextcloud instance.";
|
||||||
relatedPackages = [ "nextcloud26" "nextcloud27" "nextcloud28" ];
|
relatedPackages = [ "nextcloud28" "nextcloud29" ];
|
||||||
};
|
};
|
||||||
phpPackage = mkPackageOption pkgs "php" {
|
phpPackage = mkPackageOption pkgs "php" {
|
||||||
example = "php82";
|
example = "php82";
|
||||||
|
@ -861,8 +861,6 @@ in {
|
||||||
nextcloud defined in an overlay, please set `services.nextcloud.package` to
|
nextcloud defined in an overlay, please set `services.nextcloud.package` to
|
||||||
`pkgs.nextcloud`.
|
`pkgs.nextcloud`.
|
||||||
''
|
''
|
||||||
else if versionOlder stateVersion "23.05" then nextcloud25
|
|
||||||
else if versionOlder stateVersion "23.11" then nextcloud26
|
|
||||||
else if versionOlder stateVersion "24.05" then nextcloud27
|
else if versionOlder stateVersion "24.05" then nextcloud27
|
||||||
else nextcloud29
|
else nextcloud29
|
||||||
);
|
);
|
||||||
|
|
|
@ -64,14 +64,6 @@ let
|
||||||
|
|
||||||
etcHardlinks = filter (f: f.mode != "symlink" && f.mode != "direct-symlink") etc';
|
etcHardlinks = filter (f: f.mode != "symlink" && f.mode != "direct-symlink") etc';
|
||||||
|
|
||||||
build-composefs-dump = pkgs.buildPackages.runCommand "build-composefs-dump.py"
|
|
||||||
{
|
|
||||||
buildInputs = [ pkgs.buildPackages.python3 ];
|
|
||||||
} ''
|
|
||||||
install ${./build-composefs-dump.py} $out
|
|
||||||
patchShebangs --host $out
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -295,10 +287,12 @@ in
|
||||||
system.build.etcMetadataImage =
|
system.build.etcMetadataImage =
|
||||||
let
|
let
|
||||||
etcJson = pkgs.writeText "etc-json" (builtins.toJSON etc');
|
etcJson = pkgs.writeText "etc-json" (builtins.toJSON etc');
|
||||||
etcDump = pkgs.runCommand "etc-dump" { } "${build-composefs-dump} ${etcJson} > $out";
|
etcDump = pkgs.runCommand "etc-dump" { } ''
|
||||||
|
${lib.getExe pkgs.buildPackages.python3} ${./build-composefs-dump.py} ${etcJson} > $out
|
||||||
|
'';
|
||||||
in
|
in
|
||||||
pkgs.runCommand "etc-metadata.erofs" {
|
pkgs.runCommand "etc-metadata.erofs" {
|
||||||
nativeBuildInputs = [ pkgs.composefs pkgs.erofs-utils ];
|
nativeBuildInputs = with pkgs.buildPackages; [ composefs erofs-utils ];
|
||||||
} ''
|
} ''
|
||||||
mkcomposefs --from-file ${etcDump} $out
|
mkcomposefs --from-file ${etcDump} $out
|
||||||
fsck.erofs $out
|
fsck.erofs $out
|
||||||
|
|
|
@ -651,6 +651,7 @@ in {
|
||||||
nix-config = handleTest ./nix-config.nix {};
|
nix-config = handleTest ./nix-config.nix {};
|
||||||
nix-ld = handleTest ./nix-ld.nix {};
|
nix-ld = handleTest ./nix-ld.nix {};
|
||||||
nix-misc = handleTest ./nix/misc.nix {};
|
nix-misc = handleTest ./nix/misc.nix {};
|
||||||
|
nix-required-mounts = runTest ./nix-required-mounts;
|
||||||
nix-serve = handleTest ./nix-serve.nix {};
|
nix-serve = handleTest ./nix-serve.nix {};
|
||||||
nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
|
nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
|
||||||
nixops = handleTest ./nixops/default.nix {};
|
nixops = handleTest ./nixops/default.nix {};
|
||||||
|
|
|
@ -103,13 +103,8 @@ let
|
||||||
}) { inherit system; });
|
}) { inherit system; });
|
||||||
|
|
||||||
in with pkgs; {
|
in with pkgs; {
|
||||||
kafka_2_8 = makeKafkaTest "kafka_2_8" { kafkaPackage = apacheKafka_2_8; };
|
kafka_3_6 = makeKafkaTest "kafka_3_6" { kafkaPackage = apacheKafka_3_6; };
|
||||||
kafka_3_0 = makeKafkaTest "kafka_3_0" { kafkaPackage = apacheKafka_3_0; };
|
kafka_3_7 = makeKafkaTest "kafka_3_7" { kafkaPackage = apacheKafka_3_7; };
|
||||||
kafka_3_1 = makeKafkaTest "kafka_3_1" { kafkaPackage = apacheKafka_3_1; };
|
|
||||||
kafka_3_2 = makeKafkaTest "kafka_3_2" { kafkaPackage = apacheKafka_3_2; };
|
|
||||||
kafka_3_3 = makeKafkaTest "kafka_3_3" { kafkaPackage = apacheKafka_3_3; };
|
|
||||||
kafka_3_4 = makeKafkaTest "kafka_3_4" { kafkaPackage = apacheKafka_3_4; };
|
|
||||||
kafka_3_5 = makeKafkaTest "kafka_3_5" { kafkaPackage = apacheKafka_3_5; };
|
|
||||||
kafka = makeKafkaTest "kafka" { kafkaPackage = apacheKafka; };
|
kafka = makeKafkaTest "kafka" { kafkaPackage = apacheKafka; };
|
||||||
kafka_kraft = makeKafkaTest "kafka_kraft" { kafkaPackage = apacheKafka; mode = "kraft"; };
|
kafka_kraft = makeKafkaTest "kafka_kraft" { kafkaPackage = apacheKafka; mode = "kraft"; };
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,4 +109,4 @@ let
|
||||||
./with-objectstore.nix
|
./with-objectstore.nix
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
listToAttrs (concatMap genTests [ 27 28 29 ])
|
listToAttrs (concatMap genTests [ 28 29 ])
|
||||||
|
|
58
nixos/tests/nix-required-mounts/default.nix
Normal file
58
nixos/tests/nix-required-mounts/default.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "nix-required-mounts";
|
||||||
|
meta.maintainers = with lib.maintainers; [ SomeoneSerge ];
|
||||||
|
nodes.machine =
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
virtualisation.writableStore = true;
|
||||||
|
system.extraDependencies = [ (pkgs.runCommand "deps" { } "mkdir $out").inputDerivation ];
|
||||||
|
nix.nixPath = [ "nixpkgs=${../../..}" ];
|
||||||
|
nix.settings.substituters = lib.mkForce [ ];
|
||||||
|
nix.settings.system-features = [ "supported-feature" ];
|
||||||
|
nix.settings.experimental-features = [ "nix-command" ];
|
||||||
|
programs.nix-required-mounts.enable = true;
|
||||||
|
programs.nix-required-mounts.allowedPatterns.supported-feature = {
|
||||||
|
onFeatures = [ "supported-feature" ];
|
||||||
|
paths = [
|
||||||
|
"/supported-feature-files"
|
||||||
|
{
|
||||||
|
host = "/usr/lib/imaginary-fhs-drivers";
|
||||||
|
guest = "/run/opengl-driver/lib";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
unsafeFollowSymlinks = true;
|
||||||
|
};
|
||||||
|
users.users.person.isNormalUser = true;
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /supported-feature-files 0755 person users -"
|
||||||
|
"f /usr/lib/libcuda.so 0444 root root - fakeContent"
|
||||||
|
"L /usr/lib/imaginary-fhs-drivers/libcuda.so 0444 root root - /usr/lib/libcuda.so"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
testScript = ''
|
||||||
|
import shlex
|
||||||
|
|
||||||
|
def person_do(cmd, succeed=True):
|
||||||
|
cmd = shlex.quote(cmd)
|
||||||
|
cmd = f"su person -l -c {cmd} &>/dev/console"
|
||||||
|
|
||||||
|
if succeed:
|
||||||
|
return machine.succeed(cmd)
|
||||||
|
else:
|
||||||
|
return machine.fail(cmd)
|
||||||
|
|
||||||
|
start_all()
|
||||||
|
|
||||||
|
person_do("nix-build ${./ensure-path-not-present.nix} --argstr feature supported-feature")
|
||||||
|
person_do("nix-build ${./test-require-feature.nix} --argstr feature supported-feature")
|
||||||
|
person_do("nix-build ${./test-require-feature.nix} --argstr feature unsupported-feature", succeed=False)
|
||||||
|
person_do("nix-build ${./test-structured-attrs.nix} --argstr feature supported-feature")
|
||||||
|
person_do("nix-build ${./test-structured-attrs-empty.nix}")
|
||||||
|
'';
|
||||||
|
}
|
13
nixos/tests/nix-required-mounts/ensure-path-not-present.nix
Normal file
13
nixos/tests/nix-required-mounts/ensure-path-not-present.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { },
|
||||||
|
feature,
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.runCommandNoCC "${feature}-not-present" { } ''
|
||||||
|
if [[ -e /${feature}-files ]]; then
|
||||||
|
echo "No ${feature} in requiredSystemFeatures, but /${feature}-files was mounted anyway"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
touch $out
|
||||||
|
fi
|
||||||
|
''
|
26
nixos/tests/nix-required-mounts/test-require-feature.nix
Normal file
26
nixos/tests/nix-required-mounts/test-require-feature.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { },
|
||||||
|
feature,
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.runCommandNoCC "${feature}-present" { requiredSystemFeatures = [ feature ]; } ''
|
||||||
|
if [[ ! -e /${feature}-files ]]; then
|
||||||
|
echo "The host declares ${feature} support, but doesn't expose /${feature}-files" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
libcudaLocation=/run/opengl-driver/lib/libcuda.so
|
||||||
|
if [[ -e "$libcudaLocation" || -h "$libcudaLocation" ]] ; then
|
||||||
|
true # we're good
|
||||||
|
else
|
||||||
|
echo "The host declares ${feature} support, but it the hook fails to handle the hostPath != guestPath cases" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if cat "$libcudaLocation" | xargs test fakeContent = ; then
|
||||||
|
true # we're good
|
||||||
|
else
|
||||||
|
echo "The host declares ${feature} support, but it seems to fail to follow symlinks" >&2
|
||||||
|
echo "The content of /run/opengl-driver/lib/libcuda.so is: $(cat /run/opengl-driver/lib/libcuda.so)" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
touch $out
|
||||||
|
''
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { },
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.runCommandNoCC "nix-required-mounts-structured-attrs-no-features" { __structuredAttrs = true; }
|
||||||
|
''
|
||||||
|
touch $out
|
||||||
|
''
|
18
nixos/tests/nix-required-mounts/test-structured-attrs.nix
Normal file
18
nixos/tests/nix-required-mounts/test-structured-attrs.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { },
|
||||||
|
feature,
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.runCommandNoCC "${feature}-present-structured"
|
||||||
|
{
|
||||||
|
__structuredAttrs = true;
|
||||||
|
requiredSystemFeatures = [ feature ];
|
||||||
|
}
|
||||||
|
''
|
||||||
|
if [[ -e /${feature}-files ]]; then
|
||||||
|
touch $out
|
||||||
|
else
|
||||||
|
echo "The host declares ${feature} support, but doesn't expose /${feature}-files" >&2
|
||||||
|
echo "Do we fail to parse __structuredAttrs=true derivations?" >&2
|
||||||
|
fi
|
||||||
|
''
|
|
@ -66,7 +66,7 @@ self: let
|
||||||
|
|
||||||
org = super.org.overrideAttrs (old: {
|
org = super.org.overrideAttrs (old: {
|
||||||
dontUnpack = false;
|
dontUnpack = false;
|
||||||
patches = old.patches or [ ] ++ [
|
patches = old.patches or [ ] ++ lib.optionals (lib.versionOlder old.version "9.7.5") [
|
||||||
# security fix backported from 9.7.5
|
# security fix backported from 9.7.5
|
||||||
(pkgs.fetchpatch {
|
(pkgs.fetchpatch {
|
||||||
url = "https://git.savannah.gnu.org/cgit/emacs/org-mode.git/patch/?id=f4cc61636947b5c2f0afc67174dd369fe3277aa8";
|
url = "https://git.savannah.gnu.org/cgit/emacs/org-mode.git/patch/?id=f4cc61636947b5c2f0afc67174dd369fe3277aa8";
|
||||||
|
|
|
@ -143,7 +143,7 @@ self: let
|
||||||
|
|
||||||
org = super.org.overrideAttrs (old: {
|
org = super.org.overrideAttrs (old: {
|
||||||
dontUnpack = false;
|
dontUnpack = false;
|
||||||
patches = old.patches or [ ] ++ [
|
patches = old.patches or [ ] ++ lib.optionals (lib.versionOlder old.version "9.7.5") [
|
||||||
# security fix backported from 9.7.5
|
# security fix backported from 9.7.5
|
||||||
(pkgs.fetchpatch {
|
(pkgs.fetchpatch {
|
||||||
url = "https://git.savannah.gnu.org/cgit/emacs/org-mode.git/patch/?id=f4cc61636947b5c2f0afc67174dd369fe3277aa8";
|
url = "https://git.savannah.gnu.org/cgit/emacs/org-mode.git/patch/?id=f4cc61636947b5c2f0afc67174dd369fe3277aa8";
|
||||||
|
|
1915
pkgs/applications/graphics/emblem/Cargo.lock
generated
1915
pkgs/applications/graphics/emblem/Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -2,7 +2,6 @@
|
||||||
, stdenv
|
, stdenv
|
||||||
, fetchFromGitLab
|
, fetchFromGitLab
|
||||||
, rustPlatform
|
, rustPlatform
|
||||||
, appstream-glib
|
|
||||||
, cargo
|
, cargo
|
||||||
, desktop-file-utils
|
, desktop-file-utils
|
||||||
, glib
|
, glib
|
||||||
|
@ -11,7 +10,6 @@
|
||||||
, pkg-config
|
, pkg-config
|
||||||
, rustc
|
, rustc
|
||||||
, wrapGAppsHook4
|
, wrapGAppsHook4
|
||||||
, gtk4
|
|
||||||
, libadwaita
|
, libadwaita
|
||||||
, libxml2
|
, libxml2
|
||||||
, darwin
|
, darwin
|
||||||
|
@ -19,7 +17,7 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "emblem";
|
pname = "emblem";
|
||||||
version = "1.3.0";
|
version = "1.4.0";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
domain = "gitlab.gnome.org";
|
domain = "gitlab.gnome.org";
|
||||||
|
@ -27,15 +25,16 @@ stdenv.mkDerivation rec {
|
||||||
owner = "design";
|
owner = "design";
|
||||||
repo = "emblem";
|
repo = "emblem";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-VA4KZ8x/MMAA/g/x59h1CyHhlj0vbZqwAFdsfTPA2Ds=";
|
sha256 = "sha256-pW+2kQANZ9M1f0jMoBqCxMjLCu0xAnuEE2EdzDq4ZCE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoDeps = rustPlatform.importCargoLock {
|
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||||
lockFile = ./Cargo.lock;
|
inherit src;
|
||||||
|
name = "${pname}-${version}";
|
||||||
|
hash = "sha256-2mxDXDGQA2YB+gnGwy6VSZP/RRBKg0RiR1GlXIkio9E=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
appstream-glib
|
|
||||||
desktop-file-utils
|
desktop-file-utils
|
||||||
glib
|
glib
|
||||||
meson
|
meson
|
||||||
|
@ -48,19 +47,22 @@ stdenv.mkDerivation rec {
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
gtk4
|
|
||||||
libadwaita
|
libadwaita
|
||||||
libxml2
|
libxml2
|
||||||
] ++ lib.optionals stdenv.isDarwin [
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
darwin.apple_sdk.frameworks.Foundation
|
darwin.apple_sdk.frameworks.Foundation
|
||||||
];
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.isDarwin [
|
||||||
|
"-Wno-error=incompatible-function-pointer-types"
|
||||||
|
]);
|
||||||
|
|
||||||
|
meta = {
|
||||||
description = "Generate project icons and avatars from a symbolic icon";
|
description = "Generate project icons and avatars from a symbolic icon";
|
||||||
mainProgram = "emblem";
|
mainProgram = "emblem";
|
||||||
homepage = "https://gitlab.gnome.org/World/design/emblem";
|
homepage = "https://gitlab.gnome.org/World/design/emblem";
|
||||||
license = licenses.gpl3Plus;
|
license = lib.licenses.gpl3Plus;
|
||||||
platforms = platforms.unix;
|
platforms = lib.platforms.unix;
|
||||||
maintainers = with maintainers; [ figsoda foo-dogsquared ];
|
maintainers = with lib.maintainers; [ figsoda foo-dogsquared aleksana ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
, wrapGAppsHook3
|
, wrapGAppsHook3
|
||||||
, qtwayland
|
, qtwayland
|
||||||
, cairo
|
, cairo
|
||||||
|
, openscad
|
||||||
|
, runCommand
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
|
@ -69,7 +71,11 @@ mkDerivation rec {
|
||||||
++ lib.optional spacenavSupport libspnav
|
++ lib.optional spacenavSupport libspnav
|
||||||
;
|
;
|
||||||
|
|
||||||
qmakeFlags = [ "VERSION=${version}" ] ++
|
qmakeFlags = [
|
||||||
|
"VERSION=${version}"
|
||||||
|
"LIB3MF_INCLUDEPATH=${lib3mf.dev}/include/lib3mf/Bindings/Cpp"
|
||||||
|
"LIB3MF_LIBPATH=${lib3mf}/lib"
|
||||||
|
] ++
|
||||||
lib.optionals spacenavSupport [
|
lib.optionals spacenavSupport [
|
||||||
"ENABLE_SPNAV=1"
|
"ENABLE_SPNAV=1"
|
||||||
"SPNAV_INCLUDEPATH=${libspnav}/include"
|
"SPNAV_INCLUDEPATH=${libspnav}/include"
|
||||||
|
@ -112,4 +118,14 @@ mkDerivation rec {
|
||||||
maintainers = with lib.maintainers; [ bjornfor raskin gebner ];
|
maintainers = with lib.maintainers; [ bjornfor raskin gebner ];
|
||||||
mainProgram = "openscad";
|
mainProgram = "openscad";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
passthru.tests = {
|
||||||
|
lib3mf_support = runCommand "${pname}-lib3mf-support-test" {
|
||||||
|
nativeBuildInputs = [ openscad ];
|
||||||
|
} ''
|
||||||
|
echo "cube([1, 1, 1]);" | openscad -o cube.3mf -
|
||||||
|
echo "import(\"cube.3mf\");" | openscad -o cube-import.3mf -
|
||||||
|
mv cube-import.3mf $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
SDL,
|
SDL,
|
||||||
addOpenGLRunpath,
|
addOpenGLRunpath,
|
||||||
alembic,
|
alembic,
|
||||||
|
blender,
|
||||||
boost,
|
boost,
|
||||||
brotli,
|
brotli,
|
||||||
callPackage,
|
callPackage,
|
||||||
|
@ -372,6 +373,20 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
--render-frame 1
|
--render-frame 1
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
tester-cudaAvailable = cudaPackages.writeGpuTestPython { } ''
|
||||||
|
import subprocess
|
||||||
|
subprocess.run([${
|
||||||
|
lib.concatMapStringsSep ", " (x: ''"${x}"'') [
|
||||||
|
(lib.getExe (blender.override { cudaSupport = true; }))
|
||||||
|
"--background"
|
||||||
|
"-noaudio"
|
||||||
|
"--python-exit-code"
|
||||||
|
"1"
|
||||||
|
"--python"
|
||||||
|
"${./test-cuda.py}"
|
||||||
|
]
|
||||||
|
}], check=True) # noqa: E501
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -381,7 +396,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
# They comment two licenses: GPLv2 and Blender License, but they
|
# They comment two licenses: GPLv2 and Blender License, but they
|
||||||
# say: "We've decided to cancel the BL offering for an indefinite period."
|
# say: "We've decided to cancel the BL offering for an indefinite period."
|
||||||
# OptiX, enabled with cudaSupport, is non-free.
|
# OptiX, enabled with cudaSupport, is non-free.
|
||||||
license = with lib.licenses; [ gpl2Plus ] ++ lib.optional cudaSupport unfree;
|
license = with lib.licenses; [ gpl2Plus ] ++ lib.optional cudaSupport (unfree // { shortName = "NVidia OptiX EULA"; });
|
||||||
|
|
||||||
platforms = [
|
platforms = [
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
"x86_64-darwin"
|
"x86_64-darwin"
|
||||||
|
|
8
pkgs/applications/misc/blender/test-cuda.py
Normal file
8
pkgs/applications/misc/blender/test-cuda.py
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import bpy
|
||||||
|
|
||||||
|
preferences = bpy.context.preferences.addons["cycles"].preferences
|
||||||
|
devices = preferences.get_devices_for_type("CUDA")
|
||||||
|
ids = [d.id for d in devices]
|
||||||
|
|
||||||
|
assert any("CUDA" in i for i in ids), f"CUDA not present in {ids}"
|
||||||
|
print("CUDA is available")
|
|
@ -21,7 +21,7 @@ buildGoModule rec {
|
||||||
homepage = "https://github.com/wakatara/harsh";
|
homepage = "https://github.com/wakatara/harsh";
|
||||||
changelog = "https://github.com/wakatara/harsh/releases/tag/v${version}";
|
changelog = "https://github.com/wakatara/harsh/releases/tag/v${version}";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ laurailway ];
|
maintainers = with maintainers; [ ];
|
||||||
mainProgram = "harsh";
|
mainProgram = "harsh";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
|
|
||||||
stdenvNoCC.mkDerivation {
|
stdenvNoCC.mkDerivation {
|
||||||
pname = "kitty-themes";
|
pname = "kitty-themes";
|
||||||
version = "0-unstable-2024-06-12";
|
version = "0-unstable-2024-06-26";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kovidgoyal";
|
owner = "kovidgoyal";
|
||||||
repo = "kitty-themes";
|
repo = "kitty-themes";
|
||||||
rev = "9589f0dffc817d6e8b86a5b2dc56d7c3db201a9b";
|
rev = "522b2bc8631cfe28a1b230d1b774f911eab17cf3";
|
||||||
hash = "sha256-8bZkYFb/HOIg2Uk7b/Apn30AAlRF0ztLh27AUlHW6Wk=";
|
hash = "sha256-LYiTp18Qk/rF+n9OuVG4kHDQEbE+ijWKQHA2AIDV4wQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
dontConfigure = true;
|
dontConfigure = true;
|
||||||
|
|
|
@ -8,16 +8,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "git-cliff";
|
pname = "git-cliff";
|
||||||
version = "2.3.0";
|
version = "2.4.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "orhun";
|
owner = "orhun";
|
||||||
repo = "git-cliff";
|
repo = "git-cliff";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-iTjfFl/bTvyElCIpTj7dsVu3azUSwNTryyssHdCaODg=";
|
hash = "sha256-JRFd84DR0pLimAslr+LTC2N09sjOuFCXU71hRsEriOs=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-/Elb/hsk96E7D6TrLgbhD5cQhsXpDigNm5p9FpKGEUQ=";
|
cargoHash = "sha256-pLbz2z+l8E/R+GffseOacKrjr6ERZf1ETh8tVQjI4TU=";
|
||||||
|
|
||||||
# attempts to run the program on .git in src which is not deterministic
|
# attempts to run the program on .git in src which is not deterministic
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
|
@ -10,14 +10,14 @@
|
||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "git-cola";
|
pname = "git-cola";
|
||||||
version = "4.7.1";
|
version = "4.8.0";
|
||||||
pyproject = true;
|
pyproject = true;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "git-cola";
|
owner = "git-cola";
|
||||||
repo = "git-cola";
|
repo = "git-cola";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-93aayGGMgkSghTpx8M5Cfbxf2szAwrSzuoWK6GCTqZ8=";
|
hash = "sha256-sm/a790PiSqGYbftxvLiLMifKbMyi3a5Rvlhr9plyrU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = lib.optionals stdenv.isLinux [
|
buildInputs = lib.optionals stdenv.isLinux [
|
||||||
|
|
|
@ -9,13 +9,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "obs-vertical-canvas";
|
pname = "obs-vertical-canvas";
|
||||||
version = "1.4.3";
|
version = "1.4.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Aitum";
|
owner = "Aitum";
|
||||||
repo = "obs-vertical-canvas";
|
repo = "obs-vertical-canvas";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-nzuPjVwtWGPSNLnWNT4D03j1xZp37HH77t1DnilSQ8E=";
|
sha256 = "sha256-RBsdYG73SoX+dB4sUq641SL0ETUFE+PVAmr/DaqMuLI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "docker-compose";
|
pname = "docker-compose";
|
||||||
version = "2.27.2";
|
version = "2.28.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "docker";
|
owner = "docker";
|
||||||
repo = "compose";
|
repo = "compose";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-QwTn/oAfB1bJkPcI0oDGC4vp0xUQxjhF8+jZ+hqpr5Q=";
|
hash = "sha256-AfWUCgW+aZkedd94uPpfBKKZC1Xvq9wonuCSXGHm774=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -16,7 +16,7 @@ buildGoModule rec {
|
||||||
rm -rf e2e/
|
rm -rf e2e/
|
||||||
'';
|
'';
|
||||||
|
|
||||||
vendorHash = "sha256-KczMkSwYP9Ng1dYUU7+ig2VRUEOPkaWTV77c9xGqbw0=";
|
vendorHash = "sha256-MykoU0q2cCnY02a52kyg35L4tJ3KZTzA4usf194Wnbw=";
|
||||||
|
|
||||||
ldflags = [ "-X github.com/docker/compose/v2/internal.Version=${version}" "-s" "-w" ];
|
ldflags = [ "-X github.com/docker/compose/v2/internal.Version=${version}" "-s" "-w" ];
|
||||||
|
|
||||||
|
|
|
@ -10,16 +10,16 @@
|
||||||
}:
|
}:
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "c2patool";
|
pname = "c2patool";
|
||||||
version = "0.9.3";
|
version = "0.9.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "contentauth";
|
owner = "contentauth";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-SVHz6Zwl4WOgwCYXtGfNJBmlnJUAWfe+NAkgnG/QC8A=";
|
sha256 = "sha256-GS3R1qqL9h7kVQQXl0GBsdWUI8rwtJvRW4Cfqp+VYNU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-+flZXxdN5mcmxMZeIV4J4wc+mYuGf5LuGAw4Kz/faak=";
|
cargoHash = "sha256-sdlHCPqLsgM1XG3lNfy+ET1xKCKVcdtRcvShxpBW8MQ=";
|
||||||
|
|
||||||
# use the non-vendored openssl
|
# use the non-vendored openssl
|
||||||
OPENSSL_NO_VENDOR = 1;
|
OPENSSL_NO_VENDOR = 1;
|
||||||
|
|
33
pkgs/by-name/ca/canard/package.nix
Normal file
33
pkgs/by-name/ca/canard/package.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
buildGoModule,
|
||||||
|
fetchFromGitHub,
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "canard";
|
||||||
|
version = "0.0.2-unstable-2024-04-22";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "mrusme";
|
||||||
|
repo = "canard";
|
||||||
|
rev = "d3c37d11078574ca16b75475b3d08ffe351bc3c2";
|
||||||
|
hash = "sha256-ICrTEaTYFAViORWvdj4uW2gLgxtWxRlhgu5sifgqGX0=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-qcfPW7rz0v63QmQQceQltkCFNBUeQTxVerxDymv7SZo=";
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-s"
|
||||||
|
"-w"
|
||||||
|
"-X github.com/mrusme/canard/main.VERSION=${version}"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Command line TUI client for the journalist RSS aggregator";
|
||||||
|
homepage = "https://github.com/mrusme/canard";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
maintainers = with lib.maintainers; [ moraxyc ];
|
||||||
|
mainProgram = "canard";
|
||||||
|
};
|
||||||
|
}
|
|
@ -9,16 +9,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "clipcat";
|
pname = "clipcat";
|
||||||
version = "0.18.0";
|
version = "0.18.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "xrelkd";
|
owner = "xrelkd";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-i+5hUwarJHa3QzHPqJ0N/gztKWoRCKXsEbX3Q/1PQ9Q=";
|
hash = "sha256-rftAGrquvNPRu49rDUaPVO7EUMCvcLoV0w801BBOG8c=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-lPH2v+OfO/NCLdAVvPbIgAeVAOWHjhNIOap94p0+NR0=";
|
cargoHash = "sha256-Amm/NnJSnqB5q+bxRJ5A6GKOFhIGTq1OSXESF5r22bI=";
|
||||||
|
|
||||||
buildInputs = lib.optionals stdenv.isDarwin [
|
buildInputs = lib.optionals stdenv.isDarwin [
|
||||||
darwin.apple_sdk.frameworks.Cocoa
|
darwin.apple_sdk.frameworks.Cocoa
|
||||||
|
|
|
@ -10,17 +10,17 @@
|
||||||
}:
|
}:
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "codeberg-cli";
|
pname = "codeberg-cli";
|
||||||
version = "0.4.0";
|
version = "0.4.2";
|
||||||
|
|
||||||
src = fetchFromGitea {
|
src = fetchFromGitea {
|
||||||
domain = "codeberg.org";
|
domain = "codeberg.org";
|
||||||
owner = "RobWalt";
|
owner = "RobWalt";
|
||||||
repo = "codeberg-cli";
|
repo = "codeberg-cli";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-g5V3Noqh7Y9v/t/dt7n45/NblqNtpZCKELPc9DOkb8A=";
|
hash = "sha256-SUKV7tH7tvSPtlMcRlOgjvAEqPoBi4J41Ak5k4h4Qj0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-zTg/3PcFWzBmKZA7lRIpM3P03d1qpNVBczqWFbnxpic=";
|
cargoHash = "sha256-FlW0Q2UUt6AX/A0MznGpJY8+yoMs70N58Ow05ly9YyE=";
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkg-config
|
pkg-config
|
||||||
installShellFiles
|
installShellFiles
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
pname = "codux";
|
pname = "codux";
|
||||||
version = "15.29.0";
|
version = "15.29.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/wixplosives/codux-versions/releases/download/${version}/Codux-${version}.x86_64.AppImage";
|
url = "https://github.com/wixplosives/codux-versions/releases/download/${version}/Codux-${version}.x86_64.AppImage";
|
||||||
sha256 = "sha256-BvDrhs37XGCQdQV2yQJZXlnNWVArFCMLfFlXuXz9ea0=";
|
sha256 = "sha256-wiAME0jNtqGbMk6w1jzKUZUzhS0Gg5FgqXD1vuRSpxo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
appimageContents = appimageTools.extractType2 { inherit pname version src; };
|
appimageContents = appimageTools.extractType2 { inherit pname version src; };
|
||||||
|
|
31
pkgs/by-name/co/concord/package.nix
Normal file
31
pkgs/by-name/co/concord/package.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
curl,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "concord";
|
||||||
|
version = "2.2.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Cogmasters";
|
||||||
|
repo = "concord";
|
||||||
|
rev = "refs/tags/v${finalAttrs.version}";
|
||||||
|
hash = "sha256-8k/W6007U1/s3vx03i1929a5RKZtpW/jOr4JDwmzwp8=";
|
||||||
|
};
|
||||||
|
|
||||||
|
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||||
|
|
||||||
|
buildInputs = [ curl ];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Discord API wrapper library made in C";
|
||||||
|
homepage = "https://cogmasters.github.io/concord/";
|
||||||
|
changelog = "https://github.com/Cogmasters/concord/releases/tag/v${finalAttrs.version}";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
maintainers = with lib.maintainers; [ emneo ];
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
};
|
||||||
|
})
|
|
@ -1,28 +1,32 @@
|
||||||
{ lib
|
{
|
||||||
, stdenv
|
lib,
|
||||||
, fetchFromGitHub
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
|
||||||
, docbook_xml_dtd_45
|
docbook_xml_dtd_45,
|
||||||
, docbook_xsl
|
docbook_xsl,
|
||||||
, installShellFiles
|
installShellFiles,
|
||||||
, libxslt
|
libxslt,
|
||||||
, pcre
|
pcre,
|
||||||
, pkg-config
|
pkg-config,
|
||||||
, python3
|
python3,
|
||||||
, which
|
which,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "cppcheck";
|
pname = "cppcheck";
|
||||||
version = "2.14.1";
|
version = "2.14.2";
|
||||||
|
|
||||||
outputs = [ "out" "man" ];
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
];
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "danmar";
|
owner = "danmar";
|
||||||
repo = "cppcheck";
|
repo = "cppcheck";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-KXE3zmhaTweQhs0Qh7Xd5ILiuGVewtrvOkRkt8hjU58=";
|
hash = "sha256-aVjQqwsTw6TCLxs2oQif3hX5kfXHua7ekBpO/PyneAQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -40,7 +44,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
(python3.withPackages (ps: [ ps.pygments ]))
|
(python3.withPackages (ps: [ ps.pygments ]))
|
||||||
];
|
];
|
||||||
|
|
||||||
makeFlags = [ "PREFIX=$(out)" "MATCHCOMPILER=yes" "FILESDIR=$(out)/share/cppcheck" "HAVE_RULES=yes" ];
|
makeFlags = [
|
||||||
|
"PREFIX=$(out)"
|
||||||
|
"MATCHCOMPILER=yes"
|
||||||
|
"FILESDIR=$(out)/share/cppcheck"
|
||||||
|
"HAVE_RULES=yes"
|
||||||
|
];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
|
@ -73,13 +82,16 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Static analysis tool for C/C++ code";
|
description = "Static analysis tool for C/C++ code";
|
||||||
homepage = "http://cppcheck.sourceforge.net";
|
|
||||||
license = lib.licenses.gpl3Plus;
|
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
Check C/C++ code for memory leaks, mismatching allocation-deallocation,
|
Check C/C++ code for memory leaks, mismatching allocation-deallocation,
|
||||||
buffer overruns and more.
|
buffer overruns and more.
|
||||||
'';
|
'';
|
||||||
maintainers = with lib.maintainers; [ joachifm paveloom ];
|
homepage = "http://cppcheck.sourceforge.net";
|
||||||
|
license = lib.licenses.gpl3Plus;
|
||||||
|
maintainers = with lib.maintainers; [
|
||||||
|
joachifm
|
||||||
|
paveloom
|
||||||
|
];
|
||||||
platforms = lib.platforms.unix;
|
platforms = lib.platforms.unix;
|
||||||
};
|
};
|
||||||
})
|
})
|
|
@ -9,13 +9,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "cue";
|
pname = "cue";
|
||||||
version = "0.9.1";
|
version = "0.9.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cue-lang";
|
owner = "cue-lang";
|
||||||
repo = "cue";
|
repo = "cue";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-hhu66uiBkxyYRw8eruqxVifr2yftDXcYRTK5VYbjRPQ=";
|
hash = "sha256-C3BvI43oo71y19ZRflqhKRQF7DwBBOV0yRlutv+W18g=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-FsFignBh669E60S8l8siQHLzeSfB5X/XOHBXPMDX3Cg=";
|
vendorHash = "sha256-FsFignBh669E60S8l8siQHLzeSfB5X/XOHBXPMDX3Cg=";
|
||||||
|
|
|
@ -17,16 +17,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "eza";
|
pname = "eza";
|
||||||
version = "0.18.19";
|
version = "0.18.20";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "eza-community";
|
owner = "eza-community";
|
||||||
repo = "eza";
|
repo = "eza";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-UP0z7rcOmwKqpmKkQy5/6W+XWKfAiEQifKOnrdCgBYo=";
|
hash = "sha256-yhrzjm6agMshdjCkK88aGXd0aM9Uurs1GeAA3w/umqI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-x53sQ/DEx7SkQ8vECg/5lkcdJA3WbcDaYapbXub+9nA=";
|
cargoHash = "sha256-AJH+fZFaSSgRLIsDu5GVe4d9MI2e4N2DvWZ2JOZx+pM=";
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
|
nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
|
||||||
buildInputs = [ zlib ]
|
buildInputs = [ zlib ]
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
}:
|
}:
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "fennel-ls";
|
pname = "fennel-ls";
|
||||||
version = "0.1.2";
|
version = "0.1.3";
|
||||||
|
|
||||||
src = fetchFromSourcehut {
|
src = fetchFromSourcehut {
|
||||||
owner = "~xerool";
|
owner = "~xerool";
|
||||||
repo = "fennel-ls";
|
repo = "fennel-ls";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-8TDJ03x9dkfievbovzMN3JRfIKba3CfzbcRAZOuPbKs=";
|
hash = "sha256-7NifEbOH8TDzon3f6w4I/7uryE1e9M5iYvqEb0hLv5s=";
|
||||||
};
|
};
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
lua
|
lua
|
||||||
|
@ -22,12 +22,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
makeFlags = [ "PREFIX=$(out)" ];
|
makeFlags = [ "PREFIX=$(out)" ];
|
||||||
installFlags = [ "PREFIX=$(out)" ];
|
installFlags = [ "PREFIX=$(out)" ];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
description = "Language server for intelligent editing of the Fennel Programming Language";
|
description = "Language server for intelligent editing of the Fennel Programming Language";
|
||||||
homepage = "https://git.sr.ht/~xerool/fennel-ls/";
|
homepage = "https://git.sr.ht/~xerool/fennel-ls/";
|
||||||
license = licenses.mit;
|
license = lib.licenses.mit;
|
||||||
changelog = "https://git.sr.ht/~xerool/fennel-ls/refs/${version}";
|
changelog = "https://git.sr.ht/~xerool/fennel-ls/refs/${finalAttrs.version}";
|
||||||
maintainers = with maintainers; [
|
maintainers = with lib.maintainers; [
|
||||||
luftmensch-luftmensch
|
luftmensch-luftmensch
|
||||||
yisraeldov
|
yisraeldov
|
||||||
];
|
];
|
||||||
|
|
|
@ -10,16 +10,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "fzf-make";
|
pname = "fzf-make";
|
||||||
version = "0.34.0";
|
version = "0.35.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kyu08";
|
owner = "kyu08";
|
||||||
repo = "fzf-make";
|
repo = "fzf-make";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-x+y0K6b/yCskowOuvjcSCJXM5ym2Qn84/Thui0ahUKU=";
|
hash = "sha256-hrPBuNCtwYOynv0JUcEq0lVZ9k3iVPNyn04l8zVbkN4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-cIoc3sGy33iTkVAln4oSYSBGB0iAFanv746upxnv0ZA=";
|
cargoHash = "sha256-O7rQp70ukw7LiC+m7rlqEGHVJw3Lo93WEmL3PFD7kBM=";
|
||||||
|
|
||||||
nativeBuildInputs = [ makeBinaryWrapper ];
|
nativeBuildInputs = [ makeBinaryWrapper ];
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ let
|
||||||
maintainers
|
maintainers
|
||||||
;
|
;
|
||||||
|
|
||||||
version = "0.2.4";
|
version = "0.2.5";
|
||||||
in
|
in
|
||||||
rustPlatform.buildRustPackage {
|
rustPlatform.buildRustPackage {
|
||||||
pname = "git-instafix";
|
pname = "git-instafix";
|
||||||
|
@ -23,10 +23,10 @@ rustPlatform.buildRustPackage {
|
||||||
owner = "quodlibetor";
|
owner = "quodlibetor";
|
||||||
repo = "git-instafix";
|
repo = "git-instafix";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-lrGWt3y8IbGzOjp6k3nZD4CnC1S9aMpJPwNL/Mik5Lw=";
|
hash = "sha256-tizA5BLZZ/9gfHv2X8is7EJD1reMvfA7c6JETUoUgvI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-+mBxHC7AzHuQ/k9OwT92iL25aW0WXyPcG5SOsWdgV5U=";
|
cargoHash = "sha256-kIIwswj8mfpY382O0bdMoSk6+T+614l2QCeRgz3ZxEY=";
|
||||||
|
|
||||||
buildInputs = [ libgit2 ];
|
buildInputs = [ libgit2 ];
|
||||||
nativeCheckInputs = [ git ];
|
nativeCheckInputs = [ git ];
|
||||||
|
|
|
@ -1,19 +1,31 @@
|
||||||
{ lib, rustPlatform, fetchFromGitHub, shared-mime-info, libiconv, installShellFiles }:
|
{
|
||||||
|
lib,
|
||||||
|
rustPlatform,
|
||||||
|
fetchFromGitHub,
|
||||||
|
shared-mime-info,
|
||||||
|
libiconv,
|
||||||
|
installShellFiles,
|
||||||
|
nix-update-script,
|
||||||
|
}:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "handlr-regex";
|
pname = "handlr-regex";
|
||||||
version = "0.10.0";
|
version = "0.10.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Anomalocaridid";
|
owner = "Anomalocaridid";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-RCMTRf/mrLCDrmJSAofTgCHKK4GogkdGXnN4lFFQMA8=";
|
hash = "sha256-6ASljvJF/qbl8nvAZKQ2rQ8CQPovTF7FLKp8enIjIP4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-GHRryBeofZQbVTyOwMwYKVAymui8VvsUQhiwGu0+HEE=";
|
cargoHash = "sha256-4tm7N8l7ScKhhOFxt/1ssArdF9fgvCyrDrBASaiOusI=";
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
installShellFiles
|
||||||
|
shared-mime-info
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ installShellFiles shared-mime-info ];
|
|
||||||
buildInputs = [ libiconv ];
|
buildInputs = [ libiconv ];
|
||||||
|
|
||||||
preCheck = ''
|
preCheck = ''
|
||||||
|
@ -29,6 +41,8 @@ rustPlatform.buildRustPackage rec {
|
||||||
installManPage assets/manual/man1/*
|
installManPage assets/manual/man1/*
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = nix-update-script { };
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Fork of handlr with support for regex";
|
description = "Fork of handlr with support for regex";
|
||||||
homepage = "https://github.com/Anomalocaridid/handlr-regex";
|
homepage = "https://github.com/Anomalocaridid/handlr-regex";
|
||||||
|
|
|
@ -10,16 +10,16 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "hugo";
|
pname = "hugo";
|
||||||
version = "0.127.0";
|
version = "0.128.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "gohugoio";
|
owner = "gohugoio";
|
||||||
repo = "hugo";
|
repo = "hugo";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-QAZP119VOPTnVXe2mtzCpB3OW/g73oA/qwR94OzISKo=";
|
hash = "sha256-dyiCEWOiUtRppKgpqI68kC7Hv1AMK76kvCEaS8nIIJM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-Og7FTCrto1l+Xpfr2zEgg/yXa7dflws0yJ2Xh9f3mbI=";
|
vendorHash = "sha256-iNI/5uAYMG+bfndpD17dp1v3rGbFdHnG9oQv/grb/XY=";
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
{ lib
|
|
||||||
, buildGoModule
|
|
||||||
, fetchFromGitHub
|
|
||||||
}:
|
|
||||||
|
|
||||||
buildGoModule rec {
|
|
||||||
pname = "kcl-cli";
|
|
||||||
version = "0.8.9";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "kcl-lang";
|
|
||||||
repo = "cli";
|
|
||||||
rev = "v${version}";
|
|
||||||
hash = "sha256-slU3n7YCV5VfvXArzlcITb9epdu/gyXlAWq9KLjGdJA=";
|
|
||||||
};
|
|
||||||
vendorHash = "sha256-Xv8Tfq9Kb1xGFCWZQwBFDX9xZW9j99td/DUb7jBtkpE=";
|
|
||||||
ldflags = [
|
|
||||||
"-X=kcl-lang.io/cli/pkg/version.version=${version}"
|
|
||||||
];
|
|
||||||
subPackages = [ "cmd/kcl" ];
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Command line interface for KCL programming language";
|
|
||||||
homepage = "https://github.com/kcl-lang/cli";
|
|
||||||
license = licenses.asl20;
|
|
||||||
maintainers = with maintainers; [ peefy ];
|
|
||||||
mainProgram = "kcl";
|
|
||||||
};
|
|
||||||
}
|
|
56
pkgs/by-name/kc/kcl/package.nix
Normal file
56
pkgs/by-name/kc/kcl/package.nix
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{ lib
|
||||||
|
, buildGoModule
|
||||||
|
, fetchFromGitHub
|
||||||
|
, kclvm_cli
|
||||||
|
, kclvm
|
||||||
|
, makeWrapper
|
||||||
|
, installShellFiles
|
||||||
|
,
|
||||||
|
}:
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "kcl";
|
||||||
|
version = "0.8.9";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "kcl-lang";
|
||||||
|
repo = "cli";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-slU3n7YCV5VfvXArzlcITb9epdu/gyXlAWq9KLjGdJA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-Xv8Tfq9Kb1xGFCWZQwBFDX9xZW9j99td/DUb7jBtkpE=";
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-w -s"
|
||||||
|
"-X=kcl-lang.io/cli/pkg/version.version=v${version}"
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper installShellFiles ];
|
||||||
|
buildInputs = [ kclvm kclvm_cli ];
|
||||||
|
|
||||||
|
subPackages = [ "cmd/kcl" ];
|
||||||
|
|
||||||
|
# env vars https://github.com/kcl-lang/kcl-go/blob/main/pkg/env/env.go#L29
|
||||||
|
postFixup = ''
|
||||||
|
wrapProgram $out/bin/kcl \
|
||||||
|
--set PATH ${lib.makeBinPath [kclvm_cli]} \
|
||||||
|
--set KCL_LIB_HOME ${lib.makeLibraryPath [kclvm]} \
|
||||||
|
--set KCL_GO_DISABLE_INSTALL_ARTIFACT false \
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
installShellCompletion --cmd kcl \
|
||||||
|
--bash <($out/bin/kcl completion bash) \
|
||||||
|
--fish <($out/bin/kcl completion fish) \
|
||||||
|
--zsh <($out/bin/kcl completion zsh)
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A command line interface for KCL programming language";
|
||||||
|
homepage = "https://github.com/kcl-lang/cli";
|
||||||
|
license = licenses.asl20;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ selfuryon peefy ];
|
||||||
|
mainProgram = "kcl";
|
||||||
|
};
|
||||||
|
}
|
4375
pkgs/by-name/kc/kclvm/Cargo.lock
generated
Normal file
4375
pkgs/by-name/kc/kclvm/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
37
pkgs/by-name/kc/kclvm/enable_protoc_env.patch
Normal file
37
pkgs/by-name/kc/kclvm/enable_protoc_env.patch
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
diff --git a/api/build.rs b/api/build.rs
|
||||||
|
index 617c1b9a..20d728e3 100644
|
||||||
|
--- a/api/build.rs
|
||||||
|
+++ b/api/build.rs
|
||||||
|
@@ -5,10 +5,10 @@ use prost_wkt_build::{FileDescriptorSet, Message};
|
||||||
|
/// According to the file kclvm/spec/gpyrpc/gpyrpc.proto, automatically generate
|
||||||
|
/// the corresponding rust source file to the directory src/model
|
||||||
|
fn main() {
|
||||||
|
- std::env::set_var(
|
||||||
|
- "PROTOC",
|
||||||
|
- protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
|
||||||
|
- );
|
||||||
|
+ // std::env::set_var(
|
||||||
|
+ // "PROTOC",
|
||||||
|
+ // protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
|
||||||
|
+ // );
|
||||||
|
|
||||||
|
let out = PathBuf::from(env::var("OUT_DIR").unwrap());
|
||||||
|
let descriptor_file = out.join("kclvm_service_descriptor.bin");
|
||||||
|
diff --git b/third-party/prost-wkt/wkt-types/build.rs a/third-party/prost-wkt/wkt-types/build.rs
|
||||||
|
index e49222d5..a933ddf4 100644
|
||||||
|
--- a/third-party/prost-wkt/wkt-types/build.rs
|
||||||
|
+++ b/third-party/prost-wkt/wkt-types/build.rs
|
||||||
|
@@ -13,10 +13,10 @@ use regex::Regex;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
//hack: set protoc_bin_vendored::protoc_bin_path() to PROTOC
|
||||||
|
- std::env::set_var(
|
||||||
|
- "PROTOC",
|
||||||
|
- protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
|
||||||
|
- );
|
||||||
|
+ // std::env::set_var(
|
||||||
|
+ // "PROTOC",
|
||||||
|
+ // protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
|
||||||
|
+ // );
|
||||||
|
let dir = PathBuf::from(env::var("OUT_DIR").unwrap());
|
||||||
|
process_prost_pbtime(&dir);
|
41
pkgs/by-name/kc/kclvm/package.nix
Normal file
41
pkgs/by-name/kc/kclvm/package.nix
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{ lib
|
||||||
|
, rustPlatform
|
||||||
|
, fetchFromGitHub
|
||||||
|
, protobuf
|
||||||
|
, pkg-config
|
||||||
|
,
|
||||||
|
}:
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "kclvm";
|
||||||
|
version = "0.8.7";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "kcl-lang";
|
||||||
|
repo = "kcl";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-ieGpuNkzT6AODZYUcEanb7Jpb+PXclnQ9KkdmlehK0o=";
|
||||||
|
};
|
||||||
|
|
||||||
|
sourceRoot = "source/kclvm";
|
||||||
|
cargoLock = {
|
||||||
|
lockFile = ./Cargo.lock;
|
||||||
|
outputHashes = {
|
||||||
|
"inkwell-0.2.0" = "sha256-JxSlhShb3JPhsXK8nGFi2uGPp8XqZUSiqniLBrhr+sM=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkg-config protobuf ];
|
||||||
|
|
||||||
|
patches = [ ./enable_protoc_env.patch ];
|
||||||
|
|
||||||
|
PROTOC = "${protobuf}/bin/protoc";
|
||||||
|
PROTOC_INCLUDE = "${protobuf}/include";
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A high-performance implementation of KCL written in Rust that uses LLVM as the compiler backend";
|
||||||
|
homepage = "https://github.com/kcl-lang/kcl";
|
||||||
|
license = licenses.asl20;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ selfuryon peefy ];
|
||||||
|
};
|
||||||
|
}
|
7
pkgs/by-name/kc/kclvm_cli/Cargo.lock
generated
Normal file
7
pkgs/by-name/kc/kclvm_cli/Cargo.lock
generated
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "kclvm_cli"
|
||||||
|
version = "0.8.7"
|
10
pkgs/by-name/kc/kclvm_cli/cargo_lock.patch
Normal file
10
pkgs/by-name/kc/kclvm_cli/cargo_lock.patch
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
--- /dev/null 2024-03-29 17:01:59.989114590 +0100
|
||||||
|
+++ cli/Cargo.lock 2024-04-17 13:27:32.243365234 +0200
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+# This file is automatically @generated by Cargo.
|
||||||
|
+# It is not intended for manual editing.
|
||||||
|
+version = 3
|
||||||
|
+
|
||||||
|
+[[package]]
|
||||||
|
+name = "kclvm_cli"
|
||||||
|
+version = "0.8.7"
|
31
pkgs/by-name/kc/kclvm_cli/package.nix
Normal file
31
pkgs/by-name/kc/kclvm_cli/package.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ lib
|
||||||
|
, rustPlatform
|
||||||
|
, fetchFromGitHub
|
||||||
|
, kclvm
|
||||||
|
}:
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "kclvm_cli";
|
||||||
|
version = "0.8.7";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "kcl-lang";
|
||||||
|
repo = "kcl";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-ieGpuNkzT6AODZYUcEanb7Jpb+PXclnQ9KkdmlehK0o=";
|
||||||
|
};
|
||||||
|
|
||||||
|
sourceRoot = "source/cli";
|
||||||
|
cargoLock.lockFile = ./Cargo.lock;
|
||||||
|
cargoPatches = [ ./cargo_lock.patch ];
|
||||||
|
|
||||||
|
buildInputs = [ kclvm ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A high-performance implementation of KCL written in Rust that uses LLVM as the compiler backend";
|
||||||
|
homepage = "https://github.com/kcl-lang/kcl";
|
||||||
|
license = licenses.asl20;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ selfuryon peefy ];
|
||||||
|
mainProgram = "kclvm_cli";
|
||||||
|
};
|
||||||
|
}
|
70
pkgs/by-name/lg/lgogdownloader/package.nix
Normal file
70
pkgs/by-name/lg/lgogdownloader/package.nix
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
cmake,
|
||||||
|
pkg-config,
|
||||||
|
curl,
|
||||||
|
boost,
|
||||||
|
liboauth,
|
||||||
|
jsoncpp,
|
||||||
|
htmlcxx,
|
||||||
|
rhash,
|
||||||
|
tinyxml-2,
|
||||||
|
help2man,
|
||||||
|
html-tidy,
|
||||||
|
libsForQt5,
|
||||||
|
testers,
|
||||||
|
lgogdownloader,
|
||||||
|
|
||||||
|
enableGui ? true,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "lgogdownloader";
|
||||||
|
version = "3.14";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Sude-";
|
||||||
|
repo = "lgogdownloader";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-pxYiSefscglHN53wvp38Ec4/3X46sWc56Y4YKNtqABQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
pkg-config
|
||||||
|
help2man
|
||||||
|
html-tidy
|
||||||
|
] ++ lib.optional enableGui libsForQt5.wrapQtAppsHook;
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
[
|
||||||
|
boost
|
||||||
|
curl
|
||||||
|
htmlcxx
|
||||||
|
jsoncpp
|
||||||
|
liboauth
|
||||||
|
rhash
|
||||||
|
tinyxml-2
|
||||||
|
]
|
||||||
|
++ lib.optionals enableGui [
|
||||||
|
libsForQt5.qtbase
|
||||||
|
libsForQt5.qtwebengine
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeFlags = lib.optional enableGui "-DUSE_QT_GUI=ON";
|
||||||
|
|
||||||
|
passthru.tests = {
|
||||||
|
version = testers.testVersion { package = lgogdownloader; };
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Unofficial downloader to GOG.com for Linux users. It uses the same API as the official GOGDownloader";
|
||||||
|
mainProgram = "lgogdownloader";
|
||||||
|
homepage = "https://github.com/Sude-/lgogdownloader";
|
||||||
|
license = lib.licenses.wtfpl;
|
||||||
|
maintainers = with lib.maintainers; [ _0x4A6F ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
40
pkgs/by-name/lo/loopwm/package.nix
Normal file
40
pkgs/by-name/lo/loopwm/package.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
stdenvNoCC,
|
||||||
|
lib,
|
||||||
|
fetchurl,
|
||||||
|
unzip,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
|
pname = "loopwm";
|
||||||
|
version = "1.0.0";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/MrKai77/Loop/releases/download/${finalAttrs.version}/Loop.zip";
|
||||||
|
hash = "sha256-1DQ6O6QkD04/meS0XaS0+vpr+vd5cfwGSehV8QVgYtI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
sourceRoot = ".";
|
||||||
|
|
||||||
|
nativeBuildInputs = [ unzip ];
|
||||||
|
|
||||||
|
dontPatch = true;
|
||||||
|
dontConfigure = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/Applications
|
||||||
|
cp -r Loop.app $out/Applications
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "macOS Window management made elegant";
|
||||||
|
homepage = "https://github.com/MrKai77/Loop";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
maintainers = with lib.maintainers; [ matteopacini ];
|
||||||
|
platforms = lib.platforms.darwin;
|
||||||
|
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||||
|
};
|
||||||
|
})
|
49
pkgs/by-name/ma/mackup/package.nix
Normal file
49
pkgs/by-name/ma/mackup/package.nix
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
python3Packages,
|
||||||
|
fetchFromGitHub,
|
||||||
|
procps,
|
||||||
|
}:
|
||||||
|
python3Packages.buildPythonApplication rec {
|
||||||
|
pname = "mackup";
|
||||||
|
version = "0.8.40";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "lra";
|
||||||
|
repo = "mackup";
|
||||||
|
rev = "refs/tags/${version}";
|
||||||
|
hash = "sha256-hAIl9nGFRaROlt764IZg4ejw+b1dpnYpiYq4CB9dJqQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace mackup/utils.py \
|
||||||
|
--replace-fail '"/usr/bin/pgrep"' '"${lib.getExe' procps "pgrep"}"'
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = with python3Packages; [
|
||||||
|
poetry-core
|
||||||
|
pythonRelaxDepsHook
|
||||||
|
nose
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = with python3Packages; [
|
||||||
|
six
|
||||||
|
docopt
|
||||||
|
];
|
||||||
|
|
||||||
|
pythonImportsCheck = [ "mackup" ];
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
nosetests
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A tool to keep your application settings in sync (OS X/Linux)";
|
||||||
|
changelog = "https://github.com/lra/mackup/releases/tag/${version}";
|
||||||
|
license = lib.licenses.agpl3Only;
|
||||||
|
homepage = "https://github.com/lra/mackup";
|
||||||
|
maintainers = with lib.maintainers; [ luftmensch-luftmensch ];
|
||||||
|
mainProgram = "mackup";
|
||||||
|
};
|
||||||
|
}
|
62
pkgs/by-name/mc/mcontrolcenter/package.nix
Normal file
62
pkgs/by-name/mc/mcontrolcenter/package.nix
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
{ lib, stdenv, libsForQt5, makeDesktopItem, copyDesktopItems, fetchFromGitHub, cmake, kmod }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "mcontrolcenter";
|
||||||
|
version = "0.4.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "dmitry-s93";
|
||||||
|
repo = "MControlCenter";
|
||||||
|
rev = finalAttrs.version;
|
||||||
|
hash = "sha256-SV78OVRGzy2zFLT3xqeUtbjlh81Z97PVao18P3h/8dI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace src/helper/helper.cpp \
|
||||||
|
--replace-fail "/usr/sbin/modprobe" "${kmod}/bin/modprobe"
|
||||||
|
substituteInPlace src/helper/mcontrolcenter.helper.service \
|
||||||
|
--replace-fail "/usr" "$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
desktopItems = [
|
||||||
|
(makeDesktopItem {
|
||||||
|
name = "MControlCenter";
|
||||||
|
exec = "mcontrolcenter";
|
||||||
|
icon = "mcontrolcenter";
|
||||||
|
comment = finalAttrs.meta.description;
|
||||||
|
desktopName = "MControlCenter";
|
||||||
|
categories = [ "System" ];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
libsForQt5.wrapQtAppsHook
|
||||||
|
libsForQt5.qttools
|
||||||
|
copyDesktopItems
|
||||||
|
cmake
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libsForQt5.qtbase
|
||||||
|
kmod
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
install -Dm755 mcontrolcenter $out/bin/mcontrolcenter
|
||||||
|
install -Dm755 helper/mcontrolcenter-helper $out/libexec/mcontrolcenter-helper
|
||||||
|
install -Dm644 ../resources/mcontrolcenter.svg $out/share/icons/hicolor/scalable/apps/mcontrolcenter.svg
|
||||||
|
install -Dm644 ../src/helper/mcontrolcenter-helper.conf $out/share/dbus-1/system.d/mcontrolcenter-helper.conf
|
||||||
|
install -Dm644 ../src/helper/mcontrolcenter.helper.service $out/share/dbus-1/system-services/mcontrolcenter.helper.service
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/dmitry-s93/MControlCenter";
|
||||||
|
description = "Tool to change the settings of MSI laptops running Linux";
|
||||||
|
license = lib.licenses.gpl3Plus;
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
maintainers = [ lib.maintainers.Tommimon ];
|
||||||
|
mainProgram = "mcontrolcenter";
|
||||||
|
};
|
||||||
|
})
|
|
@ -0,0 +1,57 @@
|
||||||
|
From 5a886abd956607503e9dc7cd22923eaf8b01e46f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Sobolev <contact@paveloom.dev>
|
||||||
|
Date: Mon, 3 Jun 2024 20:31:27 +0300
|
||||||
|
Subject: [PATCH] Disable tests that require network access.
|
||||||
|
|
||||||
|
---
|
||||||
|
tests/integration/meson.build | 2 --
|
||||||
|
tests/libutils/test.cpp | 20 --------------------
|
||||||
|
2 files changed, 22 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/integration/meson.build b/tests/integration/meson.build
|
||||||
|
index da1b3b76..8908e690 100644
|
||||||
|
--- a/tests/integration/meson.build
|
||||||
|
+++ b/tests/integration/meson.build
|
||||||
|
@@ -51,8 +51,6 @@ wrap_files = files(
|
||||||
|
'wrap-test/vorbis.wrap',
|
||||||
|
)
|
||||||
|
|
||||||
|
-test('wrap-test', wrap_tester, args: [wrap_files], timeout: 200000)
|
||||||
|
-
|
||||||
|
partial_interpreter_tests = [
|
||||||
|
[
|
||||||
|
'foreach',
|
||||||
|
diff --git a/tests/libutils/test.cpp b/tests/libutils/test.cpp
|
||||||
|
index 2b20191c..c313312b 100644
|
||||||
|
--- a/tests/libutils/test.cpp
|
||||||
|
+++ b/tests/libutils/test.cpp
|
||||||
|
@@ -131,26 +131,6 @@ TEST(UtilsTest, testMergingDirectories) {
|
||||||
|
ASSERT_EQ('a', std::ifstream(outputDir / "i1/a.txt").get());
|
||||||
|
}
|
||||||
|
|
||||||
|
-TEST(UtilsTest, testDownloadAndExtraction) {
|
||||||
|
- auto zipFileName = std::filesystem::path{randomFile() + "-1"};
|
||||||
|
- auto result = downloadFile(
|
||||||
|
- "https://github.com/JCWasmx86/mesonlsp/archive/refs/heads/main.zip",
|
||||||
|
- zipFileName);
|
||||||
|
- ASSERT_TRUE(result);
|
||||||
|
- auto directoryName = std::filesystem::path{randomFile() + "-2"};
|
||||||
|
- std::filesystem::create_directory(directoryName);
|
||||||
|
- result = extractFile(zipFileName, directoryName);
|
||||||
|
- ASSERT_TRUE(result);
|
||||||
|
- auto mustExist =
|
||||||
|
- directoryName / "mesonlsp-main/Benchmarks/extract_git_data.sh";
|
||||||
|
- ASSERT_TRUE(std::filesystem::exists(mustExist));
|
||||||
|
- auto mustFailFilename = std::filesystem::path{randomFile() + "-3"};
|
||||||
|
- result =
|
||||||
|
- downloadFile("lnfvwoefvnwefvwvipwnefv2efvpov2nvov", mustFailFilename);
|
||||||
|
- ASSERT_FALSE(result);
|
||||||
|
- ASSERT_FALSE(std::filesystem::exists(mustFailFilename));
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
testing::InitGoogleTest(&argc, argv);
|
||||||
|
return RUN_ALL_TESTS();
|
||||||
|
--
|
||||||
|
2.45.1
|
||||||
|
|
170
pkgs/by-name/me/mesonlsp/package.nix
Normal file
170
pkgs/by-name/me/mesonlsp/package.nix
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
|
||||||
|
gtest,
|
||||||
|
makeWrapper,
|
||||||
|
meson,
|
||||||
|
ninja,
|
||||||
|
pkg-config,
|
||||||
|
python3,
|
||||||
|
|
||||||
|
curl,
|
||||||
|
libarchive,
|
||||||
|
libossp_uuid,
|
||||||
|
libpkgconf,
|
||||||
|
libuuid,
|
||||||
|
nlohmann_json,
|
||||||
|
pkgsStatic,
|
||||||
|
|
||||||
|
mesonlsp,
|
||||||
|
nix-update-script,
|
||||||
|
testers,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "mesonlsp";
|
||||||
|
version = "4.2.2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "JCWasmx86";
|
||||||
|
repo = "mesonlsp";
|
||||||
|
rev = "v${finalAttrs.version}";
|
||||||
|
hash = "sha256-pN8MCqrRfVpmM8KWa7HPTghoegplM4bP/HRVJVs05iE=";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
./disable-tests-that-require-network-access.patch
|
||||||
|
./simplify-the-format-header-polyfill.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
gtest
|
||||||
|
makeWrapper
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
python3
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
[
|
||||||
|
curl
|
||||||
|
libarchive
|
||||||
|
libpkgconf
|
||||||
|
nlohmann_json
|
||||||
|
]
|
||||||
|
++ lib.optionals stdenv.isDarwin [
|
||||||
|
libossp_uuid
|
||||||
|
pkgsStatic.fmt
|
||||||
|
]
|
||||||
|
++ lib.optionals stdenv.isLinux [ libuuid ];
|
||||||
|
|
||||||
|
mesonFlags = [ "-Dbenchmarks=false" ];
|
||||||
|
|
||||||
|
mesonCheckFlags = [ "--print-errorlogs" ];
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
postUnpack =
|
||||||
|
let
|
||||||
|
ada = fetchFromGitHub {
|
||||||
|
owner = "ada-url";
|
||||||
|
repo = "ada";
|
||||||
|
rev = "v2.7.4";
|
||||||
|
hash = "sha256-V5LwL03x7/a9Lvg1gPvgGipo7IICU7xyO2D3GqP6Lbw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
muon = fetchFromGitHub {
|
||||||
|
owner = "JCWasmx86";
|
||||||
|
repo = "muon";
|
||||||
|
rev = "62af239567ec3b086bae7f02d4aed3a545949155";
|
||||||
|
hash = "sha256-k883mKwuP35f0WtwX8ybl9uYbvA3y6Vxtv2EJMpZDEs=";
|
||||||
|
};
|
||||||
|
|
||||||
|
sha256 = fetchFromGitHub {
|
||||||
|
owner = "amosnier";
|
||||||
|
repo = "sha-2";
|
||||||
|
rev = "49265c656f9b370da660531db8cc6bf0a2e110a6";
|
||||||
|
hash = "sha256-X9M/ZATYXUiE4oGorPBnsdaKnKaObarnMRh6QEfkBls=";
|
||||||
|
};
|
||||||
|
|
||||||
|
tomlplusplus = fetchFromGitHub {
|
||||||
|
owner = "marzer";
|
||||||
|
repo = "tomlplusplus";
|
||||||
|
rev = "v3.4.0";
|
||||||
|
hash = "sha256-h5tbO0Rv2tZezY58yUbyRVpsfRjY3i+5TPkkxr6La8M=";
|
||||||
|
};
|
||||||
|
|
||||||
|
tree-sitter = fetchFromGitHub {
|
||||||
|
owner = "tree-sitter";
|
||||||
|
repo = "tree-sitter";
|
||||||
|
rev = "v0.20.8";
|
||||||
|
hash = "sha256-278zU5CLNOwphGBUa4cGwjBqRJ87dhHMzFirZB09gYM=";
|
||||||
|
};
|
||||||
|
|
||||||
|
tree-sitter-ini = fetchFromGitHub {
|
||||||
|
owner = "JCWasmx86";
|
||||||
|
repo = "tree-sitter-ini";
|
||||||
|
rev = "20aa563306e9406ac55babb4474521060df90a30";
|
||||||
|
hash = "sha256-1hHjtghBIf7lOPpupT1pUCZQCnzUi4Qt/yHSCdjMhCU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
tree-sitter-meson = fetchFromGitHub {
|
||||||
|
owner = "JCWasmx86";
|
||||||
|
repo = "tree-sitter-meson";
|
||||||
|
rev = "09665faff74548820c10d77dd8738cd76d488572";
|
||||||
|
hash = "sha256-ice2NdK1/U3NylIQDnNCN41rK/G6uqFOX+OeNf3zm18=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
''
|
||||||
|
(
|
||||||
|
cd "$sourceRoot/subprojects"
|
||||||
|
|
||||||
|
cp -R --no-preserve=mode,ownership ${ada} ada
|
||||||
|
cp "packagefiles/ada/meson.build" ada
|
||||||
|
|
||||||
|
cp -R --no-preserve=mode,ownership ${muon} muon
|
||||||
|
|
||||||
|
cp -R --no-preserve=mode,ownership ${sha256} sha256
|
||||||
|
cp "packagefiles/sha256/meson.build" sha256
|
||||||
|
|
||||||
|
cp -R --no-preserve=mode,ownership ${tomlplusplus} tomlplusplus-3.4.0
|
||||||
|
|
||||||
|
cp -R --no-preserve=mode,ownership ${tree-sitter} tree-sitter-0.20.8
|
||||||
|
cp "packagefiles/tree-sitter-0.20.8/meson.build" tree-sitter-0.20.8
|
||||||
|
|
||||||
|
cp -R --no-preserve=mode,ownership ${tree-sitter-ini} tree-sitter-ini
|
||||||
|
cp "packagefiles/tree-sitter-ini/meson.build" tree-sitter-ini
|
||||||
|
|
||||||
|
cp -R --no-preserve=mode,ownership ${tree-sitter-meson} tree-sitter-meson
|
||||||
|
cp "packagefiles/tree-sitter-meson/meson.build" tree-sitter-meson
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace subprojects/muon/include/compilers.h \
|
||||||
|
--replace-fail 'compiler_language new' 'compiler_language new_'
|
||||||
|
|
||||||
|
patchShebangs src/libtypenamespace
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
updateScript = nix-update-script { };
|
||||||
|
tests.version = testers.testVersion {
|
||||||
|
package = mesonlsp;
|
||||||
|
version = "v${finalAttrs.version}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "An unofficial, unendorsed language server for Meson written in C++";
|
||||||
|
homepage = "https://github.com/JCWasmx86/mesonlsp";
|
||||||
|
changelog = "https://github.com/JCWasmx86/mesonlsp/releases/tag/v${finalAttrs.version}";
|
||||||
|
license = licenses.gpl3Plus;
|
||||||
|
mainProgram = "mesonlsp";
|
||||||
|
maintainers = with maintainers; [ paveloom ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
};
|
||||||
|
})
|
|
@ -0,0 +1,47 @@
|
||||||
|
From ae3fb8943dd5b2d282a2c6d4525a8ce0dd0244e8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pavel Sobolev <contact@paveloom.dev>
|
||||||
|
Date: Tue, 25 Jun 2024 23:03:50 +0300
|
||||||
|
Subject: [PATCH] Simplify the `<format>` header polyfill.
|
||||||
|
|
||||||
|
---
|
||||||
|
src/polyfill/polyfill.hpp | 11 +++--------
|
||||||
|
1 file changed, 3 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/polyfill/polyfill.hpp b/src/polyfill/polyfill.hpp
|
||||||
|
index 5c5ba39a..b5d145ed 100644
|
||||||
|
--- a/src/polyfill/polyfill.hpp
|
||||||
|
+++ b/src/polyfill/polyfill.hpp
|
||||||
|
@@ -1,9 +1,6 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
-#if __has_include(<format>) and !defined(__x86_64__)
|
||||||
|
-#include <format>
|
||||||
|
-#else
|
||||||
|
#include <chrono>
|
||||||
|
#include <fmt/core.h>
|
||||||
|
|
||||||
|
@@ -23,10 +20,8 @@ struct fmt::formatter<std::chrono::time_point<Clock, Duration>> {
|
||||||
|
return fmt::format_to(ctx.out(), "{}", tp.time_since_epoch().count());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
-#endif
|
||||||
|
-#else
|
||||||
|
+#elif defined(_WIN32)
|
||||||
|
#include <format>
|
||||||
|
-#ifdef _WIN32
|
||||||
|
template <> struct std::formatter<wchar_t *> {
|
||||||
|
constexpr auto parse(format_parse_context &ctx) { return ctx.begin(); }
|
||||||
|
|
||||||
|
@@ -35,6 +30,6 @@ template <> struct std::formatter<wchar_t *> {
|
||||||
|
return std::format_to(ctx.out(), L"{}", str);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
-
|
||||||
|
-#endif
|
||||||
|
+#else
|
||||||
|
+#include <format>
|
||||||
|
#endif
|
||||||
|
--
|
||||||
|
2.45.1
|
||||||
|
|
|
@ -1,39 +1,39 @@
|
||||||
{
|
{
|
||||||
alsa-lib,
|
alsa-lib,
|
||||||
at-spi2-atk,
|
at-spi2-atk,
|
||||||
at-spi2-core,
|
at-spi2-core,
|
||||||
atk,
|
atk,
|
||||||
cairo,
|
cairo,
|
||||||
cups,
|
cups,
|
||||||
curl,
|
curl,
|
||||||
dbus,
|
dbus,
|
||||||
dpkg,
|
dpkg,
|
||||||
expat,
|
expat,
|
||||||
fetchurl,
|
fetchurl,
|
||||||
fontconfig,
|
fontconfig,
|
||||||
freetype,
|
freetype,
|
||||||
gdk-pixbuf,
|
gdk-pixbuf,
|
||||||
glib,
|
glib,
|
||||||
gtk3,
|
gtk3,
|
||||||
lib,
|
lib,
|
||||||
libdrm,
|
libdrm,
|
||||||
libnotify,
|
libnotify,
|
||||||
libsecret,
|
libsecret,
|
||||||
libuuid,
|
libuuid,
|
||||||
libxcb,
|
libxcb,
|
||||||
libxkbcommon,
|
libxkbcommon,
|
||||||
mesa,
|
mesa,
|
||||||
nspr,
|
nspr,
|
||||||
nss,
|
nss,
|
||||||
pango,
|
pango,
|
||||||
stdenv,
|
stdenv,
|
||||||
systemd,
|
systemd,
|
||||||
wrapGAppsHook3,
|
wrapGAppsHook3,
|
||||||
xorg,
|
xorg,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.43.0";
|
version = "1.43.2";
|
||||||
|
|
||||||
rpath = lib.makeLibraryPath [
|
rpath = lib.makeLibraryPath [
|
||||||
alsa-lib
|
alsa-lib
|
||||||
|
@ -82,20 +82,25 @@ let
|
||||||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||||
fetchurl {
|
fetchurl {
|
||||||
url = "https://downloads.mongodb.com/compass/mongodb-compass_${version}_amd64.deb";
|
url = "https://downloads.mongodb.com/compass/mongodb-compass_${version}_amd64.deb";
|
||||||
sha256 = "sha256-hzPhF0NGwv+Lm+q5SoS8qv10UmuKf4RarGMkEeCxp9w=";
|
hash = "sha256-idOFt60MlspB8Bm9HbLAhd/F1zhkHSVmdTxvCsgjGvk=";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw "MongoDB compass is not supported on ${stdenv.hostPlatform.system}";
|
throw "MongoDB compass is not supported on ${stdenv.hostPlatform.system}";
|
||||||
# NOTE While MongoDB Compass is available to darwin, I do not have resources to test it
|
# NOTE While MongoDB Compass is available to darwin, I do not have resources to test it
|
||||||
# Feel free to make a PR adding support if desired
|
# Feel free to make a PR adding support if desired
|
||||||
|
|
||||||
in stdenv.mkDerivation {
|
in
|
||||||
|
stdenv.mkDerivation {
|
||||||
pname = "mongodb-compass";
|
pname = "mongodb-compass";
|
||||||
inherit version;
|
inherit version;
|
||||||
|
|
||||||
inherit src;
|
inherit src;
|
||||||
|
|
||||||
buildInputs = [ dpkg wrapGAppsHook3 gtk3 ];
|
buildInputs = [
|
||||||
|
dpkg
|
||||||
|
wrapGAppsHook3
|
||||||
|
gtk3
|
||||||
|
];
|
||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
|
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
|
@ -127,12 +132,12 @@ in stdenv.mkDerivation {
|
||||||
wrapGAppsHook $out/bin/mongodb-compass
|
wrapGAppsHook $out/bin/mongodb-compass
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
description = "GUI for MongoDB";
|
description = "GUI for MongoDB";
|
||||||
maintainers = with maintainers; [ bryanasdev000 ];
|
maintainers = with lib.maintainers; [ bryanasdev000 ];
|
||||||
homepage = "https://github.com/mongodb-js/compass";
|
homepage = "https://github.com/mongodb-js/compass";
|
||||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||||
license = licenses.sspl;
|
license = lib.licenses.sspl;
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = [ "x86_64-linux" ];
|
||||||
mainProgram = "mongodb-compass";
|
mainProgram = "mongodb-compass";
|
||||||
};
|
};
|
53
pkgs/by-name/mo/mosdns/package.nix
Normal file
53
pkgs/by-name/mo/mosdns/package.nix
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
buildGoModule,
|
||||||
|
fetchFromGitHub,
|
||||||
|
testers,
|
||||||
|
mosdns,
|
||||||
|
stdenv,
|
||||||
|
installShellFiles,
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "mosdns";
|
||||||
|
version = "5.3.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "IrineSistiana";
|
||||||
|
repo = "mosdns";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-QujkDx899GAImEtQE28ru7H0Zym5SYXJbJEfSBkJYjo=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-0J5hXb1W8UruNG0KFaJBOQwHl2XiWg794A6Ktgv+ObM=";
|
||||||
|
|
||||||
|
nativeBuildInputs = [ installShellFiles ];
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-s"
|
||||||
|
"-w"
|
||||||
|
"-X main.version=${version}"
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
||||||
|
installShellCompletion --cmd mosdns \
|
||||||
|
--bash <($out/bin/mosdns completion bash) \
|
||||||
|
--fish <($out/bin/mosdns completion fish) \
|
||||||
|
--zsh <($out/bin/mosdns completion zsh)
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.tests = {
|
||||||
|
version = testers.testVersion {
|
||||||
|
package = mosdns;
|
||||||
|
command = "${lib.getExe mosdns} version";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Modular, pluggable DNS forwarder";
|
||||||
|
homepage = "https://github.com/IrineSistiana/mosdns";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
maintainers = with lib.maintainers; [ moraxyc ];
|
||||||
|
mainProgram = "mosdns";
|
||||||
|
};
|
||||||
|
}
|
37
pkgs/by-name/ni/nix-required-mounts/closure.nix
Normal file
37
pkgs/by-name/ni/nix-required-mounts/closure.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# Use exportReferencesGraph to capture the possible dependencies of the
|
||||||
|
# drivers (e.g. libc linked through DT_RUNPATH) and ensure they are mounted
|
||||||
|
# in the sandbox as well. In practice, things seemed to have worked without
|
||||||
|
# this as well, but we go with the safe option until we understand why.
|
||||||
|
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
runCommand,
|
||||||
|
python3Packages,
|
||||||
|
allowedPatterns,
|
||||||
|
}:
|
||||||
|
runCommand "allowed-patterns.json"
|
||||||
|
{
|
||||||
|
nativeBuildInputs = [ python3Packages.python ];
|
||||||
|
exportReferencesGraph = builtins.concatMap (
|
||||||
|
name:
|
||||||
|
builtins.concatMap (
|
||||||
|
path:
|
||||||
|
let
|
||||||
|
prefix = "${builtins.storeDir}/";
|
||||||
|
# Has to start with a letter: https://github.com/NixOS/nix/blob/516e7ddc41f39ff939b5d5b5dc71e590f24890d4/src/libstore/build/local-derivation-goal.cc#L568
|
||||||
|
exportName = ''references-${lib.strings.removePrefix prefix "${path}"}'';
|
||||||
|
isStorePath = lib.isStorePath path && (lib.hasPrefix prefix "${path}");
|
||||||
|
in
|
||||||
|
lib.optionals isStorePath [
|
||||||
|
exportName
|
||||||
|
path
|
||||||
|
]
|
||||||
|
) allowedPatterns.${name}.paths
|
||||||
|
) (builtins.attrNames allowedPatterns);
|
||||||
|
env.storeDir = "${builtins.storeDir}/";
|
||||||
|
shallowConfig = builtins.toJSON allowedPatterns;
|
||||||
|
passAsFile = [ "shallowConfig" ];
|
||||||
|
}
|
||||||
|
''
|
||||||
|
python ${./scripts/nix_required_mounts_closure.py}
|
||||||
|
''
|
201
pkgs/by-name/ni/nix-required-mounts/nix_required_mounts.py
Normal file
201
pkgs/by-name/ni/nix-required-mounts/nix_required_mounts.py
Normal file
|
@ -0,0 +1,201 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import glob
|
||||||
|
import json
|
||||||
|
import subprocess
|
||||||
|
import textwrap
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
from collections import deque
|
||||||
|
from itertools import chain
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Deque, Dict, List, Set, Tuple, TypeAlias, TypedDict
|
||||||
|
import logging
|
||||||
|
|
||||||
|
Glob: TypeAlias = str
|
||||||
|
PathString: TypeAlias = str
|
||||||
|
|
||||||
|
|
||||||
|
class Mount(TypedDict):
|
||||||
|
host: PathString
|
||||||
|
guest: PathString
|
||||||
|
|
||||||
|
|
||||||
|
class Pattern(TypedDict):
|
||||||
|
onFeatures: List[str]
|
||||||
|
paths: List[Glob | Mount]
|
||||||
|
unsafeFollowSymlinks: bool
|
||||||
|
|
||||||
|
|
||||||
|
AllowedPatterns: TypeAlias = Dict[str, Pattern]
|
||||||
|
|
||||||
|
|
||||||
|
parser = ArgumentParser("pre-build-hook")
|
||||||
|
parser.add_argument("derivation_path")
|
||||||
|
parser.add_argument("sandbox_path", nargs="?")
|
||||||
|
parser.add_argument("--patterns", type=Path, required=True)
|
||||||
|
parser.add_argument("--nix-exe", type=Path, required=True)
|
||||||
|
parser.add_argument(
|
||||||
|
"--issue-command",
|
||||||
|
choices=("always", "conditional", "never"),
|
||||||
|
default="conditional",
|
||||||
|
help="Whether to print extra-sandbox-paths",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--issue-stop",
|
||||||
|
choices=("always", "conditional", "never"),
|
||||||
|
default="conditional",
|
||||||
|
help="Whether to print the final empty line",
|
||||||
|
)
|
||||||
|
parser.add_argument("-v", "--verbose", action="count", default=0)
|
||||||
|
|
||||||
|
|
||||||
|
def symlink_parents(p: Path) -> List[Path]:
|
||||||
|
out = []
|
||||||
|
while p.is_symlink() and p not in out:
|
||||||
|
parent = p.readlink()
|
||||||
|
if parent.is_relative_to("."):
|
||||||
|
p = p / parent
|
||||||
|
else:
|
||||||
|
p = parent
|
||||||
|
out.append(p)
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def get_strings(drv_env: dict, name: str) -> List[str]:
|
||||||
|
if "__json" in drv_env:
|
||||||
|
return list(json.loads(drv_env["__json"]).get(name, []))
|
||||||
|
else:
|
||||||
|
return drv_env.get(name, "").split()
|
||||||
|
|
||||||
|
|
||||||
|
def validate_mounts(pattern: Pattern) -> List[Tuple[PathString, PathString, bool]]:
|
||||||
|
roots = []
|
||||||
|
for mount in pattern["paths"]:
|
||||||
|
if isinstance(mount, PathString):
|
||||||
|
matches = glob.glob(mount)
|
||||||
|
assert matches, f"Specified host paths do not exist: {mount}"
|
||||||
|
|
||||||
|
roots.extend((m, m, pattern["unsafeFollowSymlinks"]) for m in matches)
|
||||||
|
else:
|
||||||
|
assert isinstance(mount, dict) and "host" in mount, mount
|
||||||
|
assert Path(
|
||||||
|
mount["host"]
|
||||||
|
).exists(), f"Specified host paths do not exist: {mount['host']}"
|
||||||
|
roots.append(
|
||||||
|
(
|
||||||
|
mount["guest"],
|
||||||
|
mount["host"],
|
||||||
|
pattern["unsafeFollowSymlinks"],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return roots
|
||||||
|
|
||||||
|
|
||||||
|
def entrypoint():
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
VERBOSITY_LEVELS = [logging.ERROR, logging.INFO, logging.DEBUG]
|
||||||
|
|
||||||
|
level_index = min(args.verbose, len(VERBOSITY_LEVELS) - 1)
|
||||||
|
logging.basicConfig(level=VERBOSITY_LEVELS[level_index])
|
||||||
|
|
||||||
|
drv_path = args.derivation_path
|
||||||
|
|
||||||
|
with open(args.patterns, "r") as f:
|
||||||
|
allowed_patterns = json.load(f)
|
||||||
|
|
||||||
|
if not Path(drv_path).exists():
|
||||||
|
logging.error(
|
||||||
|
f"{drv_path} doesn't exist."
|
||||||
|
" Cf. https://github.com/NixOS/nix/issues/9272"
|
||||||
|
" Exiting the hook",
|
||||||
|
)
|
||||||
|
|
||||||
|
proc = subprocess.run(
|
||||||
|
[
|
||||||
|
args.nix_exe,
|
||||||
|
"show-derivation",
|
||||||
|
drv_path,
|
||||||
|
],
|
||||||
|
capture_output=True,
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
parsed_drv = json.loads(proc.stdout)
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
logging.error(
|
||||||
|
"Couldn't parse the output of"
|
||||||
|
"`nix show-derivation`"
|
||||||
|
f". Expected JSON, observed: {proc.stdout}",
|
||||||
|
)
|
||||||
|
logging.error(textwrap.indent(proc.stdout.decode("utf8"), prefix=" " * 4))
|
||||||
|
logging.info("Exiting the nix-required-binds hook")
|
||||||
|
return
|
||||||
|
[canon_drv_path] = parsed_drv.keys()
|
||||||
|
|
||||||
|
known_features = set(
|
||||||
|
chain.from_iterable(
|
||||||
|
pattern["onFeatures"] for pattern in allowed_patterns.values()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
parsed_drv = parsed_drv[canon_drv_path]
|
||||||
|
drv_env = parsed_drv.get("env", {})
|
||||||
|
required_features = get_strings(drv_env, "requiredSystemFeatures")
|
||||||
|
required_features = list(filter(known_features.__contains__, required_features))
|
||||||
|
|
||||||
|
patterns: List[Pattern] = list(
|
||||||
|
pattern
|
||||||
|
for pattern in allowed_patterns.values()
|
||||||
|
for path in pattern["paths"]
|
||||||
|
if any(feature in required_features for feature in pattern["onFeatures"])
|
||||||
|
) # noqa: E501
|
||||||
|
|
||||||
|
queue: Deque[Tuple[PathString, PathString, bool]] = deque(
|
||||||
|
(mnt for pattern in patterns for mnt in validate_mounts(pattern))
|
||||||
|
)
|
||||||
|
|
||||||
|
unique_mounts: Set[Tuple[PathString, PathString]] = set()
|
||||||
|
mounts: List[Tuple[PathString, PathString]] = []
|
||||||
|
|
||||||
|
while queue:
|
||||||
|
guest_path_str, host_path_str, follow_symlinks = queue.popleft()
|
||||||
|
if (guest_path_str, host_path_str) not in unique_mounts:
|
||||||
|
mounts.append((guest_path_str, host_path_str))
|
||||||
|
unique_mounts.add((guest_path_str, host_path_str))
|
||||||
|
|
||||||
|
if not follow_symlinks:
|
||||||
|
continue
|
||||||
|
|
||||||
|
host_path = Path(host_path_str)
|
||||||
|
if not (host_path.is_dir() or host_path.is_symlink()):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# assert host_path_str == guest_path_str, (host_path_str, guest_path_str)
|
||||||
|
|
||||||
|
for child in host_path.iterdir() if host_path.is_dir() else [host_path]:
|
||||||
|
for parent in symlink_parents(child):
|
||||||
|
parent_str = parent.absolute().as_posix()
|
||||||
|
queue.append((parent_str, parent_str, follow_symlinks))
|
||||||
|
|
||||||
|
# the pre-build-hook command
|
||||||
|
if args.issue_command == "always" or (
|
||||||
|
args.issue_command == "conditional" and mounts
|
||||||
|
):
|
||||||
|
print("extra-sandbox-paths")
|
||||||
|
print_paths = True
|
||||||
|
else:
|
||||||
|
print_paths = False
|
||||||
|
|
||||||
|
# arguments, one per line
|
||||||
|
for guest_path_str, host_path_str in mounts if print_paths else []:
|
||||||
|
print(f"{guest_path_str}={host_path_str}")
|
||||||
|
|
||||||
|
# terminated by an empty line
|
||||||
|
something_to_terminate = args.issue_stop == "conditional" and mounts
|
||||||
|
if args.issue_stop == "always" or something_to_terminate:
|
||||||
|
print()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
entrypoint()
|
67
pkgs/by-name/ni/nix-required-mounts/package.nix
Normal file
67
pkgs/by-name/ni/nix-required-mounts/package.nix
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
{
|
||||||
|
addOpenGLRunpath,
|
||||||
|
allowedPatternsPath ? callPackage ./closure.nix { inherit allowedPatterns; },
|
||||||
|
allowedPatterns ? rec {
|
||||||
|
# This config is just an example.
|
||||||
|
# When the hook observes either of the following requiredSystemFeatures:
|
||||||
|
nvidia-gpu.onFeatures = [
|
||||||
|
"gpu"
|
||||||
|
"nvidia-gpu"
|
||||||
|
"opengl"
|
||||||
|
"cuda"
|
||||||
|
];
|
||||||
|
# It exposes these paths in the sandbox:
|
||||||
|
nvidia-gpu.paths = [
|
||||||
|
addOpenGLRunpath.driverLink
|
||||||
|
"/dev/dri"
|
||||||
|
"/dev/nvidia*"
|
||||||
|
];
|
||||||
|
nvidia-gpu.unsafeFollowSymlinks = true;
|
||||||
|
},
|
||||||
|
callPackage,
|
||||||
|
extraWrapperArgs ? [ ],
|
||||||
|
lib,
|
||||||
|
makeWrapper,
|
||||||
|
nix,
|
||||||
|
nixosTests,
|
||||||
|
python3Packages,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
attrs = builtins.fromTOML (builtins.readFile ./pyproject.toml);
|
||||||
|
pname = attrs.project.name;
|
||||||
|
inherit (attrs.project) version;
|
||||||
|
in
|
||||||
|
|
||||||
|
python3Packages.buildPythonApplication {
|
||||||
|
inherit pname version;
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
src = lib.cleanSource ./.;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
makeWrapper
|
||||||
|
python3Packages.setuptools
|
||||||
|
];
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
wrapProgram $out/bin/${pname} \
|
||||||
|
--add-flags "--patterns ${allowedPatternsPath}" \
|
||||||
|
--add-flags "--nix-exe ${lib.getExe nix}" \
|
||||||
|
${builtins.concatStringsSep " " extraWrapperArgs}
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit allowedPatterns;
|
||||||
|
tests = {
|
||||||
|
inherit (nixosTests) nix-required-mounts;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
meta = {
|
||||||
|
inherit (attrs.project) description;
|
||||||
|
homepage = attrs.project.urls.Homepage;
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
mainProgram = attrs.project.name;
|
||||||
|
maintainers = with lib.maintainers; [ SomeoneSerge ];
|
||||||
|
};
|
||||||
|
}
|
20
pkgs/by-name/ni/nix-required-mounts/pyproject.toml
Normal file
20
pkgs/by-name/ni/nix-required-mounts/pyproject.toml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
[build-system]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
requires = [ "setuptools" ]
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "nix-required-mounts"
|
||||||
|
version = "0.0.1"
|
||||||
|
description = """
|
||||||
|
A --pre-build-hook for Nix, \
|
||||||
|
that allows to expose extra paths in the build sandbox \
|
||||||
|
based on derivations' requiredSystemFeatrues"""
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
Homepage = "https://github.com/NixOS/nixpkgs/tree/master/pkgs/by-name/ni/nix-required-mounts"
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
nix-required-mounts = "nix_required_mounts:entrypoint"
|
||||||
|
|
||||||
|
[tool.black]
|
||||||
|
line-length = 79
|
|
@ -0,0 +1,45 @@
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
store_dir = os.environ["storeDir"]
|
||||||
|
|
||||||
|
with open(os.environ["shallowConfigPath"], "r") as f:
|
||||||
|
config = json.load(f)
|
||||||
|
|
||||||
|
cache = {}
|
||||||
|
|
||||||
|
|
||||||
|
def read_edges(path: str | dict) -> list[str | dict]:
|
||||||
|
if isinstance(path, dict):
|
||||||
|
return [path]
|
||||||
|
assert isinstance(path, str)
|
||||||
|
|
||||||
|
if not path.startswith(store_dir):
|
||||||
|
return [path]
|
||||||
|
if path in cache:
|
||||||
|
return cache[path]
|
||||||
|
|
||||||
|
name = f"references-{path.removeprefix(store_dir)}"
|
||||||
|
|
||||||
|
assert os.path.exists(name)
|
||||||
|
|
||||||
|
with open(name, "r") as f:
|
||||||
|
return [p.strip() for p in f.readlines() if p.startswith(store_dir)]
|
||||||
|
|
||||||
|
|
||||||
|
def host_path(mount: str | dict) -> str:
|
||||||
|
if isinstance(mount, dict):
|
||||||
|
return mount["host"]
|
||||||
|
assert isinstance(mount, str), mount
|
||||||
|
return mount
|
||||||
|
|
||||||
|
|
||||||
|
for pattern in config:
|
||||||
|
closure = []
|
||||||
|
for path in config[pattern]["paths"]:
|
||||||
|
closure.append(path)
|
||||||
|
closure.extend(read_edges(path))
|
||||||
|
config[pattern]["paths"] = list({host_path(m): m for m in closure}.values())
|
||||||
|
|
||||||
|
with open(os.environ["out"], "w") as f:
|
||||||
|
json.dump(config, f)
|
|
@ -31,13 +31,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "openvas-scanner";
|
pname = "openvas-scanner";
|
||||||
version = "23.4.1";
|
version = "23.5.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "greenbone";
|
owner = "greenbone";
|
||||||
repo = "openvas-scanner";
|
repo = "openvas-scanner";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-D0HQ00NCep0hAQ+dDWoinIxivloqgjPbp2lUunTxoyM=";
|
hash = "sha256-bAQFMYHE9nozmfRILFAswN9y0DxnX8LK2E6c3yqzWlA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
39
pkgs/by-name/pe/pegtl/package.nix
Normal file
39
pkgs/by-name/pe/pegtl/package.nix
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
cmake,
|
||||||
|
fetchFromGitHub,
|
||||||
|
gitUpdater,
|
||||||
|
lib,
|
||||||
|
ninja,
|
||||||
|
stdenv,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "pegtl";
|
||||||
|
version = "3.2.7";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "taocpp";
|
||||||
|
repo = "PEGTL";
|
||||||
|
rev = finalAttrs.version;
|
||||||
|
hash = "sha256-IV5YNGE4EWVrmg2Sia/rcU8jCuiBynQGJM6n3DCWTQU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
ninja
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru.updateScript = gitUpdater { };
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/taocpp/pegtl";
|
||||||
|
description = "Parsing Expression Grammar Template Library";
|
||||||
|
longDescription = ''
|
||||||
|
Zero-dependency C++ header-only parser combinator library
|
||||||
|
for creating parsers according to a Parsing Expression Grammar (PEG).
|
||||||
|
'';
|
||||||
|
license = lib.licenses.boost;
|
||||||
|
maintainers = with lib.maintainers; [ vigress8 ];
|
||||||
|
platforms = lib.platforms.all;
|
||||||
|
};
|
||||||
|
})
|
|
@ -6,16 +6,16 @@
|
||||||
|
|
||||||
buildNpmPackage rec {
|
buildNpmPackage rec {
|
||||||
pname = "pgraphs";
|
pname = "pgraphs";
|
||||||
version = "0.6.12";
|
version = "0.6.13";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "pg-format";
|
owner = "pg-format";
|
||||||
repo = "pgraphs";
|
repo = "pgraphs";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-rhNXASSHgdL9knq9uPFhAGlh0ZAKo5TNh/2a4u6Mh1U=";
|
hash = "sha256-NLQMBEN/wO/xOMy+gX3sQZRqU8gYesXS7hwRGWyjvX0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
npmDepsHash = "sha256-S1pCmRaRuprqIjaylIsuHyguhgQC5vvp7pDq2KJgrHQ=";
|
npmDepsHash = "sha256-Fj5huWKatJmdH2PUqNWWysE+qhiq7aR2ue723Pv5Y4M=";
|
||||||
dontNpmBuild = true;
|
dontNpmBuild = true;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -7,18 +7,18 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
pname = "pinact";
|
pname = "pinact";
|
||||||
version = "0.2.0";
|
version = "0.2.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "suzuki-shunsuke";
|
owner = "suzuki-shunsuke";
|
||||||
repo = "pinact";
|
repo = "pinact";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-ndlyfp+neoOEzofIlQEQp/6masnzMQFWAPmhan3hlb0=";
|
hash = "sha256-HfeHfKXDBHPgxisWSVnrLOQf/4NXtnehkIjQqiCoFIc=";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
buildGoModule {
|
buildGoModule {
|
||||||
inherit pname version src;
|
inherit pname version src;
|
||||||
|
|
||||||
vendorHash = "sha256-qu4CHh2013q7e7mBuymlKEhjpdtSOaWGVutjegoVP7E=";
|
vendorHash = "sha256-L9EGygiJ40f7Yw46KdaAof5O/ren6inTK7XerB/uv1g=";
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "poutine";
|
pname = "poutine";
|
||||||
version = "0.12.0";
|
version = "0.13.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "boostsecurityio";
|
owner = "boostsecurityio";
|
||||||
repo = "poutine";
|
repo = "poutine";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-mB/d3EWBWHx7zrMGRPGOJc2uD3MlhXV8H2WfNiKlzdE=";
|
hash = "sha256-9vbK2tc57e/YNfhSVbCMxnzOmmahr9T3x5Tt7GQjVnc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-HYuyGSatUOch73IKc7/9imhwz0Oz6Mrccs2HKVQtaVE=";
|
vendorHash = "sha256-HYuyGSatUOch73IKc7/9imhwz0Oz6Mrccs2HKVQtaVE=";
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "powerjoular";
|
pname = "powerjoular";
|
||||||
version = "0.7.3";
|
version = "1.0.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "joular";
|
owner = "joular";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-UjoGY1C58xhINmji7R63wqkWK9yCeXa0wwosnIcfYdA=";
|
hash = "sha256-3YKoxZTh9ScudAtsE4CJUbcallm7/vvxIdXwaOZt2hA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
41
pkgs/by-name/py/pywal16/package.nix
Normal file
41
pkgs/by-name/py/pywal16/package.nix
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
python3,
|
||||||
|
fetchFromGitHub,
|
||||||
|
imagemagick,
|
||||||
|
}:
|
||||||
|
|
||||||
|
python3.pkgs.buildPythonApplication rec {
|
||||||
|
pname = "pywal16";
|
||||||
|
version = "3.5.4";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "eylles";
|
||||||
|
repo = "pywal16";
|
||||||
|
rev = "refs/tags/${version}";
|
||||||
|
hash = "sha256-14xl0E4zpUCjW8rkqWA87TGsDy8lgqOQm9GeE9JIsVk=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ python3.pkgs.setuptools ];
|
||||||
|
|
||||||
|
nativeCheckInputs = [
|
||||||
|
python3.pkgs.pytestCheckHook
|
||||||
|
imagemagick
|
||||||
|
];
|
||||||
|
|
||||||
|
preCheck = ''
|
||||||
|
export HOME=$(mktemp -d)
|
||||||
|
'';
|
||||||
|
|
||||||
|
pythonImportsCheck = [ "pywal" ];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "16 colors fork of pywal";
|
||||||
|
homepage = "https://github.com/eylles/pywal16";
|
||||||
|
changelog = "https://github.com/eylles/pywal16/blob/${src.rev}/CHANGELOG.md";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
maintainers = with lib.maintainers; [ moraxyc ];
|
||||||
|
mainProgram = "wal";
|
||||||
|
};
|
||||||
|
}
|
|
@ -19,19 +19,19 @@
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "resources";
|
pname = "resources";
|
||||||
version = "1.4.0";
|
version = "1.5.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "nokyan";
|
owner = "nokyan";
|
||||||
repo = "resources";
|
repo = "resources";
|
||||||
rev = "refs/tags/v${finalAttrs.version}";
|
rev = "refs/tags/v${finalAttrs.version}";
|
||||||
hash = "sha256-Udl5DY68AeysYoXVlQQ0cIv3EHOtdqkW1nmGRYXaT8Y=";
|
hash = "sha256-Xj8c8ZVhlS2h4ZygeCOaT1XHEbgTSkseinofP9X+5qY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||||
inherit (finalAttrs) src;
|
inherit (finalAttrs) src;
|
||||||
name = "resources-${finalAttrs.version}";
|
name = "resources-${finalAttrs.version}";
|
||||||
hash = "sha256-XvCnYBl0pCtJ4vXuQxqBlTVMIiFNQiNabHhqaxq8AdM=";
|
hash = "sha256-PZ91xSiWt9rMnSy8KZOmWbUL5Y0Nf3Kk577ZwkdnHwg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
53
pkgs/by-name/sc/scion-apps/package.nix
Normal file
53
pkgs/by-name/sc/scion-apps/package.nix
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{ lib
|
||||||
|
, buildGoModule
|
||||||
|
, fetchFromGitHub
|
||||||
|
, openpam
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule {
|
||||||
|
pname = "scion-apps";
|
||||||
|
version = "unstable-2024-04-05";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "netsec-ethz";
|
||||||
|
repo = "scion-apps";
|
||||||
|
rev = "cb0dc365082788bcc896f0b55c4807b72c2ac338";
|
||||||
|
hash = "sha256-RzWtnUpZfwryOfumgXHV5QMceLY51Zv3KI0K6WLz8rs=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-bz4vtELxrDfebk+00w9AcEiK/4skO1mE3lBDU1GkOrk=";
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace webapp/web/tests/health/scmpcheck.sh \
|
||||||
|
--replace-fail "hostname -I" "hostname -i"
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
# Add `scion-` prefix to all binaries
|
||||||
|
for f in $out/bin/*; do
|
||||||
|
filename="$(basename "$f")"
|
||||||
|
mv -v $f $out/bin/scion-$filename
|
||||||
|
done
|
||||||
|
|
||||||
|
# Fix nested subpackage names
|
||||||
|
mv -v $out/bin/scion-server $out/bin/scion-ssh-server
|
||||||
|
mv -v $out/bin/scion-client $out/bin/scion-ssh-client
|
||||||
|
|
||||||
|
# Include static website for webapp
|
||||||
|
mkdir -p $out/share
|
||||||
|
cp -r webapp/web $out/share/scion-webapp
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
openpam
|
||||||
|
];
|
||||||
|
|
||||||
|
ldflags = [ "-s" "-w" ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Public repository for SCION applications";
|
||||||
|
homepage = "https://github.com/netsec-ethz/scion-apps";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = with maintainers; [ matthewcroughan sarcasticadmin ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -16,19 +16,19 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "televido";
|
pname = "televido";
|
||||||
version = "0.3.0";
|
version = "0.4.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "d-k-bo";
|
owner = "d-k-bo";
|
||||||
repo = "televido";
|
repo = "televido";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-qfUwPyutBNEnplD3kmTJXffzcWkEcR6FTLnT5YDSysU=";
|
hash = "sha256-pMrMXRnfvpDLFkL2IqYJKRao/OF78mXUCBqBgT97+hc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||||
inherit src;
|
inherit src;
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
hash = "sha256-CmQQH6a5xMq+v+P4/sbpQ7iDaGKtzV39FgufD5uxz4Y=";
|
hash = "sha256-wavxkhDS0hspGMw5ZKTxjZ07TiZ67OkbMhicB8h5y64=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "9.7.1";
|
version = "9.7.2";
|
||||||
in
|
in
|
||||||
|
|
||||||
rustPlatform.buildRustPackage {
|
rustPlatform.buildRustPackage {
|
||||||
|
@ -18,10 +18,10 @@ rustPlatform.buildRustPackage {
|
||||||
owner = "erebe";
|
owner = "erebe";
|
||||||
repo = "wstunnel";
|
repo = "wstunnel";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-VJllyvTlHlyYhzth6tVzqVe8EPfHdXrcrDmtrS16aMM=";
|
hash = "sha256-5hpkY8MoSo59KmhXsPuLCmWq4KaUzuHBpesQMtgn7hw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-sg/tE8D/cNeMliJr7JIstq36gg/mhYM6n8ye2Y2biq0=";
|
cargoHash = "sha256-kv+DX98SjI3m2CdM4RHoMMISZyrFmlhlSaBor0dFUSE=";
|
||||||
|
|
||||||
checkFlags = [
|
checkFlags = [
|
||||||
# Tries to launch a test container
|
# Tries to launch a test container
|
||||||
|
|
62
pkgs/by-name/xl/xld/package.nix
Normal file
62
pkgs/by-name/xl/xld/package.nix
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
{ lib
|
||||||
|
, stdenvNoCC
|
||||||
|
, fetchurl
|
||||||
|
, undmg
|
||||||
|
, writeShellApplication
|
||||||
|
, curl
|
||||||
|
, xmlstarlet
|
||||||
|
, common-updater-scripts
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
|
pname = "xld";
|
||||||
|
version = "20240511";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "mirror://sourceforge/${finalAttrs.pname}/${finalAttrs.pname}-${finalAttrs.version}.dmg";
|
||||||
|
hash = "sha256-8xfjAWgtSdbD8gGlkGzT8QRz7egIf4PE/rFsFEDX0+c=";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ undmg ];
|
||||||
|
|
||||||
|
sourceRoot = ".";
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p "$out/Applications" "$out/bin"
|
||||||
|
cp -r *.app "$out/Applications"
|
||||||
|
cp -r CLI/xld "$out/bin"
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace CLI/xld \
|
||||||
|
--replace "/Applications/XLD.app" "$out/Applications/XLD.app"
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = lib.getExe (writeShellApplication {
|
||||||
|
name = "xld-update-script";
|
||||||
|
runtimeInputs = [
|
||||||
|
curl
|
||||||
|
xmlstarlet
|
||||||
|
common-updater-scripts
|
||||||
|
];
|
||||||
|
text = ''
|
||||||
|
url=$(curl --silent "https://svn.code.sf.net/p/xld/code/appcast/xld-appcast_e.xml")
|
||||||
|
version=$(echo "$url" | xmlstarlet sel -t -v "substring-before(substring-after(//enclosure/@url, 'version='), '&')")
|
||||||
|
update-source-version xld "$version" --file=./pkgs/by-name/xl/xld/package.nix
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Lossless audio decoder";
|
||||||
|
homepage = "https://tmkk.undo.jp/xld/index_e.html";
|
||||||
|
license = lib.licenses.osl3;
|
||||||
|
maintainers = with lib.maintainers; [ iivusly ];
|
||||||
|
platforms = lib.platforms.darwin;
|
||||||
|
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||||
|
mainProgram = "xld";
|
||||||
|
};
|
||||||
|
})
|
1051
pkgs/by-name/ze/zed-editor/Cargo.lock
generated
1051
pkgs/by-name/ze/zed-editor/Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -2,6 +2,7 @@
|
||||||
lib,
|
lib,
|
||||||
rustPlatform,
|
rustPlatform,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
|
clang,
|
||||||
copyDesktopItems,
|
copyDesktopItems,
|
||||||
curl,
|
curl,
|
||||||
perl,
|
perl,
|
||||||
|
@ -24,54 +25,50 @@
|
||||||
darwin,
|
darwin,
|
||||||
makeFontsConf,
|
makeFontsConf,
|
||||||
vulkan-loader,
|
vulkan-loader,
|
||||||
|
envsubst,
|
||||||
|
nix-update-script,
|
||||||
|
|
||||||
withGLES ? false
|
withGLES ? false,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert withGLES -> stdenv.isLinux;
|
assert withGLES -> stdenv.isLinux;
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "zed";
|
pname = "zed";
|
||||||
version = "0.137.6";
|
version = "0.141.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "zed-industries";
|
owner = "zed-industries";
|
||||||
repo = "zed";
|
repo = "zed";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-1shK+Q8LTRaIXDqDLdJVsB4sAg2u5Kz0NXKf5jCniOU=";
|
hash = "sha256-pbflVG4JoXWZEf4Elmd4+RDb9uAaTsj+8lTaBGMaMdo=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoLock = {
|
cargoLock = {
|
||||||
lockFile = ./Cargo.lock;
|
lockFile = ./Cargo.lock;
|
||||||
outputHashes = {
|
outputHashes = {
|
||||||
|
"alacritty_terminal-0.24.1-dev" = "sha256-aVB1CNOLjNh6AtvdbomODNrk00Md8yz8QzldzvDo1LI=";
|
||||||
"async-pipe-0.1.3" = "sha256-g120X88HGT8P6GNCrzpS5SutALx5H+45Sf4iSSxzctE=";
|
"async-pipe-0.1.3" = "sha256-g120X88HGT8P6GNCrzpS5SutALx5H+45Sf4iSSxzctE=";
|
||||||
"blade-graphics-0.4.0" = "sha256-w5BTv/40Zy94dmoZUpVVWrhzR2IaGAIJ0Ftsw1v/R9Y=";
|
"blade-graphics-0.4.0" = "sha256-khJke3tIO8V7tT3MBk9vQhBKTiJEWTY6Qr4vzeuKnOk=";
|
||||||
|
"cosmic-text-0.11.2" = "sha256-TLPDnqixuW+aPAhiBhSvuZIa69vgV3xLcw32OlkdCcM=";
|
||||||
"font-kit-0.11.0" = "sha256-+4zMzjFyMS60HfLMEXGfXqKn6P+pOngLA45udV09DM8=";
|
"font-kit-0.11.0" = "sha256-+4zMzjFyMS60HfLMEXGfXqKn6P+pOngLA45udV09DM8=";
|
||||||
"heed-0.20.0-alpha.9" = "sha256-8bzoMmfKS+6AmeTzh0/F7WM9OBdIex+NYFER28bpA/s=";
|
"lsp-types-0.95.1" = "sha256-N4MKoU9j1p/Xeowki/+XiNQPwIcTm9DgmfM/Eieq4js=";
|
||||||
"lsp-types-0.95.1" = "sha256-ZWgQH7sUkP51oni2rqYX8Fsme/bGQV1TL5SbmEAhATU=";
|
|
||||||
"nvim-rs-0.6.0-pre" = "sha256-bdWWuCsBv01mnPA5e5zRpq48BgOqaqIcAu+b7y1NnM8=";
|
"nvim-rs-0.6.0-pre" = "sha256-bdWWuCsBv01mnPA5e5zRpq48BgOqaqIcAu+b7y1NnM8=";
|
||||||
"pathfinder_simd-0.5.3" = "sha256-bakBcAQZJdHQPXybe0zoMzE49aOHENQY7/ZWZUMt+pM=";
|
"pathfinder_simd-0.5.3" = "sha256-bakBcAQZJdHQPXybe0zoMzE49aOHENQY7/ZWZUMt+pM=";
|
||||||
"tree-sitter-0.20.100" = "sha256-xZDWAjNIhWC2n39H7jJdKDgyE/J6+MAVSa8dHtZ6CLE=";
|
"tree-sitter-0.20.100" = "sha256-xZDWAjNIhWC2n39H7jJdKDgyE/J6+MAVSa8dHtZ6CLE=";
|
||||||
"tree-sitter-bash-0.20.4" = "sha256-VP7rJfE/k8KV1XN1w5f0YKjCnDMYU1go/up0zj1mabM=";
|
|
||||||
"tree-sitter-cpp-0.20.0" = "sha256-2QYEFkpwcRmh2kf4qEAL2a5lGSa316CetOhF73e7rEM=";
|
|
||||||
"tree-sitter-css-0.19.0" = "sha256-5Qti/bFac2A1PJxqZEOuSLK3GGKYwPDKAp3OOassBxU=";
|
|
||||||
"tree-sitter-elixir-0.1.0" = "sha256-hBHqQ3eBjknRPJjP+lQJU6NPFhUMtiv4FbKsTw28Bog=";
|
|
||||||
"tree-sitter-go-0.20.0" = "sha256-/mE21JSa3LWEiOgYPJcq0FYzTbBuNwp9JdZTZqmDIUU=";
|
"tree-sitter-go-0.20.0" = "sha256-/mE21JSa3LWEiOgYPJcq0FYzTbBuNwp9JdZTZqmDIUU=";
|
||||||
"tree-sitter-gomod-1.0.2" = "sha256-OPtqXe6OMC9c5dgFH8Msj+6DU01LvLKVbCzGLj0PnLI=";
|
|
||||||
"tree-sitter-gowork-0.0.1" = "sha256-lM4L4Ap/c8uCr4xUw9+l/vaGb3FxxnuZI0+xKYFDPVg=";
|
"tree-sitter-gowork-0.0.1" = "sha256-lM4L4Ap/c8uCr4xUw9+l/vaGb3FxxnuZI0+xKYFDPVg=";
|
||||||
"tree-sitter-heex-0.0.1" = "sha256-6LREyZhdTDt3YHVRPDyqCaDXqcsPlHOoMFDb2B3+3xM=";
|
"tree-sitter-heex-0.0.1" = "sha256-6LREyZhdTDt3YHVRPDyqCaDXqcsPlHOoMFDb2B3+3xM=";
|
||||||
"tree-sitter-jsdoc-0.20.0" = "sha256-fKscFhgZ/BQnYnE5EwurFZgiE//O0WagRIHVtDyes/Y=";
|
"tree-sitter-jsdoc-0.20.0" = "sha256-fKscFhgZ/BQnYnE5EwurFZgiE//O0WagRIHVtDyes/Y=";
|
||||||
"tree-sitter-json-0.20.0" = "sha256-fZNftzNavJQPQE4S1VLhRyGQRoJgbWA5xTPa8ZI5UX4=";
|
|
||||||
"tree-sitter-markdown-0.0.1" = "sha256-F8VVd7yYa4nCrj/HEC13BTC7lkV3XSb2Z3BNi/VfSbs=";
|
"tree-sitter-markdown-0.0.1" = "sha256-F8VVd7yYa4nCrj/HEC13BTC7lkV3XSb2Z3BNi/VfSbs=";
|
||||||
"tree-sitter-proto-0.0.2" = "sha256-W0diP2ByAXYrc7Mu/sbqST6lgVIyHeSBmH7/y/X3NhU=";
|
"tree-sitter-proto-0.0.2" = "sha256-W0diP2ByAXYrc7Mu/sbqST6lgVIyHeSBmH7/y/X3NhU=";
|
||||||
"tree-sitter-typescript-0.20.2" = "sha256-cpOAtfvlffS57BrXaoa2xa9NUYw0AsHxVI8PrcpgZCQ=";
|
|
||||||
"tree-sitter-yaml-0.0.1" = "sha256-S59jLlipBI2kwFuZDMmpv0TOZpGyXpbAizN3yC6wJ5I=";
|
|
||||||
"xim-0.4.0" = "sha256-vxu3tjkzGeoRUj7vyP0vDGI7fweX8Drgy9hwOUOEQIA=";
|
"xim-0.4.0" = "sha256-vxu3tjkzGeoRUj7vyP0vDGI7fweX8Drgy9hwOUOEQIA=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
clang
|
||||||
copyDesktopItems
|
copyDesktopItems
|
||||||
curl
|
curl
|
||||||
perl
|
perl
|
||||||
|
@ -142,12 +139,27 @@ rustPlatform.buildRustPackage rec {
|
||||||
];
|
];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mv $out/bin/Zed $out/bin/zed
|
|
||||||
install -D ${src}/crates/zed/resources/app-icon@2x.png $out/share/icons/hicolor/1024x1024@2x/apps/zed.png
|
install -D ${src}/crates/zed/resources/app-icon@2x.png $out/share/icons/hicolor/1024x1024@2x/apps/zed.png
|
||||||
install -D ${src}/crates/zed/resources/app-icon.png $out/share/icons/hicolor/512x512/apps/zed.png
|
install -D ${src}/crates/zed/resources/app-icon.png $out/share/icons/hicolor/512x512/apps/zed.png
|
||||||
install -D ${src}/crates/zed/resources/zed.desktop $out/share/applications/dev.zed.Zed.desktop
|
|
||||||
|
# extracted from https://github.com/zed-industries/zed/blob/v0.141.2/script/bundle-linux
|
||||||
|
(
|
||||||
|
export DO_STARTUP_NOTIFY="true"
|
||||||
|
export APP_CLI="zed"
|
||||||
|
export APP_ICON="zed"
|
||||||
|
export APP_NAME="Zed"
|
||||||
|
mkdir -p "$out/share/applications"
|
||||||
|
${lib.getExe envsubst} < "crates/zed/resources/zed.desktop.in" > "$out/share/applications/zed.desktop"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = nix-update-script {
|
||||||
|
extraArgs = [
|
||||||
|
"--version-regex"
|
||||||
|
"v(.*)"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "High-performance, multiplayer code editor from the creators of Atom and Tree-sitter";
|
description = "High-performance, multiplayer code editor from the creators of Atom and Tree-sitter";
|
||||||
homepage = "https://zed.dev";
|
homepage = "https://zed.dev";
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "zpaqfranz";
|
pname = "zpaqfranz";
|
||||||
version = "59.8";
|
version = "59.9";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "fcorbelli";
|
owner = "fcorbelli";
|
||||||
repo = "zpaqfranz";
|
repo = "zpaqfranz";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-N3R/M0TS8XzRilQT4NFqIlfo2NqfunA38IrQBz5uaPg=";
|
hash = "sha256-1TmJHksFeiDjkIslA9FAZrWElgfCV1HOtS7H2pq8sHY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
, dde-polkit-agent
|
, dde-polkit-agent
|
||||||
, qt5integration
|
, qt5integration
|
||||||
, libsecret
|
, libsecret
|
||||||
, libgnome-keyring
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -39,7 +38,6 @@ stdenv.mkDerivation rec {
|
||||||
dtkwidget
|
dtkwidget
|
||||||
dde-polkit-agent
|
dde-polkit-agent
|
||||||
qt5integration
|
qt5integration
|
||||||
libgnome-keyring
|
|
||||||
libsecret
|
libsecret
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"pidgin@muffinmad" = callPackage ./pidgin-im-integration { };
|
"pidgin@muffinmad" = callPackage ./pidgin-im-integration { };
|
||||||
"pop-shell@system76.com" = callPackage ./pop-shell { };
|
"pop-shell@system76.com" = callPackage ./pop-shell { };
|
||||||
"sound-output-device-chooser@kgshank.net" = callPackage ./sound-output-device-chooser { };
|
"sound-output-device-chooser@kgshank.net" = callPackage ./sound-output-device-chooser { };
|
||||||
|
"systemd-manager@hardpixel.eu" = callPackage ./systemd-manager { };
|
||||||
"taskwhisperer-extension@infinicode.de" = callPackage ./taskwhisperer { };
|
"taskwhisperer-extension@infinicode.de" = callPackage ./taskwhisperer { };
|
||||||
"tilingnome@rliang.github.com" = callPackage ./tilingnome { };
|
"tilingnome@rliang.github.com" = callPackage ./tilingnome { };
|
||||||
"TopIcons@phocean.net" = callPackage ./topicons-plus { };
|
"TopIcons@phocean.net" = callPackage ./topicons-plus { };
|
||||||
|
|
68
pkgs/desktops/gnome/extensions/systemd-manager/default.nix
Normal file
68
pkgs/desktops/gnome/extensions/systemd-manager/default.nix
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenvNoCC,
|
||||||
|
fetchFromGitHub,
|
||||||
|
glib,
|
||||||
|
# These loosen security a bit, so we don't install them by default. See also:
|
||||||
|
# https://github.com/hardpixel/systemd-manager?tab=readme-ov-file#without-password-prompt
|
||||||
|
allowPolkitPolicy ? "none",
|
||||||
|
config,
|
||||||
|
systemd ? config.systemd.package,
|
||||||
|
}:
|
||||||
|
|
||||||
|
assert lib.elem allowPolkitPolicy [
|
||||||
|
"none"
|
||||||
|
"pkexec"
|
||||||
|
"systemctl"
|
||||||
|
];
|
||||||
|
|
||||||
|
stdenvNoCC.mkDerivation rec {
|
||||||
|
pname = "gnome-shell-extension-systemd-manager";
|
||||||
|
version = "16";
|
||||||
|
|
||||||
|
# Upstream doesn't post new versions in extensions.gnome.org anymore, see also:
|
||||||
|
# https://github.com/hardpixel/systemd-manager/issues/19
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "hardpixel";
|
||||||
|
repo = "systemd-manager";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-JecSIRj582jJWdrCQYBWFRkIhosxRhD3BxSAy8/0nVw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ glib ];
|
||||||
|
|
||||||
|
postInstall =
|
||||||
|
''
|
||||||
|
rm systemd-manager@hardpixel.eu/schemas/gschemas.compiled
|
||||||
|
glib-compile-schemas systemd-manager@hardpixel.eu/schemas
|
||||||
|
|
||||||
|
mkdir -p $out/share/gnome-shell/extensions
|
||||||
|
mv systemd-manager@hardpixel.eu $out/share/gnome-shell/extensions
|
||||||
|
''
|
||||||
|
+ lib.optionalString (allowPolkitPolicy == "pkexec") ''
|
||||||
|
local bn=org.freedesktop.policykit.pkexec.systemctl.policy
|
||||||
|
mkdir -p $out/share/polkit-1/actions
|
||||||
|
substitute systemd-policies/$bn $out/share/polkit-1/actions/$bn \
|
||||||
|
--replace-fail /usr/bin/systemctl ${lib.getBin systemd}/bin/systemctl
|
||||||
|
''
|
||||||
|
+ lib.optionalString (allowPolkitPolicy == "systemctl") ''
|
||||||
|
install -Dm0644 \
|
||||||
|
systemd-policies/10-service_status.rules \
|
||||||
|
$out/share/polkit-1/rules.d/10-gnome-extension-systemd-manager.rules
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
extensionUuid = "systemd-manager@hardpixel.eu";
|
||||||
|
extensionPortalSlug = "systemd-manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "GNOME Shell extension to manage systemd services";
|
||||||
|
homepage = "https://github.com/hardpixel/systemd-manager";
|
||||||
|
license = licenses.gpl3Only;
|
||||||
|
maintainers = with maintainers; [
|
||||||
|
linsui
|
||||||
|
doronbehar
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
161
pkgs/development/compilers/chicken/5/deps.toml
generated
161
pkgs/development/compilers/chicken/5/deps.toml
generated
|
@ -2,9 +2,9 @@
|
||||||
[7off]
|
[7off]
|
||||||
dependencies = ["anaphora", "define-options", "lowdown", "matchable", "srfi-1", "sxml-transforms", "sxpath", "utf8", "srfi-42", "srfi-69", "strse", "uri-common"]
|
dependencies = ["anaphora", "define-options", "lowdown", "matchable", "srfi-1", "sxml-transforms", "sxpath", "utf8", "srfi-42", "srfi-69", "strse", "uri-common"]
|
||||||
license = "agpl"
|
license = "agpl"
|
||||||
sha256 = "0hsqxva92k3yasrlgl7bbq3z3d2d2nd3r3i2v6vimv7mp2chfkdr"
|
sha256 = "06nzh23bpf9f011wr5sxqnq4nb1b7af6148qz52ri9hbb8r2mi4i"
|
||||||
synopsis = "Markdown to Gemini text"
|
synopsis = "Markdown to Gemini text"
|
||||||
version = "1.31"
|
version = "1.32"
|
||||||
|
|
||||||
[F-operator]
|
[F-operator]
|
||||||
dependencies = ["miscmacros", "datatype", "box"]
|
dependencies = ["miscmacros", "datatype", "box"]
|
||||||
|
@ -79,9 +79,9 @@ version = "3.0.0"
|
||||||
[amb]
|
[amb]
|
||||||
dependencies = ["srfi-1"]
|
dependencies = ["srfi-1"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "0ggwmsd4igg099ikn5qja5nkqmrnsw0byyk3q9y04ygvzalqyb36"
|
sha256 = "0n2wbxb23fai27hgk86jf9lnnrg0dvh989ysjkscdf9my96j448s"
|
||||||
synopsis = "The non-deterministic backtracking ambivalence operator"
|
synopsis = "The non-deterministic backtracking ambivalence operator"
|
||||||
version = "3.0.9"
|
version = "3.0.10"
|
||||||
|
|
||||||
[amqp]
|
[amqp]
|
||||||
dependencies = ["bitstring", "mailbox", "srfi-18", "uri-generic"]
|
dependencies = ["bitstring", "mailbox", "srfi-18", "uri-generic"]
|
||||||
|
@ -105,18 +105,18 @@ synopsis = "Procedures to generate ANSI escape sequences"
|
||||||
version = "0.6"
|
version = "0.6"
|
||||||
|
|
||||||
[apropos]
|
[apropos]
|
||||||
dependencies = ["srfi-1", "utf8", "string-utils", "symbol-utils", "check-errors"]
|
dependencies = ["utf8", "srfi-1", "symbol-utils", "check-errors"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "01zdifhqc0jfm810106sh87w0fmpchf4dph0k8v1lyjzbj1ivmi4"
|
sha256 = "01h8fpz32bc3c9ldyamawvj7jf2b4b10zz08a22i90ww5lyvn90s"
|
||||||
synopsis = "CHICKEN apropos"
|
synopsis = "CHICKEN apropos"
|
||||||
version = "3.8.3"
|
version = "3.10.2"
|
||||||
|
|
||||||
[arcadedb]
|
[arcadedb]
|
||||||
dependencies = ["uri-common", "medea"]
|
dependencies = ["medea"]
|
||||||
license = "zlib-acknowledgement"
|
license = "zlib-acknowledgement"
|
||||||
sha256 = "1w2iqylz0wfn7is8vss5dkwmi3pxhbh2h7ywzg39x45z2c91sd28"
|
sha256 = "1lhagnaxwvzax82k7qg8v5w7wj9mqi4y686j52fqiqnry99h73k0"
|
||||||
synopsis = "An ArcadeDB database driver for CHICKEN Scheme."
|
synopsis = "An ArcadeDB database driver for CHICKEN Scheme."
|
||||||
version = "0.7"
|
version = "0.8"
|
||||||
|
|
||||||
[args]
|
[args]
|
||||||
dependencies = ["srfi-1", "srfi-13", "srfi-37"]
|
dependencies = ["srfi-1", "srfi-13", "srfi-37"]
|
||||||
|
@ -289,9 +289,9 @@ version = "1.37"
|
||||||
[bitwise-utils]
|
[bitwise-utils]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
license = "public-domain"
|
license = "public-domain"
|
||||||
sha256 = "065q6ha8wsj6qhg7zxkaj2qrj5sm3iz2v7shcp5wh7j3fqwbs5q5"
|
sha256 = "1p433kx2q1zam5a2isgnxiywgkcb77bmbqlajpr7rvm5i739h8g7"
|
||||||
synopsis = "Bitwise utilities"
|
synopsis = "Bitwise utilities"
|
||||||
version = "1.3.0"
|
version = "1.3.1"
|
||||||
|
|
||||||
[blas]
|
[blas]
|
||||||
dependencies = ["bind", "compile-file", "srfi-13"]
|
dependencies = ["bind", "compile-file", "srfi-13"]
|
||||||
|
@ -352,16 +352,16 @@ version = "0.11"
|
||||||
[brev-separate]
|
[brev-separate]
|
||||||
dependencies = ["matchable", "miscmacros", "srfi-1", "srfi-69"]
|
dependencies = ["matchable", "miscmacros", "srfi-1", "srfi-69"]
|
||||||
license = "bsd-1-clause"
|
license = "bsd-1-clause"
|
||||||
sha256 = "0ycm95vcf1dj6m3kqii7b2a5kxyd1m6lzksz77ispay14srgw8rd"
|
sha256 = "1wzcqbccngcajzw4js7llys1pnmnvsmkk01v1ji6khy4kyghvspl"
|
||||||
synopsis = "Hodge podge of macros and combinators"
|
synopsis = "Hodge podge of macros and combinators"
|
||||||
version = "1.95"
|
version = "1.97"
|
||||||
|
|
||||||
[brev]
|
[brev]
|
||||||
dependencies = ["anaphora", "brev-separate", "clojurian", "combinators", "define-options", "dwim-sort", "fix-me-now", "acetone", "html-parser", "match-generics", "http-client", "matchable", "miscmacros", "scsh-process", "sequences", "srfi-1", "srfi-42", "srfi-69", "strse", "sxml-serializer", "sxml-transforms", "sxpath", "tree", "uri-common"]
|
dependencies = ["anaphora", "brev-separate", "clojurian", "combinators", "define-options", "dwim-sort", "fix-me-now", "acetone", "html-parser", "match-generics", "http-client", "matchable", "miscmacros", "scsh-process", "sequences", "srfi-1", "srfi-42", "srfi-69", "strse", "sxml-serializer", "sxml-transforms", "sxpath", "tree", "uri-common"]
|
||||||
license = "public-domain"
|
license = "public-domain"
|
||||||
sha256 = "1kbphbz21rlrsfcfqg77hm1vv7wh9z1gcwh5lb2hlrqp2yl7m7yc"
|
sha256 = "0gzbhyv228a76cnnisn7cqyhjsrphxn0bavxisg9rd40ndggijka"
|
||||||
synopsis = "A huge pile of batteries and shortcuts"
|
synopsis = "A huge pile of batteries and shortcuts"
|
||||||
version = "1.41"
|
version = "1.42"
|
||||||
|
|
||||||
[byte-blob]
|
[byte-blob]
|
||||||
dependencies = ["srfi-1"]
|
dependencies = ["srfi-1"]
|
||||||
|
@ -422,9 +422,9 @@ version = "0.4"
|
||||||
[check-errors]
|
[check-errors]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "09ffyffrv3gamjsjgbisn3yxb40wbqy5pfrs6dxw20n1ffimgfw5"
|
sha256 = "1xgchkpcmk7cwvbr87xmmwnw7z9ah8r8p6hv7kdkpjy66bas0yhj"
|
||||||
synopsis = "Argument checks & errors"
|
synopsis = "Argument checks & errors"
|
||||||
version = "3.8.0"
|
version = "3.8.2"
|
||||||
|
|
||||||
[checks]
|
[checks]
|
||||||
dependencies = ["simple-exceptions"]
|
dependencies = ["simple-exceptions"]
|
||||||
|
@ -499,9 +499,9 @@ version = "5.0.3"
|
||||||
[ck-macros]
|
[ck-macros]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
license = "public-domain"
|
license = "public-domain"
|
||||||
sha256 = "1x2d1f0fnzz5h871qgw4hkdffhd7rv7w59lq7r1y0r0jzl2rv83j"
|
sha256 = "1xry5blp0vjmxidp47f9i8axji2q5f7csjkqi0n1gdwkm54755jz"
|
||||||
synopsis = "Composable macros based on the CK abstract machine"
|
synopsis = "Composable macros based on the CK abstract machine"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
|
|
||||||
[clojurian]
|
[clojurian]
|
||||||
dependencies = ["srfi-18"]
|
dependencies = ["srfi-18"]
|
||||||
|
@ -735,11 +735,11 @@ synopsis = "Directed graph in adjacency list format."
|
||||||
version = "2.0"
|
version = "2.0"
|
||||||
|
|
||||||
[directory-utils]
|
[directory-utils]
|
||||||
dependencies = ["srfi-1", "srfi-13", "miscmacros", "moremacros", "list-utils", "stack", "check-errors"]
|
dependencies = ["srfi-1", "utf8", "miscmacros", "moremacros", "stack", "list-utils", "check-errors"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "0jaj7pi27d65wz1zpfxiphkdnk4an5yahhhxs28svsqprq0v0ay1"
|
sha256 = "0xiga98dddi5vg5h1m2vws5prk4ri96rx6l359lji62aq51h526i"
|
||||||
synopsis = "directory-utils"
|
synopsis = "directory-utils"
|
||||||
version = "2.2.6"
|
version = "2.3.0"
|
||||||
|
|
||||||
[disjoint-set]
|
[disjoint-set]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
|
@ -1078,11 +1078,11 @@ synopsis = "Chicken bindings to genann - a simple neural network library in ANSI
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
|
||||||
[generalized-arrays]
|
[generalized-arrays]
|
||||||
dependencies = ["check-errors", "matchable", "srfi-133", "typed-records"]
|
dependencies = ["r7rs", "srfi-48", "srfi-128", "srfi-133", "srfi-160", "check-errors", "transducers"]
|
||||||
license = "bsd3"
|
license = "bsd-3"
|
||||||
sha256 = "0d9n1njd1mrcpqz8xim0m5x0yz94b8xyvwzyvsfq4l7q3km44v3k"
|
sha256 = "1ypga6lanhqsm8lpgk6s1nj4q024xb9kl9ar58cwj53h1irn7942"
|
||||||
synopsis = "An implementation providing generalized arrays and storage classes for CHICKEN Scheme."
|
synopsis = "Provides generalized arrays, intervals, and storage classes for CHICKEN Scheme."
|
||||||
version = "0.0.7"
|
version = "2.0.0"
|
||||||
|
|
||||||
[generics]
|
[generics]
|
||||||
dependencies = ["simple-cells"]
|
dependencies = ["simple-cells"]
|
||||||
|
@ -1108,9 +1108,9 @@ version = "1.21"
|
||||||
[getopt-utils]
|
[getopt-utils]
|
||||||
dependencies = ["utf8", "srfi-1", "getopt-long"]
|
dependencies = ["utf8", "srfi-1", "getopt-long"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "0i17fj29zbbm05x68h7fy524ypk8vbr62gq6jkrwf18371l0l767"
|
sha256 = "1992zcps7gghhc9l7sfkglmf2rqgwvw6jz39k7q9mbs690chq1l1"
|
||||||
synopsis = "Utilities for getopt-long"
|
synopsis = "Utilities for getopt-long"
|
||||||
version = "1.1.1"
|
version = "1.2.0"
|
||||||
|
|
||||||
[git]
|
[git]
|
||||||
dependencies = ["srfi-69", "foreigners", "module-declarations", "srfi-1"]
|
dependencies = ["srfi-69", "foreigners", "module-declarations", "srfi-1"]
|
||||||
|
@ -1409,9 +1409,9 @@ version = "0.4"
|
||||||
[ipfs]
|
[ipfs]
|
||||||
dependencies = ["http-client", "intarweb", "medea", "srfi-1", "srfi-13", "srfi-189", "srfi-197", "uri-common"]
|
dependencies = ["http-client", "intarweb", "medea", "srfi-1", "srfi-13", "srfi-189", "srfi-197", "uri-common"]
|
||||||
license = "unlicense"
|
license = "unlicense"
|
||||||
sha256 = "1mw6z3piddy9xz494kv0243jhhirlb1dp15dph2p1ks4bhipbr4m"
|
sha256 = "1ghsqdnw73xz9pbl6d7j38qgs066wsy1y6q9l0ardbqkmkibwyr8"
|
||||||
synopsis = "IPFS HTTP API for Scheme"
|
synopsis = "IPFS HTTP API for Scheme"
|
||||||
version = "0.0.13"
|
version = "0.0.15"
|
||||||
|
|
||||||
[irc]
|
[irc]
|
||||||
dependencies = ["matchable", "regex", "srfi-1"]
|
dependencies = ["matchable", "regex", "srfi-1"]
|
||||||
|
@ -1542,9 +1542,9 @@ version = "1.2"
|
||||||
[levenshtein]
|
[levenshtein]
|
||||||
dependencies = ["srfi-1", "srfi-13", "srfi-63", "srfi-69", "vector-lib", "utf8", "miscmacros", "record-variants", "check-errors"]
|
dependencies = ["srfi-1", "srfi-13", "srfi-63", "srfi-69", "vector-lib", "utf8", "miscmacros", "record-variants", "check-errors"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "07jwz006c6yhibg7d9nb35rif04810820pss5mg7c7mbn2nzmq1q"
|
sha256 = "1q09kml6igd010j630m52rg7vayfsab176k3vjcsjn7ccf3i7a31"
|
||||||
synopsis = "Levenshtein edit distance"
|
synopsis = "Levenshtein edit distance"
|
||||||
version = "2.4.0"
|
version = "2.4.1"
|
||||||
|
|
||||||
[lexgen]
|
[lexgen]
|
||||||
dependencies = ["srfi-1", "utf8", "srfi-127"]
|
dependencies = ["srfi-1", "utf8", "srfi-127"]
|
||||||
|
@ -1703,9 +1703,16 @@ version = "2.8"
|
||||||
[matchable]
|
[matchable]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
license = "public-domain"
|
license = "public-domain"
|
||||||
sha256 = "0bizkac4a926lbk0v2m05ysq359mzhfsqh973m72jc4gcj4azr5p"
|
sha256 = "1c7c61wivhn8qrj5rfivr2f0ffjgl4ccd6chk9p705rynjiv7pw0"
|
||||||
synopsis = "Hygienic MATCH replacement"
|
synopsis = "Hygienic MATCH replacement"
|
||||||
version = "1.1"
|
version = "1.2"
|
||||||
|
|
||||||
|
[math-utils]
|
||||||
|
dependencies = []
|
||||||
|
license = "public-domain"
|
||||||
|
sha256 = "1jcr67q4pq7i34lkhbqml18rkv6w61wsqclp9k1xgvg6p2b0aaxj"
|
||||||
|
synopsis = "Miscellaneous math utilities"
|
||||||
|
version = "1.0.6"
|
||||||
|
|
||||||
[math]
|
[math]
|
||||||
dependencies = ["srfi-1", "r6rs-bytevectors", "miscmacros", "srfi-133", "srfi-42"]
|
dependencies = ["srfi-1", "r6rs-bytevectors", "miscmacros", "srfi-133", "srfi-42"]
|
||||||
|
@ -1717,9 +1724,9 @@ version = "0.3.4"
|
||||||
[mathh]
|
[mathh]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
license = "public-domain"
|
license = "public-domain"
|
||||||
sha256 = "1zdm58a950vslyjkw4w04c70vhjwf5bdxw79mp3cq65ik474gi8d"
|
sha256 = "1mf9aqjwp068a93fmkm29f5mawc15nizm8wwvfra1af7y4f434al"
|
||||||
synopsis = "ISO C math functions, miscellaneous math utilities, and constants"
|
synopsis = "ISO C math functions and constants"
|
||||||
version = "4.6.4"
|
version = "4.7.0"
|
||||||
|
|
||||||
[matrico]
|
[matrico]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
|
@ -1780,9 +1787,9 @@ version = "4.3.8"
|
||||||
[message-digest-type]
|
[message-digest-type]
|
||||||
dependencies = ["blob-utils", "string-utils", "message-digest-primitive", "check-errors"]
|
dependencies = ["blob-utils", "string-utils", "message-digest-primitive", "check-errors"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "0njvcflhafs5pqvhnm31alp66v1szg2y08fdlwnwq2bzzpaq83id"
|
sha256 = "15cp3km0lv4s28yq0ynabqmd902325692xyq2hmsv0n68j5jckdz"
|
||||||
synopsis = "Message Digest Type"
|
synopsis = "Message Digest Type"
|
||||||
version = "4.3.5"
|
version = "4.3.6"
|
||||||
|
|
||||||
[message-digest-utils]
|
[message-digest-utils]
|
||||||
dependencies = ["blob-utils", "string-utils", "memory-mapped-files", "message-digest-primitive", "message-digest-type", "check-errors"]
|
dependencies = ["blob-utils", "string-utils", "memory-mapped-files", "message-digest-primitive", "message-digest-type", "check-errors"]
|
||||||
|
@ -1878,16 +1885,16 @@ version = "4.0.1"
|
||||||
[moremacros]
|
[moremacros]
|
||||||
dependencies = ["srfi-69", "miscmacros", "check-errors"]
|
dependencies = ["srfi-69", "miscmacros", "check-errors"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "09kc4wmhwkdhspk8g0i357qdq9mp1xcalgnqi8z9yasfy2k6gk1h"
|
sha256 = "0xwrsak9r77gyq85jhqj1hwjpmv897d8mgzqhw1q7br2clry44sk"
|
||||||
synopsis = "More miscellaneous macros"
|
synopsis = "More miscellaneous macros"
|
||||||
version = "2.5.0"
|
version = "2.5.3"
|
||||||
|
|
||||||
[mosquitto]
|
[mosquitto]
|
||||||
dependencies = ["srfi-1"]
|
dependencies = ["srfi-1"]
|
||||||
license = "mit"
|
license = "mit"
|
||||||
sha256 = "0v03hljm71hl6xr1pffzcpk2izil9w2sp9k68a7iirvpcvqg9iph"
|
sha256 = "1pdhks3wii43l5wbmqich93zk6vy0b62h8qhv1k2wd8llv33gx6r"
|
||||||
synopsis = "Bindings to mosquitto MQTT client library"
|
synopsis = "Bindings to mosquitto MQTT client library"
|
||||||
version = "0.1.3"
|
version = "0.1.4"
|
||||||
|
|
||||||
[mpd-client]
|
[mpd-client]
|
||||||
dependencies = ["regex", "srfi-1"]
|
dependencies = ["regex", "srfi-1"]
|
||||||
|
@ -1969,9 +1976,9 @@ version = "5.0.8"
|
||||||
[number-limits]
|
[number-limits]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "02nz5sicimp6bmka9lcbafpf7v8xxp3sml47s85wccmr0rky575q"
|
sha256 = "134958zarw74yrxn97sixmm987b047p7izppc0cxx9rlviq145hd"
|
||||||
synopsis = "Limit constants for numbers"
|
synopsis = "Limit constants for numbers"
|
||||||
version = "3.0.3"
|
version = "3.0.8"
|
||||||
|
|
||||||
[oauth]
|
[oauth]
|
||||||
dependencies = ["srfi-1", "srfi-13", "uri-common", "intarweb", "http-client", "hmac", "sha1", "base64"]
|
dependencies = ["srfi-1", "srfi-13", "uri-common", "intarweb", "http-client", "hmac", "sha1", "base64"]
|
||||||
|
@ -2148,6 +2155,13 @@ sha256 = "06sqn5gz5n2zfdk5z2c20mz4r6w9mslxvlanvmq1wdzr5qnvkh9s"
|
||||||
synopsis = "Bindings for PostgreSQL's C-api"
|
synopsis = "Bindings for PostgreSQL's C-api"
|
||||||
version = "4.1.4"
|
version = "4.1.4"
|
||||||
|
|
||||||
|
[prefixes]
|
||||||
|
dependencies = ["tree-walkers"]
|
||||||
|
license = "bsd"
|
||||||
|
sha256 = "09xy34vz2w9ngi9z2yahv3fw5xiiy4xpdmf33zfvj46k7w5dahpn"
|
||||||
|
synopsis = "prefixing in er-macro-transformers made easy"
|
||||||
|
version = "1.0"
|
||||||
|
|
||||||
[premodules]
|
[premodules]
|
||||||
dependencies = ["simple-tests"]
|
dependencies = ["simple-tests"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
|
@ -2200,9 +2214,9 @@ version = "3.0"
|
||||||
[pstk]
|
[pstk]
|
||||||
dependencies = ["srfi-1", "srfi-13"]
|
dependencies = ["srfi-1", "srfi-13"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "11z0ssdrpyal1px6x5qwxyabxs4y2q7glbz7mnwq0i01imwv1c2v"
|
sha256 = "075w2kaljy08cx8z78pi3741is1fi63bfsfdy229gkfrbkzl8vpz"
|
||||||
synopsis = "PS/Tk: Portable Scheme interface to Tk"
|
synopsis = "PS/Tk: Portable Scheme interface to Tk"
|
||||||
version = "1.4.0"
|
version = "1.4.1"
|
||||||
|
|
||||||
[pthreads]
|
[pthreads]
|
||||||
dependencies = ["srfi-18"]
|
dependencies = ["srfi-18"]
|
||||||
|
@ -2319,9 +2333,9 @@ version = "1.4"
|
||||||
[redis]
|
[redis]
|
||||||
dependencies = ["r7rs", "srfi-34", "srfi-35", "srfi-69", "srfi-99", "srfi-113", "srfi-128", "srfi-133", "srfi-152", "srfi-158"]
|
dependencies = ["r7rs", "srfi-34", "srfi-35", "srfi-69", "srfi-99", "srfi-113", "srfi-128", "srfi-133", "srfi-152", "srfi-158"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "1z8pr6dgz652h14zn1vkdm3av48lifk4vf7jzacrq0f0k14i5bc2"
|
sha256 = "1p3q9216y0ddnghcy83h3xm0vi2qg17kv1v1xff2sfz4mzliy6qf"
|
||||||
synopsis = "A Redis client library for Chicken Scheme"
|
synopsis = "A Redis client library for Chicken Scheme"
|
||||||
version = "0.5"
|
version = "0.6"
|
||||||
|
|
||||||
[regex-case]
|
[regex-case]
|
||||||
dependencies = ["regex"]
|
dependencies = ["regex"]
|
||||||
|
@ -2466,9 +2480,9 @@ version = "0.3.2"
|
||||||
[scheme-indent]
|
[scheme-indent]
|
||||||
dependencies = ["srfi-1"]
|
dependencies = ["srfi-1"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "0brwmphr724shd32dcixsn9wz9zqrhg27g7rjbiz96885maj6nwf"
|
sha256 = "1jjgi0wwfk3bx8ayc09y09pxg9awdx5hm397gqhg6gvjbn3sm3in"
|
||||||
synopsis = "A Scheme code indenter"
|
synopsis = "A Scheme code indenter"
|
||||||
version = "0.5"
|
version = "0.6"
|
||||||
|
|
||||||
[scheme2c-compatibility]
|
[scheme2c-compatibility]
|
||||||
dependencies = ["srfi-1", "srfi-13", "srfi-14", "traversal", "foreigners", "xlib"]
|
dependencies = ["srfi-1", "srfi-13", "srfi-14", "traversal", "foreigners", "xlib"]
|
||||||
|
@ -2536,9 +2550,9 @@ version = "0.4.1"
|
||||||
[semantic-version]
|
[semantic-version]
|
||||||
dependencies = ["utf8", "srfi-1", "vector-lib", "srfi-69", "srfi-128", "record-variants"]
|
dependencies = ["utf8", "srfi-1", "vector-lib", "srfi-69", "srfi-128", "record-variants"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "02y7d0lpkrn77ypk2dx8nm70lpbszz5w2cy177s4gvy88dx5qgmq"
|
sha256 = "10wczj83664q09zxgcnf1zr96xds6dmfvn0gvw8cq4i269ppcv0j"
|
||||||
synopsis = "Semantic Version Utilities"
|
synopsis = "Semantic Version Utilities"
|
||||||
version = "0.0.13"
|
version = "0.0.16"
|
||||||
|
|
||||||
[sendfile]
|
[sendfile]
|
||||||
dependencies = ["memory-mapped-files"]
|
dependencies = ["memory-mapped-files"]
|
||||||
|
@ -2610,6 +2624,13 @@ sha256 = "0ck8mgs2alvsial3ay9638ia2kl4zs63x6rc480p24sxhil6klg8"
|
||||||
synopsis = "An efficient and powerful lexer generator"
|
synopsis = "An efficient and powerful lexer generator"
|
||||||
version = "1.0"
|
version = "1.0"
|
||||||
|
|
||||||
|
[simple-binds]
|
||||||
|
dependencies = []
|
||||||
|
license = "bsd"
|
||||||
|
sha256 = "0b5frz0zq5b87l4l5hhca318m0mjllw9zjacbyw0l2w39l48f77z"
|
||||||
|
synopsis = "Some simple destructuring bind macros"
|
||||||
|
version = "1.1"
|
||||||
|
|
||||||
[simple-cells]
|
[simple-cells]
|
||||||
dependencies = ["checks"]
|
dependencies = ["checks"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
|
@ -3124,9 +3145,9 @@ version = "1.0.3"
|
||||||
[srfi-19]
|
[srfi-19]
|
||||||
dependencies = ["srfi-1", "utf8", "srfi-18", "srfi-29", "miscmacros", "locale", "record-variants", "check-errors"]
|
dependencies = ["srfi-1", "utf8", "srfi-18", "srfi-29", "miscmacros", "locale", "record-variants", "check-errors"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "1m2pyp5mv09inli9jq7fm9q55nhg2xwp50f7s6cgndpp2w2kb38v"
|
sha256 = "0vqwg2sknm7fm677npbjdvhcfa2s6l41sgvhkk11m10b8jgnr1b3"
|
||||||
synopsis = "Time Data Types and Procedures"
|
synopsis = "Time Data Types and Procedures"
|
||||||
version = "4.9.5"
|
version = "4.9.6"
|
||||||
|
|
||||||
[srfi-193]
|
[srfi-193]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
|
@ -3215,9 +3236,9 @@ version = "4.2.3"
|
||||||
[srfi-29]
|
[srfi-29]
|
||||||
dependencies = ["srfi-1", "srfi-69", "utf8", "locale", "posix-utils", "condition-utils", "check-errors"]
|
dependencies = ["srfi-1", "srfi-69", "utf8", "locale", "posix-utils", "condition-utils", "check-errors"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "1pz31xrfja4y43ci5n8gplhdnasbyxx0kwlmcjzycs1js4b66ld1"
|
sha256 = "1jyjwkz6jz9da3n32cgja2dvwrsl9lckknxjb1ial0359ibqnc3h"
|
||||||
synopsis = "Localization"
|
synopsis = "Localization"
|
||||||
version = "3.0.8"
|
version = "3.0.11"
|
||||||
|
|
||||||
[srfi-34]
|
[srfi-34]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
|
@ -3467,9 +3488,9 @@ version = "1.1"
|
||||||
[string-utils]
|
[string-utils]
|
||||||
dependencies = ["utf8", "srfi-1", "srfi-13", "srfi-69", "miscmacros", "check-errors"]
|
dependencies = ["utf8", "srfi-1", "srfi-13", "srfi-69", "miscmacros", "check-errors"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "0f9m63flywcx7b6rhb7d562v26xilnxl0zcd8c6c4rfjsr0bdgjr"
|
sha256 = "1ilzdvbmmm7jnq4m3nrbxhj9x2b4d772748m9fjxzl9bqqik1a54"
|
||||||
synopsis = "String Utilities"
|
synopsis = "String Utilities"
|
||||||
version = "2.7.3"
|
version = "2.7.4"
|
||||||
|
|
||||||
[strse]
|
[strse]
|
||||||
dependencies = ["matchable", "srfi-13", "miscmacros"]
|
dependencies = ["matchable", "srfi-13", "miscmacros"]
|
||||||
|
@ -3551,9 +3572,9 @@ version = "1.0"
|
||||||
[symbol-utils]
|
[symbol-utils]
|
||||||
dependencies = ["utf8"]
|
dependencies = ["utf8"]
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "0mxcdlf1i0xn70h9l5grgx1yvkbgq9rcvil02gdp9by5qqcqmklh"
|
sha256 = "1514yvgpknkiwjksnkcshqxz6c7sb5ab182lfwrrha3ch2islq3h"
|
||||||
synopsis = "Symbol Utilities"
|
synopsis = "Symbol Utilities"
|
||||||
version = "2.5.0"
|
version = "2.6.0"
|
||||||
|
|
||||||
[synch]
|
[synch]
|
||||||
dependencies = ["srfi-18", "check-errors"]
|
dependencies = ["srfi-18", "check-errors"]
|
||||||
|
@ -3691,9 +3712,9 @@ version = "0.1.0"
|
||||||
[toml]
|
[toml]
|
||||||
dependencies = ["r7rs", "rfc3339", "coops"]
|
dependencies = ["r7rs", "rfc3339", "coops"]
|
||||||
license = "mit"
|
license = "mit"
|
||||||
sha256 = "10isk4rxcjabm16g59nxafm2vx0vidjq1alaxbih3gw9w2kc11l4"
|
sha256 = "0235ihy5y34m5nw1n75y84hs9icjls77w99c000ysm6ahlhqmq0x"
|
||||||
synopsis = "A Chicken binding to read TOML configuration files"
|
synopsis = "A Chicken binding to read TOML configuration files"
|
||||||
version = "0.7"
|
version = "0.8"
|
||||||
|
|
||||||
[topham]
|
[topham]
|
||||||
dependencies = ["http-client", "intarweb", "medea", "openssl", "optimism", "simple-exceptions", "srfi-1", "module-declarations"]
|
dependencies = ["http-client", "intarweb", "medea", "openssl", "optimism", "simple-exceptions", "srfi-1", "module-declarations"]
|
||||||
|
@ -3733,9 +3754,9 @@ version = "1.7"
|
||||||
[tree-walkers]
|
[tree-walkers]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
license = "bsd"
|
license = "bsd"
|
||||||
sha256 = "1if8njjaac4i23126jlmzw67y7hcr2hs842nwsgyzi2hi780pzvk"
|
sha256 = "0zsgrw8sxg3fc8z42ghjh47jq2ycwsmsgdw3kn7fbhvypz4yrmfy"
|
||||||
synopsis = "replacement of car, cdr and consorts"
|
synopsis = "replacement of car, cdr and consorts and other tree- and\nlist-routines"
|
||||||
version = "1.0"
|
version = "2.0"
|
||||||
|
|
||||||
[tree]
|
[tree]
|
||||||
dependencies = ["srfi-1", "srfi-42", "srfi-69", "srfi-71"]
|
dependencies = ["srfi-1", "srfi-42", "srfi-69", "srfi-71"]
|
||||||
|
@ -3978,9 +3999,9 @@ version = "0.2"
|
||||||
[zshbrev]
|
[zshbrev]
|
||||||
dependencies = ["brev"]
|
dependencies = ["brev"]
|
||||||
license = "lgplv3"
|
license = "lgplv3"
|
||||||
sha256 = "1zmb84z22p8gv1bk05x7daqpl5h1z71hpivkyc1wbjfxyymmyaxj"
|
sha256 = "12angz4d31vir1ss80d2ghbh0bdqnbijn44j8hrnb31ikm7xg35z"
|
||||||
synopsis = "Access Chicken functions from any shell and access zsh functions from Chicken"
|
synopsis = "Access Chicken functions from any shell and access zsh functions from Chicken"
|
||||||
version = "1.21"
|
version = "1.22"
|
||||||
|
|
||||||
[zstd]
|
[zstd]
|
||||||
dependencies = []
|
dependencies = []
|
||||||
|
|
19
pkgs/development/coq-modules/coq-hammer/default.nix
Normal file
19
pkgs/development/coq-modules/coq-hammer/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{ lib, mkCoqDerivation, coq, coq-hammer-tactics, version ? null }:
|
||||||
|
|
||||||
|
mkCoqDerivation {
|
||||||
|
inherit version;
|
||||||
|
pname = "coq-hammer";
|
||||||
|
inherit (coq-hammer-tactics) owner repo defaultVersion release releaseRev;
|
||||||
|
|
||||||
|
buildFlags = [ "plugin" ];
|
||||||
|
installTargets = [ "install-plugin" ];
|
||||||
|
extraInstallFlags = [ "BINDIR=$(out)/bin/" ];
|
||||||
|
|
||||||
|
mlPlugin = true;
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ coq.ocamlPackages.findlib coq-hammer-tactics ];
|
||||||
|
|
||||||
|
meta = coq-hammer-tactics.meta // {
|
||||||
|
description = "General-purpose automated reasoning hammer tool for Coq";
|
||||||
|
};
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue