Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
diamondburned
GitHub Repository: diamondburned/gtkcord4
Path: blob/main/flake.nix
365 views
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
    flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";

    gomod2nix = {
      url = "github:nix-community/gomod2nix/8f3534eb8f6c5c3fce799376dc3b91bae6b11884";
      inputs.nixpkgs.follows = "nixpkgs";
      inputs.flake-utils.follows = "flake-utils";
    };

    gotk4-nix = {
      url = "github:diamondburned/gotk4-nix";
      inputs.nixpkgs.follows = "nixpkgs";
      inputs.gomod2nix.follows = "gomod2nix";
      inputs.flake-utils.follows = "flake-utils";
    };
  };

  outputs =
    {
      self,
      nixpkgs,
      flake-utils,
      gotk4-nix,
      gomod2nix,
      ...
    }:

    with builtins;
    with nixpkgs.lib;

    let
      baseFunc =
        pkgs:
        import ./nix/base.nix {
          inherit pkgs;
          src = self;
        };

      goPackage = "go_1_24";
    in

    (flake-utils.lib.eachDefaultSystem (
      system:
      let
        pkgs = nixpkgs.legacyPackages.${system}.appendOverlays [
          gomod2nix.overlays.default
          gotk4-nix.overlays.patchelf
        ];

        go = pkgs.${goPackage};
      in

      {
        devShells.default = gotk4-nix.lib.mkShell {
          pkgs = pkgs;
          base = baseFunc pkgs;
          buildInputs = with pkgs; [
            jq
            niv
            libxml2 # for xmllint
            python3
            imagemagick
            pkgs.gomod2nix
            (callPackage ./.github/tools { })
          ];
          inherit go;
        };

        packages.default = gotk4-nix.lib.mkPackage {
          pkgs = pkgs;
          base = baseFunc pkgs;
          version = self.rev or "unknown";
          inherit go;
        };

        apps = rec {
          default = dissent;
          dissent = {
            type = "app";
            program = "${self.packages.${system}.default}/bin/dissent";
          };
          staticcheck = {
            type = "app";
            program = "${pkgs.go-tools}/bin/staticcheck";
          };
        };
      }
    ))
    // {
      lib = gotk4-nix.lib.mkLib rec {
        pkgs = nixpkgs.legacyPackages.${builtins.currentSystem};
        base = baseFunc pkgs;
        go = pkgs.${goPackage};
      };
    };
}