Initial Commit
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
flake.lock
|
||||||
@@ -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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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
@@ -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
|
||||||
|
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user