[WIP] C/C++ development environment
Package list may have redundancies or even inconsistencies, I don't really know what I'm doing. This does seem to work for code browsing (LSP support with ccls works with doom emacs), and building / debugging a few projects I tried...
This commit is contained in:
		
							parent
							
								
									f381b8a291
								
							
						
					
					
						commit
						f88ff76829
					
				
					 4 changed files with 103 additions and 0 deletions
				
			
		
							
								
								
									
										1
									
								
								c-cpp/.envrc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								c-cpp/.envrc
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
use flake .
 | 
			
		||||
							
								
								
									
										43
									
								
								c-cpp/flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								c-cpp/flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
{
 | 
			
		||||
  "nodes": {
 | 
			
		||||
    "flake-utils": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1678901627,
 | 
			
		||||
        "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1679163677,
 | 
			
		||||
        "narHash": "sha256-VC0tc3EjJZFPXgucFQAYMIHce5nJWYR0kVCk4TVg6gg=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "c3912035d00ef755ab19394488b41feab95d2e40",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "ref": "release-22.11",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-utils": "flake-utils",
 | 
			
		||||
        "nixpkgs": "nixpkgs"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "root": "root",
 | 
			
		||||
  "version": 7
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										54
									
								
								c-cpp/flake.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								c-cpp/flake.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
{
 | 
			
		||||
  description = "A Nix-flake-based C/C++ development environment";
 | 
			
		||||
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = "github:NixOS/nixpkgs/release-22.11";
 | 
			
		||||
    flake-utils.url = "github:numtide/flake-utils";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs =
 | 
			
		||||
    { self
 | 
			
		||||
    , nixpkgs
 | 
			
		||||
    , flake-utils
 | 
			
		||||
    }:
 | 
			
		||||
 | 
			
		||||
    flake-utils.lib.eachDefaultSystem (system:
 | 
			
		||||
    let
 | 
			
		||||
      pkgs = import nixpkgs { inherit system; };
 | 
			
		||||
    in
 | 
			
		||||
    {
 | 
			
		||||
      devShells.default = pkgs.mkShell {
 | 
			
		||||
        packages = with pkgs; [
 | 
			
		||||
          # FIXME split into 3 different profiles?
 | 
			
		||||
          stdenv
 | 
			
		||||
          clangStdenv
 | 
			
		||||
          gccStdenv
 | 
			
		||||
 | 
			
		||||
          clang
 | 
			
		||||
          llvmPackages_latest.bintools # lld https://matklad.github.io/2022/03/14/rpath-or-why-lld-doesnt-work-on-nixos.html
 | 
			
		||||
 | 
			
		||||
          lldb
 | 
			
		||||
          gdb
 | 
			
		||||
 | 
			
		||||
          valgrind
 | 
			
		||||
 | 
			
		||||
          # FIXME is this necessary? shouldn't be in stdenv?
 | 
			
		||||
          binutils
 | 
			
		||||
          coreutils
 | 
			
		||||
          util-linux
 | 
			
		||||
 | 
			
		||||
          pkg-config
 | 
			
		||||
          libtool
 | 
			
		||||
 | 
			
		||||
          automake autoconf
 | 
			
		||||
          cmake cmake-language-server
 | 
			
		||||
          ninja
 | 
			
		||||
 | 
			
		||||
          unzip # needed for doom emacs gdb support
 | 
			
		||||
 | 
			
		||||
          ccls
 | 
			
		||||
          #sourcekit-lsp
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -10,6 +10,11 @@
 | 
			
		|||
  outputs = { self, flake-utils, nixpkgs }:
 | 
			
		||||
    {
 | 
			
		||||
      templates = rec {
 | 
			
		||||
        c-cpp = {
 | 
			
		||||
          path = ./c-cpp;
 | 
			
		||||
          description = "C/CPP development environment based on nixpkg's stdenv";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        clojure = {
 | 
			
		||||
          path = ./clojure;
 | 
			
		||||
          description = "Clojure development environment";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue