From 48fa1cc8525bbb05a245b13dba7ec49afa48077a Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Mon, 29 Sep 2025 16:57:50 +0300 Subject: [PATCH] init nix tooling Signed-off-by: NotAShelf Change-Id: I6a6a6964a17ac94c2a40f0fd34f339a965abfc9a --- .envrc | 1 + flake.lock | 26 ++++++++++++++++++++++++++ flake.nix | 22 ++++++++++++++++++++++ shell.nix | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 .envrc create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 shell.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..6967c23 --- /dev/null +++ b/flake.lock @@ -0,0 +1,26 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1759155593, + "narHash": "sha256-potIJyEY7ExgfiMzr44/KBODFednyzRUAE2vs4aThHs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "13ca7febc86978bdb67c0ae94f568b189ae84eef", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..42d5d3f --- /dev/null +++ b/flake.nix @@ -0,0 +1,22 @@ +{ + description = "Wayland Wallpaper Daemon"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs?ref?nixos-unstable"; + outputs = {nixpkgs, ...}: let + systems = ["x86_64-linux" "aarch64-linux"]; + forAllSystems = f: + builtins.listToAttrs (map (system: { + name = system; + value = f system; + }) + systems); + + pkgsFor = system: nixpkgs.legacyPackages.${system}; + in { + devShells = forAllSystems (system: let + pkgs = pkgsFor system; + in { + default = pkgs.callPackage ./shell.nix {}; + }); + }; +} diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..54e94ef --- /dev/null +++ b/shell.nix @@ -0,0 +1,51 @@ +{pkgs ? import {}}: +pkgs.mkShell { + name = "chroma"; + buildInputs = with pkgs; [ + gnumake + + # Optional development tools + gdb + valgrind + strace + + # Code formatting and analysis + clang-tools # includes clang-format + cppcheck + + # Wayland libraries + wayland.dev + wayland-protocols + wayland-scanner + libxkbcommon + + # EGL/OpenGL libraries + libGL + mesa + + # System libraries + glibc.dev + ]; + + nativeBuildInputs = with pkgs; [ + pkg-config + ]; + + shellHook = '' + echo "Available commands:" + echo " make - Build the project" + echo " make debug - Build with debug symbols" + echo " make clean - Clean build artifacts" + echo " make install - Install to ~/.local" + echo " make help - Show all available targets" + echo + echo "Run 'make check-deps' to verify all dependencies are available." + echo + ''; + + # Environment variables for the build system + env = { + CHROMA_VERSION = "1.0.0"; + WAYLAND_DEBUG = 1; + }; +}