From 10a3719f6d973b8cc0a6acfa86506bc39c5c9c85 Mon Sep 17 00:00:00 2001 From: Eriq Taing Date: Wed, 2 Sep 2026 14:03:18 -0400 Subject: [PATCH] Initial Commit --- .gitignore | 1 + flake.nix | 30 +++++++ home.nix | 197 ++++++++++++++++++++++++++++++++++++++++++ hyprland-services.nix | 46 ++++++++++ neovim.nix | 105 ++++++++++++++++++++++ rnnnoise.nix | 49 +++++++++++ 6 files changed, 428 insertions(+) create mode 100644 .gitignore create mode 100644 flake.nix create mode 100644 home.nix create mode 100644 hyprland-services.nix create mode 100644 neovim.nix create mode 100644 rnnnoise.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..301d47e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +flake.lock diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..4011e4f --- /dev/null +++ b/flake.nix @@ -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 + ]; + }; + }; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..1a93887 --- /dev/null +++ b/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; +} diff --git a/hyprland-services.nix b/hyprland-services.nix new file mode 100644 index 0000000..b211880 --- /dev/null +++ b/hyprland-services.nix @@ -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" + ]; + }; + }; + }; +} diff --git a/neovim.nix b/neovim.nix new file mode 100644 index 0000000..e091edf --- /dev/null +++ b/neovim.nix @@ -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