Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a5cdb5900 | ||
|
|
d8f92486c3 | ||
|
|
f6c6e97707 | ||
|
|
c976621357 | ||
|
|
919b328e93 | ||
|
|
7641622e8d |
72
README.md
Normal file
72
README.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# repo-lib
|
||||
|
||||
Simple Nix flake library for:
|
||||
|
||||
- a shared development shell (`mkDevShell`)
|
||||
- an optional release command (`mkRelease`)
|
||||
- a starter template (`template/`)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [Nix](https://nixos.org/download/) with flakes enabled
|
||||
- [`direnv`](https://direnv.net/) (recommended)
|
||||
|
||||
## Use the template (new repo)
|
||||
|
||||
From your new project folder:
|
||||
|
||||
```bash
|
||||
nix flake new myapp -t git+https://git.dgren.dev/eric/nix-flake-lib.git#default
|
||||
```
|
||||
|
||||
## Use the library (existing repo)
|
||||
|
||||
Add this flake input:
|
||||
|
||||
```nix
|
||||
inputs.devshell-lib.url = "git+https://git.dgren.dev/eric/nix-flake-lib?ref=v0.0.5";
|
||||
inputs.devshell-lib.inputs.nixpkgs.follows = "nixpkgs";
|
||||
```
|
||||
|
||||
Create your shell from `mkDevShell`:
|
||||
|
||||
```nix
|
||||
env = devshell-lib.lib.mkDevShell {
|
||||
inherit system;
|
||||
extraPackages = [ ];
|
||||
tools = [ ];
|
||||
additionalHooks = { };
|
||||
};
|
||||
```
|
||||
|
||||
Expose it in `devShells` as `default` and run:
|
||||
|
||||
```bash
|
||||
nix develop
|
||||
```
|
||||
|
||||
## Common commands
|
||||
|
||||
```bash
|
||||
nix fmt # format files
|
||||
```
|
||||
|
||||
## Optional: release command
|
||||
|
||||
If your flake defines:
|
||||
|
||||
```nix
|
||||
packages.${system}.release = devshell-lib.lib.mkRelease { inherit system; };
|
||||
```
|
||||
|
||||
Run releases with:
|
||||
|
||||
```bash
|
||||
release
|
||||
release patch
|
||||
release minor beta
|
||||
release stable
|
||||
release set 1.2.3
|
||||
```
|
||||
|
||||
The release script uses `./VERSION` as the source of truth and creates tags like `v1.2.3`.
|
||||
22
flake.nix
22
flake.nix
@@ -156,6 +156,26 @@
|
||||
# Unified list processed in declaration order:
|
||||
# { file = "path/to/file"; content = ''...$FULL_VERSION...''; } # write file
|
||||
# { run = ''...shell snippet...''; } # run script
|
||||
# Example:
|
||||
# release = [
|
||||
# {
|
||||
# file = "src/version.ts";
|
||||
# content = ''export const APP_VERSION = "$FULL_VERSION" as const;'';
|
||||
# }
|
||||
# {
|
||||
# file = "internal/version/version.go";
|
||||
# content = ''
|
||||
# package version
|
||||
#
|
||||
# const Version = "$FULL_VERSION"
|
||||
# '';
|
||||
# }
|
||||
# {
|
||||
# run = ''
|
||||
# sed -E -i "s#^([[:space:]]*my-lib\\.url = \")github:org/my-lib[^"]*(\";)#\\1github:org/my-lib?ref=$FULL_TAG\\2#" "$ROOT_DIR/flake.nix"
|
||||
# '';
|
||||
# }
|
||||
# ];
|
||||
# Runtime env includes: BASE_VERSION, CHANNEL, PRERELEASE_NUM, FULL_VERSION, FULL_TAG.
|
||||
channels ? [
|
||||
"alpha"
|
||||
@@ -228,7 +248,7 @@
|
||||
release = [
|
||||
{
|
||||
run = ''
|
||||
sed -E -i "s#^([[:space:]]*devshell-lib\\.url = \")git\\+https://git\\.dgren\\.dev/eric/nix-flake-lib[^"]*(\";)#\\1git+https://git.dgren.dev/eric/nix-flake-lib?ref=$FULL_TAG\\2#" "$ROOT_DIR/template/flake.nix"
|
||||
sed -E -i "s#^([[:space:]]*devshell-lib\\.url = \")git\\+https://git\\.dgren\\.dev/eric/nix-flake-lib[^\"]*(\";)#\\1git+https://git.dgren.dev/eric/nix-flake-lib?ref=$FULL_TAG\\2#" "$ROOT_DIR/template/flake.nix"
|
||||
log "Updated template/flake.nix devshell-lib ref to $FULL_TAG"
|
||||
'';
|
||||
}
|
||||
|
||||
10
template/.vscode/settings.json
vendored
Normal file
10
template/.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"files.exclude": {
|
||||
"**/.git": true,
|
||||
"**/.svn": true,
|
||||
"**/.hg": true,
|
||||
"**/.DS_Store": true,
|
||||
"**/Thumbs.db": true,
|
||||
"VERSION": true
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
devshell-lib.url = "git+https://git.dgren.dev/eric/nix-flake-lib?ref=v0.0.2";
|
||||
devshell-lib.url = "git+https://git.dgren.dev/eric/nix-flake-lib?ref=v1.0.0";
|
||||
devshell-lib.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
|
||||
formatter = forAllSystems (system: (devshell-lib.lib.mkDevShell { inherit system; }).formatter);
|
||||
|
||||
# Optional: release command (nix run .#release)
|
||||
# Optional: release command (`release`)
|
||||
#
|
||||
# The release script always updates VERSION first, then:
|
||||
# 1) runs release steps in order (file writes and scripts)
|
||||
|
||||
Reference in New Issue
Block a user