Compare commits
No commits in common. "5bddee458869053b44fc46137c98d780de4dde26" and "b188a5239c96c7dca1c55c540906358779fc9d53" have entirely different histories.
5bddee4588
...
b188a5239c
4 changed files with 66 additions and 221 deletions
48
inputs.nix
48
inputs.nix
|
@ -10,16 +10,14 @@ let self = {
|
||||||
url = "https://github.com/nix-community/nixos-vscode-server/archive/${lock.nixos-vscode-server.revision}.tar.gz";
|
url = "https://github.com/nix-community/nixos-vscode-server/archive/${lock.nixos-vscode-server.revision}.tar.gz";
|
||||||
updateScript = pkgs.den-http-get-updater {
|
updateScript = pkgs.den-http-get-updater {
|
||||||
fileLocation = lockFile;
|
fileLocation = lockFile;
|
||||||
|
previousHash = lock.nixos-vscode-server.sha256;
|
||||||
previousVersion = lock.nixos-vscode-server.revision;
|
previousVersion = lock.nixos-vscode-server.revision;
|
||||||
versionUrl = "https://api.github.com/repos/nix-community/nixos-vscode-server/commits";
|
versionUrl = "https://api.github.com/repos/nix-community/nixos-vscode-server/commits";
|
||||||
contentParser = "jq -rc '.[0].sha' <<< \"$newVersion\"";
|
contentParser = "jq -rc '.[0].sha' <<< \"$newVersion\"";
|
||||||
prefetchList = [{
|
prefetchUrlLocation = {
|
||||||
previousHash = lock.nixos-vscode-server.sha256;
|
file = ./inputs.nix;
|
||||||
prefetchUrlLocation = {
|
attrpath = "nixos-vscode-server.url";
|
||||||
file = ./inputs.nix;
|
};
|
||||||
attrpath = "nixos-vscode-server.url";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
};
|
};
|
||||||
outPath = builtins.fetchTarball {
|
outPath = builtins.fetchTarball {
|
||||||
inherit url;
|
inherit url;
|
||||||
|
@ -31,15 +29,13 @@ let self = {
|
||||||
url = "https://github.com/NixOS/nixpkgs/archive/${lock.nixpkgs.revision}.tar.gz";
|
url = "https://github.com/NixOS/nixpkgs/archive/${lock.nixpkgs.revision}.tar.gz";
|
||||||
updateScript = pkgs.den-http-get-updater {
|
updateScript = pkgs.den-http-get-updater {
|
||||||
fileLocation = lockFile;
|
fileLocation = lockFile;
|
||||||
|
previousHash = lock.nixpkgs.sha256;
|
||||||
previousVersion = lock.nixpkgs.revision;
|
previousVersion = lock.nixpkgs.revision;
|
||||||
versionUrl = "https://channels.nixos.org/nixos-24.11/git-revision";
|
versionUrl = "https://channels.nixos.org/nixos-24.11/git-revision";
|
||||||
prefetchList = [{
|
prefetchUrlLocation = {
|
||||||
previousHash = lock.nixpkgs.sha256;
|
file = ./inputs.nix;
|
||||||
prefetchUrlLocation = {
|
attrpath = "nixpkgs.url";
|
||||||
file = ./inputs.nix;
|
};
|
||||||
attrpath = "nixpkgs.url";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
};
|
};
|
||||||
outPath = builtins.fetchTarball {
|
outPath = builtins.fetchTarball {
|
||||||
inherit url;
|
inherit url;
|
||||||
|
@ -51,15 +47,13 @@ let self = {
|
||||||
url = "https://github.com/NixOS/nixpkgs/archive/${lock.nixpkgs-unstable.revision}.tar.gz";
|
url = "https://github.com/NixOS/nixpkgs/archive/${lock.nixpkgs-unstable.revision}.tar.gz";
|
||||||
updateScript = pkgs.den-http-get-updater {
|
updateScript = pkgs.den-http-get-updater {
|
||||||
fileLocation = lockFile;
|
fileLocation = lockFile;
|
||||||
|
previousHash = lock.nixpkgs-unstable.sha256;
|
||||||
previousVersion = lock.nixpkgs-unstable.revision;
|
previousVersion = lock.nixpkgs-unstable.revision;
|
||||||
versionUrl = "https://channels.nixos.org/nixos-unstable/git-revision";
|
versionUrl = "https://channels.nixos.org/nixos-unstable/git-revision";
|
||||||
prefetchList = [{
|
prefetchUrlLocation = {
|
||||||
previousHash = lock.nixpkgs-unstable.sha256;
|
file = ./inputs.nix;
|
||||||
prefetchUrlLocation = {
|
attrpath = "nixpkgs-unstable.url";
|
||||||
file = ./inputs.nix;
|
};
|
||||||
attrpath = "nixpkgs-unstable.url";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
};
|
};
|
||||||
outPath = builtins.fetchTarball {
|
outPath = builtins.fetchTarball {
|
||||||
inherit url;
|
inherit url;
|
||||||
|
@ -71,16 +65,14 @@ let self = {
|
||||||
url = "https://github.com/lilyinstarlight/nixos-cosmic/archive/${lock.cosmic-modules.revision}.tar.gz";
|
url = "https://github.com/lilyinstarlight/nixos-cosmic/archive/${lock.cosmic-modules.revision}.tar.gz";
|
||||||
updateScript = pkgs.den-http-get-updater {
|
updateScript = pkgs.den-http-get-updater {
|
||||||
fileLocation = lockFile;
|
fileLocation = lockFile;
|
||||||
|
previousHash = lock.cosmic-modules.sha256;
|
||||||
previousVersion = lock.cosmic-modules.revision;
|
previousVersion = lock.cosmic-modules.revision;
|
||||||
versionUrl = "https://api.github.com/repos/lilyinstarlight/nixos-cosmic/commits";
|
versionUrl = "https://api.github.com/repos/lilyinstarlight/nixos-cosmic/commits";
|
||||||
contentParser = "jq -rc '.[0].sha' <<< \"$newVersion\"";
|
contentParser = "jq -rc '.[0].sha' <<< \"$newVersion\"";
|
||||||
prefetchList = [{
|
prefetchUrlLocation = {
|
||||||
previousHash = lock.cosmic-modules.sha256;
|
file = ./inputs.nix;
|
||||||
prefetchUrlLocation = {
|
attrpath = "cosmic-modules.url";
|
||||||
file = ./inputs.nix;
|
};
|
||||||
attrpath = "cosmic-modules.url";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
};
|
};
|
||||||
outPath = builtins.fetchTarball {
|
outPath = builtins.fetchTarball {
|
||||||
inherit url;
|
inherit url;
|
||||||
|
|
|
@ -1,10 +1,4 @@
|
||||||
{
|
{ config, lib, pkgs, ...}:
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
self,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
config = {
|
config = {
|
||||||
|
@ -22,79 +16,14 @@
|
||||||
powerManagement.enable = true;
|
powerManagement.enable = true;
|
||||||
open = false;
|
open = false;
|
||||||
nvidiaSettings = true;
|
nvidiaSettings = true;
|
||||||
package = let
|
package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
|
||||||
mkDriverArgs = {
|
version = "570.133.07";
|
||||||
version = "570.133.07";
|
sha256_64bit = "sha256-LUPmTFgb5e9VTemIixqpADfvbUX1QoTT2dztwI3E3CY=";
|
||||||
sha256_64bit = "sha256-LUPmTFgb5e9VTemIixqpADfvbUX1QoTT2dztwI3E3CY=";
|
sha256_aarch64 = "sha256-yTovUno/1TkakemRlNpNB91U+V04ACTMwPEhDok7jI0=";
|
||||||
sha256_aarch64 = "sha256-yTovUno/1TkakemRlNpNB91U+V04ACTMwPEhDok7jI0=";
|
openSha256 = "sha256-9l8N83Spj0MccA8+8R1uqiXBS0Ag4JrLPjrU3TaXHnM=";
|
||||||
openSha256 = "sha256-9l8N83Spj0MccA8+8R1uqiXBS0Ag4JrLPjrU3TaXHnM=";
|
settingsSha256 = "sha256-XMk+FvTlGpMquM8aE8kgYK2PIEszUZD2+Zmj2OpYrzU=";
|
||||||
settingsSha256 = "sha256-XMk+FvTlGpMquM8aE8kgYK2PIEszUZD2+Zmj2OpYrzU=";
|
persistencedSha256 = "sha256-G1V7JtHQbfnSRfVjz/LE2fYTlh9okpCbE4dfX9oYSg8=";
|
||||||
persistencedSha256 = "sha256-G1V7JtHQbfnSRfVjz/LE2fYTlh9okpCbE4dfX9oYSg8=";
|
};
|
||||||
};
|
|
||||||
in ( config.boot.kernelPackages.nvidiaPackages.mkDriver mkDriverArgs ).overrideAttrs (super: {
|
|
||||||
passthru = super.passthru or {} // {
|
|
||||||
urls = {
|
|
||||||
x86_64 = [
|
|
||||||
"https://download.nvidia.com/XFree86/Linux-x86_64/${mkDriverArgs.version}/NVIDIA-Linux-x86_64-${mkDriverArgs.version}.run"
|
|
||||||
"https://us.download.nvidia.com/XFree86/Linux-x86_64/${mkDriverArgs.version}/NVIDIA-Linux-x86_64-${mkDriverArgs.version}.run"
|
|
||||||
];
|
|
||||||
aarch64 = [
|
|
||||||
"https://us.download.nvidia.com/XFree86/aarch64/${mkDriverArgs.version}/NVIDIA-Linux-aarch64-${mkDriverArgs.version}.run"
|
|
||||||
"https://download.nvidia.com/XFree86/Linux-aarch64/${mkDriverArgs.version}/NVIDIA-Linux-aarch64-${mkDriverArgs.version}.run"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
updateScript = pkgs.den-http-get-updater {
|
|
||||||
fileLocation = ( builtins.unsafeGetAttrPos "any" { any = null; } ).file;
|
|
||||||
previousVersion = mkDriverArgs.version;
|
|
||||||
versionUrl = "https://raw.githubusercontent.com/aaronp24/nvidia-versions/master/nvidia-versions.txt";
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
coreutils
|
|
||||||
gawk
|
|
||||||
gnugrep
|
|
||||||
];
|
|
||||||
contentParser = lib.concatStringsSep " | " [
|
|
||||||
"echo \"$newVersion\""
|
|
||||||
"grep current"
|
|
||||||
"awk '{print $3}'"
|
|
||||||
"sort -V"
|
|
||||||
"tail -n 1"
|
|
||||||
];
|
|
||||||
unpack = false;
|
|
||||||
prefetchList = lib.map (x: {
|
|
||||||
inherit (x) previousHash;
|
|
||||||
unpack = x.unpack or true;
|
|
||||||
prefetchUrlLocation = {
|
|
||||||
file = builtins.toString self + "/outputs.nix";
|
|
||||||
# TODO: don't use already existing NixOS configuration
|
|
||||||
attrpath = "nixosConfigurations.main.config.hardware.nvidia.package.${x.locationAttrpath}";
|
|
||||||
};
|
|
||||||
}) [
|
|
||||||
{
|
|
||||||
previousHash = mkDriverArgs.sha256_64bit;
|
|
||||||
locationAttrpath = "urls.x86_64";
|
|
||||||
unpack = false;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
previousHash = mkDriverArgs.sha256_aarch64;
|
|
||||||
locationAttrpath = "urls.aarch64";
|
|
||||||
unpack = false;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
previousHash = mkDriverArgs.openSha256;
|
|
||||||
locationAttrpath = "open.src.urls";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
previousHash = mkDriverArgs.settingsSha256;
|
|
||||||
locationAttrpath = "settings.src.urls";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
previousHash = mkDriverArgs.persistencedSha256;
|
|
||||||
locationAttrpath = "persistenced.src.urls";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
nixpkgs.config.nvidia.acceptLicense = true;
|
nixpkgs.config.nvidia.acceptLicense = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
lib,
|
lib,
|
||||||
|
|
||||||
curl,
|
curl,
|
||||||
gnused,
|
gawk,
|
||||||
jq,
|
jq,
|
||||||
nix,
|
nix,
|
||||||
writeScript,
|
writeScript,
|
||||||
|
@ -11,111 +11,67 @@
|
||||||
{
|
{
|
||||||
# location of file to modify
|
# location of file to modify
|
||||||
fileLocation,
|
fileLocation,
|
||||||
|
previousHash,
|
||||||
previousVersion,
|
previousVersion,
|
||||||
versionUrl,
|
versionUrl,
|
||||||
|
prefetchUrlLocation ? null,
|
||||||
# {
|
|
||||||
# fileLocation: string?;
|
|
||||||
# previousHash: string;
|
|
||||||
# prefetchUrlLocation: {
|
|
||||||
# file: string;
|
|
||||||
# attrpath: string[]'
|
|
||||||
# };
|
|
||||||
# prefetchHash: string?;
|
|
||||||
# targetHash: string?;
|
|
||||||
# unpack: bool?;
|
|
||||||
# name: string?;
|
|
||||||
# }[]
|
|
||||||
#
|
|
||||||
prefetchList ? [],
|
|
||||||
|
|
||||||
# extra packages to add to the path
|
|
||||||
extraPackages ? [],
|
|
||||||
|
|
||||||
# change newVersion variable in it, if the contents of the page
|
# change newVersion variable in it, if the contents of the page
|
||||||
# is not plaintext version
|
# is not plaintext version
|
||||||
# (json for example)
|
# (json for example)
|
||||||
contentParser ? "echo \"$newVersion\"",
|
contentParser ? "echo \"$newVersion\"",
|
||||||
|
|
||||||
unpack ? true,
|
unpack ? true,
|
||||||
hashAlgo ? "sha256",
|
name ? if unpack then "source" else null,
|
||||||
hashFormat ? "sri",
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
assert builtins.isNull prefetchUrlLocation || lib.isAttrs prefetchUrlLocation;
|
||||||
|
assert lib.isAttrs prefetchUrlLocation && (
|
||||||
|
lib.isString prefetchUrlLocation.file or null ||
|
||||||
|
lib.isPath prefetchUrlLocation.file or null
|
||||||
|
);
|
||||||
|
assert lib.isAttrs prefetchUrlLocation && lib.isString prefetchUrlLocation.attrpath or null;
|
||||||
|
|
||||||
let
|
let
|
||||||
realFileLocation = builtins.toString fileLocation;
|
realFileLocation = builtins.toString fileLocation;
|
||||||
|
mark = builtins.hashString "sha256" previousHash;
|
||||||
|
|
||||||
prefetchList' = lib.map (x:
|
mark' = lib.escapeShellArg mark;
|
||||||
assert builtins.isNull x.prefetchUrlLocation || lib.isAttrs x.prefetchUrlLocation;
|
prefetchUrlLocation' = lib.mapAttrs (_: lib.escapeShellArg) prefetchUrlLocation;
|
||||||
assert lib.isAttrs x.prefetchUrlLocation && (
|
realFileLocation' = lib.escapeShellArg realFileLocation;
|
||||||
lib.isString x.prefetchUrlLocation.file or null ||
|
versionUrl' = lib.escapeShellArg versionUrl;
|
||||||
lib.isPath x.prefetchUrlLocation.file or null
|
|
||||||
);
|
|
||||||
assert lib.isAttrs x.prefetchUrlLocation && lib.isString x.prefetchUrlLocation.attrpath or null;
|
|
||||||
rec {
|
|
||||||
inherit fileLocation hashAlgo hashFormat unpack;
|
|
||||||
name = if x.unpack or unpack then "source" else null;
|
|
||||||
mark = builtins.hashString "sha256" x.previousHash;
|
|
||||||
markRegexEscape = lib.escapeRegex mark;
|
|
||||||
realFileLocation = builtins.toString x.fileLocation or fileLocation;
|
|
||||||
realFileLocationShellEscape = lib.escapeShellArg realFileLocation;
|
|
||||||
prefetchUrlLocationShellEscape = lib.mapAttrs (_: lib.escapeShellArg) x.prefetchUrlLocation;
|
|
||||||
previousHashRegexEscape = lib.escapeRegex x.previousHash;
|
|
||||||
} // x) prefetchList;
|
|
||||||
|
|
||||||
realFileLocationShellEscape = lib.escapeShellArg realFileLocation;
|
mark'' = lib.escapeShellArg (lib.escapeRegex mark);
|
||||||
versionUrlShellEscape = lib.escapeShellArg versionUrl;
|
previousVersion'' = lib.escapeShellArg (lib.escapeRegex previousVersion);
|
||||||
|
|
||||||
previousVersionRegexEscape = lib.escapeRegex previousVersion;
|
nixUnpack = lib.optionalString unpack "--unpack";
|
||||||
|
nixName = lib.optionalString (!builtins.isNull name) "--name \"${lib.escapeShellArg name}\"";
|
||||||
|
|
||||||
|
path = lib.makeBinPath [
|
||||||
path = lib.makeBinPath ([
|
|
||||||
curl
|
curl
|
||||||
gnused
|
gawk
|
||||||
jq
|
jq
|
||||||
nix
|
nix
|
||||||
] ++ extraPackages);
|
];
|
||||||
in
|
in
|
||||||
|
|
||||||
writeScript "den-http-get-updater" (''
|
writeScript "den-http-get-updater" (''
|
||||||
PATH="${lib.escapeShellArg path}"
|
PATH="${lib.escapeShellArg path}"
|
||||||
prefetchFailed=
|
|
||||||
|
|
||||||
newVersion=$(curl -L "${versionUrlShellEscape}")
|
newVersion=$(curl -L "${versionUrl'}")
|
||||||
if [[ "$?" != 0 ]]; then
|
if [[ "$?" != 0 ]]; then
|
||||||
echo "error: fetching new version failed" 1>&2
|
echo "error: fetching new version failed" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
newVersion=$(${contentParser})
|
newVersion=$(${contentParser})
|
||||||
sed -Ei "s!${previousVersionRegexEscape}!$newVersion!g" "${realFileLocationShellEscape}"
|
awk -i inplace "{
|
||||||
''
|
sub(/${previousVersion''}/, \"$newVersion\")
|
||||||
|
# invalidate hash
|
||||||
# invalidate hashes
|
sub(/${previousHash}/, \"${mark'}\")
|
||||||
+ lib.concatStringsSep "\n" (lib.map ({
|
}1" "${realFileLocation'}"
|
||||||
mark,
|
'' + lib.optionalString (!builtins.isNull prefetchUrlLocation) ''
|
||||||
previousHash,
|
nixUrlsResult=$(nix-instantiate --eval --json \
|
||||||
previousHashRegexEscape,
|
"${prefetchUrlLocation'.file}" \
|
||||||
realFileLocationShellEscape,
|
-A "${prefetchUrlLocation'.attrpath}"
|
||||||
...
|
|
||||||
}: ''
|
|
||||||
sed -Ei "s!${previousHashRegexEscape}!${mark}!g" "${realFileLocationShellEscape}"
|
|
||||||
'') prefetchList')
|
|
||||||
|
|
||||||
+ lib.concatStringsSep "\n" (lib.map ({
|
|
||||||
fileLocation,
|
|
||||||
markRegexEscape,
|
|
||||||
name,
|
|
||||||
prefetchUrlLocationShellEscape,
|
|
||||||
realFileLocationShellEscape,
|
|
||||||
unpack,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
nixUnpack = lib.optionalString unpack "--unpack";
|
|
||||||
nixName = lib.optionalString (!builtins.isNull name) "--name \"${lib.escapeShellArg name}\"";
|
|
||||||
in ''
|
|
||||||
nixUrlsResult=$(nix-instantiate --eval --json --strict \
|
|
||||||
"${prefetchUrlLocationShellEscape.file}" \
|
|
||||||
-A "${prefetchUrlLocationShellEscape.attrpath}"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
urlsType=$(jq -rc 'type' <<< "$nixUrlsResult")
|
urlsType=$(jq -rc 'type' <<< "$nixUrlsResult")
|
||||||
|
@ -132,28 +88,19 @@ in ''
|
||||||
prefetchSucceeded=1
|
prefetchSucceeded=1
|
||||||
for url in "''${prefetchUrls[@]}"; do
|
for url in "''${prefetchUrls[@]}"; do
|
||||||
echo "trying prefetch '$url'...";
|
echo "trying prefetch '$url'...";
|
||||||
expectedHash=$(nix-prefetch-url "$url" ${nixUnpack} ${nixName} --type "${hashAlgo}")
|
expectedHash=$(nix-prefetch-url "$url" ${nixUnpack} ${nixName})
|
||||||
expectedHash=$(nix --extra-experimental-features "nix-command" hash convert \
|
|
||||||
--hash-algo "${hashAlgo}" \
|
|
||||||
--to "${hashFormat}" \
|
|
||||||
"$expectedHash"
|
|
||||||
)
|
|
||||||
if [[ -n $expectedHash ]]; then
|
if [[ -n $expectedHash ]]; then
|
||||||
echo "prefetch succeeded!"
|
echo "prefetch succeeded!"
|
||||||
echo "hash: $expectedHash"
|
echo "hash: $expectedHash"
|
||||||
sed -Ei "s!${markRegexEscape}!$expectedHash!g" "${realFileLocationShellEscape}"
|
awk -i inplace "{
|
||||||
|
sub(/${mark''}/, \"$expectedHash\")
|
||||||
|
}1" "${realFileLocation'}"
|
||||||
prefetchSucceeded=
|
prefetchSucceeded=
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if [[ -n "$prefetchSucceeded" ]]; then
|
if [[ -n "$prefetchSucceeded" ]]; then
|
||||||
echo "warning: prefetch failed" 1>&2
|
echo "warning: prefetch failed" 1>&2
|
||||||
prefetchFailed=1
|
|
||||||
fi
|
|
||||||
'') (lib.filter (x: !builtins.isNull x.prefetchUrlLocation) prefetchList'))
|
|
||||||
|
|
||||||
+ ''
|
|
||||||
if [[ -n "$prefetchFailed" ]]; then
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
'')
|
'')
|
||||||
|
|
|
@ -11,26 +11,3 @@ in {
|
||||||
"inputs/cosmic-modules" = inputsWithPackages.cosmic-modules;
|
"inputs/cosmic-modules" = inputsWithPackages.cosmic-modules;
|
||||||
"inputs/nixos-vscode-server" = inputsWithPackages.nixos-vscode-server;
|
"inputs/nixos-vscode-server" = inputsWithPackages.nixos-vscode-server;
|
||||||
})
|
})
|
||||||
|
|
||||||
# MARK: NixOS modules
|
|
||||||
// ( let
|
|
||||||
pkgs = self.modifiedNixpkgsPure {
|
|
||||||
localSystem = builtins.currentSystem;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
lib = pkgs.lib;
|
|
||||||
mkUpdater = path: attrpath: extraModule: let
|
|
||||||
system = pkgs.nixos {
|
|
||||||
imports = [ path extraModule ];
|
|
||||||
config = {
|
|
||||||
_module.args = {
|
|
||||||
inherit self;
|
|
||||||
inherit (self) inputs;
|
|
||||||
};
|
|
||||||
system.stateVersion = lib.versions.pad 2 lib.trivial.verison;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in lib.getAttrFromPath ( [ "config" ] ++ attrpath ) system;
|
|
||||||
in {
|
|
||||||
"NixOS/nvidia" = mkUpdater ./nix-os/nvidia.nix [ "hardware" "nvidia" "package" ] {};
|
|
||||||
})
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue