Initial commit: Modular Clang C++ Nix environment and problem files
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
string getHappyString(int n, int k) {
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
impl Solution {
|
||||||
|
pub fn get_happy_string(n: i32, k: i32) -> String {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
1
|
||||||
|
3
|
||||||
|
1
|
||||||
|
4
|
||||||
|
3
|
||||||
|
9
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
description: "A modular Clang C++ development environment";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
treefmt-nix = {
|
||||||
|
url = "github:numtide/treefmt-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, flake-utils, treefmt-nix }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configuration for LLVM/Clang version
|
||||||
|
# Change this to "16", "17", "18", or "19" to switch versions
|
||||||
|
llvmVersion = "18";
|
||||||
|
|
||||||
|
nixLib = import ./nix {
|
||||||
|
inherit pkgs treefmt-nix llvmVersion;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = nixLib.devShell;
|
||||||
|
formatter = nixLib.formatter;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
[code]
|
||||||
|
editor = "emacsclient"
|
||||||
|
test = true
|
||||||
|
lang = "cpp"
|
||||||
|
|
||||||
|
[cookies]
|
||||||
|
csrf = "r8aszHnQmx8ihvyyf6IiinGc3oO84R8G"
|
||||||
|
session = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfYXV0aF91c2VyX2lkIjoiOTg4NzMzIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiYWxsYXV0aC5hY2NvdW50LmF1dGhfYmFja2VuZHMuQXV0aGVudGljYXRpb25CYWNrZW5kIiwiX2F1dGhfdXNlcl9oYXNoIjoiZDAzNTJlZWYyYWU3Zjc5NDhmOGRhZjMyYWVmMzM2MzBkZWIxNTA2NjkwMzg4NjcwOTgyZjA0YmZiMTQ1NWVhZSIsInNlc3Npb25fdXVpZCI6ImFhMzZmNjNjIiwiaWQiOjk4ODczMywiZW1haWwiOiJkZndvbmc1NTY2QGdtYWlsLmNvbSIsInVzZXJuYW1lIjoiaWFtc2NydWIiLCJ1c2VyX3NsdWciOiJpYW1zY3J1YiIsImF2YXRhciI6Imh0dHBzOi8vYXNzZXRzLmxlZXRjb2RlLmNvbS91c2Vycy9hdmF0YXJzL2F2YXRhcl8xNjk2NzQ4MTM0LnBuZyIsInJlZnJlc2hlZF9hdCI6MTc3MzUwMDQ0MSwiaXAiOiIxODUuNS4xMzIuMjgiLCJpZGVudGl0eSI6IjdhODA0YzA1NmYyZDM2YzNjNDRiZTVmM2Q2NDhlMDk2IiwiZGV2aWNlX3dpdGhfaXAiOlsiNDIwN2QyYjQ4NjE0MDBiM2VkNjY3YzdlM2ZmNzkwMTMiLCIxODUuNS4xMzIuMjgiXSwiX3Nlc3Npb25fZXhwaXJ5IjoxMjA5NjAwfQ.fBFD0da7kfN9EcNCqpHtHBivJuepwQRS7AVwmH-LX4Q"
|
||||||
|
site = "leetcode.com"
|
||||||
|
|
||||||
|
[storage]
|
||||||
|
cache = "Problems"
|
||||||
|
code = "code"
|
||||||
|
root = "~/.leetcode"
|
||||||
|
scripts = "scripts"
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, treefmt-nix, llvmVersion }:
|
||||||
|
let
|
||||||
|
treefmt = import ./treefmt.nix { inherit pkgs treefmt-nix; };
|
||||||
|
devShell = import ./devshells/default.nix { inherit pkgs llvmVersion; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit devShell;
|
||||||
|
formatter = treefmt.config.build.wrapper;
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{ pkgs, llvmVersion }:
|
||||||
|
let
|
||||||
|
# Select the correct LLVM/Clang version
|
||||||
|
llvmPackages = pkgs."llvmPackages_${llvmVersion}";
|
||||||
|
in
|
||||||
|
pkgs.mkShell {
|
||||||
|
name = "clang-cpp-shell";
|
||||||
|
|
||||||
|
# Native dependencies (e.g., compilers, build tools)
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
# Compiler and core tools
|
||||||
|
llvmPackages.clang
|
||||||
|
llvmPackages.lld
|
||||||
|
llvmPackages.bintools
|
||||||
|
|
||||||
|
# Language-specific tools
|
||||||
|
llvmPackages.clang-tools # Includes clang-format, clang-tidy
|
||||||
|
cmake
|
||||||
|
ninja
|
||||||
|
gdb
|
||||||
|
valgrind
|
||||||
|
nixpkgs-fmt
|
||||||
|
];
|
||||||
|
|
||||||
|
# Runtime dependencies (e.g., shared libraries)
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
# Common libraries (example)
|
||||||
|
libcxx
|
||||||
|
boost
|
||||||
|
];
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
shellHook = ''
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
echo "Clang version: $(${llvmPackages.clang}/bin/clang --version | head -n 1)"
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{ pkgs, treefmt-nix }:
|
||||||
|
treefmt-nix.lib.evalModule pkgs {
|
||||||
|
projectRootFile = "flake.nix";
|
||||||
|
|
||||||
|
# Configure individual formatters
|
||||||
|
programs = {
|
||||||
|
# Nix formatter
|
||||||
|
nixpkgs-fmt.enable = true;
|
||||||
|
|
||||||
|
# C++ formatter
|
||||||
|
clang-format.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Optional settings
|
||||||
|
settings.formatter.clang-format.includes = [ "*.cpp" "*.h" "*.hpp" "*.c" ];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user