feat: add initial modules
This commit is contained in:
15
lib/autoDir.nix
Normal file
15
lib/autoDir.nix
Normal 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
11
lib/default.nix
Normal 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
11
lib/mapDir.nix
Normal 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
54
lib/mkHost.nix
Normal 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; };
|
||||||
|
}
|
||||||
1
modules/nixos/default.nix
Normal file
1
modules/nixos/default.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{ lib, my-lib }: args: (my-lib.autoDir ./.)
|
||||||
55
modules/nixos/sway.nix
Normal file
55
modules/nixos/sway.nix
Normal 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
23
modules/nixos/yubikey.nix
Normal 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
29
packages/ahab.nix
Normal 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
23
packages/ca-matheo-si.nix
Normal 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
1
packages/default.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{ lib, my-lib }: args: my-lib.mapDir ./. args
|
||||||
36
packages/ggman.nix
Normal file
36
packages/ggman.nix
Normal 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 = [ ];
|
||||||
|
};
|
||||||
|
}
|
||||||
24
packages/git-linearize.nix
Normal file
24
packages/git-linearize.nix
Normal 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
28
packages/releasectl.nix
Normal 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 ];
|
||||||
|
|
||||||
|
}
|
||||||
54
users/gorazd/home-manager.nix
Normal file
54
users/gorazd/home-manager.nix
Normal 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 ]}"
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
103
users/matej/home-manager.nix
Normal file
103
users/matej/home-manager.nix
Normal 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 ]}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user