Created
February 14, 2025 15:55
-
-
Save gjz010/ff063e25a7741e73173cf284ea0054d9 to your computer and use it in GitHub Desktop.
Python devenv
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then | |
| source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" | |
| fi | |
| watch_file flake.nix | |
| watch_file flake.lock | |
| watch_file python.nix | |
| watch_file rust.nix | |
| DEVENV_ROOT_FILE="$(mktemp)" | |
| printf %s "$PWD" > "$DEVENV_ROOT_FILE" | |
| if ! use flake . --override-input devenv-root "file+file://$DEVENV_ROOT_FILE" | |
| then | |
| echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2 | |
| fi |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nodes": { | |
| "cachix": { | |
| "inputs": { | |
| "devenv": [ | |
| "devenv" | |
| ], | |
| "flake-compat": [ | |
| "devenv" | |
| ], | |
| "git-hooks": [ | |
| "devenv" | |
| ], | |
| "nixpkgs": "nixpkgs" | |
| }, | |
| "locked": { | |
| "lastModified": 1728672398, | |
| "narHash": "sha256-KxuGSoVUFnQLB2ZcYODW7AVPAh9JqRlD5BrfsC/Q4qs=", | |
| "owner": "cachix", | |
| "repo": "cachix", | |
| "rev": "aac51f698309fd0f381149214b7eee213c66ef0a", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "cachix", | |
| "ref": "latest", | |
| "repo": "cachix", | |
| "type": "github" | |
| } | |
| }, | |
| "devenv": { | |
| "inputs": { | |
| "cachix": "cachix", | |
| "flake-compat": "flake-compat", | |
| "git-hooks": "git-hooks", | |
| "nix": "nix", | |
| "nixpkgs": "nixpkgs_3" | |
| }, | |
| "locked": { | |
| "lastModified": 1733788855, | |
| "narHash": "sha256-sGn4o9KFoGRSWDQlBKpv8dkNQ2/ODS9APopZD1/FP2Y=", | |
| "owner": "cachix", | |
| "repo": "devenv", | |
| "rev": "d59fee8696cd48f69cf79f65992269df9891ba86", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "cachix", | |
| "repo": "devenv", | |
| "type": "github" | |
| } | |
| }, | |
| "devenv-root": { | |
| "flake": false, | |
| "locked": { | |
| "narHash": "sha256-d6xi4mKdjkX2JFicDIv5niSzpyI0m/Hnm8GGAIU04kY=", | |
| "type": "file", | |
| "url": "file:///dev/null" | |
| }, | |
| "original": { | |
| "type": "file", | |
| "url": "file:///dev/null" | |
| } | |
| }, | |
| "fenix": { | |
| "inputs": { | |
| "nixpkgs": [ | |
| "nixpkgs" | |
| ], | |
| "rust-analyzer-src": "rust-analyzer-src" | |
| }, | |
| "locked": { | |
| "lastModified": 1733899011, | |
| "narHash": "sha256-SpHdn/wQ1Y4YfpJ2WJBT+nFFMSDTtbQPtgFidonsiv0=", | |
| "owner": "nix-community", | |
| "repo": "fenix", | |
| "rev": "24b76cc6d5bebb01947ae7a3e6ac894239abc7be", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "nix-community", | |
| "repo": "fenix", | |
| "type": "github" | |
| } | |
| }, | |
| "flake-compat": { | |
| "flake": false, | |
| "locked": { | |
| "lastModified": 1696426674, | |
| "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", | |
| "owner": "edolstra", | |
| "repo": "flake-compat", | |
| "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "edolstra", | |
| "repo": "flake-compat", | |
| "type": "github" | |
| } | |
| }, | |
| "flake-parts": { | |
| "inputs": { | |
| "nixpkgs-lib": [ | |
| "devenv", | |
| "nix", | |
| "nixpkgs" | |
| ] | |
| }, | |
| "locked": { | |
| "lastModified": 1712014858, | |
| "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", | |
| "owner": "hercules-ci", | |
| "repo": "flake-parts", | |
| "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "hercules-ci", | |
| "repo": "flake-parts", | |
| "type": "github" | |
| } | |
| }, | |
| "flake-parts_2": { | |
| "inputs": { | |
| "nixpkgs-lib": "nixpkgs-lib" | |
| }, | |
| "locked": { | |
| "lastModified": 1733312601, | |
| "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", | |
| "owner": "hercules-ci", | |
| "repo": "flake-parts", | |
| "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "hercules-ci", | |
| "repo": "flake-parts", | |
| "type": "github" | |
| } | |
| }, | |
| "flake-utils": { | |
| "inputs": { | |
| "systems": "systems" | |
| }, | |
| "locked": { | |
| "lastModified": 1710146030, | |
| "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", | |
| "owner": "numtide", | |
| "repo": "flake-utils", | |
| "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "numtide", | |
| "repo": "flake-utils", | |
| "type": "github" | |
| } | |
| }, | |
| "git-hooks": { | |
| "inputs": { | |
| "flake-compat": [ | |
| "devenv" | |
| ], | |
| "gitignore": "gitignore", | |
| "nixpkgs": [ | |
| "devenv", | |
| "nixpkgs" | |
| ], | |
| "nixpkgs-stable": [ | |
| "devenv" | |
| ] | |
| }, | |
| "locked": { | |
| "lastModified": 1730302582, | |
| "narHash": "sha256-W1MIJpADXQCgosJZT8qBYLRuZls2KSiKdpnTVdKBuvU=", | |
| "owner": "cachix", | |
| "repo": "git-hooks.nix", | |
| "rev": "af8a16fe5c264f5e9e18bcee2859b40a656876cf", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "cachix", | |
| "repo": "git-hooks.nix", | |
| "type": "github" | |
| } | |
| }, | |
| "gitignore": { | |
| "inputs": { | |
| "nixpkgs": [ | |
| "devenv", | |
| "git-hooks", | |
| "nixpkgs" | |
| ] | |
| }, | |
| "locked": { | |
| "lastModified": 1709087332, | |
| "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", | |
| "owner": "hercules-ci", | |
| "repo": "gitignore.nix", | |
| "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "hercules-ci", | |
| "repo": "gitignore.nix", | |
| "type": "github" | |
| } | |
| }, | |
| "libgit2": { | |
| "flake": false, | |
| "locked": { | |
| "lastModified": 1697646580, | |
| "narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=", | |
| "owner": "libgit2", | |
| "repo": "libgit2", | |
| "rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "libgit2", | |
| "repo": "libgit2", | |
| "type": "github" | |
| } | |
| }, | |
| "mk-shell-bin": { | |
| "locked": { | |
| "lastModified": 1677004959, | |
| "narHash": "sha256-/uEkr1UkJrh11vD02aqufCxtbF5YnhRTIKlx5kyvf+I=", | |
| "owner": "rrbutani", | |
| "repo": "nix-mk-shell-bin", | |
| "rev": "ff5d8bd4d68a347be5042e2f16caee391cd75887", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "rrbutani", | |
| "repo": "nix-mk-shell-bin", | |
| "type": "github" | |
| } | |
| }, | |
| "nix": { | |
| "inputs": { | |
| "flake-compat": [ | |
| "devenv" | |
| ], | |
| "flake-parts": "flake-parts", | |
| "libgit2": "libgit2", | |
| "nixpkgs": "nixpkgs_2", | |
| "nixpkgs-23-11": [ | |
| "devenv" | |
| ], | |
| "nixpkgs-regression": [ | |
| "devenv" | |
| ], | |
| "pre-commit-hooks": [ | |
| "devenv" | |
| ] | |
| }, | |
| "locked": { | |
| "lastModified": 1727438425, | |
| "narHash": "sha256-X8ES7I1cfNhR9oKp06F6ir4Np70WGZU5sfCOuNBEwMg=", | |
| "owner": "domenkozar", | |
| "repo": "nix", | |
| "rev": "f6c5ae4c1b2e411e6b1e6a8181cc84363d6a7546", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "domenkozar", | |
| "ref": "devenv-2.24", | |
| "repo": "nix", | |
| "type": "github" | |
| } | |
| }, | |
| "nix2container": { | |
| "inputs": { | |
| "flake-utils": "flake-utils", | |
| "nixpkgs": [ | |
| "nixpkgs" | |
| ] | |
| }, | |
| "locked": { | |
| "lastModified": 1730479402, | |
| "narHash": "sha256-79NLeNjpCa4mSasmFsE3QA6obURezF0TUO5Pm+1daog=", | |
| "owner": "nlewo", | |
| "repo": "nix2container", | |
| "rev": "5fb215a1564baa74ce04ad7f903d94ad6617e17a", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "nlewo", | |
| "repo": "nix2container", | |
| "type": "github" | |
| } | |
| }, | |
| "nixpkgs": { | |
| "locked": { | |
| "lastModified": 1730531603, | |
| "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=", | |
| "owner": "NixOS", | |
| "repo": "nixpkgs", | |
| "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "NixOS", | |
| "ref": "nixos-unstable", | |
| "repo": "nixpkgs", | |
| "type": "github" | |
| } | |
| }, | |
| "nixpkgs-lib": { | |
| "locked": { | |
| "lastModified": 1733096140, | |
| "narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=", | |
| "type": "tarball", | |
| "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" | |
| }, | |
| "original": { | |
| "type": "tarball", | |
| "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" | |
| } | |
| }, | |
| "nixpkgs_2": { | |
| "locked": { | |
| "lastModified": 1717432640, | |
| "narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=", | |
| "owner": "NixOS", | |
| "repo": "nixpkgs", | |
| "rev": "88269ab3044128b7c2f4c7d68448b2fb50456870", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "NixOS", | |
| "ref": "release-24.05", | |
| "repo": "nixpkgs", | |
| "type": "github" | |
| } | |
| }, | |
| "nixpkgs_3": { | |
| "locked": { | |
| "lastModified": 1716977621, | |
| "narHash": "sha256-Q1UQzYcMJH4RscmpTkjlgqQDX5yi1tZL0O345Ri6vXQ=", | |
| "owner": "cachix", | |
| "repo": "devenv-nixpkgs", | |
| "rev": "4267e705586473d3e5c8d50299e71503f16a6fb6", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "cachix", | |
| "ref": "rolling", | |
| "repo": "devenv-nixpkgs", | |
| "type": "github" | |
| } | |
| }, | |
| "nixpkgs_4": { | |
| "locked": { | |
| "lastModified": 1739446958, | |
| "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", | |
| "owner": "NixOS", | |
| "repo": "nixpkgs", | |
| "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "NixOS", | |
| "ref": "nixos-unstable", | |
| "repo": "nixpkgs", | |
| "type": "github" | |
| } | |
| }, | |
| "root": { | |
| "inputs": { | |
| "devenv": "devenv", | |
| "devenv-root": "devenv-root", | |
| "fenix": "fenix", | |
| "flake-parts": "flake-parts_2", | |
| "mk-shell-bin": "mk-shell-bin", | |
| "nix2container": "nix2container", | |
| "nixpkgs": "nixpkgs_4" | |
| } | |
| }, | |
| "rust-analyzer-src": { | |
| "flake": false, | |
| "locked": { | |
| "lastModified": 1733814336, | |
| "narHash": "sha256-xKttEMfuf2hzcdiNQucxkvW2vCUe5e9HyfPntOcBSq0=", | |
| "owner": "rust-lang", | |
| "repo": "rust-analyzer", | |
| "rev": "7b4b83ba916800dfa4b4776790fdf6771c22f82e", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "rust-lang", | |
| "ref": "nightly", | |
| "repo": "rust-analyzer", | |
| "type": "github" | |
| } | |
| }, | |
| "systems": { | |
| "locked": { | |
| "lastModified": 1681028828, | |
| "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | |
| "owner": "nix-systems", | |
| "repo": "default", | |
| "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | |
| "type": "github" | |
| }, | |
| "original": { | |
| "owner": "nix-systems", | |
| "repo": "default", | |
| "type": "github" | |
| } | |
| } | |
| }, | |
| "root": "root", | |
| "version": 7 | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| description = "Description for the project"; | |
| inputs = { | |
| devenv-root = { | |
| url = "file+file:///dev/null"; | |
| flake = false; | |
| }; | |
| flake-parts.url = "github:hercules-ci/flake-parts"; | |
| nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; | |
| devenv.url = "github:cachix/devenv"; | |
| nix2container.url = "github:nlewo/nix2container"; | |
| nix2container.inputs.nixpkgs.follows = "nixpkgs"; | |
| mk-shell-bin.url = "github:rrbutani/nix-mk-shell-bin"; | |
| fenix.url = "github:nix-community/fenix"; | |
| fenix.inputs = { | |
| nixpkgs.follows = "nixpkgs"; | |
| }; | |
| }; | |
| nixConfig = { | |
| extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="; | |
| extra-substituters = "https://devenv.cachix.org"; | |
| }; | |
| outputs = | |
| inputs@{ flake-parts, devenv-root, ... }: | |
| flake-parts.lib.mkFlake { inherit inputs; } { | |
| imports = [ | |
| inputs.devenv.flakeModule | |
| ]; | |
| systems = [ "x86_64-linux" ]; | |
| perSystem = | |
| { | |
| config, | |
| self', | |
| inputs', | |
| pkgs, | |
| system, | |
| ... | |
| }: | |
| { | |
| # Per-system attributes can be defined here. The self' and inputs' | |
| # module parameters provide easy access to attributes of the same | |
| # system. | |
| # Equivalent to inputs'.nixpkgs.legacyPackages.hello; | |
| packages.default = pkgs.hello; | |
| devenv.shells.default = { | |
| devenv.root = | |
| let | |
| devenvRootFileContent = builtins.readFile devenv-root.outPath; | |
| in | |
| pkgs.lib.mkIf (devenvRootFileContent != "") devenvRootFileContent; | |
| name = "my-project"; | |
| imports = [ | |
| ( | |
| { | |
| config, | |
| lib, | |
| pkgs, | |
| ... | |
| }: | |
| { | |
| languages.python.enable = true; | |
| languages.python.venv.enable = true; | |
| languages.python.package = pkgs.python310; | |
| # https://github.com/cachix/devenv/issues/1264 | |
| env = { | |
| LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ | |
| pkgs.stdenv.cc.cc | |
| pkgs.zlib | |
| pkgs.zstd | |
| pkgs.libGL | |
| pkgs.glib | |
| ]; | |
| }; | |
| } | |
| ) | |
| ]; | |
| # https://devenv.sh/reference/options/ | |
| packages = [ | |
| config.packages.default | |
| pkgs.gitFull | |
| pkgs.nixfmt-rfc-style | |
| ]; | |
| }; | |
| }; | |
| flake = | |
| { | |
| }; | |
| }; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment