⛩️ Powerful yet Minimal Nix Dependency Manager
flake
flakes
home-manager
nixos
go
nix
dependency
dependencies
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}