Initial Commit

This commit is contained in:
Eriq Taing
2026-09-02 14:03:18 -04:00
commit 10a3719f6d
6 changed files with 428 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
flake.lock
+30
View File
@@ -0,0 +1,30 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
nixpkgs,
home-manager,
stylix,
...
}:
{
homeConfigurations."eriq12" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
modules = [
stylix.homeModules.stylix
./home.nix
];
};
};
}
+197
View File
@@ -0,0 +1,197 @@
{ config, pkgs, ... }:
{
imports = [
./rnnnoise.nix
./hyprland-services.nix
./neovim.nix
];
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "eriq12";
home.homeDirectory = "/home/eriq12";
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "26.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
# pkgs.hello
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
rnnoise-plugin
nil
nixd
lua-language-server
# applications
nautilus
file-roller
pwvucontrol
waytrogen
losslesscut
pika-backup
freetube
r2modman
mission-center
localsend
# editors
libreoffice
zed-editor
# clipboard
wl-clipboard
# theming
bibata-cursors
# qt6 theming
qt6Packages.qt6ct
# thumbnailers
ffmpeg-headless
ffmpegthumbnailer
gdk-pixbuf
trash-cli
(writeTextFile {
name = "raw-embedded-jpeg-thumbnailer";
destination = "/share/thumbnailers/raw-embedded-jpeg.thumbnailer";
text = ''
[Thumbnailer Entry]
TryExec=gdk-pixbuf-thumbnailer
Exec=gdk-pixbuf-thumbnailer -s %s %u %o
MimeType=image/x-canon-crw;image/x-canon-cr2;image/x-canon-cr3;image/x-adobe-dng;image/x-dng;
'';
})
];
# theming
stylix = {
enable = true;
polarity = "dark";
base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-storm.yaml";
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
icons = {
enable = true;
package = pkgs.papirus-icon-theme;
dark = "Papirus-Dark";
light = "Papirus-Light";
};
targets.hyprpaper.enable = false;
};
# Services
services.hyprpolkitagent.enable = true;
services.mpris-proxy.enable = true;
services.udiskie = {
enable = true;
settings = {
program_options = {
file_manager = "${pkgs.kdePackages.dolphin}/bin/dolphin";
};
};
};
# programs
programs = {
quickshell = {
enable = true;
systemd.enable = true;
};
zsh = {
enable = true;
oh-my-zsh = {
enable = true;
plugins = [
"git"
"z"
];
theme = "agnoster";
};
setOptions = [
"EXTENDED_HISTORY"
"RM_STAR_WAIT"
"HIST_IGNORE_ALL_DUPS"
];
shellAliases = {
rm = "trash";
update = "home-manager switch";
};
};
zoxide.enable = true;
git = {
enable = true;
settings = {
user = {
name = "Eriq Taing";
email = "eriq12@gmail.com";
};
init.defaultBranch = "main";
alias = {
ci = "commit";
co = "checkout";
s = "status";
};
};
};
};
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/eriq12/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
# EDITOR = "emacs";
QT_QPA_PLATFORMTHEME = "qt6ct";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}
+46
View File
@@ -0,0 +1,46 @@
{ pkgs, ... }:
{
systemd.user.services = {
hyprlauncher = {
Unit = {
Description = "A launcher for the hypr ecosystem.";
After = [
"graphical-session.target"
"wayland-session@hyprland.desktop.target"
];
};
Service = {
ExecStart = "${pkgs.hyprlauncher}/bin/hyprlauncher -d";
Restart = "on-failure";
Slice = "app-graphical.slice";
};
Install = {
WantedBy = [
"graphical-session.target"
"wayland-session@hyprland.desktop.target"
];
};
};
hyprpaper = {
Unit = {
Description = "A simple background program for the hypr ecosystem.";
After = [
"graphical-session.target"
"wayland-session@hyprland.desktop.target"
];
};
Service = {
ExecStart = "${pkgs.hyprpaper}/bin/hyprpaper";
Restart = "on-failure";
Slice = "app-graphical.slice";
};
Install = {
WantedBy = [
"graphical-session.target"
"wayland-session@hyprland.desktop.target"
];
};
};
};
}
+105
View File
@@ -0,0 +1,105 @@
{ pkgs, ... }:
{
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
plugins = with pkgs.vimPlugins; [
#{
# plugin = tokyonight-nvim;
# config = ''
# require("tokyonight").setup({
# style = "night",
# on_highlights = function(h1)
# h1.LineNrAbove = {
# fg = "#6ab8ff",
# }
# h1.LineNrBelow = {
# fg = "#ff6188"
# }
# end,
# on_colors = function() end,
# })
# vim.cmd.colorscheme("tokyonight")
# '';
#}
{
plugin = (nvim-treesitter.withPlugins (p: [
p.c
p.lua
p.java
p.vim
p.vimdoc
p.javascript
p.query
p.elixir
p.html
]));
config = ''
require("nvim-treesitter").setup({
ensure_installed = {
"c",
"lua",
"java",
"vim",
"vimdoc",
"javascript",
"query",
"elixir",
"html"
},
sync_install = false,
highlight = { enable = true },
indent = { enable = true },
})
'';
}
#{
# plugin = bufferline-nvim;
# config = ''
# require("bufferline").setup({
# options = {
# mode = "tabs",
# },
# })
# '';
#}
{
plugin = vim-suda;
config = ''
vim.g["suda_smart_edit"] = 1
'';
}
];
initLua = ''
-- use `:h <option>` to figure out meaning
vim.opt.clipboard = "unnamedplus" -- use system keyboard
vim.opt.completeopt = { "menu", "noinsert", "noselect" }
vim.opt.mouse = "a" -- supposedly to allow the mouse to be used in nvim
-- Tab settings
vim.opt.tabstop = 2 -- set number of visual spaces per \t (Tab)
vim.opt.softtabstop = 2 -- set number of space in tab when editing
vim.opt.shiftwidth = 2 -- insert 2 spaces on a tab
vim.opt.expandtab = false -- for python apparently, treat tabs as spaces
-- UI config
vim.opt.number = true -- show the absolute number
vim.opt.relativenumber = true -- to add numbers to each line on the left side (line numbers?)
vim.opt.cursorline = true -- highlights the line where the cursor is
vim.opt.splitbelow = true -- sets new splits to be opened below
vim.opt.splitright = true -- sets new splits to be opened to the right
vim.opt.termguicolors = true -- enables 24-bit RGB color in Terminal UI
-- vim.opt.showmode = false -- removes the --INSERT-- like UI at the bottom
-- Search settings
vim.opt.incsearch = true -- search as characters are entered
--vim.opt.hlsearch = false -- do not highlight matches
vim.opt.ignorecase = true -- ignore cases by default
vim.opt.smartcase = true -- when capitalized, be case sensitive
'';
};
}
+49
View File
@@ -0,0 +1,49 @@
{ pkgs, ... }:
let
inherit (pkgs) rnnoise-plugin;
in
{
xdg.configFile."pipewire/pipewire.conf.d/99-rnnoise.conf" = {
text = builtins.toJSON {
"context.modules" = [
{
name = "libpipewire-module-filter-chain";
args = {
"node.description" = "Noise Canceling source";
"media.name" = "Noise Canceling source";
"filter.graph" = {
nodes = [
{
type = "ladspa";
name = "rnnoise";
plugin = "${rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so";
label = "noise_suppressor_mono";
control = {
"VAD Threshold (%)" = 80.0;
"VAD Grace Period (ms)" = 200;
"Retroactive VAD Grace (ms)" = 0;
};
}
];
};
"audio.position" = [ "FL" "FR" ];
"capture.props" = {
"node.name" = "effect_input.rnnoise";
"node.passive" = true;
"target.object" = "alsa_input.usb-audio-technica____AT2020_USB-00.analog-stereo";
"audio.rate" = 48000;
};
"playback.props" = {
"node.name" = "effect_output.rnnoise";
"media.class" = "Audio/Source";
"audio.rate" = 48000;
};
};
}
];
};
};
}