diff --git a/flake.lock b/flake.lock index fffaf8d9..e7360359 100644 --- a/flake.lock +++ b/flake.lock @@ -486,6 +486,24 @@ "type": "github" } }, + "flake-utils_4": { + "inputs": { + "systems": "systems_5" + }, + "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-lfs-transfer": { "flake": false, "locked": { @@ -819,6 +837,27 @@ "type": "github" } }, + "nix-github-actions_2": { + "inputs": { + "nixpkgs": [ + "poetry2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703863825, + "narHash": "sha256-rXwqjtwiGKJheXB43ybM8NwWB8rO2dSRrEqes0S7F5Y=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "5163432afc817cf8bd1f031418d1869e4c9d5547", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, "nix-index-database": { "inputs": { "nixpkgs": [ @@ -1226,6 +1265,30 @@ "type": "github" } }, + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils_4", + "nix-github-actions": "nix-github-actions_2", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_6", + "treefmt-nix": "treefmt-nix_5" + }, + "locked": { + "lastModified": 1725358301, + "narHash": "sha256-clY4INR7RjOVKya3FGNYvOhyFyUhd3dGQsnV2Za3rz0=", + "owner": "CHN-beta", + "repo": "poetry2nix", + "rev": "1f803d2b2faa5b785dfd2fafe99b2411731bf08c", + "type": "github" + }, + "original": { + "owner": "CHN-beta", + "repo": "poetry2nix", + "type": "github" + } + }, "pre-commit-hooks-nix": { "inputs": { "flake-compat": "flake-compat_5", @@ -1250,6 +1313,22 @@ "type": "github" } }, + "py4vasp": { + "flake": false, + "locked": { + "lastModified": 1718736886, + "narHash": "sha256-uAKhxPwiI3glSKMfynDIUrXQ7s2sfKw/PGVNoP40y00=", + "owner": "vasp-dev", + "repo": "py4vasp", + "rev": "661b9efed3824b36e67c559f4120b5ecfd231bce", + "type": "github" + }, + "original": { + "owner": "vasp-dev", + "repo": "py4vasp", + "type": "github" + } + }, "qchem": { "inputs": { "nixpkgs": [ @@ -1314,6 +1393,8 @@ "nur-xddxdd": "nur-xddxdd", "openxlsx": "openxlsx", "plasma-manager": "plasma-manager", + "poetry2nix": "poetry2nix", + "py4vasp": "py4vasp", "qchem": "qchem", "rsshub": "rsshub", "rycee": "rycee", @@ -1507,6 +1588,35 @@ "type": "github" } }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "id": "systems", + "type": "indirect" + } + }, "tgbot-cpp": { "flake": false, "locked": { @@ -1607,6 +1717,27 @@ "type": "github" } }, + "treefmt-nix_5": { + "inputs": { + "nixpkgs": [ + "poetry2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1719749022, + "narHash": "sha256-ddPKHcqaKCIFSFc/cvxS14goUhCOAwsM1PbMr0ZtHMg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "8df5ff62195d4e67e2264df0b7f5e8c9995fd0bd", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "v-sim": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 86ba7dd7..880deb0c 100644 --- a/flake.nix +++ b/flake.nix @@ -38,6 +38,7 @@ gricad = { url = "github:Gricad/nur-packages"; flake = false; }; catppuccin.url = "github:catppuccin/nix"; bscpkgs = { url = "git+https://pm.bsc.es/gitlab/rarias/bscpkgs.git"; inputs.nixpkgs.follows = "nixpkgs"; }; + poetry2nix = { url = "github:CHN-beta/poetry2nix"; inputs.nixpkgs.follows = "nixpkgs"; }; misskey = { url = "git+https://github.com/CHN-beta/misskey?submodules=1"; flake = false; }; rsshub = { url = "github:DIYgod/RSSHub"; flake = false; }; @@ -68,6 +69,7 @@ nc4nix = { url = "github:helsinki-systems/nc4nix"; flake = false; }; hextra = { url = "github:imfing/hextra"; flake = false; }; nu-scripts = { url = "github:nushell/nu_scripts"; flake = false; }; + py4vasp = { url = "github:vasp-dev/py4vasp"; flake = false; }; # does not support lfs yet # nixos-wallpaper = { url = "git+https://git.chn.moe/chn/nixos-wallpaper.git"; flake = false; }; diff --git a/modules/default.nix b/modules/default.nix index 82cd935e..7b696c76 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -25,6 +25,7 @@ inputs: topInputs.qchem.overlays.default topInputs.aagl.overlays.default topInputs.bscpkgs.overlays.default + topInputs.poetry2nix.overlays.default (final: prev: { nix-vscode-extensions = topInputs.nix-vscode-extensions.extensions."${prev.system}"; diff --git a/modules/packages/desktop/default.nix b/modules/packages/desktop/default.nix index f31e50c2..b040f74a 100644 --- a/modules/packages/desktop/default.nix +++ b/modules/packages/desktop/default.nix @@ -70,7 +70,7 @@ inputs: davinci-resolve texliveFull # math, physics and chemistry - octaveFull root ovito localPackages.vesta localPackages.vaspkit localPackages.v-sim + octaveFull root ovito localPackages.vesta localPackages.v-sim (mathematica.overrideAttrs (prev: { postInstall = prev.postInstall or "" + "ln -s ${src} $out/src"; })) (quantum-espresso.override { stdenv = gcc14Stdenv; gfortran = gfortran14; }) jmol mpi # virtualization diff --git a/modules/packages/vasp.nix b/modules/packages/vasp.nix index 0dfdb4d2..8612ef92 100644 --- a/modules/packages/vasp.nix +++ b/modules/packages/vasp.nix @@ -8,7 +8,7 @@ inputs: # TODO: add more options to correctly configure VASP config = let inherit (inputs.config.nixos.packages) vasp; in inputs.lib.mkIf (vasp != null) { - nixos.packages.packages._packages = inputs.lib.optionals (inputs.config.nixos.system.nixpkgs.march != null) - (with inputs.pkgs.localPackages.vasp; [ intel nvidia vtstscripts ]); + nixos.packages.packages._packages = (with inputs.pkgs.localPackages.vasp; [ intel nvidia vtstscripts ]) + ++ (with inputs.pkgs.localPackages; [ py4vasp vaspkit ]); }; } diff --git a/packages/default.nix b/packages/default.nix index 47c8facc..f9f1dce0 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -81,6 +81,7 @@ inputs: rec winjob = inputs.pkgs.callPackage ./winjob { stdenv = inputs.pkgs.gcc14Stdenv; }; sockpp = inputs.pkgs.callPackage ./sockpp.nix { src = inputs.topInputs.sockpp; }; git-lfs-transfer = inputs.pkgs.callPackage ./git-lfs-transfer.nix { src = inputs.topInputs.git-lfs-transfer; }; + py4vasp = inputs.pkgs.callPackage ./py4vasp.nix { src = inputs.topInputs.py4vasp; }; fromYaml = content: builtins.fromJSON (builtins.readFile (inputs.pkgs.runCommand "toJSON" {} diff --git a/packages/py4vasp.nix b/packages/py4vasp.nix new file mode 100644 index 00000000..d2dbc0ab --- /dev/null +++ b/packages/py4vasp.nix @@ -0,0 +1,5 @@ +{ src, poetry2nix, runCommand }: +let + package = poetry2nix.mkPoetryApplication { projectDir = src; }; + python = package.python.withPackages (p: [ package p.mdtraj ]); +in runCommand "py4vasp" {} "mkdir -p $out/bin; ln -s ${python}/bin/python $out/bin/py4vasp"