⛩️ Powerful yet Minimal Nix Dependency Manager
flake flakes home-manager nixos go nix dependency dependencies
at main 128 lines 3.2 kB view raw
1{ 2 description = "Nix Dependency Manager"; 3 4 inputs = { 5 nixpkgs.url = "github:NixOS/nixpkgs"; 6 systems.url = "github:nix-systems/default"; 7 8 flake-compat = { 9 url = "github:edolstra/flake-compat"; 10 flake = false; 11 }; 12 13 flake-utils = { 14 url = "github:numtide/flake-utils"; 15 inputs.systems.follows = "systems"; 16 }; 17 18 pre-commit-hooks = { 19 url = "github:cachix/git-hooks.nix"; 20 21 inputs = { 22 flake-compat.follows = "flake-compat"; 23 nixpkgs.follows = "nixpkgs"; 24 }; 25 }; 26 }; 27 28 outputs = 29 { 30 self, 31 nixpkgs, 32 flake-utils, 33 pre-commit-hooks, 34 ... 35 }: 36 flake-utils.lib.eachDefaultSystem ( 37 system: 38 let 39 inherit (pkgs.stdenv) isDarwin; 40 41 pkgs = import nixpkgs { inherit system; }; 42 name = "yae"; 43 44 meta = with pkgs.lib; { 45 description = "Nix Dependency Manager"; 46 homepage = "https://github.com/Fuwn/${name}"; 47 license = [ 48 licenses.mit 49 licenses.asl20 50 ]; 51 maintainers = [ maintainers.Fuwn ]; 52 mainPackage = name; 53 platforms = platforms.unix; 54 }; 55 56 yae = 57 pkgs.buildGo123Module.override 58 { 59 stdenv = if isDarwin then pkgs.clangStdenv else pkgs.stdenvAdapters.useMoldLinker pkgs.clangStdenv; 60 } 61 rec { 62 inherit meta; 63 64 pname = name; 65 version = "2025.11.29"; 66 src = pkgs.lib.cleanSource ./.; 67 vendorHash = "sha256-XQEB2vgiztbtLnc7BR4WTouPI+2NDQXXFUNidqmvbac="; 68 buildInputs = if isDarwin then [ ] else [ pkgs.musl ]; 69 propagatedBuildInputs = [ pkgs.gitMinimal ]; 70 71 ldflags = 72 [ 73 "-s" 74 "-w" 75 "-X main.Version=${version}" 76 "-X main.Commit=${version}" 77 ] 78 ++ ( 79 if isDarwin then 80 [ ] 81 else 82 [ 83 "-linkmode=external" 84 "-extldflags=-static" 85 ] 86 ); 87 }; 88 in 89 { 90 packages = { 91 default = yae; 92 ${name} = self.packages.${system}.default; 93 }; 94 95 apps = { 96 default = { 97 inherit meta; 98 99 type = "app"; 100 program = "${self.packages.${system}.default}/bin/${name}"; 101 }; 102 103 ${name} = self.apps.${system}.default; 104 }; 105 106 formatter = nixpkgs.legacyPackages."${system}".nixfmt-rfc-style; 107 108 checks.pre-commit-check = pre-commit-hooks.lib.${system}.run { 109 src = ./.; 110 111 hooks = { 112 deadnix.enable = true; 113 flake-checker.enable = true; 114 nixfmt-rfc-style.enable = true; 115 statix.enable = true; 116 }; 117 }; 118 119 devShells.default = nixpkgs.legacyPackages.${system}.mkShell { 120 inherit (self.checks.${system}.pre-commit-check) shellHook; 121 122 buildInputs = self.checks.${system}.pre-commit-check.enabledPackages ++ [ 123 pkgs.go_1_23 124 ]; 125 }; 126 } 127 ); 128}