gomuks/flake.nix
2025-04-02 10:31:20 +03:00

100 lines
2.6 KiB
Nix

{
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:
let
pkgs = import nixpkgs {
inherit system;
config = {
permittedInsecurePackages = [ "olm-3.2.16" ];
};
};
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; [
glib-networking
go-task
go-tools
gotools
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-ugly
gst_all_1.gst-libav
gst_all_1.gst-vaapi
libsoup
olm
pkg-config
pre-commit
webkitgtk_4_1
];
};
};
}
);
}