Styx 项目教程
styx A nix-based Haskell project manager 项目地址: https://gitcode.com/gh_mirrors/styx2/styx
1. 项目的目录结构及介绍
Styx 项目的目录结构如下:
styx/
├── .gitignore
├── README.org
├── cabal.project
├── shell.nix
└── styx.yaml
目录结构介绍
- .gitignore: 用于指定 Git 版本控制系统忽略的文件和目录。
- README.org: 项目的说明文件,通常包含项目的概述、安装指南和使用说明。
- cabal.project: Cabal 项目的配置文件,用于指定项目的依赖关系和构建选项。
- shell.nix: Nix 语言编写的 shell 配置文件,用于定义开发环境。
- styx.yaml: Styx 项目的配置文件,用于指定项目的本地包、源依赖、Nix 依赖等。
2. 项目的启动文件介绍
Styx 项目的启动文件是 shell.nix
。这个文件定义了项目的开发环境,包括所需的 Haskell 包和其他依赖项。通过运行以下命令可以启动开发环境:
nix-shell styx/shell.nix --run "cabal <command>"
启动文件介绍
- shell.nix: 这个文件使用 Nix 语言定义了项目的开发环境。它指定了所需的 Haskell 包和其他依赖项,并提供了一个 Nix shell,用户可以在其中运行 Cabal 命令。
3. 项目的配置文件介绍
Styx 项目的主要配置文件是 styx.yaml
。这个文件用于配置项目的本地包、源依赖、Nix 依赖等。
配置文件介绍
- styx.yaml: 这个文件包含了以下几个主要部分:
- local-packages: 列出本地开发的包及其在磁盘上的位置。
- source-deps: 列出项目的源依赖,通常是一些自定义或修改过的包。
- nix-deps: 列出项目依赖的其他 Haskell 包。
- non-haskell-deps: 列出项目依赖的其他非 Haskell 工具或库。
- nixpkgs: 指定使用的 Nixpkgs 版本。
- default-compiler: 指定默认的 GHC 编译器版本。
示例配置
# List the packages that you edit locally and want compiled "all the time" by cabal:
local-packages:
my-main-package:
location: main
my-local-dep:
location: dep
# Optionally, list patched or cutting edge packages that you depend on:
source-deps:
mtl:
location: https://github.com/mrawesome/awsm-patched-version-of-mtl.git
# Optionally, add other haskell nix packages to depend on:
nix-deps:
- criterion
- gasp
- lens
- statistics
# In case you depend on other non-haskell tools or libs:
non-haskell-deps:
- z3
# Optionally, one can ask for a specific version of nixpkgs:
nixpkgs:
commit: 8ef3eaeb4e531929ec29a880cb4c67f790e5eb70
sha256: 4d2fae900d2d99ea294f4f412289af77152ac21d7b2e9ff23581ef11ea00831f
# Optionally, one can ask for a specific version of ghc, as known by nixpkgs:
default-compiler: ghc801
通过配置 styx.yaml
文件,用户可以自定义项目的依赖关系和开发环境,从而更方便地进行开发和测试。
styx A nix-based Haskell project manager 项目地址: https://gitcode.com/gh_mirrors/styx2/styx