this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: initial Nix flake with gomod2nix

Khue Doan b1e5e225 82ff8ac2

+231 -1
+1
.envrc
··· 1 + use flake
+22
default.nix
··· 1 + { 2 + pkgs ? ( 3 + let 4 + inherit (builtins) fetchTree fromJSON readFile; 5 + inherit ((fromJSON (readFile ./flake.lock)).nodes) nixpkgs gomod2nix; 6 + in 7 + import (fetchTree nixpkgs.locked) { 8 + overlays = [ 9 + (import "${fetchTree gomod2nix.locked}/overlay.nix") 10 + ]; 11 + } 12 + ), 13 + buildGoApplication ? pkgs.buildGoApplication, 14 + }: 15 + 16 + buildGoApplication { 17 + pname = "nixie"; 18 + version = "0.1"; 19 + pwd = ./.; 20 + src = ./.; 21 + modules = ./gomod2nix.toml; 22 + }
+85
flake.lock
··· 1 + { 2 + "nodes": { 3 + "flake-utils": { 4 + "inputs": { 5 + "systems": "systems" 6 + }, 7 + "locked": { 8 + "lastModified": 1731533236, 9 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 10 + "owner": "numtide", 11 + "repo": "flake-utils", 12 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 13 + "type": "github" 14 + }, 15 + "original": { 16 + "owner": "numtide", 17 + "repo": "flake-utils", 18 + "type": "github" 19 + } 20 + }, 21 + "gomod2nix": { 22 + "inputs": { 23 + "flake-utils": [ 24 + "flake-utils" 25 + ], 26 + "nixpkgs": [ 27 + "nixpkgs" 28 + ] 29 + }, 30 + "locked": { 31 + "lastModified": 1756047880, 32 + "narHash": "sha256-JeuGh9kA1SPL70fnvpLxkIkCWpTjtoPaus3jzvdna0k=", 33 + "owner": "nix-community", 34 + "repo": "gomod2nix", 35 + "rev": "47d628dc3b506bd28632e47280c6b89d3496909d", 36 + "type": "github" 37 + }, 38 + "original": { 39 + "owner": "nix-community", 40 + "repo": "gomod2nix", 41 + "type": "github" 42 + } 43 + }, 44 + "nixpkgs": { 45 + "locked": { 46 + "lastModified": 1759381078, 47 + "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", 48 + "owner": "NixOS", 49 + "repo": "nixpkgs", 50 + "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", 51 + "type": "github" 52 + }, 53 + "original": { 54 + "owner": "NixOS", 55 + "ref": "nixos-unstable", 56 + "repo": "nixpkgs", 57 + "type": "github" 58 + } 59 + }, 60 + "root": { 61 + "inputs": { 62 + "flake-utils": "flake-utils", 63 + "gomod2nix": "gomod2nix", 64 + "nixpkgs": "nixpkgs" 65 + } 66 + }, 67 + "systems": { 68 + "locked": { 69 + "lastModified": 1681028828, 70 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 71 + "owner": "nix-systems", 72 + "repo": "default", 73 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 74 + "type": "github" 75 + }, 76 + "original": { 77 + "owner": "nix-systems", 78 + "repo": "default", 79 + "type": "github" 80 + } 81 + } 82 + }, 83 + "root": "root", 84 + "version": 7 85 + }
+73
flake.nix
··· 1 + { 2 + description = "Nixie"; 3 + 4 + inputs = { 5 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 + flake-utils.url = "github:numtide/flake-utils"; 7 + gomod2nix.url = "github:nix-community/gomod2nix"; 8 + gomod2nix.inputs.nixpkgs.follows = "nixpkgs"; 9 + gomod2nix.inputs.flake-utils.follows = "flake-utils"; 10 + }; 11 + 12 + outputs = 13 + { 14 + self, 15 + nixpkgs, 16 + flake-utils, 17 + gomod2nix, 18 + }: 19 + (flake-utils.lib.eachDefaultSystem ( 20 + system: 21 + let 22 + pkgs = nixpkgs.legacyPackages.${system}; 23 + 24 + callPackage = pkgs.callPackage; 25 + # Simple test check added to nix flake check 26 + go-test = pkgs.stdenvNoCC.mkDerivation { 27 + name = "go-test"; 28 + dontBuild = true; 29 + src = ./.; 30 + doCheck = true; 31 + nativeBuildInputs = with pkgs; [ 32 + go 33 + writableTmpDirAsHomeHook 34 + ]; 35 + checkPhase = '' 36 + go test -v ./... 37 + ''; 38 + installPhase = '' 39 + mkdir "$out" 40 + ''; 41 + }; 42 + # Simple lint check added to nix flake check 43 + go-lint = pkgs.stdenvNoCC.mkDerivation { 44 + name = "go-lint"; 45 + dontBuild = true; 46 + src = ./.; 47 + doCheck = true; 48 + nativeBuildInputs = with pkgs; [ 49 + golangci-lint 50 + go 51 + writableTmpDirAsHomeHook 52 + ]; 53 + checkPhase = '' 54 + golangci-lint run 55 + ''; 56 + installPhase = '' 57 + mkdir "$out" 58 + ''; 59 + }; 60 + in 61 + { 62 + checks = { 63 + inherit go-test go-lint; 64 + }; 65 + packages.default = callPackage ./. { 66 + inherit (gomod2nix.legacyPackages.${system}) buildGoApplication; 67 + }; 68 + devShells.default = callPackage ./shell.nix { 69 + inherit (gomod2nix.legacyPackages.${system}) mkGoEnv gomod2nix; 70 + }; 71 + } 72 + )); 73 + }
+1 -1
go.mod
··· 1 1 module code.khuedoan.com/nixie 2 2 3 - go 1.24.3 3 + go 1.25.0
+3
gomod2nix.toml
··· 1 + schema = 1 2 + 3 + [mod]
+9
main.go
··· 1 + package main 2 + 3 + import ( 4 + "fmt" 5 + ) 6 + 7 + func main() { 8 + fmt.Println("Hello flake") 9 + }
+12
main_test.go
··· 1 + package main 2 + 3 + import ( 4 + "testing" 5 + ) 6 + 7 + func TestMain(t *testing.T) { 8 + got := "Hello flake" 9 + if got != "Hello flake" { 10 + t.Errorf("main: %s; want Hello flake", got) 11 + } 12 + }
+25
shell.nix
··· 1 + { 2 + pkgs ? ( 3 + let 4 + inherit (builtins) fetchTree fromJSON readFile; 5 + inherit ((fromJSON (readFile ./flake.lock)).nodes) nixpkgs gomod2nix; 6 + in 7 + import (fetchTree nixpkgs.locked) { 8 + overlays = [ 9 + (import "${fetchTree gomod2nix.locked}/overlay.nix") 10 + ]; 11 + } 12 + ), 13 + mkGoEnv ? pkgs.mkGoEnv, 14 + gomod2nix ? pkgs.gomod2nix, 15 + }: 16 + 17 + let 18 + goEnv = mkGoEnv { pwd = ./.; }; 19 + in 20 + pkgs.mkShell { 21 + packages = [ 22 + goEnv 23 + gomod2nix 24 + ]; 25 + }