migrated all languages to devshell
This commit is contained in:
parent
ecb9f386ce
commit
023744a872
2
base.nix
2
base.nix
@ -32,7 +32,7 @@
|
|||||||
users.jawz = import ./home-manager.nix;
|
users.jawz = import ./home-manager.nix;
|
||||||
};
|
};
|
||||||
time = {
|
time = {
|
||||||
timeZone = config.my.timezone;
|
timeZone = config.my.timeZone;
|
||||||
hardwareClockInLocalTime = true;
|
hardwareClockInLocalTime = true;
|
||||||
};
|
};
|
||||||
i18n = {
|
i18n = {
|
||||||
|
|||||||
12
flake.nix
12
flake.nix
@ -87,7 +87,17 @@
|
|||||||
shell = createConfig "shell" inputs.nixpkgs;
|
shell = createConfig "shell" inputs.nixpkgs;
|
||||||
};
|
};
|
||||||
devShells.${system} = {
|
devShells.${system} = {
|
||||||
python = self.nixosConfigurations.shell.config.devShells.python;
|
inherit (self.nixosConfigurations.shell.config.devShells)
|
||||||
|
cc
|
||||||
|
docker
|
||||||
|
haskell
|
||||||
|
javascript
|
||||||
|
julia
|
||||||
|
nix
|
||||||
|
python
|
||||||
|
rust
|
||||||
|
sh
|
||||||
|
;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,19 +4,33 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
packages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
|
clang # C/C++ compiler frontend (part of LLVM)
|
||||||
|
clang-tools # Extra LLVM tools (e.g. clang-tidy, clang-apply-replacements)
|
||||||
|
gcc # GNU Compiler Collection (C, C++, etc.)
|
||||||
|
gdb # GNU Debugger
|
||||||
|
valgrind # Memory leak detector and performance profiler
|
||||||
|
;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.dev.cc.enable = lib.mkEnableOption "enable";
|
options = {
|
||||||
|
my.dev.cc.enable = lib.mkEnableOption "Install C/C++ tooling globally";
|
||||||
config = lib.mkIf config.my.dev.cc.enable {
|
devShells.cc = lib.mkOption {
|
||||||
users.users.jawz.packages = builtins.attrValues {
|
type = lib.types.package;
|
||||||
inherit (pkgs)
|
default = pkgs.mkShell {
|
||||||
clang # C/C++ compiler frontend (part of LLVM)
|
inherit packages;
|
||||||
clang-tools # Extra LLVM tools (e.g. clang-tidy, clang-apply-replacements)
|
name = "cc-dev-shell";
|
||||||
gcc # GNU Compiler Collection (C, C++, etc.)
|
shellHook = ''
|
||||||
gdb # GNU Debugger
|
echo "🔧 C/C++ dev environment"
|
||||||
valgrind # Memory leak detector and performance profiler
|
'';
|
||||||
;
|
};
|
||||||
|
description = "C/C++ development shell";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
config = lib.mkIf config.my.dev.cc.enable {
|
||||||
|
users.users.jawz.packages = packages;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,13 +4,37 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
packages = builtins.attrValues {
|
||||||
|
inherit (pkgs) dockfmt; # Format Dockerfiles
|
||||||
|
inherit (pkgs.nodePackages)
|
||||||
|
dockerfile-language-server-nodejs # LSP for Dockerfiles
|
||||||
|
;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.dev.docker.enable = lib.mkEnableOption "enable";
|
options = {
|
||||||
config = lib.mkIf config.my.dev.docker.enable {
|
my.dev.docker.enable = lib.mkEnableOption "Install Docker tooling globally";
|
||||||
environment.variables.DOCKER_CONFIG = "\${XDG_CONFIG_HOME}/docker";
|
devShells.docker = lib.mkOption {
|
||||||
users.users.jawz.packages = builtins.attrValues {
|
type = lib.types.package;
|
||||||
inherit (pkgs) dockfmt;
|
default = pkgs.mkShell {
|
||||||
inherit (pkgs.nodePackages) dockerfile-language-server-nodejs;
|
inherit packages;
|
||||||
|
name = "docker-dev-shell";
|
||||||
|
shellHook = ''
|
||||||
|
echo "🐳 Docker dev environment"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
description = "Docker and Dockerfile tooling shell";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf config.my.dev.docker.enable {
|
||||||
|
users.users.jawz = {
|
||||||
|
inherit packages;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
{
|
||||||
|
environment.variables.DOCKER_CONFIG = "\${XDG_CONFIG_HOME}/docker";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,23 +4,45 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
packages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
|
haskell-language-server # LSP server for Haskell
|
||||||
|
cabal-install # Standard Haskell build tool
|
||||||
|
hlint # Linter for Haskell source code
|
||||||
|
;
|
||||||
|
inherit (pkgs.haskellPackages)
|
||||||
|
hoogle # Haskell API search engine
|
||||||
|
;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.dev.haskell.enable = lib.mkEnableOption "enable";
|
options = {
|
||||||
config = lib.mkIf config.my.dev.haskell.enable {
|
my.dev.haskell.enable = lib.mkEnableOption "Install Haskell tooling globally";
|
||||||
users.users.jawz.packages = builtins.attrValues {
|
devShells.haskell = lib.mkOption {
|
||||||
inherit (pkgs)
|
type = lib.types.package;
|
||||||
haskell-language-server # LSP server for Haskell
|
default = pkgs.mkShell {
|
||||||
cabal-install # Standard Haskell build tool
|
inherit packages;
|
||||||
hlint # Linter for Haskell source code
|
name = "haskell-dev-shell";
|
||||||
;
|
shellHook = ''
|
||||||
inherit (pkgs.haskellPackages)
|
echo "λ Haskell dev environment"
|
||||||
hoogle # Haskell API search engine
|
'';
|
||||||
;
|
};
|
||||||
};
|
description = "Haskell development shell";
|
||||||
environment.variables = {
|
|
||||||
CABAL_DIR = "\${XDG_CACHE_HOME}/cabal";
|
|
||||||
STACK_ROOT = "\${XDG_DATA_HOME}/stack";
|
|
||||||
GHCUP_USE_XDG_DIRS = "true";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf config.my.dev.haskell.enable {
|
||||||
|
users.users.jawz = {
|
||||||
|
inherit packages;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
{
|
||||||
|
environment.variables = {
|
||||||
|
CABAL_DIR = "\${XDG_CACHE_HOME}/cabal";
|
||||||
|
STACK_ROOT = "\${XDG_DATA_HOME}/stack";
|
||||||
|
GHCUP_USE_XDG_DIRS = "true";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,35 +4,55 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
packages = builtins.attrValues {
|
||||||
|
inherit (pkgs) nodejs; # Node.js runtime
|
||||||
|
inherit (pkgs.nodePackages) pnpm; # Fast package manager alternative to npm
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.dev.javascript.enable = lib.mkEnableOption "enable";
|
options = {
|
||||||
config = lib.mkIf config.my.dev.javascript.enable {
|
my.dev.javascript.enable = lib.mkEnableOption "Install JavaScript tooling globally";
|
||||||
home-manager.users.jawz.xdg.configFile = {
|
devShells.javascript = lib.mkOption {
|
||||||
"npm/npmrc".text = ''
|
type = lib.types.package;
|
||||||
user=0
|
default = pkgs.mkShell {
|
||||||
unsafe-perm=true
|
inherit packages;
|
||||||
prefix=$XDG_DATA_HOME/npm
|
name = "javascript-dev-shell";
|
||||||
cache=$XDG_CACHE_HOME/npm
|
shellHook = ''
|
||||||
tmp=$XDG_RUNTIME_DIR/npm
|
echo "📦 JavaScript dev environment"
|
||||||
init-module=$XDG_CONFIG_HOME/npm/config/npm-init.js
|
'';
|
||||||
store-dir=$XDG_DATA_HOME/pnpm-store
|
|
||||||
'';
|
|
||||||
"configstore/update-notifier-npm-check.json".text = builtins.toJSON {
|
|
||||||
optOut = false;
|
|
||||||
lastUpdateCheck = 1646662583446;
|
|
||||||
};
|
};
|
||||||
};
|
description = "JavaScript/Node development shell with npm/pnpm support";
|
||||||
users.users.jawz.packages = builtins.attrValues {
|
|
||||||
inherit (pkgs) nodejs;
|
|
||||||
inherit (pkgs.nodePackages) pnpm;
|
|
||||||
};
|
|
||||||
environment.variables = {
|
|
||||||
NPM_CONFIG_USERCONFIG = "\${XDG_CONFIG_HOME}/npm/npmrc";
|
|
||||||
PNPM_HOME = "\${XDG_DATA_HOME}/pnpm";
|
|
||||||
PATH = [
|
|
||||||
"\${XDG_DATA_HOME}/npm/bin"
|
|
||||||
"\${XDG_DATA_HOME}/pnpm"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf config.my.dev.javascript.enable {
|
||||||
|
users.users.jawz = { inherit packages; };
|
||||||
|
})
|
||||||
|
{
|
||||||
|
home-manager.users.jawz.xdg.configFile = {
|
||||||
|
"npm/npmrc".text = ''
|
||||||
|
user=0
|
||||||
|
unsafe-perm=true
|
||||||
|
prefix=$XDG_DATA_HOME/npm
|
||||||
|
cache=$XDG_CACHE_HOME/npm
|
||||||
|
tmp=$XDG_RUNTIME_DIR/npm
|
||||||
|
init-module=$XDG_CONFIG_HOME/npm/config/npm-init.js
|
||||||
|
store-dir=$XDG_DATA_HOME/pnpm-store
|
||||||
|
'';
|
||||||
|
"configstore/update-notifier-npm-check.json".text = builtins.toJSON {
|
||||||
|
optOut = false;
|
||||||
|
lastUpdateCheck = 1646662583446;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment.variables = {
|
||||||
|
NPM_CONFIG_USERCONFIG = "\${XDG_CONFIG_HOME}/npm/npmrc";
|
||||||
|
PNPM_HOME = "\${XDG_DATA_HOME}/pnpm";
|
||||||
|
PATH = [
|
||||||
|
"\${XDG_DATA_HOME}/npm/bin"
|
||||||
|
"\${XDG_DATA_HOME}/pnpm"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,15 +1,32 @@
|
|||||||
{
|
{
|
||||||
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
packages = builtins.attrValues {
|
||||||
|
inherit (pkgs) julia; # High-performance dynamic language for technical computing
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.dev.julia.enable = lib.mkEnableOption "enable";
|
options = {
|
||||||
|
my.dev.julia.enable = lib.mkEnableOption "Install Julia globally";
|
||||||
|
devShells.julia = lib.mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
inherit packages;
|
||||||
|
name = "julia-dev-shell";
|
||||||
|
shellHook = ''
|
||||||
|
echo "🔬 Julia dev environment"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
description = "Julia development shell";
|
||||||
|
};
|
||||||
|
};
|
||||||
config = lib.mkIf config.my.dev.julia.enable {
|
config = lib.mkIf config.my.dev.julia.enable {
|
||||||
users.users.jawz.packages = builtins.attrValues {
|
users.users.jawz = {
|
||||||
inherit (pkgs) julia;
|
inherit packages;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,16 +4,34 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
packages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
|
nixfmt-rfc-style # formatting
|
||||||
|
cachix # binary cache management
|
||||||
|
nixd # language server for Nix
|
||||||
|
statix # linter for Nix expressions
|
||||||
|
;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.dev.nix.enable = lib.mkEnableOption "enable";
|
options = {
|
||||||
|
my.dev.nix.enable = lib.mkEnableOption "Install Nix tooling globally";
|
||||||
|
devShells.nix = lib.mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
inherit packages;
|
||||||
|
name = "nix-dev-shell";
|
||||||
|
shellHook = ''
|
||||||
|
echo "❄️ Nix dev environment"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
description = "Nix/NixOS development shell with formatter, linter, LSP, and Cachix";
|
||||||
|
};
|
||||||
|
};
|
||||||
config = lib.mkIf config.my.dev.nix.enable {
|
config = lib.mkIf config.my.dev.nix.enable {
|
||||||
users.users.jawz.packages = builtins.attrValues {
|
users.users.jawz = {
|
||||||
inherit (pkgs)
|
inherit packages;
|
||||||
nixfmt-rfc-style # formating
|
|
||||||
cachix # why spend time compiling?
|
|
||||||
nixd # language server
|
|
||||||
statix # linter
|
|
||||||
;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,16 +4,34 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
packages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
|
cargo # Rust package manager
|
||||||
|
rust-analyzer # Language server for Rust
|
||||||
|
clippy # Linter for Rust
|
||||||
|
rustfmt # Formatter for Rust code
|
||||||
|
;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.dev.rust.enable = lib.mkEnableOption "enable";
|
options = {
|
||||||
|
my.dev.rust.enable = lib.mkEnableOption "Install Rust tooling globally";
|
||||||
|
devShells.rust = lib.mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
inherit packages;
|
||||||
|
name = "rust-dev-shell";
|
||||||
|
shellHook = ''
|
||||||
|
echo "🦀 Rust dev environment"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
description = "Rust development shell with cargo and rust-analyzer";
|
||||||
|
};
|
||||||
|
};
|
||||||
config = lib.mkIf config.my.dev.rust.enable {
|
config = lib.mkIf config.my.dev.rust.enable {
|
||||||
users.users.jawz.packages = builtins.attrValues {
|
users.users.jawz = {
|
||||||
inherit (pkgs)
|
inherit packages;
|
||||||
cargo # Rust package manager
|
|
||||||
rust-analyzer # Language server for Rust
|
|
||||||
clippy # Linter for Rust
|
|
||||||
rustfmt # Formatter for Rust code
|
|
||||||
;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,17 +4,35 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
packages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
|
bashdb # Debugger and completion support
|
||||||
|
shellcheck # Shell script linter
|
||||||
|
shfmt # Shell parser and formatter
|
||||||
|
;
|
||||||
|
# LSP for Bash and sh
|
||||||
|
inherit (pkgs.nodePackages) bash-language-server;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.dev.sh.enable = lib.mkEnableOption "enable";
|
options = {
|
||||||
|
my.dev.sh.enable = lib.mkEnableOption "Install shell scripting tools globally";
|
||||||
|
devShells.sh = lib.mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
inherit packages;
|
||||||
|
name = "sh-dev-shell";
|
||||||
|
shellHook = ''
|
||||||
|
echo "💻 Shell scripting dev environment"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
description = "Shell scripting dev shell";
|
||||||
|
};
|
||||||
|
};
|
||||||
config = lib.mkIf config.my.dev.sh.enable {
|
config = lib.mkIf config.my.dev.sh.enable {
|
||||||
users.users.jawz.packages = builtins.attrValues {
|
users.users.jawz = {
|
||||||
inherit (pkgs)
|
inherit packages;
|
||||||
bashdb # autocomplete
|
|
||||||
shellcheck # linting
|
|
||||||
shfmt # a shell parser and formatter
|
|
||||||
;
|
|
||||||
#LSP
|
|
||||||
inherit (pkgs.nodePackages) bash-language-server;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,7 +74,8 @@
|
|||||||
gdu # disk-space utility checker, somewhat useful
|
gdu # disk-space utility checker, somewhat useful
|
||||||
tldr # man for retards
|
tldr # man for retards
|
||||||
trash-cli # oop! did not meant to delete that
|
trash-cli # oop! did not meant to delete that
|
||||||
jq # linting
|
jq # json parser
|
||||||
|
yq # yaml parser
|
||||||
smartmontools # check hard drie health
|
smartmontools # check hard drie health
|
||||||
;
|
;
|
||||||
inherit (inputs.jawz-scripts.packages.x86_64-linux)
|
inherit (inputs.jawz-scripts.packages.x86_64-linux)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user