From 9964eaa8754bd49606ab1c4545fa3756b8f6a687 Mon Sep 17 00:00:00 2001 From: szymon Date: Tue, 11 Aug 2026 16:48:56 +0200 Subject: [PATCH] init --- .envrc | 16 ++++++++++ .gitignore | 1 + Cargo.lock | 7 +++++ Cargo.toml | 12 ++++++++ README.md | 2 ++ flake.lock | 77 +++++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 30 +++++++++++++++++++ nix/module.nix | 37 ++++++++++++++++++++++++ nix/package.nix | 37 ++++++++++++++++++++++++ nix/shell.nix | 11 +++++++ src/main.rs | 3 ++ 11 files changed, 233 insertions(+) create mode 100644 .envrc create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 README.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 nix/module.nix create mode 100644 nix/package.nix create mode 100644 nix/shell.nix create mode 100644 src/main.rs diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..295603b --- /dev/null +++ b/.envrc @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +if ! has nix_direnv_version || ! nix_direnv_version 3.1.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.1.0/direnvrc" "sha256-yMJ2OVMzrFaDPn7q8nCBZFRYpL/f0RcHzhmw/i6btJM=" +fi + +watch_file flake.nix +watch_file flake.lock + +mkdir -p "$PWD/.devenv" +DEVENV_ROOT_FILE="$PWD/.devenv/root" +printf %s "$PWD" >"$DEVENV_ROOT_FILE" +if ! use flake . --override-input devenv-root "file+file://$DEVENV_ROOT_FILE"; then + echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2 +fi + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eb5a316 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..22a0d96 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "example" +version = "0.0.1" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..624dc58 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "Checkers" +description = "Game of checkers" +version = "0.0.1" +readme = "README.md" +license = "gpl3" +repository = "https://example.com" +authors = [ "szymon-jozef" ] + +edition = "2024" + +[dependencies] diff --git a/README.md b/README.md new file mode 100644 index 0000000..4cc69c8 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Game of checkers + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..f9951d1 --- /dev/null +++ b/flake.lock @@ -0,0 +1,77 @@ +{ + "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1785627969, + "narHash": "sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "427bf4bd9435fdf21321c8cc628c24efc14c0f7a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "import-tree": { + "locked": { + "lastModified": 1784254960, + "narHash": "sha256-iI88R3wHz8wTKQb5orvpc51L/Xr64AJyxid/0MKa/b8=", + "owner": "vic", + "repo": "import-tree", + "rev": "4ebb10ae17d5f1ad366e7aef5b92cb8eecf24f69", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "import-tree", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1785571196, + "narHash": "sha256-KoTsyMQqnXQZq8deCEnu4QkyldkwH/bpMMhUcfMdGIw=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "148bab9c1c3c53136ecb44a6ea356a0ed5b39b06", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1785031560, + "narHash": "sha256-OmshNvn2vupOFpYinLUu+1Dnpu4n7Q5N3ggGVNHpkUI=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "0e79af5e3d4dcfcd676ab5ba3f95d2e3352e078c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "import-tree": "import-tree", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..eb6eadd --- /dev/null +++ b/flake.nix @@ -0,0 +1,30 @@ +{ + description = "Rust project template"; + + inputs = { + nixpkgs = { + url = "github:nixos/nixpkgs/nixos-unstable"; + }; + + flake-parts.url = "github:hercules-ci/flake-parts"; + import-tree.url = "github:vic/import-tree"; + }; + + outputs = + inputs: + inputs.flake-parts.lib.mkFlake { inherit inputs; } ( + { ... }: + { + _module.args.metadata = fromTOML (builtins.readFile ./Cargo.toml); + + systems = [ + "x86_64-linux" + #"aarch64-darwin" + ]; + + imports = [ + (inputs.import-tree ./nix) + ]; + } + ); +} diff --git a/nix/module.nix b/nix/module.nix new file mode 100644 index 0000000..9befc39 --- /dev/null +++ b/nix/module.nix @@ -0,0 +1,37 @@ +{ self, metadata, ... }: +{ + flake.nixosModules.default = + { + config, + lib, + pkgs, + ... + }: + let + cfg = config.programs.example; + + inherit (lib) + mkEnableOption + mkOption + mkIf + ; + + inherit (pkgs.stdenv.hostPlatform) system; + + in + { + options.programs.example = { + enable = mkEnableOption metadata.package.name; + + package = mkOption { + default = self.packages.${system}.default; + description = "Package to use"; + type = lib.types.package; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + }; + }; +} diff --git a/nix/package.nix b/nix/package.nix new file mode 100644 index 0000000..5aae574 --- /dev/null +++ b/nix/package.nix @@ -0,0 +1,37 @@ +{ metadata, ... }: +{ + perSystem = { pkgs, lib, ... }: { + packages.default = ( + pkgs.rustPlatform.buildRustPackage { + pname = metadata.package.name; + version = metadata.package.version; + + src = lib.cleanSource ./..; + + cargoLock.lockFile = ./../Cargo.lock; + + # build deps + nativeBuildInputs = with pkgs; [ + # cargo + # rustc + # already provided by buildRustPackage :p + pkg-config + ]; + + # runtime deps + buildInputs = with pkgs; [ + + ]; + + meta = { + description = metadata.package.description; + homepage = metadata.package.repository; + downloadPage = "https://example.com"; + license = lib.licenses."${metadata.package.license}"; + # platforms = lib.platforms.linux; + mainProgram = metadata.package.name; + }; + } + ); + }; +} diff --git a/nix/shell.nix b/nix/shell.nix new file mode 100644 index 0000000..fa74369 --- /dev/null +++ b/nix/shell.nix @@ -0,0 +1,11 @@ +{ + perSystem = { pkgs, config, ... }: { + devShells.default = pkgs.mkShell { + packages = with pkgs; [ ]; + + inputsFrom = [ + (config.packages.default) + ]; + }; + }; +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +}