basic coding config

This commit is contained in:
m3tam3re
2025-08-24 17:09:45 +02:00
parent cde1d7bd09
commit 19dc7fff93
7 changed files with 176 additions and 32 deletions

19
flake.lock generated
View File

@ -36,10 +36,27 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-stable": {
"locked": {
"lastModified": 1755704039,
"narHash": "sha256-gKlP0LbyJ3qX0KObfIWcp5nbuHSb5EHwIvU6UcNBg2A=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9cb344e96d5b6918e94e1bca2d9f3ea1e9615545",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable"
} }
} }
}, },

View File

@ -16,30 +16,34 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
}; };
outputs = { outputs =
self, {
home-manager, self,
nixpkgs, home-manager,
... nixpkgs,
} @ inputs: let ...
inherit (self) outputs; }@inputs:
in { let
overlays = import ./overlays {inherit inputs outputs;}; inherit (self) outputs;
in
{
overlays = import ./overlays { inherit inputs outputs; };
homeConfigurations = { homeConfigurations = {
"m3tam3re@m3-daedalus" = home-manager.lib.homeManagerConfiguration { "m3tam3re@m3-daedalus" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages."x86_64-linux"; pkgs = nixpkgs.legacyPackages."aarch64-linux";
extraSpecialArgs = { extraSpecialArgs = {
inherit inputs outputs; inherit inputs outputs;
systemConfig = {}; systemConfig = { };
};
modules = [
./users/m3tam3re
./users/m3tam3re/profiles/server.nix
];
}; };
modules = [
./users/m3tam3re
./users/m3tam3re/profiles/server.nix
];
}; };
}; };
};
} }

View File

@ -1,10 +1,13 @@
{ {
lib, lib,
outputs,
pkgs, pkgs,
... ...
}: { }:
{
nixpkgs = { nixpkgs = {
overlays = [ overlays = [
outputs.overlays.stable-packages
]; ];
config = { config = {
allowUnfree = true; allowUnfree = true;
@ -15,7 +18,10 @@
nix = { nix = {
package = lib.mkDefault pkgs.nix; package = lib.mkDefault pkgs.nix;
settings = { settings = {
experimental-features = ["nix-command" "flakes"]; experimental-features = [
"nix-command"
"flakes"
];
warn-dirty = false; warn-dirty = false;
}; };
}; };

View File

@ -0,0 +1,93 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
goCfg = config.features.coding.go;
nixCfg = config.features.coding.nix;
pythonCfg = config.features.coding.python;
in
{
options.features.coding = {
go = {
enable = mkEnableOption "enable Go development environment";
packageSet = mkOption {
type = types.str;
default = "default";
description = "Which nixpkgs variant to use for Golang";
};
additionalPackages = mkOption {
type = types.listOf types.str;
example = [
delve
go-outline
];
};
};
python = {
enable = mkEnableOption "enable Python development environment";
additionalPackages = mkOption {
type = types.listOf types.str;
example = [
"requests"
"pandas"
];
};
};
nix = {
enable = mkEnableOption "enable Nix development environment";
};
};
config =
let
selectPkgs = packageSet: if packageSet == "default" then pkgs else pkgs.${packageSet};
in
mkMerge [
(mkIf goCfg.enable (
let
goPkgs = selectPkgs goCfg.packageSet;
in
{
home.packages =
with goPkgs;
[
go
gopls
]
++ (map (name: goPkgs.${name}) goCfg.additionalPackages);
}
))
(mkIf pythonCfg.enable {
home.packages = with pkgs; [
(python3.withPackages (
ps:
with ps;
[
uv
pip
pipx
virtualenv
]
++ (map (name: ps.${name}) pythonCfg.additionalPackages)
))
pyrefly
black
];
})
(mkIf nixCfg.enable {
home.packages = with pkgs; [
alejandra
nil
nixd
statix
deadnix
nix-tree
];
})
];
}

View File

@ -1,6 +1,7 @@
{...}: { {...}: {
imports = [ imports = [
./cli ./cli
./coding
./base.nix ./base.nix
]; ];
} }

View File

@ -1,6 +1,7 @@
{inputs, ...}: { { inputs, ... }:
{
# This one brings our custom packages from the 'pkgs' directory # This one brings our custom packages from the 'pkgs' directory
additions = final: prev: (import ../pkgs {pkgs = final;}); additions = final: prev: (import ../pkgs { pkgs = final; });
# This one contains whatever you want to overlay # This one contains whatever you want to overlay
# You can change versions, add patches, set compilation flags, anything really. # You can change versions, add patches, set compilation flags, anything really.
# https://nixos.wiki/wiki/Overlays # https://nixos.wiki/wiki/Overlays
@ -25,10 +26,10 @@
# }); # });
}; };
# stable-packages = final: _prev: { stable-packages = final: _prev: {
# stable = import inputs.nixpkgs-stable { stable = import inputs.nixpkgs-stable {
# system = final.system; system = final.system;
# config.allowUnfree = true; config.allowUnfree = true;
# }; };
# }; };
} }

View File

@ -1,9 +1,31 @@
{...}: { { pkgs, ... }:
{
features = { features = {
cli = { cli = {
shell.nushell.enable = true; shell.nushell.enable = true;
shell.nitch.enable = true; shell.nitch.enable = true;
tools.fzf.enable = true; tools.fzf.enable = true;
}; };
coding = {
nix = {
enable = true;
};
go = {
enable = true;
packageSet = "stable";
additionalPackages = [
"gotools"
"gotests"
"go-outline"
];
};
python = {
enable = true;
additionalPackages = [
"requests"
"pandas"
];
};
};
}; };
} }