From 1d67745c69de731e6be559c964a93f88468c567b Mon Sep 17 00:00:00 2001 From: Arnie Date: Mon, 21 Oct 2024 11:19:42 +0200 Subject: [PATCH] Flakeify --- .drone.yml | 4 +- .gitignore | 1 + app/frontend/.gitignore | 24 ------- default.nix | 154 ---------------------------------------- flake.lock | 67 +++++++++++++++++ flake.nix | 118 ++++++++++++++++++++++++++++++ 6 files changed, 188 insertions(+), 180 deletions(-) delete mode 100644 app/frontend/.gitignore delete mode 100644 default.nix create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.drone.yml b/.drone.yml index 4455699..a313881 100644 --- a/.drone.yml +++ b/.drone.yml @@ -28,7 +28,7 @@ steps: - name: deps path: /nix/store commands: - - nix-build --argstr version ${DRONE_TAG} --argstr rev ${DRONE_COMMIT} --argstr repoUrl ${DRONE_REPO_LINK} + - nix-build --argstr version ${DRONE_TAG} --argstr rev ${DRONE_COMMIT} .#image - name: publish image: docker:dind @@ -87,6 +87,6 @@ services: --- kind: signature -hmac: 8db89c3a13466a543ec8edb72923c4985aae191b0b6de8c324bb24116a7684e9 +hmac: df9a2fb07428f545bc41b36d4c8b53e0e7223333f614e2d5d890a1adbd7f324b ... diff --git a/.gitignore b/.gitignore index 8454329..2b271a2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ # Frontend /app/frontend/node_modules +/app/frontend/dist /app/frontend/.pnp /app/frontend/.pnp.js /app/frontend/.dependency-graph diff --git a/app/frontend/.gitignore b/app/frontend/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/app/frontend/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/default.nix b/default.nix deleted file mode 100644 index d0748f2..0000000 --- a/default.nix +++ /dev/null @@ -1,154 +0,0 @@ -{ system ? builtins.currentSystem -, version ? "latest" -, rev ? "" -, commitTime ? "1970-01-01T00:00:00+00:00" -, repoUrl ? "" -}: - -let - nixpkgs = builtins.fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/4ecab3273592f27479a583fb6d975d4aba3486fe.tar.gz"; - sha256 = "10wn0l08j9lgqcw8177nh2ljrnxdrpri7bp0g7nvrsn9rkawvlbf"; - }; - pkgs = import nixpkgs { inherit system; }; - - devshell = import - (pkgs.fetchFromGitHub { - owner = "numtide"; - repo = "devshell"; - rev = "5143ea68647c4cf5227e4ad2100db6671fc4c369"; - sha256 = "sha256-9goJTd05yOyD/McaMqZ4BUB8JW+mZMnZQJZ7VQ6C/Lw="; - }) - { nixpkgs = pkgs; }; - - nodejs = pkgs.nodejs_20; - - go = pkgs.go_1_20; - - dream2nix = pkgs.dream2nix; - - buildGoModule = pkgs.buildGoModule.override { inherit go; }; - golangci-lint = pkgs.golangci-lint.override { inherit buildGoModule; }; - - src = pkgs.lib.cleanSource ./.; - uiSrc = pkgs.lib.cleanSource ./app/frontend; - - package = pkgs.buildNpmPackage { - name = "ui"; - buildInputs = [ - nodejs - ]; - pname = "ui"; - src = uiSrc; - buildPhase = '' - npm run check - npm run build - mkdir $out - cp -a dist $out - ''; - npmInstallFlags = "--no-audit --no-progress --no-fund"; - npmDepsHash = "sha256-p4rTpy0t8aajbubvtF1TA83/FFqvfKEOPBb5T0ZRfQY="; - npmPackFlags = [ "--ignore-scripts" ]; - }; - - server = buildGoModule { - inherit src version; - pname = "cv"; - postPatch = '' - rm -rf app/server/internal/files/data/public - mkdir -p app/server/internal/files/data/public - touch app/server/internal/files/data/public/.gitkeep - cp -Tr ${package}/dist/ app/server/internal/files/data/public/ - chmod +w -R app/server/internal/files/data/public - sed -i 's# /dev/null) - [[ ''$HASH = sha256* ]] && echo "Hash is ''$HASH" - [[ ''$HASH != sha256* ]] && echo "Failed" && exit 137 - - # Replace the first occurence of npmDepsHash with the new calculated hash in this file - sed -i "0,/npmDepsHash =/{s@npmDepsHash = .*@npmDepsHash = \"''$HASH\";@}" ''$PRJ_ROOT/default.nix - ''; - } - { - name = "pre-commit"; - help = "Format and fix found issues"; - command = '' - cd ''$PRJ_ROOT - golangci-lint run --sort-results --out-format tab --fix - npm --prefix ''$PRJ_ROOT/app/frontend run fix - - update-npm-deps-hash - ''; - } - { - name = "dev"; - help = "Starts the javascript project in dev"; - command = '' - npm --prefix ''$PRJ_ROOT/app/frontend run dev - ''; - } - ]; - }; -} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..80583e1 --- /dev/null +++ b/flake.lock @@ -0,0 +1,67 @@ +{ + "nodes": { + "devshell": { + "inputs": { + "nixpkgs": [ + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1728330715, + "narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=", + "owner": "numtide", + "repo": "devshell", + "rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "nix": { + "inputs": { + "devshell": "devshell", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1729027123, + "narHash": "sha256-LjD40ya8efdhxQ26Zy/LkLDOriZIHJZqutAorvPIka8=", + "ref": "refs/heads/main", + "rev": "d3596fc7e933c171a284771f7f72342d33ad6508", + "revCount": 5, + "type": "git", + "url": "ssh://git@git.c3c.cz/C3C/nix" + }, + "original": { + "type": "git", + "url": "ssh://git@git.c3c.cz/C3C/nix" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1728538411, + "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nix": "nix" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..6acfb61 --- /dev/null +++ b/flake.nix @@ -0,0 +1,118 @@ +{ + inputs = { + nix.url = "git+ssh://git@git.c3c.cz/C3C/nix"; + }; + + outputs = + { self, nix }: + { + formatter = nix.formatter; + + packages = nix.lib.forAllSystems (pkgs: + let + version = "rev-${self.shortRev or self.dirtyShortRev}"; + package = builtins.fromJSON (builtins.readFile ./app/frontend/package.json); + in + rec { + ui = pkgs.buildNpmPackage { + inherit version; + pname = "cv"; + src = ./app/frontend; + npmInstallFlags = "--no-audit --no-progress --no-fund"; + npmDepsHash = "sha256-p4rTpy0t8aajbubvtF1TA83/FFqvfKEOPBb5T0ZRfQY="; + npmPackFlags = [ "--ignore-scripts" ]; + }; + + server = pkgs.buildGoModule { + inherit version; + pname = "cv"; + CGO_ENABLED = 0; + src = ./.; + subPackages = [ "app/server" ]; + postPatch = '' + rm -rf app/server/internal/files/data/public + mkdir -p app/server/internal/files/data/public + touch app/server/internal/files/data/public/.gitkeep + cp -Tr ${ui}/lib/node_modules/${package.name}/dist app/server/internal/files/data/public/ + chmod +w -R app/server/internal/files/data/public + sed -i 's# /dev/null) + [[ ''$HASH = sha256* ]] && echo "Hash is ''$HASH" + [[ ''$HASH != sha256* ]] && echo "Failed" && exit 137 + + # Replace the first occurence of npmDepsHash with the new calculated hash in this file + sed -i "0,/npmDepsHash =/{s@npmDepsHash = .*@npmDepsHash = \"''$HASH\";@}" ./flake.nix + ''; + } + { + name = "dev"; + help = "Starts the javascript project in dev"; + command = '' + npm --prefix ''$PRJ_ROOT/app/frontend run dev + ''; + } + ]; + }; + }); + }; +}