initial commit

This commit is contained in:
2025-05-12 23:25:39 -03:00
parent bf178e3caa
commit dc6f6894e6
95 changed files with 3922 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
{ pkgs, ... }:
{
imports = [
#################### Required Configs ####################
common/core # required
#################### Host-specific Optional Configs ####################
];
home.packages = builtins.attrValues {
inherit (pkgs)
vlc
;
};
}

View File

@@ -0,0 +1,9 @@
{
programs.brave = {
enable = true;
commandLineArgs = [
"--no-default-browser-check"
"--restore-last-session"
];
};
}

View File

@@ -0,0 +1,47 @@
{
config,
lib,
pkgs,
...
}:
{
imports = lib.flatten [
(lib.custom.scanPaths ./.)
(map lib.custom.relativeToRoot [
"modules/home"
])
];
home = {
username = lib.mkDefault "exampleSecondUser";
homeDirectory = lib.mkDefault "/home/${config.home.username}";
stateVersion = lib.mkDefault "24.11";
sessionPath = [ "$HOME/.local/bin" ];
};
home.packages = builtins.attrValues {
inherit (pkgs)
# Packages that don't have custom configs go here
nix-tree
;
};
nix = {
package = lib.mkDefault pkgs.nix;
settings = {
experimental-features = [
"nix-command"
"flakes"
];
warn-dirty = false;
};
};
programs = {
home-manager.enable = true;
};
# Nicely reload system units when changing configs
systemd.user.startServices = "sd-switch";
}

View File

@@ -0,0 +1,11 @@
{ pkgs, ... }:
{
gtk = {
enable = true;
iconTheme = {
name = "elementary-Xfce-dark";
package = pkgs.elementary-xfce-icon-theme;
};
};
}

View File

@@ -0,0 +1,19 @@
{...}: {
imports = [
#
# ========== Required Configs ==========
#
common/core
#
# ========== Host-specific Optional Configs ==========
#
# FIXME(starter): add or remove any optional config directories or files ehre
common/optional/browsers
common/optional/desktops
common/optional/comms
common/optional/media
common/optional/coding
common/optional/games
];
}

View File

@@ -0,0 +1,12 @@
# FIXME(starter): customize your bash preferences here
{
programs.bash = {
enable = true;
enableCompletion = true;
shellAliases = {
};
initExtra = ''
'';
};
}

View File

@@ -0,0 +1,10 @@
# Core home functionality that will only work on Darwin
{ config, ... }:
{
home.sessionPath = [ "/opt/homebrew/bin" ];
home = {
username = config.hostSpec.username;
homeDirectory = config.hostSpec.home;
};
}

View File

@@ -0,0 +1,79 @@
#FIXME: Move attrs that will only work on linux to nixos.nix
{
config,
lib,
pkgs,
hostSpec,
...
}: let
platform =
if hostSpec.isDarwin
then "darwin"
else "nixos";
in {
imports = lib.flatten [
(map lib.custom.relativeToRoot [
"modules/common/host-spec.nix"
"modules/home"
])
./${platform}.nix
# FIXME(starter): add/edit as desired
./fish.nix
./bash.nix
./direnv.nix
./fonts.nix
./kitty.nix
./git.nix
./ssh.nix
];
inherit hostSpec;
services.ssh-agent.enable = true;
home = {
username = lib.mkDefault config.hostSpec.username;
homeDirectory = lib.mkDefault config.hostSpec.home;
stateVersion = lib.mkDefault "24.11";
sessionPath = [
"$HOME/.local/bin"
];
sessionVariables = {
FLAKE = "$HOME/src/nix/nix-config";
SHELL = "bash";
};
};
home.packages = builtins.attrValues {
inherit
(pkgs)
# FIXME(starter): add/edit as desired
# Packages that don't have custom configs go here
curl
pciutils
pfetch # system info
pre-commit # git hooks
p7zip # compression & encryption
usbutils
unzip # zip extraction
unrar # rar extraction
;
};
nix = {
package = lib.mkDefault pkgs.nix;
settings = {
experimental-features = [
"nix-command"
"flakes"
];
warn-dirty = false;
};
};
programs.home-manager.enable = true;
# Nicely reload system units when changing configs
systemd.user.startServices = "sd-switch";
}

View File

@@ -0,0 +1,8 @@
{
programs.direnv = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
nix-direnv.enable = true; # better than native direnv nix functionality - https://github.com/nix-community/nix-direnv
};
}

View File

@@ -0,0 +1,25 @@
{pkgs, ...}: {
home.packages = builtins.attrValues {
inherit
(pkgs)
grc
;
};
programs.fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting # Disable greeting
'';
plugins = [
{
name = "grc";
src = pkgs.fishPlugins.grc.src;
}
{
name = "autopair";
src = pkgs.fishPlugins.autopair.src;
}
];
};
}

View File

@@ -0,0 +1,7 @@
{ pkgs, ... }:
{
fonts.fontconfig.enable = true;
home.packages = [
pkgs.noto-fonts
];
}

View File

@@ -0,0 +1,25 @@
# git is core no matter what but additional settings may could be added made in optional/foo eg: development.nix
{
pkgs,
...
}:
{
programs.git = {
enable = true;
package = pkgs.gitAndTools.gitFull;
ignores = [
".csvignore"
# nix
"*.drv"
"result"
# python
"*.py?"
"__pycache__/"
".venv/"
# direnv
".direnv"
];
};
}

View File

@@ -0,0 +1,5 @@
{
programs.kitty = {
enable = true;
};
}

View File

@@ -0,0 +1,7 @@
# Core home functionality that will only work on Linux
{
...
}:
{
}

View File

@@ -0,0 +1,9 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.screen ];
home.file.".screenrc".text = ''
startup_message off
defbce on
setenv TERM xterm-256color
'';
}

View File

@@ -0,0 +1,24 @@
# FIXME(starter): adjust to you security requirements
{
config,
...
}:
{
programs.ssh =
{
enable = true;
controlMaster = "auto";
controlPath = "${config.home.homeDirectory}/.ssh/sockets/S.%r@%h:%p";
controlPersist = "20m";
# Avoids infinite hang if control socket connection interrupted. ex: vpn goes down/up
serverAliveCountMax = 3;
serverAliveInterval = 5; # 3 * 5s
hashKnownHosts = true;
addKeysToAgent = "yes";
};
home.file = {
".ssh/config.d/.keep".text = "# Managed by Home Manager";
".ssh/sockets/.keep".text = "# Managed by Home Manager";
};
}

View File

@@ -0,0 +1,6 @@
{pkgs, ...}: {
programs.chromium = {
enable = true;
package = pkgs.ungoogled-chromium;
};
}

View File

@@ -0,0 +1,8 @@
# FIXME(starter): add/edit any browser modules here
{
imports = [
./chromium.nix
./firefox.nix
./zen.nix
];
}

View File

@@ -0,0 +1,5 @@
{...}: {
programs.librewolf = {
enable = true;
};
}

View File

@@ -0,0 +1,24 @@
{inputs, ...}: {
# home.nix
imports = [
inputs.zen-browser.homeModules.beta
# or inputs.zen-browser.homeModules.twilight
# or inputs.zen-browser.homeModules.twilight-official
];
programs.zen-browser = {
enable = true;
policies = {
AutofillAddressEnabled = true;
AutofillCreditCardEnabled = false;
DisableAppUpdate = true;
DisableFeedbackCommands = true;
DisableFirefoxStudies = true;
DisablePocket = true; # save webs for later reading
DisableTelemetry = true;
DontCheckDefaultBrowser = true;
NoDefaultBookmarks = true;
OfferToSaveLogins = false;
};
};
}

View File

@@ -0,0 +1,13 @@
{pkgs, ...}: {
imports = [
./vscode
./zed.nix
];
home.packages = builtins.attrValues {
inherit
(pkgs)
hoppscotch
;
};
}

View File

@@ -0,0 +1,69 @@
{pkgs, ...}: {
imports = [
./javascript.nix
./latex.nix
./markdown.nix
./nix.nix
./rust.nix
];
programs.vscode = {
enable = true;
package = pkgs.vscodium;
enableUpdateCheck = false; # Disable VSCode self-update and let Home Manager to manage VSCode versions instead.
enableExtensionUpdateCheck = false; # Disable extensions auto-update and let nix4vscode manage updates and extensions
# Extensions
extensions = pkgs.nix4vscode.forVscode [
# General extensions
## Code Completion
"continue.continue"
#rooveterinaryinc.roo-cline
## Development Environment
"ms-toolsai.jupyter"
"ms-vscode-remote.remote-containers"
## Error Checking
"usernamehw.errorlens"
## Export and Visualisation
"ibm.output-colorizer"
"nobuhito.printcode"
"pnp.polacode"
## Git
"lamartire.git-indicators"
"mhutchie.git-graph"
## Miscelaneous
"britesnow.vscode-toggle-quotes"
"mrmlnc.vscode-duplicate"
"qcz.text-power-tools"
# Language extensions
## CSV
"mechatroner.rainbow-csv"
## Golang
"golang.go"
## Python
"ms-python.python"
## SVG
"jock.svg"
];
# Settings
userSettings = {
"editor.linkedEditing" = true;
"editor.inlineSuggest.enabled" = true;
"continue.enableTabAutocomplete" = true;
"window.menuBarVisibility" = "toggle";
#"github.copilot.editor.enableAutoCompletions" = true;
"redhat.telemetry.enabled" = false;
};
};
}

View File

@@ -0,0 +1,56 @@
{pkgs, ...}: {
programs.vscode = {
extensions = pkgs.nix4vscode.forVscode [
# General
"christian-kohler.npm-intellisense"
"dbaeumer.vscode-eslint"
"denoland.vscode-deno"
"esbenp.prettier-vscode"
"liamhammett.inline-parameters"
"yatki.vscode-surround"
# Astro
"astro-build.astro-vscode"
# CSS
"bradlc.vscode-tailwindcss"
"pranaygp.vscode-css-peek"
"stylelint.vscode-stylelint"
"zignd.html-css-class-completion"
# ServiceNow
"arnoudkooicom.sn-scriptsync"
# Svelte
"svelte.svelte-vscode"
# Tauri
"tauri-apps.tauri-vscode"
# Testing
"ms-playwright.playwright"
];
userSettings = {
"[javascript]"."editor.defaultFormatter" = "esbenp.prettier-vscode";
"[typescript]"."editor.defaultFormatter" = "esbenp.prettier-vscode";
"[typescriptreact]"."editor.defaultFormatter" = "esbenp.prettier-vscode";
"[json]"."editor.defaultFormatter" = "esbenp.prettier-vscode";
"[jsonc]"."editor.defaultFormatter" = "esbenp.prettier-vscode";
"[html]"."editor.defaultFormatter" = "esbenp.prettier-vscode";
"[scss]"."editor.defaultFormatter" = "esbenp.prettier-vscode";
"[css]"."editor.defaultFormatter" = "esbenp.prettier-vscode";
"[astro]"."editor.defaultFormatter" = "astro-build.astro-vscode";
"svelte.enable-ts-plugin" = true;
"playwright.reuseBrowser" = true;
};
};
home.packages = with pkgs; [
deno
pnpm
bun
nodejs
];
}

View File

@@ -0,0 +1,28 @@
{pkgs, ...}: {
programs.vscode = {
extensions = pkgs.nix4vscode.forVscode [
# General
"james-yu.latex-workshop"
];
userSettings = {
"latex-workshop.latex.recipe.default" = "tectonic";
"latex-workshop.latex.autoBuild.run" = "onSave";
"latex-workshop.latex.outDir" = "%WORKSPACE_FOLDER%/build/index";
"latex-workshop.view.pdf.viewer" = "tab";
"latex-workshop.latex.recipes" = [
{
"name" = "tectonic";
"tools" = ["tectonic"];
}
];
"latex-workshop.latex.tools" = [
{
"name" = "tectonic";
"command" = "tectonic";
"args" = ["-X" "build" "--keep-intermediates" "--keep-logs"];
"env" = {};
}
];
};
};
}

View File

@@ -0,0 +1,15 @@
{pkgs, ...}: {
programs.vscode = {
extensions = pkgs.nix4vscode.forVscode [
# General
"bpruitt-goddard.mermaid-markdown-syntax-highlighting"
"davidanson.vscode-markdownlint"
"yzhang.markdown-all-in-one"
];
userSettings = {
"[markdown]" = {
"editor.defaultFormatter" = "esbenp.prettier-vscode";
};
};
};
}

View File

@@ -0,0 +1,18 @@
{pkgs, ...}: {
home.packages = with pkgs; [
nil
alejandra
deadnix
];
programs.vscode = {
extensions = pkgs.nix4vscode.forVscode [
"jnoortheen.nix-ide"
"kamadorueda.alejandra"
];
userSettings = {
"nix.enableLanguageServer" = true;
"nix.serverPath" = "nil";
};
};
}

View File

@@ -0,0 +1,19 @@
{pkgs, ...}: {
programs.vscode = {
extensions =
pkgs.nix4vscode.forVscode
[
# General
"serayuzgur.crates"
"tamasfe.even-better-toml"
"rust-lang.rust-analyzer"
];
userSettings = {
};
};
home.packages = with pkgs; [
cargo
rustc
];
}

View File

@@ -0,0 +1,5 @@
{pkgs, ...}: {
programs.zed-editor = {
enable = true;
};
}

View File

@@ -0,0 +1,13 @@
# FIXME(starter): add/edit any optional, communications related pkgs here
{pkgs, ...}: {
#imports = [ ./foo.nix ];
home.packages = builtins.attrValues {
inherit
(pkgs)
teams-for-linux
signal-desktop
discord
;
};
}

View File

@@ -0,0 +1,14 @@
{ pkgs, ... }:
{
imports = [
# Packages with custom configs go here
########## Utilities ##########
#./fonts.nix
./gtk.nix
];
home.packages = [
pkgs.pavucontrol # gui for pulseaudio server and volume controls
pkgs.galculator # gtk based calculator
];
}

View File

@@ -0,0 +1,14 @@
{
pkgs,
...
}:
{
gtk = {
enable = true;
iconTheme = {
name = "elementary-Xfce-dark";
package = pkgs.elementary-xfce-icon-theme;
};
};
}

View File

@@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = [ pkgs.playerctl ];
services.playerctld = {
enable = true;
};
}

View File

@@ -0,0 +1,7 @@
# FIXME(starter): add/edit any browser modules here
{
imports = [
./steam.nix
./minecraft.nix
];
}

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
home.packages = [pkgs.prismlauncher];
}

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
home.packages = [pkgs.steam];
}

View File

@@ -0,0 +1,11 @@
# FIXME(starter): add/edit any optional, media related pkgs here
{ pkgs, ... }:
{
#imports = [ ./foo.nix ];
home.packages = builtins.attrValues {
inherit (pkgs)
vlc
;
};
}

View File

@@ -0,0 +1,20 @@
{pkgs, ...}: {
imports = [
./obsidian.nix
];
# FIXME(starter): add/edit any optional, communications related pkgs here
#imports = [ ./foo.nix ];
home.packages = builtins.attrValues {
inherit
(pkgs)
blender
inkscape
libreoffice-qt
hunspell
hunspellDicts
;
};
}

View File

@@ -0,0 +1,8 @@
{pkgs, ...}: {
home.packages = builtins.attrValues {
inherit
(pkgs)
obsidian
;
};
}

6
home/panotaka/iso.nix Normal file
View File

@@ -0,0 +1,6 @@
{ ... }:
{
imports = [
common/core
];
}

View File

@@ -0,0 +1,16 @@
{ pkgs, ... }:
{
# TODO add ttf-font-awesome or font-awesome for waybar
fontProfiles = {
enable = true;
monospace = {
family = "FiraCode Nerd Font";
package = pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; };
};
regular = {
family = "Fira Sans";
package = pkgs.fira;
};
};
}