From 8989552206ba5bc949acf3c0ca4b130501a7598b Mon Sep 17 00:00:00 2001 From: GearKite Date: Mon, 10 Mar 2025 13:04:48 +0200 Subject: [PATCH] flake: add package --- .gitignore | 1 + flake.nix | 72 +++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 67 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index ab855d0..bd2df10 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ deb/usr *.db* *.log .direnv +result diff --git a/flake.nix b/flake.nix index 27c6da8..d20f233 100644 --- a/flake.nix +++ b/flake.nix @@ -1,19 +1,78 @@ { - description = "Gomuks development environment"; + description = "Gomuks development environment & packages"; 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: + outputs = + { + self, + nixpkgs, + flake-utils, + ... + }: + flake-utils.lib.eachDefaultSystem ( + system: let pkgs = import nixpkgs { inherit system; - config.permittedInsecurePackages = [ "olm-3.2.16" ]; + config = { + permittedInsecurePackages = [ "olm-3.2.16" ]; + }; }; - in { + + outPackages = self.outputs.packages.${system}; + + # Extract version from version.go + versionContent = builtins.readFile ./version/version.go; + versionMatch = builtins.match ''^.*const StaticVersion = "([0-9\.]+)".*$'' versionContent; + version = builtins.elemAt versionMatch 0; + in + { + packages = { + gomuks = pkgs.buildGoModule { + pname = "gomuks"; + inherit version; + + src = ./.; + + # Go dependency hash (should be updated when dependencies are) + vendorHash = "sha256-4kdjyjAvZnKp9Ly5Y4EaVa0iGyIMjrmrc+nagCJA9/A="; + + buildInputs = with pkgs; [ + outPackages.gomuks-web + olm + ]; + + preBuild = '' + cp -r ${outPackages.gomuks-web}/dist web/dist + ''; + + # skip non-existant & broken pytest tests + pytestCheckPhase = '':''; + + subPackages = [ "cmd/gomuks" ]; + }; + # Package for building web dist + gomuks-web = pkgs.buildNpmPackage rec { + pname = "gomuks-web"; + inherit version; + + src = ./web; + + # Same as the Go dependency hash but for NPM packages + npmDepsHash = "sha256-YUDRdelLnGhT5Yw+uc29AEZPRHZoZjqVZxCXwD2gqAs="; + + installPhase = '' + mkdir -p $out/dist + cp -r dist/* $out/dist/ + ''; + }; + default = outPackages.gomuks; + }; + devShells = { default = pkgs.mkShell { packages = with pkgs; [ @@ -36,5 +95,6 @@ ]; }; }; - })); + } + ); }