diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/borgcopy/.envrc | 4 | ||||
| -rw-r--r-- | modules/borgcopy/.gitignore | 2 | ||||
| -rw-r--r-- | modules/borgcopy/default.nix | 39 | ||||
| -rw-r--r-- | modules/borgcopy/poetry.lock | 180 | ||||
| -rw-r--r-- | modules/borgcopy/pyproject.toml | 33 | ||||
| -rw-r--r-- | modules/borgcopy/uv.lock | 146 | ||||
| -rw-r--r-- | modules/llvm_kernel.nix | 59 |
7 files changed, 252 insertions, 211 deletions
diff --git a/modules/borgcopy/.envrc b/modules/borgcopy/.envrc new file mode 100644 index 00000000..01e755c1 --- /dev/null +++ b/modules/borgcopy/.envrc | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | use flake | ||
| 2 | |||
| 3 | uv venv && uv sync | ||
| 4 | . .venv/bin/activate | ||
diff --git a/modules/borgcopy/.gitignore b/modules/borgcopy/.gitignore new file mode 100644 index 00000000..4ccfae70 --- /dev/null +++ b/modules/borgcopy/.gitignore | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | .venv | ||
| 2 | **/__pycache__ | ||
diff --git a/modules/borgcopy/default.nix b/modules/borgcopy/default.nix index 8e1afc27..af021777 100644 --- a/modules/borgcopy/default.nix +++ b/modules/borgcopy/default.nix | |||
| @@ -1,25 +1,32 @@ | |||
| 1 | { config, pkgs, lib, utils, flakeInputs, ... }: | 1 | { config, pkgs, lib, utils, flake, flakeInputs, ... }: |
| 2 | 2 | ||
| 3 | with lib; | 3 | with lib; |
| 4 | 4 | ||
| 5 | let | 5 | let |
| 6 | copyBorg = | 6 | copyBorg = let |
| 7 | with pkgs.poetry2nix; | 7 | workspace = flakeInputs.uv2nix.lib.workspace.loadWorkspace { workspaceRoot = ./.; }; |
| 8 | mkPoetryApplication { | 8 | pythonSet = flake.lib.pythonSet { |
| 9 | projectDir = cleanPythonSources { src = ./.; }; | 9 | inherit pkgs; |
| 10 | python = pkgs.python312; | ||
| 11 | overlay = workspace.mkPyprojectOverlay { | ||
| 12 | sourcePreference = "wheel"; | ||
| 13 | }; | ||
| 14 | }; | ||
| 15 | virtualEnv = pythonSet.mkVirtualEnv "copy_borg" workspace.deps.default; | ||
| 16 | in virtualEnv.overrideAttrs (oldAttrs: { | ||
| 17 | meta = (oldAttrs.meta or {}) // { | ||
| 18 | mainProgram = "copy_borg"; | ||
| 19 | }; | ||
| 10 | 20 | ||
| 11 | overrides = overrides.withDefaults (self: super: { | 21 | nativeBuildInputs = (oldAttrs.nativeBuildInputs or []) ++ [ pkgs.makeWrapper ]; |
| 12 | pyprctl = super.pyprctl.overridePythonAttrs (oldAttrs: { | ||
| 13 | buildInputs = (oldAttrs.buildInputs or []) ++ [super.setuptools]; | ||
| 14 | }); | ||
| 15 | inherit (pkgs.python3Packages) python-unshare; | ||
| 16 | }); | ||
| 17 | 22 | ||
| 18 | postInstall = '' | 23 | postInstall = '' |
| 19 | wrapProgram $out/bin/copy_borg \ | 24 | ${oldAttrs.postInstall or ""} |
| 20 | --prefix PATH : ${makeBinPath (with pkgs; [util-linux borgbackup])}:${config.security.wrapperDir} | 25 | |
| 21 | ''; | 26 | wrapProgram $out/bin/copy_borg \ |
| 22 | }; | 27 | --prefix PATH : ${makeBinPath (with pkgs; [util-linux borgbackup])}:${config.security.wrapperDir} |
| 28 | ''; | ||
| 29 | }); | ||
| 23 | 30 | ||
| 24 | copyService = name: opts: nameValuePair "copy-borg@${utils.escapeSystemdPath name}" { | 31 | copyService = name: opts: nameValuePair "copy-borg@${utils.escapeSystemdPath name}" { |
| 25 | restartIfChanged = false; | 32 | restartIfChanged = false; |
diff --git a/modules/borgcopy/poetry.lock b/modules/borgcopy/poetry.lock deleted file mode 100644 index 759ecfe9..00000000 --- a/modules/borgcopy/poetry.lock +++ /dev/null | |||
| @@ -1,180 +0,0 @@ | |||
| 1 | # This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. | ||
| 2 | |||
| 3 | [[package]] | ||
| 4 | name = "colorama" | ||
| 5 | version = "0.4.6" | ||
| 6 | description = "Cross-platform colored terminal text." | ||
| 7 | category = "main" | ||
| 8 | optional = false | ||
| 9 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" | ||
| 10 | files = [ | ||
| 11 | {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, | ||
| 12 | {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, | ||
| 13 | ] | ||
| 14 | |||
| 15 | [[package]] | ||
| 16 | name = "halo" | ||
| 17 | version = "0.0.31" | ||
| 18 | description = "Beautiful terminal spinners in Python" | ||
| 19 | category = "main" | ||
| 20 | optional = false | ||
| 21 | python-versions = ">=3.4" | ||
| 22 | files = [ | ||
| 23 | {file = "halo-0.0.31-py2-none-any.whl", hash = "sha256:5350488fb7d2aa7c31a1344120cee67a872901ce8858f60da7946cef96c208ab"}, | ||
| 24 | {file = "halo-0.0.31.tar.gz", hash = "sha256:7b67a3521ee91d53b7152d4ee3452811e1d2a6321975137762eb3d70063cc9d6"}, | ||
| 25 | ] | ||
| 26 | |||
| 27 | [package.dependencies] | ||
| 28 | colorama = ">=0.3.9" | ||
| 29 | log-symbols = ">=0.0.14" | ||
| 30 | six = ">=1.12.0" | ||
| 31 | spinners = ">=0.0.24" | ||
| 32 | termcolor = ">=1.1.0" | ||
| 33 | |||
| 34 | [package.extras] | ||
| 35 | ipython = ["IPython (==5.7.0)", "ipywidgets (==7.1.0)"] | ||
| 36 | |||
| 37 | [[package]] | ||
| 38 | name = "humanize" | ||
| 39 | version = "4.6.0" | ||
| 40 | description = "Python humanize utilities" | ||
| 41 | category = "main" | ||
| 42 | optional = false | ||
| 43 | python-versions = ">=3.7" | ||
| 44 | files = [ | ||
| 45 | {file = "humanize-4.6.0-py3-none-any.whl", hash = "sha256:401201aca462749773f02920139f302450cb548b70489b9b4b92be39fe3c3c50"}, | ||
| 46 | {file = "humanize-4.6.0.tar.gz", hash = "sha256:5f1f22bc65911eb1a6ffe7659bd6598e33dcfeeb904eb16ee1e705a09bf75916"}, | ||
| 47 | ] | ||
| 48 | |||
| 49 | [package.extras] | ||
| 50 | tests = ["freezegun", "pytest", "pytest-cov"] | ||
| 51 | |||
| 52 | [[package]] | ||
| 53 | name = "log-symbols" | ||
| 54 | version = "0.0.14" | ||
| 55 | description = "Colored symbols for various log levels for Python" | ||
| 56 | category = "main" | ||
| 57 | optional = false | ||
| 58 | python-versions = "*" | ||
| 59 | files = [ | ||
| 60 | {file = "log_symbols-0.0.14-py3-none-any.whl", hash = "sha256:4952106ff8b605ab7d5081dd2c7e6ca7374584eff7086f499c06edd1ce56dcca"}, | ||
| 61 | {file = "log_symbols-0.0.14.tar.gz", hash = "sha256:cf0bbc6fe1a8e53f0d174a716bc625c4f87043cc21eb55dd8a740cfe22680556"}, | ||
| 62 | ] | ||
| 63 | |||
| 64 | [package.dependencies] | ||
| 65 | colorama = ">=0.3.9" | ||
| 66 | |||
| 67 | [[package]] | ||
| 68 | name = "pyprctl" | ||
| 69 | version = "0.1.3" | ||
| 70 | description = "An interface to Linux's prctl() syscall written in pure Python using ctypes." | ||
| 71 | category = "main" | ||
| 72 | optional = false | ||
| 73 | python-versions = ">=3.6" | ||
| 74 | files = [ | ||
| 75 | {file = "pyprctl-0.1.3-py3-none-any.whl", hash = "sha256:6302e5114f078fb33e5799835d0a69e2fc180bb6b28ad073515fa40c5272f1dd"}, | ||
| 76 | {file = "pyprctl-0.1.3.tar.gz", hash = "sha256:1fb54d3ab030ec02e4afc38fb9662d6634c12834e91ae7959de56a9c09f69c26"}, | ||
| 77 | ] | ||
| 78 | |||
| 79 | [[package]] | ||
| 80 | name = "python-dateutil" | ||
| 81 | version = "2.8.2" | ||
| 82 | description = "Extensions to the standard Python datetime module" | ||
| 83 | category = "main" | ||
| 84 | optional = false | ||
| 85 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" | ||
| 86 | files = [ | ||
| 87 | {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, | ||
| 88 | {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, | ||
| 89 | ] | ||
| 90 | |||
| 91 | [package.dependencies] | ||
| 92 | six = ">=1.5" | ||
| 93 | |||
| 94 | [[package]] | ||
| 95 | name = "python-unshare" | ||
| 96 | version = "0.2" | ||
| 97 | description = "Python bindings for the Linux unshare() syscall" | ||
| 98 | category = "main" | ||
| 99 | optional = false | ||
| 100 | python-versions = "*" | ||
| 101 | files = [ | ||
| 102 | {file = "python-unshare-0.2.tar.gz", hash = "sha256:f79b7de441b6c27930b775085a6a4fd2f378b628737aaaebc2a6c519023fd47a"}, | ||
| 103 | ] | ||
| 104 | |||
| 105 | [[package]] | ||
| 106 | name = "six" | ||
| 107 | version = "1.16.0" | ||
| 108 | description = "Python 2 and 3 compatibility utilities" | ||
| 109 | category = "main" | ||
| 110 | optional = false | ||
| 111 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" | ||
| 112 | files = [ | ||
| 113 | {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, | ||
| 114 | {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, | ||
| 115 | ] | ||
| 116 | |||
| 117 | [[package]] | ||
| 118 | name = "spinners" | ||
| 119 | version = "0.0.24" | ||
| 120 | description = "Spinners for terminals" | ||
| 121 | category = "main" | ||
| 122 | optional = false | ||
| 123 | python-versions = "*" | ||
| 124 | files = [ | ||
| 125 | {file = "spinners-0.0.24-py3-none-any.whl", hash = "sha256:2fa30d0b72c9650ad12bbe031c9943b8d441e41b4f5602b0ec977a19f3290e98"}, | ||
| 126 | {file = "spinners-0.0.24.tar.gz", hash = "sha256:1eb6aeb4781d72ab42ed8a01dcf20f3002bf50740d7154d12fb8c9769bf9e27f"}, | ||
| 127 | ] | ||
| 128 | |||
| 129 | [[package]] | ||
| 130 | name = "termcolor" | ||
| 131 | version = "2.2.0" | ||
| 132 | description = "ANSI color formatting for output in terminal" | ||
| 133 | category = "main" | ||
| 134 | optional = false | ||
| 135 | python-versions = ">=3.7" | ||
| 136 | files = [ | ||
| 137 | {file = "termcolor-2.2.0-py3-none-any.whl", hash = "sha256:91ddd848e7251200eac969846cbae2dacd7d71c2871e92733289e7e3666f48e7"}, | ||
| 138 | {file = "termcolor-2.2.0.tar.gz", hash = "sha256:dfc8ac3f350788f23b2947b3e6cfa5a53b630b612e6cd8965a015a776020b99a"}, | ||
| 139 | ] | ||
| 140 | |||
| 141 | [package.extras] | ||
| 142 | tests = ["pytest", "pytest-cov"] | ||
| 143 | |||
| 144 | [[package]] | ||
| 145 | name = "tqdm" | ||
| 146 | version = "4.65.0" | ||
| 147 | description = "Fast, Extensible Progress Meter" | ||
| 148 | category = "main" | ||
| 149 | optional = false | ||
| 150 | python-versions = ">=3.7" | ||
| 151 | files = [ | ||
| 152 | {file = "tqdm-4.65.0-py3-none-any.whl", hash = "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671"}, | ||
| 153 | {file = "tqdm-4.65.0.tar.gz", hash = "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5"}, | ||
| 154 | ] | ||
| 155 | |||
| 156 | [package.dependencies] | ||
| 157 | colorama = {version = "*", markers = "platform_system == \"Windows\""} | ||
| 158 | |||
| 159 | [package.extras] | ||
| 160 | dev = ["py-make (>=0.1.0)", "twine", "wheel"] | ||
| 161 | notebook = ["ipywidgets (>=6)"] | ||
| 162 | slack = ["slack-sdk"] | ||
| 163 | telegram = ["requests"] | ||
| 164 | |||
| 165 | [[package]] | ||
| 166 | name = "xdg" | ||
| 167 | version = "6.0.0" | ||
| 168 | description = "Variables defined by the XDG Base Directory Specification" | ||
| 169 | category = "main" | ||
| 170 | optional = false | ||
| 171 | python-versions = ">=3.7,<4.0" | ||
| 172 | files = [ | ||
| 173 | {file = "xdg-6.0.0-py3-none-any.whl", hash = "sha256:df3510755b4395157fc04fc3b02467c777f3b3ca383257397f09ab0d4c16f936"}, | ||
| 174 | {file = "xdg-6.0.0.tar.gz", hash = "sha256:24278094f2d45e846d1eb28a2ebb92d7b67fc0cab5249ee3ce88c95f649a1c92"}, | ||
| 175 | ] | ||
| 176 | |||
| 177 | [metadata] | ||
| 178 | lock-version = "2.0" | ||
| 179 | python-versions = ">=3.10.0,<3.12" | ||
| 180 | content-hash = "3c6b538852447a8f3ae34e1be122716d47e669a2b44f7c5d3d850e5d877353c7" | ||
diff --git a/modules/borgcopy/pyproject.toml b/modules/borgcopy/pyproject.toml index f3401ed2..d76d73c6 100644 --- a/modules/borgcopy/pyproject.toml +++ b/modules/borgcopy/pyproject.toml | |||
| @@ -1,22 +1,25 @@ | |||
| 1 | [tool.poetry] | 1 | [project] |
| 2 | name = "copy_borg" | 2 | name = "copy_borg" |
| 3 | version = "0.0.0" | 3 | version = "0.0.0" |
| 4 | authors = ["Gregor Kleen <gkleen@yggdrasil.li>"] | ||
| 5 | description = "" | 4 | description = "" |
| 5 | authors = [{ name = "Gregor Kleen", email = "gkleen@yggdrasil.li" }] | ||
| 6 | requires-python = "~=3.12" | ||
| 7 | dependencies = [ | ||
| 8 | "humanize>=4.6.0,<5", | ||
| 9 | "tqdm>=4.65.0,<5", | ||
| 10 | "python-dateutil>=2.8.2,<3", | ||
| 11 | "xdg>=6.0.0,<7", | ||
| 12 | "pyprctl>=0.1.3,<0.2", | ||
| 13 | "halo>=0.0.31,<0.0.32", | ||
| 14 | "unshare>=0.22", | ||
| 15 | ] | ||
| 6 | 16 | ||
| 7 | [tool.poetry.scripts] | 17 | [project.scripts] |
| 8 | copy_borg = "copy_borg.__main__:main" | 18 | copy_borg = "copy_borg.__main__:main" |
| 9 | 19 | ||
| 10 | [tool.poetry.dependencies] | ||
| 11 | python = ">=3.10.0,<3.12" | ||
| 12 | humanize = "^4.6.0" | ||
| 13 | tqdm = "^4.65.0" | ||
| 14 | python-dateutil = "^2.8.2" | ||
| 15 | xdg = "^6.0.0" | ||
| 16 | python-unshare = "^0.2" | ||
| 17 | pyprctl = "^0.1.3" | ||
| 18 | halo = "^0.0.31" | ||
| 19 | |||
| 20 | [build-system] | 20 | [build-system] |
| 21 | requires = ["poetry-core>=1.0.0"] | 21 | requires = ["hatchling"] |
| 22 | build-backend = "poetry.core.masonry.api" \ No newline at end of file | 22 | build-backend = "hatchling.build" |
| 23 | |||
| 24 | [tool.hatch.build.targets.wheel] | ||
| 25 | packages = ["copy_borg"] | ||
diff --git a/modules/borgcopy/uv.lock b/modules/borgcopy/uv.lock new file mode 100644 index 00000000..1a282598 --- /dev/null +++ b/modules/borgcopy/uv.lock | |||
| @@ -0,0 +1,146 @@ | |||
| 1 | version = 1 | ||
| 2 | revision = 2 | ||
| 3 | requires-python = ">=3.12, <4" | ||
| 4 | |||
| 5 | [[package]] | ||
| 6 | name = "colorama" | ||
| 7 | version = "0.4.6" | ||
| 8 | source = { registry = "https://pypi.org/simple" } | ||
| 9 | sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } | ||
| 10 | wheels = [ | ||
| 11 | { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, | ||
| 12 | ] | ||
| 13 | |||
| 14 | [[package]] | ||
| 15 | name = "copy-borg" | ||
| 16 | version = "0.0.0" | ||
| 17 | source = { editable = "." } | ||
| 18 | dependencies = [ | ||
| 19 | { name = "halo" }, | ||
| 20 | { name = "humanize" }, | ||
| 21 | { name = "pyprctl" }, | ||
| 22 | { name = "python-dateutil" }, | ||
| 23 | { name = "tqdm" }, | ||
| 24 | { name = "unshare" }, | ||
| 25 | { name = "xdg" }, | ||
| 26 | ] | ||
| 27 | |||
| 28 | [package.metadata] | ||
| 29 | requires-dist = [ | ||
| 30 | { name = "halo", specifier = ">=0.0.31,<0.0.32" }, | ||
| 31 | { name = "humanize", specifier = ">=4.6.0,<5" }, | ||
| 32 | { name = "pyprctl", specifier = ">=0.1.3,<0.2" }, | ||
| 33 | { name = "python-dateutil", specifier = ">=2.8.2,<3" }, | ||
| 34 | { name = "tqdm", specifier = ">=4.65.0,<5" }, | ||
| 35 | { name = "unshare", specifier = ">=0.22" }, | ||
| 36 | { name = "xdg", specifier = ">=6.0.0,<7" }, | ||
| 37 | ] | ||
| 38 | |||
| 39 | [[package]] | ||
| 40 | name = "halo" | ||
| 41 | version = "0.0.31" | ||
| 42 | source = { registry = "https://pypi.org/simple" } | ||
| 43 | dependencies = [ | ||
| 44 | { name = "colorama" }, | ||
| 45 | { name = "log-symbols" }, | ||
| 46 | { name = "six" }, | ||
| 47 | { name = "spinners" }, | ||
| 48 | { name = "termcolor" }, | ||
| 49 | ] | ||
| 50 | sdist = { url = "https://files.pythonhosted.org/packages/ee/48/d53580d30b1fabf25d0d1fcc3f5b26d08d2ac75a1890ff6d262f9f027436/halo-0.0.31.tar.gz", hash = "sha256:7b67a3521ee91d53b7152d4ee3452811e1d2a6321975137762eb3d70063cc9d6", size = 11666, upload-time = "2020-11-10T02:36:48.335Z" } | ||
| 51 | |||
| 52 | [[package]] | ||
| 53 | name = "humanize" | ||
| 54 | version = "4.12.3" | ||
| 55 | source = { registry = "https://pypi.org/simple" } | ||
| 56 | sdist = { url = "https://files.pythonhosted.org/packages/22/d1/bbc4d251187a43f69844f7fd8941426549bbe4723e8ff0a7441796b0789f/humanize-4.12.3.tar.gz", hash = "sha256:8430be3a615106fdfceb0b2c1b41c4c98c6b0fc5cc59663a5539b111dd325fb0", size = 80514, upload-time = "2025-04-30T11:51:07.98Z" } | ||
| 57 | wheels = [ | ||
| 58 | { url = "https://files.pythonhosted.org/packages/a0/1e/62a2ec3104394a2975a2629eec89276ede9dbe717092f6966fcf963e1bf0/humanize-4.12.3-py3-none-any.whl", hash = "sha256:2cbf6370af06568fa6d2da77c86edb7886f3160ecd19ee1ffef07979efc597f6", size = 128487, upload-time = "2025-04-30T11:51:06.468Z" }, | ||
| 59 | ] | ||
| 60 | |||
| 61 | [[package]] | ||
| 62 | name = "log-symbols" | ||
| 63 | version = "0.0.14" | ||
| 64 | source = { registry = "https://pypi.org/simple" } | ||
| 65 | dependencies = [ | ||
| 66 | { name = "colorama" }, | ||
| 67 | ] | ||
| 68 | sdist = { url = "https://files.pythonhosted.org/packages/45/87/e86645d758a4401c8c81914b6a88470634d1785c9ad09823fa4a1bd89250/log_symbols-0.0.14.tar.gz", hash = "sha256:cf0bbc6fe1a8e53f0d174a716bc625c4f87043cc21eb55dd8a740cfe22680556", size = 3211, upload-time = "2019-08-08T06:32:22.538Z" } | ||
| 69 | wheels = [ | ||
| 70 | { url = "https://files.pythonhosted.org/packages/28/5d/d710c38be68b0fb54e645048fe359c3904cc3cb64b2de9d40e1712bf110c/log_symbols-0.0.14-py3-none-any.whl", hash = "sha256:4952106ff8b605ab7d5081dd2c7e6ca7374584eff7086f499c06edd1ce56dcca", size = 3081, upload-time = "2019-08-08T06:32:20.604Z" }, | ||
| 71 | ] | ||
| 72 | |||
| 73 | [[package]] | ||
| 74 | name = "pyprctl" | ||
| 75 | version = "0.1.3" | ||
| 76 | source = { registry = "https://pypi.org/simple" } | ||
| 77 | sdist = { url = "https://files.pythonhosted.org/packages/c9/16/6ed71ebcad76c1cd5f22185bcc6b31c0ee62fc5e693b626febea8fedeba3/pyprctl-0.1.3.tar.gz", hash = "sha256:1fb54d3ab030ec02e4afc38fb9662d6634c12834e91ae7959de56a9c09f69c26", size = 18739, upload-time = "2021-10-26T23:52:03.87Z" } | ||
| 78 | wheels = [ | ||
| 79 | { url = "https://files.pythonhosted.org/packages/bf/5e/62765de39bbce8111fb1f4453a4a804913bf49179fa265fb713ed66c9d15/pyprctl-0.1.3-py3-none-any.whl", hash = "sha256:6302e5114f078fb33e5799835d0a69e2fc180bb6b28ad073515fa40c5272f1dd", size = 20016, upload-time = "2021-10-26T23:52:02.986Z" }, | ||
| 80 | ] | ||
| 81 | |||
| 82 | [[package]] | ||
| 83 | name = "python-dateutil" | ||
| 84 | version = "2.9.0.post0" | ||
| 85 | source = { registry = "https://pypi.org/simple" } | ||
| 86 | dependencies = [ | ||
| 87 | { name = "six" }, | ||
| 88 | ] | ||
| 89 | sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } | ||
| 90 | wheels = [ | ||
| 91 | { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, | ||
| 92 | ] | ||
| 93 | |||
| 94 | [[package]] | ||
| 95 | name = "six" | ||
| 96 | version = "1.17.0" | ||
| 97 | source = { registry = "https://pypi.org/simple" } | ||
| 98 | sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } | ||
| 99 | wheels = [ | ||
| 100 | { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, | ||
| 101 | ] | ||
| 102 | |||
| 103 | [[package]] | ||
| 104 | name = "spinners" | ||
| 105 | version = "0.0.24" | ||
| 106 | source = { registry = "https://pypi.org/simple" } | ||
| 107 | sdist = { url = "https://files.pythonhosted.org/packages/d3/91/bb331f0a43e04d950a710f402a0986a54147a35818df0e1658551c8d12e1/spinners-0.0.24.tar.gz", hash = "sha256:1eb6aeb4781d72ab42ed8a01dcf20f3002bf50740d7154d12fb8c9769bf9e27f", size = 5308, upload-time = "2020-02-19T21:42:32.326Z" } | ||
| 108 | wheels = [ | ||
| 109 | { url = "https://files.pythonhosted.org/packages/9f/8e/3310207a68118000ca27ac878b8386123628b335ecb3d4bec4743357f0d1/spinners-0.0.24-py3-none-any.whl", hash = "sha256:2fa30d0b72c9650ad12bbe031c9943b8d441e41b4f5602b0ec977a19f3290e98", size = 5499, upload-time = "2020-02-19T21:42:30.876Z" }, | ||
| 110 | ] | ||
| 111 | |||
| 112 | [[package]] | ||
| 113 | name = "termcolor" | ||
| 114 | version = "3.1.0" | ||
| 115 | source = { registry = "https://pypi.org/simple" } | ||
| 116 | sdist = { url = "https://files.pythonhosted.org/packages/ca/6c/3d75c196ac07ac8749600b60b03f4f6094d54e132c4d94ebac6ee0e0add0/termcolor-3.1.0.tar.gz", hash = "sha256:6a6dd7fbee581909eeec6a756cff1d7f7c376063b14e4a298dc4980309e55970", size = 14324, upload-time = "2025-04-30T11:37:53.791Z" } | ||
| 117 | wheels = [ | ||
| 118 | { url = "https://files.pythonhosted.org/packages/4f/bd/de8d508070629b6d84a30d01d57e4a65c69aa7f5abe7560b8fad3b50ea59/termcolor-3.1.0-py3-none-any.whl", hash = "sha256:591dd26b5c2ce03b9e43f391264626557873ce1d379019786f99b0c2bee140aa", size = 7684, upload-time = "2025-04-30T11:37:52.382Z" }, | ||
| 119 | ] | ||
| 120 | |||
| 121 | [[package]] | ||
| 122 | name = "tqdm" | ||
| 123 | version = "4.67.1" | ||
| 124 | source = { registry = "https://pypi.org/simple" } | ||
| 125 | dependencies = [ | ||
| 126 | { name = "colorama", marker = "sys_platform == 'win32'" }, | ||
| 127 | ] | ||
| 128 | sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } | ||
| 129 | wheels = [ | ||
| 130 | { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, | ||
| 131 | ] | ||
| 132 | |||
| 133 | [[package]] | ||
| 134 | name = "unshare" | ||
| 135 | version = "0.22" | ||
| 136 | source = { registry = "https://pypi.org/simple" } | ||
| 137 | sdist = { url = "https://files.pythonhosted.org/packages/15/85/2ba218129c95b894efe87506489b525f859c40f6e21cb0521ff3cec754f4/unshare-0.22.tar.gz", hash = "sha256:d521d72cca6e876f22cbd5ff5eb51f1beef75e8f9c53b599b55fa05fba1dd3a6", size = 2041, upload-time = "2019-10-17T12:58:31.498Z" } | ||
| 138 | |||
| 139 | [[package]] | ||
| 140 | name = "xdg" | ||
| 141 | version = "6.0.0" | ||
| 142 | source = { registry = "https://pypi.org/simple" } | ||
| 143 | sdist = { url = "https://files.pythonhosted.org/packages/2a/b9/0e6e6f19fb75cf5e1758f4f33c1256738f718966700cffc0fde2f966218b/xdg-6.0.0.tar.gz", hash = "sha256:24278094f2d45e846d1eb28a2ebb92d7b67fc0cab5249ee3ce88c95f649a1c92", size = 3453, upload-time = "2023-02-27T19:27:44.309Z" } | ||
| 144 | wheels = [ | ||
| 145 | { url = "https://files.pythonhosted.org/packages/dd/54/3516c1cf349060fc3578686d271eba242f10ec00b4530c2985af9faac49b/xdg-6.0.0-py3-none-any.whl", hash = "sha256:df3510755b4395157fc04fc3b02467c777f3b3ca383257397f09ab0d4c16f936", size = 3855, upload-time = "2023-02-27T19:27:42.151Z" }, | ||
| 146 | ] | ||
diff --git a/modules/llvm_kernel.nix b/modules/llvm_kernel.nix new file mode 100644 index 00000000..71d96320 --- /dev/null +++ b/modules/llvm_kernel.nix | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | { config, pkgs, lib, ... }: | ||
| 2 | let | ||
| 3 | cfg = config.boot.kernel.llvm; | ||
| 4 | in { | ||
| 5 | options = { | ||
| 6 | boot.kernel.llvm = { | ||
| 7 | enable = lib.mkEnableOption "building linux kernel with clang/LLVM" // { | ||
| 8 | default = true; | ||
| 9 | }; | ||
| 10 | |||
| 11 | kernel = lib.mkPackageOption pkgs [ "linuxKernel" "kernels" "linux_default" ] {}; | ||
| 12 | }; | ||
| 13 | }; | ||
| 14 | |||
| 15 | config = lib.mkIf cfg.enable { | ||
| 16 | boot.kernelPackages = | ||
| 17 | with pkgs; # Cut down on repeated `pkgs.` declarations | ||
| 18 | let | ||
| 19 | # Choose whichever LLVM version you please. `llvmPackages` is the | ||
| 20 | # default version, `llvmPackages_latest` is the latest (at the time of | ||
| 21 | # writing, LLVM 17.0.6 and 18.1.8 respectively). | ||
| 22 | llvm = llvmPackages_latest; | ||
| 23 | # Same deal as LLVM; choose whichever kernel version you like. | ||
| 24 | # `linux` is the latest LTS, `linux_latest` is the latest stable. | ||
| 25 | inherit (cfg) kernel; | ||
| 26 | in | ||
| 27 | # Generate kernel modules for our custom kernel. | ||
| 28 | linuxPackagesFor ( | ||
| 29 | # Override our chosen kernel version with our custom settings. | ||
| 30 | (kernel.override { | ||
| 31 | # Set our chosen version of LLVM as our standard environment. | ||
| 32 | stdenv = overrideCC llvm.stdenv ( | ||
| 33 | # Tell our C compiler (Clang) to use LLVM bintools--normally GNU | ||
| 34 | # binutils are used even with Clang as the compiler. | ||
| 35 | llvm.stdenv.cc.override { | ||
| 36 | bintools = llvm.bintools; | ||
| 37 | } | ||
| 38 | ); | ||
| 39 | |||
| 40 | # Tell Linux that we're compiling with Clang and LLVM. | ||
| 41 | extraMakeFlags = [ "LLVM=1" ]; | ||
| 42 | |||
| 43 | # If you'd like to edit your kernel configuration, use | ||
| 44 | # `structuredExtraConfig`. For example, some options available to us | ||
| 45 | # when compiling with Clang and linking with LLD: | ||
| 46 | structuredExtraConfig = { | ||
| 47 | CFI_CLANG = lib.kernel.yes; | ||
| 48 | # LTO_CLANG_THIN = lib.kernel.yes; | ||
| 49 | }; | ||
| 50 | } | ||
| 51 | ).overrideAttrs | ||
| 52 | # Work around another NixOS specific issue where builds with WERROR=y | ||
| 53 | # are stopped by a benign error. See reference 1 below for details. | ||
| 54 | # Technically, this fix is only necessary with WERROR=y but the issue | ||
| 55 | # still causes a warning on builds where WERROR is unset. | ||
| 56 | { env.NIX_CFLAGS_COMPILE = "-Wno-unused-command-line-argument"; } | ||
| 57 | ); | ||
| 58 | }; | ||
| 59 | } | ||
