Continuous Integration (CI): Each pull request gets automatically tested by gitea. If any errors are detected, it will block pull requests until they're resolved.
Dependency Management: We use the Nix package manager to manage dependencies and ensure reproducibility, making your development process more robust.
Let's get your development environment up and running:
Install Nix Package Manager:
curl -sSfL https://artifacts.nixos.org/nix-installer | sh -s -- installInstall direnv:
nix profile add nixpkgs#nix-direnv nixpkgs#direnvAdd direnv to your shell:
zsh and bashecho 'eval "$(direnv hook zsh)"' >> ~/.zshrc && echo 'eval "$(direnv hook bash)"' >> ~/.bashrc && eval "$SHELL"Allow the devshell
clan-core/pkgs/clan-cli and do a direnv allow to setup the necessary development environment to execute the clan commandCreate a Gitea Account
git remote add upstream gitea@git.clan.lol:clan/clan-core.gitAllow .envrc
direnv: error .envrc is blocked. Run `direnv allow` to approve its content direnv allow to automatically execute the shell script .envrc when entering the directory.(Optional) Install Git Hooks
nix fmt ./scripts/pre-commitIf you have a bug fix or feature that involves a related project, clone the relevant repository and replace its invocation in your local setup.
For instance, if you need to update nixos-anywhere in clan-cli, find its usage:
run(
nix_shell(
["nixos-anywhere"],
cmd,
),
RunOpts(log=Log.BOTH, prefix=machine.name, needs_user_terminal=True),
) You can replace "nixpkgs#nixos-anywhere" with your local path:
run(
nix_shell(
["<path_to_local_src>#nixos-anywhere"],
cmd,
),
RunOpts(log=Log.BOTH, prefix=machine.name, needs_user_terminal=True),
)
The <path_to_local_src> doesn't need to be a local path, it can be any valid flakeref.
And thus can point to test already opened PRs for example.