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