From 0737b741fc9039e9b17fa5054b9ac21a01056129 Mon Sep 17 00:00:00 2001 From: Mahmoud Ayman Date: Sun, 28 Sep 2025 17:28:17 +0300 Subject: [PATCH] introduce nix and flakes --- flake.lock | 26 ++++++++++++++++ flake.nix | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..5308481 --- /dev/null +++ b/flake.lock @@ -0,0 +1,26 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1758791193, + "narHash": "sha256-F8WmEwFoHsnix7rt290R0rFXNJiMbClMZyIC/e+HYf0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "25e53aa156d47bad5082ff7618f5feb1f5e02d01", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-25.05", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..d9123da --- /dev/null +++ b/flake.nix @@ -0,0 +1,87 @@ +{ + description = "devx - A tool for generating, validating & sharing all your configurations"; + + inputs.nixpkgs.url = "nixpkgs/nixos-25.05"; + + outputs = + { self, nixpkgs }: + let + supportedSystems = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-linux" + "aarch64-darwin" + ]; + forAllSystems = nixpkgs.lib.genAttrs supportedSystems; + nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); + in + { + packages = forAllSystems ( + system: + let + pkgs = nixpkgsFor.${system}; + version = "v0.4.39"; + in + { + default = pkgs.buildGoModule { + inherit version; + pname = "devx"; + src = pkgs.fetchFromGitHub { + owner = "stakpak"; + repo = "devx"; + rev = version; + sha256 = "sha256-uvDWGI9tj7Th9NFNzy2Vtb+Ekr+dz8bIIdasodf0oQA="; + }; + subPackages = [ + "cmd/devx" + ]; + vendorHash = "sha256-nHSV6yH2lYUg1wKgq2i/CBz0MVYbldnZ/pN0s6QQ2t4="; + + meta = with pkgs.lib; { + description = '' + A tool for generating, validating & sharing all your configurations, + powered by CUE. Works with Kubernetes, Terraform, Compose, GitHub actions and much more... + ''; + homepage = "https://devx.stakpak.dev/"; + license = licenses.asl20; + platforms = platforms.linux; + }; + tags = [ + "devx" + "cue" + "Kubernetes" + ]; + }; + docker = pkgs.dockerTools.buildImage { + name = "devx"; + tag = version; + copyToRoot = pkgs.buildEnv { + name = "image-root"; + paths = [ self.packages.${system}.default ]; + pathsToLink = [ "/bin" ]; + }; + config = { + Cmd = [ "/bin/devx" ]; + }; + }; + } + ); + + devShells = forAllSystems ( + system: + let + pkgs = nixpkgsFor.${system}; + in + { + default = pkgs.mkShell { + buildInputs = with pkgs; [ + go + gopls + gotools + go-tools + ]; + }; + } + ); + }; +}