diff --git a/.envrc b/.envrc index 1d953f4..3550a30 100644 --- a/.envrc +++ b/.envrc @@ -1 +1 @@ -use nix +use flake diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..66535c1 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,59 @@ +name: Release PR + +on: + workflow_dispatch: + inputs: + version: + required: true + +permissions: + contents: write + pull-requests: write + +jobs: + release_pr: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Install GitHub CLI + run: sudo apt-get update && sudo apt-get install -y gh + + + - name: Configure git + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + - uses: DeterminateSystems/nix-installer-action@v12 + + - name: Create release branch + run: | + git checkout -B release/v${{ inputs.version }} + + - name: Set version in flake.nix + run: | + sed -i "s/version = \".*\";/version = \"${{ inputs.version }}\";/" flake.nix + + - name: Update flake inputs + run: nix flake update + + - name: Commit changes + run: | + git add flake.nix flake.lock + git commit -m "chore(release): ${{ inputs.version }}" + + - name: Push branch + run: | + git push origin release/v${{ inputs.version }} + + - name: Create Pull Request + run: | + gh pr create \ + --base main \ + --head release/v${{ inputs.version }} \ + --title "[Automatic] Release v${{ inputs.version }}" \ + --body "Automated release PR.\nAfter the test's succesfull run, create manually a release with a new tag matching `${{ inputs.version }}`" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 07d4f3b..efeb220 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ result massif.out.* *.out.* vgcore.* +.direnv/ diff --git a/default.nix b/default.nix deleted file mode 100644 index 17c2425..0000000 --- a/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ pkgs ? import {} }: - -pkgs.stdenv.mkDerivation { - pname = "notewrapper"; - version = "1.0"; - - src = ./.; - - nativeBuildInputs = [ - pkgs.pkg-config - ]; - - buildInputs = [ - pkgs.ncurses - pkgs.cjson - pkgs.fzf - pkgs.gnused - pkgs.ripgrep - ]; - - buildPhase = '' - make - ''; - - installPhase = '' - mkdir -p $out/bin - cp notewrapper $out/bin/ - ''; - - meta = with pkgs.lib; { - description = " Journaling and notetaking TUI wrapper on top of neovim, vim and nano."; - license = licenses.gpl3Only; - platforms = platforms.linux; - }; -} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..88748a4 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1779508470, + "narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "29916453413845e54a65b8a1cf996842300cd299", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..aa6b283 --- /dev/null +++ b/flake.nix @@ -0,0 +1,71 @@ +{ + description = "NoteWrapper"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + in { + packages.default = pkgs.stdenv.mkDerivation (finalAttrs: { + pname = "notewrapper"; + version = "2.0"; + + src = pkgs.fetchFromGitHub { + owner = "tomasriveral"; + repo = "NoteWrapper"; + tag = "v${finalAttrs.version}"; + hash = "sha256-JoI38n5RZ/s0n+Vr9Bri2oiFeyj7Xrt1AmglmcuMpmQ="; + }; + + nativeBuildInputs = with pkgs; [ + pkg-config + gnumake + ]; + + buildInputs = with pkgs; [ + ncurses + cjson + vivify + rsync + ripgrep + fzf + gnused + ]; + + makeFlags = [ + "VERSION=2.0" + ]; + + buildPhase = '' + make + ''; + + installPhase = '' + mkdir -p $out/bin + cp notewrapper $out/bin/ + ''; + }); + + devShells.default = pkgs.mkShell { + packages = with pkgs; [ + cjson + ncurses + pkg-config + gdb + valgrind + clang-tools + gnumake + ]; + }; + + apps.default = { + type = "app"; + program = "${self.packages.${system}.default}/bin/notewrapper"; + }; + }); +} diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 6af4764..0000000 --- a/shell.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs ? import {} }: - -pkgs.mkShell { - buildInputs = [ - pkgs.cjson - pkgs.ncurses - pkgs.pkg-config - pkgs.gdb - pkgs.valgrind - pkgs.kdePackages.kcachegrind - pkgs.clang-tools - ]; -}