commit
e6ff544a51
@ -0,0 +1,94 @@ |
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-booting-via-kexec"> |
||||
<title><quote>Booting</quote> into NixOS via kexec</title> |
||||
<para> |
||||
In some cases, your system might already be booted into/preinstalled |
||||
with another Linux distribution, and booting NixOS by attaching an |
||||
installation image is quite a manual process. |
||||
</para> |
||||
<para> |
||||
This is particularly useful for (cloud) providers where you can’t |
||||
boot a custom image, but get some Debian or Ubuntu installation. |
||||
</para> |
||||
<para> |
||||
In these cases, it might be easier to use <literal>kexec</literal> |
||||
to <quote>jump into NixOS</quote> from the running system, which |
||||
only assumes <literal>bash</literal> and <literal>kexec</literal> to |
||||
be installed on the machine. |
||||
</para> |
||||
<para> |
||||
Note that kexec may not work correctly on some hardware, as devices |
||||
are not fully re-initialized in the process. In practice, this |
||||
however is rarely the case. |
||||
</para> |
||||
<para> |
||||
To build the necessary files from your current version of nixpkgs, |
||||
you can run: |
||||
</para> |
||||
<programlisting> |
||||
nix-build -A kexec.x86_64-linux '<nixpkgs/nixos/release.nix>' |
||||
</programlisting> |
||||
<para> |
||||
This will create a <literal>result</literal> directory containing |
||||
the following: |
||||
</para> |
||||
<itemizedlist spacing="compact"> |
||||
<listitem> |
||||
<para> |
||||
<literal>bzImage</literal> (the Linux kernel) |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<literal>initrd</literal> (the initrd file) |
||||
</para> |
||||
</listitem> |
||||
<listitem> |
||||
<para> |
||||
<literal>kexec-boot</literal> (a shellscript invoking |
||||
<literal>kexec</literal>) |
||||
</para> |
||||
</listitem> |
||||
</itemizedlist> |
||||
<para> |
||||
These three files are meant to be copied over to the other already |
||||
running Linux Distribution. |
||||
</para> |
||||
<para> |
||||
Note it’s symlinks pointing elsewhere, so <literal>cd</literal> in, |
||||
and use <literal>scp * root@$destination</literal> to copy it over, |
||||
rather than rsync. |
||||
</para> |
||||
<para> |
||||
Once you finished copying, execute <literal>kexec-boot</literal> |
||||
<emphasis>on the destination</emphasis>, and after some seconds, the |
||||
machine should be booting into an (ephemeral) NixOS installation |
||||
medium. |
||||
</para> |
||||
<para> |
||||
In case you want to describe your own system closure to kexec into, |
||||
instead of the default installer image, you can build your own |
||||
<literal>configuration.nix</literal>: |
||||
</para> |
||||
<programlisting language="bash"> |
||||
{ modulesPath, ... }: { |
||||
imports = [ |
||||
(modulesPath + "/installer/netboot/netboot-minimal.nix") |
||||
]; |
||||
|
||||
services.openssh.enable = true; |
||||
users.users.root.openssh.authorizedKeys.keys = [ |
||||
"my-ssh-pubkey" |
||||
]; |
||||
} |
||||
</programlisting> |
||||
<programlisting> |
||||
nix-build '<nixpkgs/nixos>' \ |
||||
--arg configuration ./configuration.nix |
||||
--attr config.system.build.kexecTree |
||||
</programlisting> |
||||
<para> |
||||
Make sure your <literal>configuration.nix</literal> does still |
||||
import <literal>netboot-minimal.nix</literal> (or |
||||
<literal>netboot-base.nix</literal>). |
||||
</para> |
||||
</section> |
@ -0,0 +1,64 @@ |
||||
# "Booting" into NixOS via kexec {#sec-booting-via-kexec} |
||||
|
||||
In some cases, your system might already be booted into/preinstalled with |
||||
another Linux distribution, and booting NixOS by attaching an installation |
||||
image is quite a manual process. |
||||
|
||||
This is particularly useful for (cloud) providers where you can't boot a custom |
||||
image, but get some Debian or Ubuntu installation. |
||||
|
||||
In these cases, it might be easier to use `kexec` to "jump into NixOS" from the |
||||
running system, which only assumes `bash` and `kexec` to be installed on the |
||||
machine. |
||||
|
||||
Note that kexec may not work correctly on some hardware, as devices are not |
||||
fully re-initialized in the process. In practice, this however is rarely the |
||||
case. |
||||
|
||||
To build the necessary files from your current version of nixpkgs, |
||||
you can run: |
||||
|
||||
```ShellSession |
||||
nix-build -A kexec.x86_64-linux '<nixpkgs/nixos/release.nix>' |
||||
``` |
||||
|
||||
This will create a `result` directory containing the following: |
||||
- `bzImage` (the Linux kernel) |
||||
- `initrd` (the initrd file) |
||||
- `kexec-boot` (a shellscript invoking `kexec`) |
||||
|
||||
These three files are meant to be copied over to the other already running |
||||
Linux Distribution. |
||||
|
||||
Note it's symlinks pointing elsewhere, so `cd` in, and use |
||||
`scp * root@$destination` to copy it over, rather than rsync. |
||||
|
||||
Once you finished copying, execute `kexec-boot` *on the destination*, and after |
||||
some seconds, the machine should be booting into an (ephemeral) NixOS |
||||
installation medium. |
||||
|
||||
In case you want to describe your own system closure to kexec into, instead of |
||||
the default installer image, you can build your own `configuration.nix`: |
||||
|
||||
```nix |
||||
{ modulesPath, ... }: { |
||||
imports = [ |
||||
(modulesPath + "/installer/netboot/netboot-minimal.nix") |
||||
]; |
||||
|
||||
services.openssh.enable = true; |
||||
users.users.root.openssh.authorizedKeys.keys = [ |
||||
"my-ssh-pubkey" |
||||
]; |
||||
} |
||||
``` |
||||
|
||||
|
||||
```ShellSession |
||||
nix-build '<nixpkgs/nixos>' \ |
||||
--arg configuration ./configuration.nix |
||||
--attr config.system.build.kexecTree |
||||
``` |
||||
|
||||
Make sure your `configuration.nix` does still import `netboot-minimal.nix` (or |
||||
`netboot-base.nix`). |
@ -1,51 +0,0 @@ |
||||
# This module exposes a config.system.build.kexecBoot attribute, |
||||
# which returns a directory with kernel, initrd and a shell script |
||||
# running the necessary kexec commands. |
||||
|
||||
# It's meant to be scp'ed to a machine with working ssh and kexec binary |
||||
# installed. |
||||
|
||||
# This is useful for (cloud) providers where you can't boot a custom image, but |
||||
# get some Debian or Ubuntu installation. |
||||
|
||||
{ pkgs |
||||
, modulesPath |
||||
, config |
||||
, ... |
||||
}: |
||||
{ |
||||
imports = [ |
||||
(modulesPath + "/installer/netboot/netboot-minimal.nix") |
||||
]; |
||||
|
||||
config = { |
||||
system.build.kexecBoot = |
||||
let |
||||
kexecScript = pkgs.writeScript "kexec-boot" '' |
||||
#!/usr/bin/env bash |
||||
if ! kexec -v >/dev/null 2>&1; then |
||||
echo "kexec not found: please install kexec-tools" 2>&1 |
||||
exit 1 |
||||
fi |
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "''${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) |
||||
kexec --load ''${SCRIPT_DIR}/bzImage \ |
||||
--initrd=''${SCRIPT_DIR}/initrd.gz \ |
||||
--command-line "init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}" |
||||
kexec -e |
||||
''; in |
||||
pkgs.linkFarm "kexec-tree" [ |
||||
{ |
||||
name = "initrd.gz"; |
||||
path = "${config.system.build.netbootRamdisk}/initrd"; |
||||
} |
||||
{ |
||||
name = "bzImage"; |
||||
path = "${config.system.build.kernel}/${config.system.boot.loader.kernelFile}"; |
||||
} |
||||
{ |
||||
name = "kexec-boot"; |
||||
path = kexecScript; |
||||
} |
||||
]; |
||||
}; |
||||
} |
@ -1,7 +1,7 @@ |
||||
{ callPackage, ... } @ args: |
||||
|
||||
callPackage ./generic.nix (args // { |
||||
version = "5.0.6"; |
||||
version = "5.0.8"; |
||||
kde-channel = "stable"; |
||||
sha256 = "sha256:0qhf7vm13v33yk67n7wdcgrqpk7yvajdlkqcp7zhrl2z7qdnvmzd"; |
||||
sha256 = "sha256:7R0fpQc+4MQVDh/enhCTgpgOqU0y5YRShrv/ILa/XkU="; |
||||
}) |
||||
|
@ -0,0 +1,206 @@ |
||||
{ |
||||
"name": "element-web", |
||||
"version": "1.10.13", |
||||
"description": "A feature-rich client for Matrix.org", |
||||
"author": "New Vector Ltd.", |
||||
"repository": { |
||||
"type": "git", |
||||
"url": "https://github.com/vector-im/element-web" |
||||
}, |
||||
"license": "Apache-2.0", |
||||
"files": [ |
||||
"lib", |
||||
"res", |
||||
"src", |
||||
"webpack.config.js", |
||||
"scripts", |
||||
"docs", |
||||
"release.sh", |
||||
"deploy", |
||||
"CHANGELOG.md", |
||||
"CONTRIBUTING.rst", |
||||
"LICENSE", |
||||
"README.md", |
||||
"AUTHORS.rst", |
||||
"package.json", |
||||
"contribute.json" |
||||
], |
||||
"style": "bundle.css", |
||||
"scripts": { |
||||
"i18n": "matrix-gen-i18n", |
||||
"prunei18n": "matrix-prune-i18n", |
||||
"diff-i18n": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && matrix-gen-i18n && matrix-compare-i18n-files src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json", |
||||
"clean": "rimraf lib webapp", |
||||
"build": "yarn clean && yarn build:genfiles && yarn build:bundle", |
||||
"build-stats": "yarn clean && yarn build:genfiles && yarn build:bundle-stats", |
||||
"build:jitsi": "node scripts/build-jitsi.js", |
||||
"build:res": "node scripts/copy-res.js", |
||||
"build:genfiles": "yarn build:res && yarn build:jitsi", |
||||
"build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", |
||||
"build:bundle": "webpack --progress --bail --mode production", |
||||
"build:bundle-stats": "webpack --progress --bail --mode production --json > webpack-stats.json", |
||||
"dist": "scripts/package.sh", |
||||
"start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js\"", |
||||
"start:https": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js --https\"", |
||||
"start:res": "yarn build:jitsi && node scripts/copy-res.js -w", |
||||
"start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --mode development --disable-host-check --hot", |
||||
"lint": "yarn lint:types && yarn lint:js && yarn lint:style", |
||||
"lint:js": "eslint --max-warnings 0 src", |
||||
"lint:js-fix": "eslint --fix src", |
||||
"lint:types": "tsc --noEmit --jsx react", |
||||
"lint:style": "stylelint \"res/css/**/*.scss\"", |
||||
"test": "jest", |
||||
"coverage": "yarn test --coverage" |
||||
}, |
||||
"dependencies": { |
||||
"@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz", |
||||
"browser-request": "^0.3.3", |
||||
"gfm.css": "^1.1.2", |
||||
"jsrsasign": "^10.2.0", |
||||
"katex": "^0.12.0", |
||||
"matrix-js-sdk": "18.0.0", |
||||
"matrix-react-sdk": "3.45.0", |
||||
"matrix-widget-api": "^0.1.0-beta.18", |
||||
"prop-types": "^15.7.2", |
||||
"react": "17.0.2", |
||||
"react-dom": "17.0.2", |
||||
"sanitize-html": "^2.3.2", |
||||
"ua-parser-js": "^0.7.24" |
||||
}, |
||||
"devDependencies": { |
||||
"@babel/core": "^7.12.10", |
||||
"@babel/eslint-parser": "^7.12.10", |
||||
"@babel/eslint-plugin": "^7.12.10", |
||||
"@babel/plugin-proposal-class-properties": "^7.12.1", |
||||
"@babel/plugin-proposal-export-default-from": "^7.12.1", |
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", |
||||
"@babel/plugin-proposal-numeric-separator": "^7.12.7", |
||||
"@babel/plugin-proposal-object-rest-spread": "^7.12.1", |
||||
"@babel/plugin-proposal-optional-chaining": "^7.12.7", |
||||
"@babel/plugin-syntax-dynamic-import": "^7.8.3", |
||||
"@babel/plugin-transform-runtime": "^7.12.10", |
||||
"@babel/preset-env": "^7.12.11", |
||||
"@babel/preset-react": "^7.12.10", |
||||
"@babel/preset-typescript": "^7.12.7", |
||||
"@babel/register": "^7.12.10", |
||||
"@babel/runtime": "^7.12.5", |
||||
"@principalstudio/html-webpack-inject-preload": "^1.2.7", |
||||
"@sentry/webpack-plugin": "^1.18.1", |
||||
"@svgr/webpack": "^5.5.0", |
||||
"@types/flux": "^3.1.9", |
||||
"@types/jest": "^27.0.2", |
||||
"@types/modernizr": "^3.5.3", |
||||
"@types/node": "^14.14.22", |
||||
"@types/react": "17.0.14", |
||||
"@types/react-dom": "17.0.9", |
||||
"@types/sanitize-html": "^2.3.1", |
||||
"@types/ua-parser-js": "^0.7.36", |
||||
"@typescript-eslint/eslint-plugin": "^5.6.0", |
||||
"@typescript-eslint/parser": "^5.6.0", |
||||
"allchange": "^1.0.6", |
||||
"autoprefixer": "^9.8.6", |
||||
"babel-jest": "^26.6.3", |
||||
"babel-loader": "^8.2.2", |
||||
"chokidar": "^3.5.1", |
||||
"concurrently": "^5.3.0", |
||||
"cpx": "^1.5.0", |
||||
"css-loader": "^3.6.0", |
||||
"dotenv": "^10.0.0", |
||||
"eslint": "8.9.0", |
||||
"eslint-config-google": "^0.14.0", |
||||
"eslint-plugin-import": "^2.25.4", |
||||
"eslint-plugin-matrix-org": "^0.4.0", |
||||
"eslint-plugin-react": "^7.28.0", |
||||
"eslint-plugin-react-hooks": "^4.3.0", |
||||
"extract-text-webpack-plugin": "^4.0.0-beta.0", |
||||
"fake-indexeddb": "^3.1.2", |
||||
"file-loader": "^5.1.0", |
||||
"fs-extra": "^0.30.0", |
||||
"html-webpack-plugin": "^4.5.2", |
||||
"jest": "^26.6.3", |
||||
"jest-environment-jsdom-sixteen": "^1.0.3", |
||||
"jest-raw-loader": "^1.0.1", |
||||
"jest-sonar-reporter": "^2.0.0", |
||||
"json-loader": "^0.5.7", |
||||
"loader-utils": "^1.4.0", |
||||
"matrix-mock-request": "^1.2.3", |
||||
"matrix-react-test-utils": "^0.2.3", |
||||
"matrix-web-i18n": "^1.2.0", |
||||
"mini-css-extract-plugin": "^0.12.0", |
||||
"minimist": "^1.2.6", |
||||
"mkdirp": "^1.0.4", |
||||
"modernizr": "^3.12.0", |
||||
"node-fetch": "^2.6.7", |
||||
"optimize-css-assets-webpack-plugin": "^5.0.4", |
||||
"postcss-easings": "^2.0.0", |
||||
"postcss-hexrgba": "^2.0.1", |
||||
"postcss-import": "^12.0.1", |
||||
"postcss-loader": "^3.0.0", |
||||
"postcss-mixins": "^6.2.3", |
||||
"postcss-nested": "^4.2.3", |
||||
"postcss-preset-env": "^6.7.0", |
||||
"postcss-scss": "^2.1.1", |
||||
"postcss-simple-vars": "^5.0.2", |
||||
"postcss-strip-inline-comments": "^0.1.5", |
||||
"raw-loader": "^4.0.2", |
||||
"rimraf": "^3.0.2", |
||||
"shell-escape": "^0.2.0", |
||||
"simple-proxy-agent": "^1.1.0", |
||||
"string-replace-loader": "2", |
||||
"style-loader": "2", |
||||
"stylelint": "^13.9.0", |
||||
"stylelint-config-standard": "^20.0.0", |
||||
"stylelint-scss": "^3.18.0", |
||||
"terser-webpack-plugin": "^2.3.8", |
||||
"typescript": "^4.5.3", |
||||
"webpack": "^4.46.0", |
||||
"webpack-cli": "^3.3.12", |
||||
"webpack-dev-server": "^3.11.2", |
||||
"worker-loader": "^2.0.0", |
||||
"worklet-loader": "^2.0.0" |
||||
}, |
||||
"resolutions": { |
||||
"@types/react": "17.0.14" |
||||
}, |
||||
"jest": { |
||||
"testEnvironment": "jest-environment-jsdom-sixteen", |
||||
"testMatch": [ |
||||
"<rootDir>/test/**/*-test.[tj]s?(x)" |
||||
], |
||||
"setupFilesAfterEnv": [ |
||||
"<rootDir>/node_modules/matrix-react-sdk/test/setupTests.js" |
||||
], |
||||
"moduleNameMapper": { |
||||
"\\.(css|scss)$": "<rootDir>/__mocks__/cssMock.js", |
||||
"\\.(gif|png|ttf|woff2)$": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/imageMock.js", |
||||
"\\.svg$": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/svg.js", |
||||
"\\$webapp/i18n/languages.json": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/languages.json", |
||||
"^browser-request$": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/browser-request.js", |
||||
"^react$": "<rootDir>/node_modules/react", |
||||
"^react-dom$": "<rootDir>/node_modules/react-dom", |
||||
"^matrix-js-sdk$": "<rootDir>/node_modules/matrix-js-sdk/src", |
||||
"^matrix-react-sdk$": "<rootDir>/node_modules/matrix-react-sdk/src", |
||||
"decoderWorker\\.min\\.js": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/empty.js", |
||||
"decoderWorker\\.min\\.wasm": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/empty.js", |
||||
"waveWorker\\.min\\.js": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/empty.js", |
||||
"context-filter-polyfill": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/empty.js", |
||||
"FontManager.ts": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/FontManager.js", |
||||
"workers/(.+)\\.worker\\.ts": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/workerMock.js", |
||||
"^!!raw-loader!.*": "jest-raw-loader", |
||||
"RecorderWorklet": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/empty.js" |
||||
}, |
||||
"transformIgnorePatterns": [ |
||||
"/node_modules/(?!matrix-js-sdk).+$", |
||||
"/node_modules/(?!matrix-react-sdk).+$" |
||||
], |
||||
"coverageReporters": [ |
||||
"text-summary", |
||||
"lcov" |
||||
], |
||||
"testResultsProcessor": "jest-sonar-reporter" |
||||
}, |
||||
"jestSonar": { |
||||
"reportPath": "coverage", |
||||
"sonar56x": true |
||||
} |
||||
} |
@ -0,0 +1,50 @@ |
||||
{ lib |
||||
, buildPythonPackage |
||||
, pythonOlder |
||||
, fetchFromGitHub |
||||
, anyio |
||||
, async_generator |
||||
, h11 |
||||
, curio |
||||
, overly |
||||
, pytestCheckHook |
||||
, trio |
||||
}: |
||||
|
||||
buildPythonPackage rec { |
||||
pname = "asks"; |
||||
version = "3.0.0"; |
||||
|
||||
disabled = pythonOlder "3.6"; |
||||
|
||||
format = "setuptools"; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "theelous3"; |
||||
repo = "asks"; |
||||
rev = "v${version}"; |
||||
hash = "sha256-ipQ5n2386DqR3kNpmTVhNPG+LC7gfCbvrlZ97+UP55g="; |
||||
}; |
||||
|
||||
propagatedBuildInputs = [ |
||||
anyio |
||||
async_generator |
||||
h11 |
||||
]; |
||||
|
||||
checkInputs = [ |
||||
curio |
||||
overly |
||||
pytestCheckHook |
||||
trio |
||||
]; |
||||
|
||||
pythonImportsCheck = [ "asks" ]; |
||||
|
||||
meta = { |
||||
description = "Async requests-like HTTP library for Python"; |
||||
homepage = "https://github.com/theelous3/asks"; |
||||
license = lib.licenses.mit; |
||||
maintainers = with lib.maintainers; [ dotlambda ]; |
||||
}; |
||||
} |
@ -0,0 +1,46 @@ |
||||
{ lib |
||||
, buildPythonPackage |
||||
, poetry-core |
||||
, fetchFromGitHub |
||||
, pytestCheckHook |
||||
, pythonOlder |
||||
, click |
||||
}: |
||||
|
||||
buildPythonPackage rec { |
||||
pname = "kml2geojson"; |
||||
version = "5.1.0"; |
||||
format = "pyproject"; |
||||
|
||||
disabled = pythonOlder "3.8"; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "mrcagney"; |
||||
repo = pname; |
||||
rev = version; |
||||
hash = "sha256-iJEcXpvy+Y3MkxAF2Q1Tkcx8GxUVjeVzv6gl134zdiI="; |
||||
}; |
||||
|
||||
nativeBuildInputs = [ |
||||
poetry-core |
||||
]; |
||||
|
||||
propagatedBuildInputs = [ |
||||
click |
||||
]; |
||||
|
||||
checkInputs = [ |
||||
pytestCheckHook |
||||
]; |
||||
|
||||
pythonImportsCheck = [ |
||||
"kml2geojson" |
||||
]; |
||||
|
||||
meta = with lib; { |
||||
description = "Library to convert KML to GeoJSON"; |
||||
homepage = "https://github.com/mrcagney/kml2geojson"; |
||||
license = licenses.mit; |
||||
maintainers = with maintainers; [ fab ]; |
||||
}; |
||||
} |
@ -0,0 +1,40 @@ |
||||
{ lib |
||||
, stdenv |
||||
, buildPythonPackage |
||||
, pythonOlder |
||||
, fetchPypi |
||||
, h11 |
||||
, sansio-multipart |
||||
}: |
||||
|
||||
buildPythonPackage rec { |
||||
pname = "overly"; |
||||
version = "0.1.85"; |
||||
|
||||
disabled = pythonOlder "3.6"; |
||||
|
||||
format = "setuptools"; |
||||
|
||||
src = fetchPypi { |
||||
inherit pname version; |
||||
sha256 = "20a99526c7859acc859e87afd97b5c4916405e7477834f727b49210e478370cb"; |
||||
}; |
||||
|
||||
propagatedBuildInputs = [ |
||||
h11 |
||||
sansio-multipart |
||||
]; |
||||
|
||||
# upstream has no tests |
||||
doCheck = false; |
||||
|
||||
pythonImportsCheck = [ "overly" ]; |
||||
|
||||
meta = { |
||||
description = "An overly configurable http server for client testing"; |
||||
homepage = "https://github.com/theelous3/overly"; |
||||
license = lib.licenses.mit; |
||||
maintainers = with lib.maintainers; [ dotlambda ]; |
||||
broken = stdenv.isDarwin; # https://github.com/theelous3/overly/issues/2 |
||||
}; |
||||
} |
@ -0,0 +1,32 @@ |
||||
{ lib |
||||
, buildPythonPackage |
||||
, fetchPypi |
||||
, pythonOlder |
||||
}: |
||||
|
||||
buildPythonPackage rec { |
||||
pname = "py-sneakers"; |
||||
version = "1.0.1"; |
||||
format = "setuptools"; |
||||
|
||||
disabled = pythonOlder "3.7"; |
||||
|
||||
src = fetchPypi { |
||||
inherit pname version; |
||||
hash = "sha256-bIhkYTzRe4uM0kbNhbDTr6TiaOEBSiCSkPJKKCivDZY="; |
||||
}; |
||||
|
||||
# Module has no tests |
||||
doCheck = false; |
||||
|
||||
pythonImportsCheck = [ |
||||
"py_sneakers" |
||||
]; |
||||
|
||||
meta = with lib; { |
||||
description = "Library to emulate the Sneakers movie effect"; |
||||
homepage = "https://github.com/aenima-x/py-sneakers"; |
||||
license = licenses.mit; |
||||
maintainers = with maintainers; [ fab ]; |
||||
}; |
||||
} |
@ -0,0 +1,50 @@ |
||||
{ lib |
||||
, buildPythonPackage |
||||
, pythonOlder |
||||
, fetchPypi |
||||
, poetry-core |
||||
, asks |
||||
, trio |
||||
, xdg |
||||
}: |
||||
|
||||
buildPythonPackage rec { |
||||
pname = "rmcl"; |
||||
version = "0.4.2"; |
||||
|
||||
disabled = pythonOlder "3.7"; |
||||
|
||||
format = "pyproject"; |
||||
|
||||
src = fetchPypi { |
||||
inherit pname version; |
||||
sha256 = "58de4758e7e3cb7acbf28fcfa80f4155252afdfb191beb4ba4aa36961f66cc67"; |
||||
}; |
||||
|
||||
postPatch = '' |
||||
substituteInPlace pyproject.toml \ |
||||
--replace '= "^' '= ">=' |
||||
''; |
||||
|
||||
nativeBuildInputs = [ |
||||
poetry-core |
||||
]; |
||||
|
||||
propagatedBuildInputs = [ |
||||
asks |
||||
trio |
||||
xdg |
||||
]; |
||||
|
||||
# upstream has no tests |
||||
doCheck = false; |
||||
|
||||
pythonImportsCheck = [ "rmcl" ]; |
||||
|
||||
meta = { |
||||
description = "ReMarkable Cloud Library"; |
||||
homepage = "https://github.com/rschroll/rmcl"; |
||||
license = lib.licenses.mit; |
||||
maintainers = with lib.maintainers; [ dotlambda ]; |
||||
}; |
||||
} |
@ -0,0 +1,47 @@ |
||||
{ lib |
||||
, buildPythonPackage |
||||
, pythonOlder |
||||
, fetchPypi |
||||
, poetry-core |
||||
, pdfrw |
||||
, reportlab |
||||
, svglib |
||||
, xdg |
||||
}: |
||||
|
||||
buildPythonPackage rec { |
||||
pname = "rmrl"; |
||||
version = "0.2.1"; |
||||
|
||||
disabled = pythonOlder "3.7"; |
||||
|
||||
format = "pyproject"; |
||||
|
||||
src = fetchPypi { |
||||
inherit pname version; |
||||
sha256 = "c532bef4168350e6ab17cf37c6481dc12b6a78e007c073503f082f36215b71c9"; |
||||
}; |
||||
|
||||
nativeBuildInputs = [ |
||||
poetry-core |
||||
]; |
||||
|
||||
propagatedBuildInputs = [ |
||||
pdfrw |
||||
reportlab |
||||
svglib |
||||
xdg |
||||
]; |
||||
|
||||
# upstream has no tests |
||||
doCheck = false; |
||||
|
||||
pythonImportsCheck = [ "rmrl" ]; |
||||
|
||||
meta = { |
||||
description = "Render reMarkable documents to PDF"; |
||||
homepage = "https://github.com/rschroll/rmrl"; |
||||
license = lib.licenses.gpl3Plus; |
||||
maintainers = with lib.maintainers; [ dotlambda ]; |
||||
}; |
||||
} |
@ -0,0 +1,32 @@ |
||||
{ lib |
||||
, buildPythonPackage |
||||
, isPy27 |
||||
, fetchPypi |
||||
}: |
||||
|
||||
buildPythonPackage rec { |
||||
pname = "sansio-multipart"; |
||||
version = "0.3"; |
||||
|
||||
disabled = isPy27; |
||||
|
||||
format = "setuptools"; |
||||
|
||||
src = fetchPypi { |
||||
pname = "sansio_multipart"; |
||||
inherit version; |
||||
sha256 = "6e95b2e64039a95d0f2cd8f3360eaf418d6b9018fb2215d82d399d62d6122dc3"; |
||||
}; |
||||
|
||||
# upstream has no tests |
||||
doCheck = false; |
||||
|
||||
pythonImportsCheck = [ "sansio_multipart" ]; |
||||
|
||||
meta = { |
||||
description = "Parser for multipart/form-data"; |
||||
homepage = "https://github.com/theelous3/sansio-multipart-parser"; |
||||
license = lib.licenses.mit; |
||||
maintainers = with lib.maintainers; [ dotlambda ]; |
||||
}; |
||||
} |
@ -0,0 +1,66 @@ |
||||
{ lib |
||||
, buildPythonPackage |
||||
, dateparser |
||||
, defusedxml |
||||
, fetchFromGitHub |
||||
, fiona |
||||
, geomet |
||||
, geopandas |
||||
, kml2geojson |
||||
, pyshp |
||||
, pythonOlder |
||||
, pyyaml |
||||
, regex |
||||
, requests |
||||
, shapely |
||||
, scikit-learn |
||||
}: |
||||
|
||||
buildPythonPackage rec { |
||||
pname = "wktutils"; |
||||
version = "1.1.4"; |
||||
format = "setuptools"; |
||||
|
||||
disabled = pythonOlder "3.7"; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "asfadmin"; |
||||
repo = "Discovery-WKTUtils"; |
||||
rev = "refs/tags/v${version}"; |
||||
hash = "sha256-/gcMnZ+wWflbvLlyfIaEoSYaLrsosMyD60ei/5Iis6E="; |
||||
}; |
||||
|
||||
propagatedBuildInputs = [ |
||||
dateparser |
||||
defusedxml |
||||
fiona |
||||
geomet |
||||
geopandas |
||||
kml2geojson |
||||
pyshp |
||||
pyyaml |
||||
regex |
||||
requests |
||||
shapely |
||||
scikit-learn |
||||
]; |
||||
|
||||
postPatch = '' |
||||
substituteInPlace setup.py \ |
||||
--replace "sklearn" "scikit-learn" |
||||
''; |
||||
|
||||
# Module doesn't have tests |
||||
doCheck = false; |
||||
|
||||
pythonImportsCheck = [ |
||||
"WKTUtils" |
||||
]; |
||||
|
||||
meta = with lib; { |
||||
description = "Collection of tools for handling WKTs"; |
||||
homepage = "https://github.com/asfadmin/Discovery-WKTUtils"; |
||||
license = licenses.bsd3; |
||||
maintainers = with maintainers; [ fab ]; |
||||
}; |
||||
} |
@ -1,12 +1,12 @@ |
||||
{ buildPackages, fetchurl, perl, buildLinux, nixosTests, stdenv, ... } @ args: |
||||
|
||||
buildLinux (args // rec { |
||||
version = "4.9.316"; |
||||
version = "4.9.317"; |
||||
extraMeta.branch = "4.9"; |
||||
extraMeta.broken = stdenv.isAarch64; |
||||
|
||||
src = fetchurl { |
||||
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; |
||||
sha256 = "05yd7djm6dcxv3vaylhmj3p0yml421azv8qabmhv4ric1f99idjp"; |
||||
sha256 = "06qdqcplslnp1ncaqvp5yjr294rz3x4qrxnv522v76awj6dkd8vy"; |
||||
}; |
||||
} // (args.argsOverride or {})) |
||||
|
@ -0,0 +1,33 @@ |
||||
{ lib, stdenv, fetchFromGitHub, fetchpatch, rustPlatform }: |
||||
|
||||
rustPlatform.buildRustPackage rec { |
||||
pname = "hwatch"; |
||||
version = "0.3.6"; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "blacknon"; |
||||
repo = pname; |
||||
# prefix, because just "0.3.6' causes the download to silently fail: |
||||
# $ curl -v https://github.com/blacknon/hwatch/archive/0.3.6.tar.gz |
||||
# ... |
||||
# < HTTP/2 300 |
||||
# ... |
||||
# the given path has multiple possibilities: #<Git::Ref:0x00007fbb2e52bed0>, #<Git::Ref:0x00007fbb2e52ae40> |
||||
rev = "refs/tags/${version}"; |
||||
sha256 = "sha256-uaAgA6DWwYVT9mQh55onW+qxIC2i9GVuimctTJpUgfA="; |
||||
}; |
||||
|
||||
cargoSha256 = "sha256-Xt3Z6ax3Y45KZhTYMBr/Rfx1o+ZAoPYj51SN5hnrXQM="; |
||||
|
||||
meta = with lib; { |
||||
homepage = "https://github.com/blackmon/hwatch"; |
||||
description= "Modern alternative to the watch command"; |
||||
longDescription = '' |
||||
A modern alternative to the watch command, records the differences in |
||||
execution results and can check this differences at after. |
||||
''; |
||||
license = licenses.mit; |
||||
maintainers = with maintainers; [ hamburger1984 ]; |
||||
platforms = platforms.linux; |
||||
}; |
||||
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue