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