feat: add initial modules

This commit is contained in:
2026-02-20 15:10:12 +01:00
parent 9d9d85f1ef
commit 4a2dac4118
15 changed files with 468 additions and 0 deletions

15
lib/autoDir.nix Normal file
View File

@@ -0,0 +1,15 @@
lib:
# takes dir as an argument and creates an attribute set by importing all .nix files in that directory
dir:
let
readDir = builtins.readDir dir;
files = lib.attrNames (
lib.filterAttrs (
name: type: type == "regular" && lib.hasSuffix ".nix" name && name != "default.nix"
) readDir
);
packages = builtins.map (name: lib.removeSuffix ".nix" name) files;
in
lib.genAttrs packages (name: import (dir + "/${name}.nix"))

11
lib/default.nix Normal file
View File

@@ -0,0 +1,11 @@
{ lib }:
let
mkHost = import ./mkHost.nix;
autoDir = import ./autoDir.nix lib;
mapDir = import ./mapDir.nix lib;
in
{
inherit mkHost autoDir mapDir;
}

11
lib/mapDir.nix Normal file
View File

@@ -0,0 +1,11 @@
lib:
let
autoDir = import ./autoDir.nix lib;
in
dir: args:
let
attrs = autoDir dir;
in
builtins.mapAttrs (_: f: f args) attrs

54
lib/mkHost.nix Normal file
View File

@@ -0,0 +1,54 @@
{
nixpkgs,
overlays,
inputs,
}:
name:
{
system,
users ? [ ],
}:
let
hostConfig = ../hosts/${name}/configuration.nix;
hostHWConfig = ../hosts/${name}/hardware-configuration.nix;
userHMConfigs = nixpkgs.lib.genAttrs users (
user: import ../users/${user}/home-manager.nix { inherit inputs; }
);
gib_in_bytes = 1073741824;
in
nixpkgs.lib.nixosSystem {
inherit system;
modules = [
{
nix.settings = {
download-buffer-size = 1 * gib_in_bytes;
experimental-features = [
"nix-command"
"flakes"
];
};
}
{ nixpkgs.overlays = overlays; }
{ nixpkgs.config.allowUnfree = true; }
hostConfig
hostHWConfig
inputs.home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users = userHMConfigs;
home-manager.extraSpecialArgs = { inherit inputs; };
}
];
specialArgs = { inherit inputs; };
}

View File

@@ -0,0 +1 @@
{ lib, my-lib }: args: (my-lib.autoDir ./.)

55
modules/nixos/sway.nix Normal file
View File

@@ -0,0 +1,55 @@
{
pkgs,
lib,
config,
...
}:
{
options = {
sway = {
enable = lib.mkEnableOption "enable sway module";
cmdFlags = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = "additional command line flags to pass to sway";
};
};
};
config = lib.mkIf config.sway.enable {
programs.sway = {
enable = true;
package = pkgs.swayfx;
wrapperFeatures.gtk = true;
extraOptions = config.sway.cmdFlags;
extraSessionCommands = ''
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
'';
};
environment.systemPackages = with pkgs; [
# default extra packages
brightnessctl
foot
grim
pulseaudio
swayidle
# swaylock - use swaylock-effects instead
swaylock-effects
wmenu
# additional things i like
slurp
wofi
wl-clipboard
wob
pamixer
wlsunset
flameshot
waybar
wayland-pipewire-idle-inhibit
];
};
}

23
modules/nixos/yubikey.nix Normal file
View File

@@ -0,0 +1,23 @@
{
pkgs,
lib,
config,
...
}:
{
options = {
yubikey = {
enable = lib.mkEnableOption "enable yubikey module";
};
};
config = lib.mkIf config.yubikey.enable {
environment.systemPackages = with pkgs; [
yubikey-personalization
yubikey-manager
];
services.pcscd.enable = true;
};
}

29
packages/ahab.nix Normal file
View File

@@ -0,0 +1,29 @@
{ nixpkgs, system, ... }:
let
pkgs = import nixpkgs { inherit system; };
version = "v0.3.2";
in
pkgs.rustPlatform.buildRustPackage {
pname = "ahab";
inherit version;
src = pkgs.fetchFromGitea {
domain = "git.janezic.dev";
owner = "janezicmatej";
repo = "ahab";
rev = version;
sha256 = "sha256-bL8LPpD5k97XPYftXhPr7V/LNOB71pcBlsfBjJUIeG8";
};
cargoHash = "sha256-f8omNtjLF5gMJGgxdzWifStcs8d4fu++EegR2auObXE";
buildType = "debug";
meta = {
description = "ahab";
homepage = "https://git.janezic.dev/janezicmatej/ahab";
license = pkgs.lib.licenses.mit;
maintainers = [ ];
};
}

23
packages/ca-matheo-si.nix Normal file
View File

@@ -0,0 +1,23 @@
{ nixpkgs, system, ... }:
let
pkgs = import nixpkgs { inherit system; };
version = "C6r62em";
in
pkgs.stdenv.mkDerivation {
pname = "ca-matheo-si";
version = version;
src = pkgs.fetchurl {
url = "http://ipa2.matheo.si/ipa/config/ca.crt";
sha256 = "sha256-C6r62emPyw1kxUZOTWhwABNyBEWTTLMEVX5Ma/2i9ls";
};
dontUnpack = true;
installPhase = ''
mkdir -p $out
cp $src $out/ca-matheo-si.cert
'';
}

1
packages/default.nix Normal file
View File

@@ -0,0 +1 @@
{ lib, my-lib }: args: my-lib.mapDir ./. args

36
packages/ggman.nix Normal file
View File

@@ -0,0 +1,36 @@
{ nixpkgs-master, system, ... }:
let
nixpkgs = nixpkgs-master;
pkgs = import nixpkgs { inherit system; };
version = "e24855c";
in
pkgs.buildGoModule.override
{
go = pkgs.go_1_26;
}
{
pname = "ggman";
inherit version;
src = pkgs.fetchFromGitHub {
owner = "tkw1536";
repo = "ggman";
rev = version;
sha256 = "sha256-H78xtF7l5joX3/qDFaRIT4LyZpHmm6DMR4JIKzNO7c0=";
};
vendorHash = "sha256-w8NrOt0xtn+/gugJ4amzdJP70Y5KHe5DlhsEprycm3U=";
subPackages = [ "cmd/ggman" ];
ldflags = [
"-X go.tkw01536.de/ggman.buildVersion=${version}"
];
meta = {
description = "Manager for all your local git repositories";
homepage = "https://github.com/tkw1536/ggman";
license = pkgs.lib.licenses.mit;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,24 @@
{ nixpkgs, system, ... }:
let
pkgs = import nixpkgs { inherit system; };
version = "main";
in
pkgs.stdenv.mkDerivation {
pname = "git-linearize";
inherit version;
src = pkgs.fetchFromGitHub {
owner = "zegl";
repo = "extremely-linear";
rev = version;
sha256 = "sha256-aZGxX4B0hUrYWxViFAjbZ4dCWC2ujEBAlBKdx408KhA=";
};
propagatedBuildInputs = [ pkgs.lucky-commit ];
installPhase = ''
mkdir -p $out/bin
cp $src/git-linearize $src/shit $out/bin/
'';
}

28
packages/releasectl.nix Normal file
View File

@@ -0,0 +1,28 @@
{ nixpkgs-master, system, ... }:
let
nixpkgs = nixpkgs-master;
pkgs = import nixpkgs { inherit system; };
version = "v1.25.0";
python = pkgs.python313;
in
python.pkgs.buildPythonPackage rec {
pname = "releasectl";
version = "1.2.0";
src = pkgs.fetchurl {
url = "https://gitlab.com/flarenetwork/infra-public/pipeliner/-/package_files/216813866/download";
sha256 = "sha256-ScBG8BoOKDdOAHTFP+zwyk+Kfu31WoKQSRkutOvnJ5E";
};
format = "wheel"; # if it uses poetry/PEP517, otherwise "setuptools"
# nativeBuildInputs = [ python.pkgs.setuptools python.pkgs.wheel ];
# propagatedBuildInputs = with python.pkgs; [
# # add runtime deps here if needed
# ];
# pyproject = true;
# build-system = [ pkgs.python313Packages.hatchling ];
}

View File

@@ -0,0 +1,54 @@
{ inputs, ... }:
{
config,
lib,
pkgs,
inputs,
...
}:
let
packages = inputs.self.outputs.packages.${pkgs.stdenv.hostPlatform.system};
in
{
home.stateVersion = "24.11";
home.packages = [
pkgs.git
];
programs.neovim = {
enable = true;
vimAlias = true;
defaultEditor = true;
package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default;
extraPackages = with pkgs; [
# runtime deps
fzf
ripgrep
gnumake
gcc
luajit
lua-language-server
nil
nixd
nixpkgs-fmt
stylua
];
extraWrapperArgs = [
"--suffix"
"LD_LIBRARY_PATH"
":"
"${lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}"
];
};
}

View File

@@ -0,0 +1,103 @@
{ inputs, ... }:
{
config,
lib,
pkgs,
inputs,
...
}:
let
packages = inputs.self.outputs.packages.${pkgs.stdenv.hostPlatform.system};
in
{
home.stateVersion = "24.11";
# TODO:(janezicmatej) do i need this here?
services.dunst.enable = true;
home.packages = [
pkgs.bibata-cursors
pkgs.pinentry-curses
pkgs.starship
# git and co
pkgs.git
packages.git-linearize
packages.ggman
# cli utils
packages.ahab
pkgs.fzf
pkgs.htop
pkgs.jc
pkgs.jq
pkgs.openssl
pkgs.pv
pkgs.python3
pkgs.ripgrep
pkgs.fd
pkgs.tmux
pkgs.osc
pkgs.just
# compilers, toolchains, ...
pkgs.go
# pkgs.gcc
# pkgs.clang
# need for gcp stuff
pkgs.google-cloud-sdk
pkgs.google-cloud-sql-proxy
];
home.file.".assets".source = "${inputs.self}/assets";
stylix.targets.neovim.enable = false;
programs.neovim = {
enable = true;
vimAlias = true;
defaultEditor = true;
package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default;
extraPackages = with pkgs; [
# runtime deps
gcc
luajit
nodejs_22 # copilot
# treesitter
tree-sitter
# lua_fzf
fd
ripgrep
bat
gnumake
delta
# language server
pyright
typescript-language-server
lua-language-server
gopls
nil
nixd
# formatters
nixpkgs-fmt
stylua
];
extraWrapperArgs = [
"--suffix"
"LD_LIBRARY_PATH"
":"
"${lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}"
];
};
}