Show default outputs (#452)
* Show default outputs Following https://github.com/NixOS/nix/pull/6242, we now have access to default outputs so we can single them out in the frontend. We can also drop `--out-path`, which speeds up import quite a lot and doesn't require increasing swap space or allowing broken/unfree packages anymore. * Use nixUnstable in CI * Bump VERSION
This commit is contained in:
parent
b2e0ce28fc
commit
5798bb000e
2
.github/actions/common-setup/action.yml
vendored
2
.github/actions/common-setup/action.yml
vendored
|
@ -6,7 +6,7 @@ inputs:
|
||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Installing Nix
|
- name: Installing Nix
|
||||||
uses: cachix/install-nix-action@v16
|
uses: cachix/install-nix-action@v16
|
||||||
with:
|
with:
|
||||||
|
|
10
.github/workflows/import-to-elasticsearch.yml
vendored
10
.github/workflows/import-to-elasticsearch.yml
vendored
|
@ -45,11 +45,6 @@ jobs:
|
||||||
FI_ES_URL: ${{ secrets.ELASTICSEARCH_URL }}
|
FI_ES_URL: ${{ secrets.ELASTICSEARCH_URL }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Increase swap space
|
|
||||||
uses: pierotofy/set-swap-space@v1.0
|
|
||||||
with:
|
|
||||||
swap-size-gb: 10
|
|
||||||
|
|
||||||
- name: Checking out the repository
|
- name: Checking out the repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
@ -58,6 +53,11 @@ jobs:
|
||||||
with:
|
with:
|
||||||
CACHIX_SIGNING_KEY: ${{ secrets.CACHIX_SIGNING_KEY }}
|
CACHIX_SIGNING_KEY: ${{ secrets.CACHIX_SIGNING_KEY }}
|
||||||
|
|
||||||
|
- name: Installing Nix unstable
|
||||||
|
run: |
|
||||||
|
nix-env -f '<nixpkgs>' -iA nixVersions.unstable # for https://github.com/NixOS/nix/pull/6242
|
||||||
|
echo "$HOME/.nix-profile/bin" >> "$GITHUB_PATH"
|
||||||
|
|
||||||
- name: Import ${{ matrix.channel }} channel
|
- name: Import ${{ matrix.channel }} channel
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
[env]
|
[env]
|
||||||
MIN_NIX_VERSION = "2.7.0" # we need PRs #5878 and #5922 for package outputs
|
MIN_NIX_VERSION = "2.4.0" # flakes
|
||||||
|
|
|
@ -26,6 +26,7 @@ let
|
||||||
version = drv.version or "";
|
version = drv.version or "";
|
||||||
outputs = drv.outputs;
|
outputs = drv.outputs;
|
||||||
# paths = builtins.listToAttrs ( map (output: {name = output; value = drv.${output};}) drv.outputs );
|
# paths = builtins.listToAttrs ( map (output: {name = output; value = drv.${output};}) drv.outputs );
|
||||||
|
default_output = drv.outputName;
|
||||||
}
|
}
|
||||||
// lib.optionalAttrs (drv ? meta && drv.meta ? description) { inherit (drv.meta) description; }
|
// lib.optionalAttrs (drv ? meta && drv.meta ? description) { inherit (drv.meta) description; }
|
||||||
// lib.optionalAttrs (drv ? meta && drv.meta ? license) { inherit (drv.meta) license; }
|
// lib.optionalAttrs (drv ? meta && drv.meta ? license) { inherit (drv.meta) license; }
|
||||||
|
|
|
@ -22,18 +22,9 @@ pub fn get_nixpkgs_info<T: AsRef<str> + Display>(nixpkgs_channel: T) -> Result<V
|
||||||
"import <nixpkgs/pkgs/top-level/packages-config.nix>",
|
"import <nixpkgs/pkgs/top-level/packages-config.nix>",
|
||||||
"-qa",
|
"-qa",
|
||||||
"--meta",
|
"--meta",
|
||||||
"--out-path",
|
|
||||||
"--json",
|
"--json",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Nix might fail to evaluate some disallowed packages
|
|
||||||
let mut env = HashMap::new();
|
|
||||||
env.insert("NIXPKGS_ALLOW_BROKEN".into(), "1".into());
|
|
||||||
env.insert("NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM".into(), "1".into());
|
|
||||||
env.insert("NIXPKGS_ALLOW_UNFREE".into(), "1".into());
|
|
||||||
env.insert("NIXPKGS_ALLOW_INSECURE".into(), "1".into());
|
|
||||||
command.env = env;
|
|
||||||
|
|
||||||
command.enable_capture();
|
command.enable_capture();
|
||||||
command.log_to = LogTo::Log;
|
command.log_to = LogTo::Log;
|
||||||
command.log_output_on_error = true;
|
command.log_output_on_error = true;
|
||||||
|
|
|
@ -71,6 +71,7 @@ pub enum Derivation {
|
||||||
package_pversion: String,
|
package_pversion: String,
|
||||||
package_platforms: Vec<System>,
|
package_platforms: Vec<System>,
|
||||||
package_outputs: Vec<String>,
|
package_outputs: Vec<String>,
|
||||||
|
package_default_output: Option<String>,
|
||||||
package_license: Vec<License>,
|
package_license: Vec<License>,
|
||||||
package_license_set: Vec<String>,
|
package_license_set: Vec<String>,
|
||||||
package_maintainers: Vec<Maintainer>,
|
package_maintainers: Vec<Maintainer>,
|
||||||
|
@ -125,6 +126,7 @@ impl From<(import::FlakeEntry, super::Flake)> for Derivation {
|
||||||
version,
|
version,
|
||||||
platforms,
|
platforms,
|
||||||
outputs,
|
outputs,
|
||||||
|
default_output,
|
||||||
description,
|
description,
|
||||||
license,
|
license,
|
||||||
} => {
|
} => {
|
||||||
|
@ -159,6 +161,7 @@ impl From<(import::FlakeEntry, super::Flake)> for Derivation {
|
||||||
package_pversion: version,
|
package_pversion: version,
|
||||||
package_platforms: platforms,
|
package_platforms: platforms,
|
||||||
package_outputs: outputs,
|
package_outputs: outputs,
|
||||||
|
package_default_output: Some(default_output),
|
||||||
package_license,
|
package_license,
|
||||||
package_license_set,
|
package_license_set,
|
||||||
package_description: description.clone(),
|
package_description: description.clone(),
|
||||||
|
@ -255,6 +258,7 @@ impl From<import::NixpkgsEntry> for Derivation {
|
||||||
.map(Flatten::flatten)
|
.map(Flatten::flatten)
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
package_outputs: package.outputs.into_keys().collect(),
|
package_outputs: package.outputs.into_keys().collect(),
|
||||||
|
package_default_output: package.default_output,
|
||||||
package_license,
|
package_license,
|
||||||
package_license_set,
|
package_license_set,
|
||||||
package_maintainers,
|
package_maintainers,
|
||||||
|
|
|
@ -32,6 +32,7 @@ pub enum FlakeEntry {
|
||||||
version: String,
|
version: String,
|
||||||
platforms: Vec<System>,
|
platforms: Vec<System>,
|
||||||
outputs: Vec<String>,
|
outputs: Vec<String>,
|
||||||
|
default_output: String,
|
||||||
description: Option<String>,
|
description: Option<String>,
|
||||||
#[serde(deserialize_with = "string_or_struct", default)]
|
#[serde(deserialize_with = "string_or_struct", default)]
|
||||||
license: License,
|
license: License,
|
||||||
|
@ -125,7 +126,9 @@ pub struct Package {
|
||||||
pub pname: String,
|
pub pname: String,
|
||||||
pub version: String,
|
pub version: String,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub outputs: HashMap<String, String>,
|
pub outputs: HashMap<String, Option<String>>,
|
||||||
|
#[serde(rename = "outputName", default)]
|
||||||
|
pub default_output: Option<String>,
|
||||||
pub system: String,
|
pub system: String,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub meta: Meta,
|
pub meta: Meta,
|
||||||
|
|
|
@ -117,6 +117,9 @@ lazy_static! {
|
||||||
"package_outputs": {
|
"package_outputs": {
|
||||||
"type": "keyword"
|
"type": "keyword"
|
||||||
},
|
},
|
||||||
|
"package_default_output": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
"package_description": {
|
"package_description": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"analyzer": "english",
|
"analyzer": "english",
|
||||||
|
|
|
@ -70,6 +70,7 @@ type alias ResultItemSource =
|
||||||
, pname : String
|
, pname : String
|
||||||
, pversion : String
|
, pversion : String
|
||||||
, outputs : List String
|
, outputs : List String
|
||||||
|
, default_output : Maybe String
|
||||||
, description : Maybe String
|
, description : Maybe String
|
||||||
, longDescription : Maybe String
|
, longDescription : Maybe String
|
||||||
, licenses : List ResultPackageLicense
|
, licenses : List ResultPackageLicense
|
||||||
|
@ -348,7 +349,12 @@ viewResultItem channel showInstallDetails show item =
|
||||||
++ optionals (List.length item.source.outputs > 1)
|
++ optionals (List.length item.source.outputs > 1)
|
||||||
[ li []
|
[ li []
|
||||||
(text "Outputs: "
|
(text "Outputs: "
|
||||||
:: (item.source.outputs
|
:: (item.source.default_output
|
||||||
|
|> Maybe.map (\d -> [ strong [] [ code [] [ text d ] ], text " " ])
|
||||||
|
|> Maybe.withDefault []
|
||||||
|
)
|
||||||
|
++ (item.source.outputs
|
||||||
|
|> List.filter (\o -> Just o /= item.source.default_output)
|
||||||
|> List.sort
|
|> List.sort
|
||||||
|> List.map (\o -> code [] [ text o ])
|
|> List.map (\o -> code [] [ text o ])
|
||||||
|> List.intersperse (text " ")
|
|> List.intersperse (text " ")
|
||||||
|
@ -806,6 +812,7 @@ decodeResultItemSource =
|
||||||
|> Json.Decode.Pipeline.required "package_pname" Json.Decode.string
|
|> Json.Decode.Pipeline.required "package_pname" Json.Decode.string
|
||||||
|> Json.Decode.Pipeline.required "package_pversion" Json.Decode.string
|
|> Json.Decode.Pipeline.required "package_pversion" Json.Decode.string
|
||||||
|> Json.Decode.Pipeline.required "package_outputs" (Json.Decode.list Json.Decode.string)
|
|> Json.Decode.Pipeline.required "package_outputs" (Json.Decode.list Json.Decode.string)
|
||||||
|
|> Json.Decode.Pipeline.required "package_default_output" (Json.Decode.nullable Json.Decode.string)
|
||||||
|> Json.Decode.Pipeline.required "package_description" (Json.Decode.nullable Json.Decode.string)
|
|> Json.Decode.Pipeline.required "package_description" (Json.Decode.nullable Json.Decode.string)
|
||||||
|> Json.Decode.Pipeline.required "package_longDescription" (Json.Decode.nullable Json.Decode.string)
|
|> Json.Decode.Pipeline.required "package_longDescription" (Json.Decode.nullable Json.Decode.string)
|
||||||
|> Json.Decode.Pipeline.required "package_license" (Json.Decode.list decodeResultPackageLicense)
|
|> Json.Decode.Pipeline.required "package_license" (Json.Decode.list decodeResultPackageLicense)
|
||||||
|
|
Loading…
Reference in a new issue