1{
2 description = "Poisson solver for 1D quantum mechanics";
3
4 inputs = {
5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6 flake-utils.url = "github:numtide/flake-utils";
7 };
8
9 outputs = {
10 self,
11 nixpkgs,
12 flake-utils,
13 }:
14 flake-utils.lib.eachDefaultSystem (system: let
15 pkgs = import nixpkgs {
16 inherit system;
17 };
18
19 xyosc = pkgs.buildGoModule rec {
20 pname = "poisson";
21 version = "0.0.1";
22
23 src = ./.; # Use local source
24
25 subPackages = ["."];
26
27 vendorHash = null; # Replace with hash after running once (or use `nix develop` to vendor)
28
29 buildInputs = with pkgs; [
30 gcc
31 go
32 glfw
33 pkg-config
34 xorg.libX11.dev
35 xorg.libXrandr.dev
36 xorg.libXcursor.dev
37 xorg.libXinerama.dev
38 xorg.libXi.dev
39 xorg.libXxf86vm.dev
40 libglvnd
41 libxkbcommon
42 libpulseaudio
43 alsa-lib
44 libjack2
45 ];
46
47 nativeBuildInputs = with pkgs; [pkg-config makeWrapper];
48
49 meta = with pkgs.lib; {
50 description = "A simple XY-oscilloscope written in Go.";
51 homepage = "https://github.com/make-42/xyosc";
52 license = licenses.gpl3;
53 platforms = platforms.linux;
54 };
55
56 postInstall = ''
57 wrapProgram "$out/bin/xyosc" \
58 --prefix LD_LIBRARY_PATH : ${pkgs.lib.makeLibraryPath [
59 pkgs.glfw
60 pkgs.pkg-config
61 pkgs.xorg.libX11.dev
62 pkgs.xorg.libXrandr.dev
63 pkgs.xorg.libXcursor.dev
64 pkgs.xorg.libXinerama.dev
65 pkgs.xorg.libXi.dev
66 pkgs.xorg.libXxf86vm.dev
67 pkgs.libxkbcommon
68 pkgs.libglvnd
69 pkgs.libpulseaudio
70 pkgs.alsa-lib
71 pkgs.libjack2
72 ]}
73 install -Dm644 $src/icons/assets/icon.svg $out/share/icons/hicolor/scalable/apps/xyosc.svg
74 install -Dm644 $src/xyosc.desktop $out/share/applications/xyosc.desktop
75 '';
76 };
77 in {
78 packages.default = xyosc;
79
80 apps.default = flake-utils.lib.mkApp {
81 drv = xyosc;
82 };
83
84 devShells.default = pkgs.mkShell {
85 nativeBuildInputs = with pkgs; [
86 go
87 pkg-config
88 makeWrapper
89 ];
90 shellHook = ''
91 export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath [
92 pkgs.glfw
93 pkgs.pkg-config
94 pkgs.xorg.libX11.dev
95 pkgs.xorg.libXrandr.dev
96 pkgs.xorg.libXcursor.dev
97 pkgs.xorg.libXinerama.dev
98 pkgs.xorg.libXi.dev
99 pkgs.xorg.libXxf86vm.dev
100 pkgs.libxkbcommon
101 pkgs.libglvnd
102 pkgs.libpulseaudio
103 pkgs.alsa-lib
104 pkgs.libjack2
105 ]}:$LD_LIBRARY_PATH
106 '';
107 buildInputs = with pkgs; [
108 glfw
109 xorg.libX11.dev
110 xorg.libXrandr.dev
111 xorg.libXcursor.dev
112 xorg.libXinerama.dev
113 xorg.libXi.dev
114 xorg.libXxf86vm.dev
115 libglvnd
116 libxkbcommon
117 libpulseaudio
118 alsa-lib
119 libjack2
120 ];
121 };
122 });
123}