Welcome! Thank you for your interest in the System Manager project. Your contributions are greatly appreciated.
System Manager development requires a Nix installation with the flakes and nix-command features enabled. If you do not have Nix installed, please refer to the Installation Guide.
- Create a fork of the repository
- Clone your fork locally:
git clone git@github.com:<USER>/system-manager.git
- Enter the development environment:
This provides all tools necessary to build and test the repository.
nix develop
- Create an issue for the problem you are trying to solve, if one does not already exist.
- Create a pull request to close the issue.
Before creating a new issue, please search existing issues to ensure the problem is not already being tracked.
Important: Please ensure an issue exists for the problem you are fixing before opening a pull request.
- Create a working branch targeting the issue number:
git checkout -b <USER>/123
- Add, commit, and push your changes:
git add -A git commit -m "fix: Fixes ..." git push origin <USER>/123
- Open a pull request targeting the
mainbranch. - Add a few sentences describing your changes and use closing keywords to automatically close the related issue.
System Manager officially supports Ubuntu and NixOS. To add support for another distribution:
-
Initialize a new flake with distribution checks disabled:
nix run 'github:numtide/system-manager' -- init --flake --allow-any-distro -
Switch to the new configuration:
nix run 'github:numtide/system-manager' -- switch --flake '.'
-
Debug any errors that occur. Refer to the FAQ, GitHub issues, or open a discussion for help.
-
Once stable, the distribution can be added to the
supportedIdslist in the system-manager module.
There is currently no release plan that follows nixpkgs releases, but ad-hoc releases are possible. Here's how to create a release branch for a specific nixpkgs version (e.g., nixpkgs-24.05):
-
Check that a release branch for the required version does not already exist.
-
Fork and clone the repository, then create a new branch:
git checkout -b release-24.05
-
Update the nixpkgs ref in
flake.nix:- inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + inputs.nixpkgs.url = "github:NixOS/nixpkgs/24.05";
-
Update the flake lock:
nix flake update nixpkgs
-
Update
Cargo.tomlwith version information:[package] name = "system_manager" - version = "0.1.0" + version = "0.1.0+nixpkgs-24.05" + rust-version = "1.77"
-
Regenerate the Cargo lock:
cargo generate-lockfile
-
Ensure flake checks pass:
nix flake check --keep-going -L
Note: There may be breaking changes between nixpkgs versions requiring additional debugging.
-
Reference the release branch in your flake:
{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/24.05"; system-manager = { type = "github"; owner = "numtide"; repo = "system-manager"; ref = "release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; }; }
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - Questions and community support
- Element Chat - Real-time chat with the Numtide team