Refactor codebase to use nix modules

This commit is contained in:
Julia Lange 2024-04-14 05:40:02 -07:00
parent a4735423b4
commit ffada2703c
114 changed files with 1018 additions and 744 deletions

46
flake.lock generated
View file

@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1712250145, "lastModified": 1712834339,
"narHash": "sha256-8WTGn7It2kZfAmN97Epi3g/Su/w3Hbw/T4dWxE7OrBw=", "narHash": "sha256-gRYAbyxx4Z2s4hMoXHSu3wv2+VSiiR2Nk+AZmCZ6kc4=",
"owner": "Aylur", "owner": "Aylur",
"repo": "ags", "repo": "ags",
"rev": "d589077199ec8a055ef936bf8a1f051b7a0c7e34", "rev": "c13bcba224f9ecaaa2f22b1d2895bb62e8face19",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -27,11 +27,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1712462372, "lastModified": 1713077896,
"narHash": "sha256-WA3bbBWhd3o1wAgyHZNypjb/LG4oq+IWxFq8ey8yNPU=", "narHash": "sha256-Noot8H0EZEAFRQWyGxh9ryvhK96xpIqKbh78X447JWs=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "a561ad6ab38578c812cc9af3b04f2cc60ebf48c9", "rev": "630a0992b3627c64e34f179fab68e3d48c6991c0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -82,11 +82,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1712528342, "lastModified": 1713050186,
"narHash": "sha256-5tRzlHnhk28M2ClRshRAEANGE/GF9A1Cl36OXAmi+Ig=", "narHash": "sha256-AKdzVa0Zz5PQ1ptQgD0jj8J+UZUW9OeKGZ0mNVnkyI4=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "43b96f03b5af60586a864ea64e8c71b11ea6eb85", "rev": "0634aaeac6cca12e4f72174c431c2db9da9c0072",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -167,11 +167,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1712439257, "lastModified": 1712791164,
"narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", "narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", "rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -207,20 +207,18 @@
"wlroots": { "wlroots": {
"flake": false, "flake": false,
"locked": { "locked": {
"host": "gitlab.freedesktop.org", "lastModified": 1712935342,
"lastModified": 1709983277, "narHash": "sha256-zzIbTFNFd/as42jyGx23fil2uBDYYv+8GA5JmRq5y9c=",
"narHash": "sha256-wXWIJLd4F2JZeMaihWVDW/yYXCLEC8OpeNJZg9a9ly8=", "owner": "hyprwm",
"owner": "wlroots", "repo": "wlroots-hyprland",
"repo": "wlroots", "rev": "62eeffbe233d199f520a5755c344e85f8eab7940",
"rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", "type": "github"
"type": "gitlab"
}, },
"original": { "original": {
"host": "gitlab.freedesktop.org", "owner": "hyprwm",
"owner": "wlroots", "repo": "wlroots-hyprland",
"repo": "wlroots", "rev": "62eeffbe233d199f520a5755c344e85f8eab7940",
"rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", "type": "github"
"type": "gitlab"
} }
}, },
"xdph": { "xdph": {

View file

@ -17,17 +17,18 @@
ags.inputs.nixpkgs.follows = "nixpkgs"; ags.inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = { nixpkgs, home-manager, hyprland, ... }@inputs: let outputs = { nixpkgs, home-manager, ... }@inputs:
let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
in { defaultConfig = extraModules: home-manager.lib.homeManagerConfiguration {
homeConfigurations."pan" = home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
extraSpecialArgs = { inherit inputs; }; extraSpecialArgs = { inherit inputs; };
modules = [ modules = [
hyprland.homeManagerModules.default ./hmModules
./home.nix ] ++ extraModules;
];
}; };
in {
homeConfigurations.pan = defaultConfig [ ./systems/pan ];
}; };
} }

View file

@ -0,0 +1,13 @@
{ config, pkgs, lib, ... }:
{
options.beeper = {
enable = lib.mkEnableOption "Enables beeper";
};
config = lib.mkIf config.beeper.enable {
home.packages = with pkgs; [
beeper
];
};
}

View file

@ -0,0 +1,8 @@
{ config, pkgs, ... }:
{
imports = [
./discord
./beeper
];
}

View file

@ -0,0 +1,12 @@
{ config, pkgs, lib, ... }:
{
options.discord = {
enable = lib.mkEnableOption "Enables discord";
};
config = lib.mkIf config.discord.enable {
home.packages = with pkgs; [
vesktop # Base app
];
};
}

View file

@ -0,0 +1,18 @@
{ config, pkgs, ... }:
{
imports = [
./chat
./file-browsers
./gimp
./git
./hypr
./lutris
./media-viewers
./neovim
./obs
./rofi
./shells
./terminal-emulators
];
}

View file

@ -0,0 +1,8 @@
{ config, pkgs, lib, ... }:
{
imports = [
./lf
./nnn
];
}

View file

@ -0,0 +1,82 @@
{ config, pkgs, lib, ... }:
{
options.lf = {
enable = lib.mkEnableOption "Enables lf";
hiddenfiles = lib.mkOption { default = [ ".*" ]; };
leader = lib.mkOption { default = "<space>"; };
};
config = lib.mkIf config.lf.enable {
xdg.configFile."lf/icons".source = ./icons;
programs.lf = {
enable = true;
settings = {
# Hide specific files rather than "hidden" files
hiddenfiles = config.lf.hiddenfiles;
ratios = [
2
3
];
preview = true;
ignorecase = true;
icons = true;
number = true;
relativenumber = true;
};
commands = {
dragon-out = ''%${pkgs.xdragon}/bin/xdragon -a -x "$fx"'';
mkdir = ''
''${{
printf "Directory Name: "
read DIR
mkdir $DIR
}}
'';
mkfile = ''
''${{
printf "File Name: "
read FILE
mkdir $FILE
}}
'';
};
keybindings = let
leader = config.lf.leader;
in {
"${leader}" = "";
"v" = ":toggle; down";
"." = "set hidden!";
"${leader}d" = "mkdir";
"${leader}f" = "mkfile";
"${leader}m" = "dragon-out";
};
extraConfig =
let
previewer =
pkgs.writeShellScriptBin "pv.sh" ''
file=$1
w=$2
h=$3
x=$4
y=$5
if [[ "$( ${pkgs.file}/bin/file -Lb --mime-type "$file")" =~ ^image ]]; then
${pkgs.kitty}/bin/kitty +kitten icat --silent --stdin no --transfer-mode file --place "''${w}x''${h}@''${x}x''${y}" "$file" < /dev/null > /dev/tty
exit 1
fi
${pkgs.pistol}/bin/pistol "$file"
'';
cleaner = pkgs.writeShellScriptBin "clean.sh" ''
${pkgs.kitty}/bin/kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty
'';
in
''
set cleaner ${cleaner}/bin/clean.sh
set previewer ${previewer}/bin/pv.sh
'';
};
};
}

View file

@ -0,0 +1,17 @@
{ config, pkgs, lib, ... }:
{
options.nnn = {
enable = lib.mkEnableOption "Enables nnn";
};
config = lib.mkIf config.nnn.enable {
programs.nnn.enable = true;
home.sessionVariables = {
NNN_FCOLORS = "0000E6310000000000000000";
NNN_OPTS = "eH";
NNN_FIFO = "/tmp/nnn.fifo";
NNN_TRASH = lib.mkIf config.trash.enable "1";
};
};
}

View file

@ -0,0 +1,13 @@
{ config, pkgs, lib, ... }:
{
options.gimp = {
enable = lib.mkEnableOption "Enables gimp";
};
config = lib.mkIf config.gimp.enable {
home.packages = with pkgs; [
gimp
];
};
}

View file

@ -0,0 +1,19 @@
{ config, pkgs, lib, ... }:
{
options.git = {
enable = lib.mkEnableOption "Enables git";
username = lib.mkOption { default = config.home.username; };
email = lib.mkOption {
default = "git@" + config.home.username + ".com";
};
};
config = lib.mkIf config.git.enable {
programs.git = {
enable = true;
userName = config.git.username;
userEmail = config.git.email;
};
};
}

View file

@ -0,0 +1,50 @@
{ config, inputs, pkgs, lib, ... }:
let rootPath = ./.; in
{
options.hypr = {
enable = lib.mkEnableOption "Enables hyprland";
};
imports = [ inputs.hyprland.homeManagerModules.default ];
config = lib.mkIf config.hypr.enable {
wayland.windowManager.hyprland = {
enable = true;
extraConfig = ''
${builtins.readFile ./window_rules.conf}
${builtins.readFile ./league_rules.conf}
${builtins.readFile ./settings.conf}
${builtins.readFile ./nvidia.conf}
${builtins.readFile ./keybinds.conf}
${builtins.readFile ./xwaylandvideobridge.conf}
exec-once=${pkgs.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1
env = HYPRCURSOR_THEME,miku
env = HYPRCURSOR_SIZE,64
'';
};
home.packages = with pkgs; [
socat # For hyprland scripts
swww # Wallpaper engine
wlr-randr # Xrandr for wayland
wl-clipboard # Clipboard manager for wayland
xdg-desktop-portal-hyprland # XDP for hyprland
hyprpicker # Colorpicker, needed for screenshot tool
hyprcursor # Hyprland cursor
inputs.hyprland-contrib.packages.${pkgs.system}.grimblast # Screenshot tool
polkit-kde-agent # Polkit handler
];
# Hyprland screenshot tool
xdg.configFile."hypr-scripts" = {
source = rootPath + "/scripts";
target = "hypr/scripts";
executable = true;
};
xdg.dataFile."hypr-icons" = {
source = rootPath + "/icons";
target = "icons/";
recursive = true;
};
};
}

View file

@ -0,0 +1,16 @@
{ config, pkgs, lib, ... }:
{
options.librewolf = {
enable = lib.mkEnableOption "Enables librewolf";
};
config = lib.mkIf config.librewolf.enable {
home.packages = with pkgs; [
librewolf
];
home.sessionVariables = {
BROWSER = "librewolf";
};
};
}

View file

@ -0,0 +1,22 @@
{ config, pkgs, lib, ... }:
{
options.lutris = {
enable = lib.mkEnableOption "Enables lutris";
};
config = lib.mkIf config.lutris.enable {
home.packages = with pkgs; [
lutris
wineWowPackages.stable
# (lutris.override {
# extraLibraries = pkgs: [
# # List library dependencies here
# ];
# extraPkgs = pkgs: [
# # List package dependencies here
# ];
# })
];
};
}

View file

@ -0,0 +1,9 @@
{ config, pkgs, ... }:
{
imports = [
./feh
./mpv
./zathura
];
}

View file

@ -0,0 +1,13 @@
{ config, pkgs, lib, ... }:
{
options.feh = {
enable = lib.mkEnableOption "Enables feh";
};
config = lib.mkIf config.feh.enable {
programs.feh = {
enable = true;
};
};
}

View file

@ -0,0 +1,22 @@
{ config, pkgs, lib, ... }:
{
options.mpv = {
enable = lib.mkEnableOption "Enables mpv";
};
config = lib.mkIf config.mpv.enable {
home.packages = with pkgs; [
yt-dlp
];
programs.mpv = {
enable = true;
config = {
volume-max = 150;
force-window = "yes";
script-opts = "ytdl_hook-ytdl_path=yt-dlp";
ytdl-format = "bestvideo[height<=?1080][vcodec!=vp9]+bestaudio/best";
};
};
};
}

View file

@ -0,0 +1,13 @@
{ config, pkgs, lib, ... }:
{
options.zathura = {
enable = lib.mkEnableOption "Enables zathura";
};
config = lib.mkIf config.zathura.enable {
programs.zathura = {
enable = true;
};
};
}

View file

@ -0,0 +1,86 @@
{ config, pkgs, lib, ... }:
{
options.neovim = {
enable = lib.mkEnableOption "Enables neovim";
};
config = lib.mkIf config.neovim.enable {
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
};
programs.neovim = {
enable = true;
extraConfig = ''
${builtins.readFile ./init.vim}
'';
plugins = with pkgs.vimPlugins; [
{ # Personal Wiki
plugin = vimwiki;
config = ''
let g:vimwiki_list = [{'path': '~/dox/wiki', 'links_space_char': '_',
\ 'ext': '.md', 'syntax': 'markdown'}]
'';
}
{ # NNN in vim
plugin = nnn-vim;
config = ''
let g:nnn#layout = { 'window': {
\ 'width': 0.35,
\ 'height': 0.5,
\ 'xoffset': 1.0,
\ 'highlight': 'Debug' } } " hover window
let g:nnn#action = {
\ '<c-t>': 'tab split',
\ '<c-s>': 'split',
\ '<c-v>': 'vsplit' }
let g:nnn#command = 'nnn -HoeT v'
let g:nnn#replace_netrw = 1
'';
}
{ # Fuzzy searches
plugin = fzf-vim;
config = ''
map <C-f> :Files<CR>
map <C-a> :Ag<CR>
'';
}
{ # Auto completions
plugin = coc-nvim;
config = ''
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
'';
}
vim-commentary # multi-line comments
vim-fugitive # Git Plugin
vimtex # Latex support
tagbar # File tagging
# === LOOK AND FEEL ===
{ # Status Bar
plugin = vim-airline;
config = ''
let g:airline#extensions#tagbar#flags = 'fs'
'';
}
{ # Rainbow Parenthesis
plugin = rainbow;
config = ''
let g:rainbow_actve = 1
'';
}
vim-polyglot # Syntax Highlighting
];
};
};
}

View file

@ -14,7 +14,8 @@ nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H> nnoremap <C-H> <C-W><C-H>
" Indentation " Indentation
set tabstop=2 softtabstop=0 shiftwidth=2 smarttab expandtab " set tabstop=2 softtabstop=0 shiftwidth=2 smarttab expandtab
set tabstop=8 softtabstop=0 shiftwidth=8
" Searching " Searching
set smartcase set smartcase

View file

@ -0,0 +1,17 @@
{ config, pkgs, lib, ... }:
{
options.obs = {
enable = lib.mkEnableOption "Enables obs";
};
config = lib.mkIf config.obs.enable {
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-backgroundremoval
obs-pipewire-audio-capture
];
};
};
}

View file

@ -0,0 +1,14 @@
{ config, pkgs, lib, ... }:
{
options.rofi = {
enable = lib.mkEnableOption "Enables rofi";
};
config = lib.mkIf config.rofi.enable {
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
};
};
}

View file

@ -0,0 +1,9 @@
{ config, pkgs, lib, ... }:
{
imports = [
./fish
./xonsh
./zsh
];
}

View file

@ -0,0 +1,45 @@
{ config, pkgs, lib, ... }:
{
options.fish = {
enable = lib.mkEnableOption "Enables fish";
};
config = lib.mkIf config.fish.enable {
programs.fish.enable = true;
programs.fish.functions = {
fish_greeting = "";
fish_prompt = ''
${builtins.readFile ./functions/fish_prompt.fish}
'';
fish_right_prompt = ''
${builtins.readFile ./functions/fish_right_prompt.fish}
'';
git_branch_name = ''
${builtins.readFile ./functions/git_branch_name.fish}
'';
git_is_dirty = ''
${builtins.readFile ./functions/git_is_dirty.fish}
'';
git_is_repo = ''
${builtins.readFile ./functions/git_is_repo.fish}
'';
git_is_staged = ''
${builtins.readFile ./functions/git_is_staged.fish}
'';
git_is_touched = ''
${builtins.readFile ./functions/git_is_touched.fish}
'';
git_is_worktree = ''
${builtins.readFile ./functions/git_is_worktree.fish}
'';
ssh = ''
${builtins.readFile ./functions/ssh.fish}
'';
n = lib.mkIf config.nnn.enable ''
${builtins.readFile ./functions/n.fish}
'';
};
};
}

View file

@ -0,0 +1,22 @@
{ config, pkgs, lib, ... }:
let rootPath = ./.; in
{
options.xonsh = {
enable = lib.mkEnableOption "Enables xonsh";
};
config = lib.mkIf config.xonsh.enable {
home.packages = with pkgs; [
xonsh
];
home.sessionVariables = {
PROMPT = "τ ";
RIGHT_PROMPT = "{YELLOW}{gitstatus: {} }{BLUE}{short_cwd}{DEFAULT}";
VI_MODE = 1;
};
xdg.configFile."xonshrc" = {
source = rootPath + "/rc.xsh";
target = "xonsh/rc.xsh";
};
};
}

View file

@ -0,0 +1,47 @@
{ config, pkgs, lib, ... }:
{
options.zsh = {
enable = lib.mkEnableOption "Enable zsh";
};
config = lib.mkIf config.zsh.enable {
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
dotDir = ".config/zsh";
history.save = 10000;
history.size = 10000;
history.path = "${config.xdg.dataHome}/zsh/history";
initExtra = let
lf = lib.optionalString config.lf.enable ''
# Lf change directory command
lfcd () {
cd "$(command lf -print-last-dir "$@")"
}
bindkey -s '^o' 'lfcd\n'
'';
in lf + ''
# Nix-shell
${pkgs.nix-your-shell}/bin/nix-your-shell zsh | source /dev/stdin
# Prompt
autoload -U colors && colors
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' unstagedstr '·*'
zstyle ':vcs_info:*' stagedstr '·+'
zstyle ':vcs_info:git:*' formats '%b%u%c'
export PROMPT="%(0?.%F{white}.%? %F{red})τ%f "
export RPROMPT="%F{yellow}\$vcs_info_msg_0_%f %F{blue}%~%f"
'';
};
};
}

View file

@ -0,0 +1,39 @@
{ config, pkgs, lib, ... }:
{
options.alacritty = {
enable = lib.mkEnableOption "Enables alacritty";
font = lib.mkOption { default = ""; };
font_size = lib.mkOption { default = 18; };
};
config = lib.mkIf config.alacritty.enable {
programs.alacritty.enable = true;
programs.alacritty.settings = {
font = let fam = config.alacritty.font; in {
normal = {
family = fam;
style = "Regular";
};
bold = {
family = fam;
style = "Bold";
};
italic = {
family = fam;
style = "Italic";
};
bold_italic = {
family = fam;
style = "Bold Italic";
};
offset = {
x = 0;
y = 0;
};
size = config.alacritty.font_size;
};
};
};
}

View file

@ -0,0 +1,8 @@
{ config, pkgs, lib, ... }:
{
imports = [
./kitty
./alacritty
];
}

View file

@ -0,0 +1,20 @@
{ config, pkgs, lib, ... }:
{
options.kitty = {
enable = lib.mkEnableOption "Enables kitty";
font = lib.mkOption { default = ""; };
font_size = lib.mkOption { default = 18; };
};
config = lib.mkIf config.kitty.enable {
programs.kitty = {
enable = true;
settings = {
font_family = config.kitty.font;
font_size = config.kitty.font_size;
enable_audio_bell = "no";
};
};
};
}

8
hmModules/default.nix Normal file
View file

@ -0,0 +1,8 @@
{ config, pkgs, ... }:
{
imports = [
./apps
./services
];
}

View file

@ -0,0 +1,14 @@
{ config, pkgs, ... }:
{
imports = [
./dunst
./home
./manpages
./ssh
./timers
./trash
./wal
./widgets
];
}

View file

@ -0,0 +1,49 @@
{ config, pkgs, lib, ... }:
{
options.dunst = {
enable = lib.mkEnableOption "Enables dunst";
};
config = lib.mkIf config.dunst.enable {
home.packages = with pkgs; [
libnotify
];
services.dunst = {
enable = true;
settings = {
global = {
width = 280;
height = 240;
origin = "bottom-right";
offset = "0x300";
notification_limit = 3;
progress_bar_max_width = 280;
gap_size = 4;
corner_radius = 20;
};
urgency_low = {
background = "#FFFFFFCC";
foreground = "#000000";
frame_color = "#0000";
};
urgency_normal = {
background = "#FFFFFFCC";
foreground = "#000000";
frame_color = "#0000";
};
urgency_critical = {
background = "#FFFFFFCC";
foreground = "#000000";
frame_color = "#0000";
};
};
};
};
}

View file

@ -0,0 +1,38 @@
{ config, pkgs, lib, ... }:
{
options = {
extraPkgs = lib.mkOption { default = []; };
};
config = {
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
home.sessionVariables = {
GRADLE_USER_HOME = "${config.xdg.dataHome}/gradle";
CUDA_CACHE_PATH = "${config.xdg.cacheHome}/nv";
};
xdg = {
enable = true;
mimeApps.enable = true;
userDirs = let
home = config.home.homeDirectory;
in {
enable = true;
documents = "${home}/dox";
publicShare = "${home}/dox/public";
templates = "${home}/dox/templates";
music = "${home}/med/mus";
pictures = "${home}/med/pix";
videos = "${home}/med/vid";
desktop = "${home}/dwn";
download = "${home}/dwn";
};
};
home.homeDirectory = "/home/" + config.home.username;
home.packages = config.extraPkgs;
};
}

View file

@ -0,0 +1,15 @@
{ config, pkgs, lib, ... }:
{
options.manpages = {
enable = lib.mkEnableOption "Enables manpager";
};
config = lib.mkIf config.manpages.enable {
programs.man.enable = true;
home.packages = with pkgs; [
man-pages
man-pages-posix
];
};
}

View file

@ -0,0 +1,14 @@
{ config, pkgs, lib, ... }:
{
options.ssh = {
enable = lib.mkEnableOption "Enables ssh";
};
config = lib.mkIf config.ssh.enable {
programs.ssh.enable = true;
home.packages = with pkgs; [
sshfs # SSH File system
];
};
}

View file

@ -0,0 +1,60 @@
{ config, pkgs, lib, ... }:
let rootPath = ./.; in
{
options.timer = {
enableHourly = lib.mkEnableOption "Enables an hourly notification";
enableQuarterly = lib.mkEnableOption "Enables a quarterly notification";
};
config = {
systemd.user.timers = {
hourly-time = lib.mkIf config.timer.enableHourly {
Timer = {
OnCalendar = "hourly";
};
Install = {
WantedBy = [
"timers.target"
];
};
};
quarterly-time = lib.mkIf config.timer.enableQuarterly {
Timer = {
OnCalendar = "*-*-* *:15,30,45:00";
};
Install = {
WantedBy = [
"timers.target"
];
};
};
};
systemd.user.services = {
hourly-time = lib.mkIf config.timer.enableHourly {
Unit = {
Description = "Notify the user every hour of time passing";
};
Service = {
Type="simple";
ExecStart="/home/pan/.config/timer_scripts/notify-time.sh 60000 1";
};
};
quarterly-time = lib.mkIf config.timer.enableQuarterly {
Unit = {
Description = "Notify the user every 15 minutes of time passing, \
skips hours";
};
Service = {
Type="simple";
ExecStart="/home/pan/.config/timer_scripts/notify-time.sh 10000 0";
};
};
};
xdg.configFile."timer-scripts" = {
source = rootPath + "/scripts";
target = "timer_scripts/";
executable = true;
};
};
}

View file

@ -0,0 +1,13 @@
{ config, pkgs, lib, ... }:
{
options.trash = {
enable = lib.mkEnableOption "Enables trash";
};
config = {
home.packages = [
pkgs.trash-cli
];
};
}

View file

@ -0,0 +1,34 @@
{ config, pkgs, lib, ... }:
let rootPath = ./.; in
{
options.colors = {
enable = lib.mkEnableOption "Enables setting colors using wallust";
};
config = lib.mkIf config.colors.enable {
home.packages = with pkgs; [
wallust # A better pywal
pywalfox-native # Update librewolf's colorscheme based on wal
];
xdg.configFile."wallust-config" = {
target = "wallust/wallust.toml";
text = ''
backend = "wal"
color_space = "lab"
threshold = 20
filter = "dark16"
# [[entry]]
# # a relative path to a file where wallust.toml is (~/.config/wallust/)
# template = "dunstrc"
#
# # absolute path to the file to write the template (after templating)
# target = "~/.config/dunst/dunstrc"
'';
};
#xdg.configFile."wallust-templates" = {
# source = rootPath + "/templates";
# target = "wallust/";
#};
};
}

View file

@ -0,0 +1,25 @@
{ config, inputs, pkgs, lib, ... }:
{
options.ags = {
enable = lib.mkEnableOption "Enable ags";
};
imports = [ inputs.ags.homeManagerModules.default ];
config = lib.mkIf config.ags.enable {
home.packages = with pkgs; [
libnotify # Notifications through ags
];
programs.ags = {
enable = true;
configDir = ./config;
extraPackages = with pkgs; [
gtksourceview
webkitgtk
accountsservice
];
};
};
}

View file

@ -0,0 +1,8 @@
{ config, pkgs, lib, ... }:
{
imports = [
./ags
./eww
];
}

View file

@ -0,0 +1,13 @@
{ config, pkgs, lib, ... }:
{
options.eww = {
enable = lib.mkEnableOption "Enables eww";
};
config = lib.mkIf config.eww.enable {
programs.eww.enable = true;
programs.eww.package = pkgs.eww-wayland;
programs.eww.configDir = ./config;
};
}

View file

@ -1,77 +0,0 @@
{ config, pkgs, ... }:
{
nixpkgs.config.allowUnfree = true;
home.username = "pan";
home.homeDirectory = "/home/pan";
imports = [
# ./programs/dunst
# ./programs/eww
# ./programs/spotify
./programs/ags
./programs/alacritty
./programs/discord
./programs/fish
./programs/git
./programs/hypr
./programs/lutris
./programs/mpv
./programs/nnn
./programs/nvim
./programs/rofi
./programs/ssh
./programs/wal
./programs/xdg
./programs/xonsh
./programs/obs
./programs/kitty
./programs/zsh
./programs/lf
# ./services/scripts
./services/timers
];
home.packages = with pkgs; [
# Applications
beeper # Better Chat App
gimp # Photo editting
pamixer # Volume control
playerctl # Control media
wget # Download web stuff
feh # Image viewer
appimage-run # Lets you run app images
zathura # PDF viewer
ani-cli # Easy anime player
lutgen # LUT generator
prismlauncher # Minecraft launcher
unzip # Unzip utility
texlive.combined.scheme-full # Latex
# Development stuff
nodejs # For compiling JS stuff
jq # May be critical for scripts?
];
# home.file = {};
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
BROWSER = "librewolf";
GRADLE_USER_HOME = "/home/pan/.local/share" + "/gradle";
CUDA_CACHE_PATH = "/home/pan/.cache" + "/nv";
};
home.sessionPath = [
"$HOME/prog/scripts"
];
# Enable man pages, but ensure ~/.manpage isn't created
programs.man.enable = true;
programs.man.generateCaches = false;
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
home.stateVersion = "23.05";
}

View file

@ -1,23 +0,0 @@
{ inputs, pkgs, ... }:
{
# add the home manager module
imports = [ inputs.ags.homeManagerModules.default ];
home.packages = with pkgs; [
libnotify # Notifications through ags
];
programs.ags = {
enable = true;
# null or path, leave as null if you don't want hm to manage the config
configDir = ./config;
# additional packages to add to ags's runtime
extraPackages = with pkgs; [
gtksourceview
webkitgtk
accountsservice
];
};
}

View file

@ -1,32 +0,0 @@
{ config, pkgs, ... }:
{
programs.alacritty.enable = true;
programs.alacritty.settings = {
font = let fam = "Cascadia Code"; in {
normal = {
family = fam;
style = "Regular";
};
bold = {
family = fam;
style = "Bold";
};
italic = {
family = fam;
style = "Italic";
};
bold_italic = {
family = fam;
style = "Bold Italic";
};
offset = {
x = 0;
y = 0;
};
size = 18.0;
};
};
}

View file

@ -1,6 +0,0 @@
{ config, pkgs, ... }:
{
home.packages = with pkgs; [
vesktop # Base app
];
}

View file

@ -1,41 +0,0 @@
{ config, pkgs, ... }:
{
home.packages = with pkgs; [
libnotify
];
services.dunst.enable = true;
services.dunst.settings = {
global = {
width = 280;
height = 240;
origin = "bottom-right";
offset = "0x300";
notification_limit = 3;
progress_bar_max_width = 280;
gap_size = 4;
corner_radius = 20;
};
urgency_low = {
background = "#FFFFFFCC";
foreground = "#000000";
frame_color = "#0000";
};
urgency_normal = {
background = "#FFFFFFCC";
foreground = "#000000";
frame_color = "#0000";
};
urgency_critical = {
background = "#FFFFFFCC";
foreground = "#000000";
frame_color = "#0000";
};
};
}

View file

@ -1,7 +0,0 @@
{ config, pkgs, ... }:
{
programs.eww.enable = true;
programs.eww.package = pkgs.eww-wayland;
programs.eww.configDir = ./config;
}

View file

@ -1,43 +0,0 @@
{ config, pkgs, ... }:
{
programs.fish.enable = true;
programs.fish.interactiveShellInit = ''
cat ~/.cache/wal/sequences
'';
programs.fish.functions = {
fish_greeting = "";
fish_prompt = ''
${builtins.readFile ./functions/fish_prompt.fish}
'';
fish_right_prompt = ''
${builtins.readFile ./functions/fish_right_prompt.fish}
'';
git_branch_name = ''
${builtins.readFile ./functions/git_branch_name.fish}
'';
git_is_dirty = ''
${builtins.readFile ./functions/git_is_dirty.fish}
'';
git_is_repo = ''
${builtins.readFile ./functions/git_is_repo.fish}
'';
git_is_staged = ''
${builtins.readFile ./functions/git_is_staged.fish}
'';
git_is_touched = ''
${builtins.readFile ./functions/git_is_touched.fish}
'';
git_is_worktree = ''
${builtins.readFile ./functions/git_is_worktree.fish}
'';
n = ''
${builtins.readFile ./functions/n.fish}
'';
ssh = ''
${builtins.readFile ./functions/ssh.fish}
'';
};
}

View file

@ -1,12 +0,0 @@
{ config, pkgs, ... }:
{
programs.git.enable = true;
programs.git.userName = "JuliaLange";
programs.git.userEmail = "git@julialange.com";
programs.git.extraConfig = {
safe = {
directory = "/etc/nixos";
};
};
}

View file

@ -1,43 +0,0 @@
{ inputs, pkgs, ... }:
let rootPath = ./.; in
{
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.extraConfig = ''
${builtins.readFile ./window_rules.conf}
${builtins.readFile ./league_rules.conf}
${builtins.readFile ./settings.conf}
${builtins.readFile ./nvidia.conf}
${builtins.readFile ./keybinds.conf}
${builtins.readFile ./xwaylandvideobridge.conf}
exec-once=${pkgs.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1
env = HYPRCURSOR_THEME,miku
env = HYPRCURSOR_SIZE,64
'';
# wayland.windowManager.hyprland.enableNvidiaPatches = true;
home.packages = with pkgs; [
socat # For hyprland scripts
swww # Wallpaper engine
wlr-randr # Xrandr for wayland
wl-clipboard # Clipboard manager for wayland
xdg-desktop-portal-hyprland # XDP for hyprland
hyprpicker # Colorpicker, needed for screenshot tool
hyprcursor # Hyprland cursor
inputs.hyprland-contrib.packages.${pkgs.system}.grimblast # Screenshot tool
xwaylandvideobridge # Allows screensharing with xwayland apps
polkit-kde-agent # Polkit handler
];
# Hyprland screenshot tool
xdg.configFile."hypr-scripts" = {
source = rootPath + "/scripts";
target = "hypr/scripts";
executable = true;
};
xdg.dataFile."hypr-icons" = {
source = rootPath + "/icons";
target = "icons/";
recursive = true;
};
}

View file

@ -1,12 +0,0 @@
{ config, pkgs, ... }:
{
programs.kitty = {
enable = true;
settings = {
font_family = "Cascadia Code";
font_size = 18;
enable_audio_bell = "no";
};
};
}

View file

@ -1,85 +0,0 @@
{ config, pkgs, ... }:
{
xdg.configFile."lf/icons".source = ./icons;
home.packages = with pkgs; [
trash-cli # Trash program for lf
];
programs.lf = {
enable = true;
settings = {
# Hide specific files rather than "hidden" files
hiddenfiles = [
"${config.home.homeDirectory}/.librewolf"
"${config.home.homeDirectory}/.nix-defexpr"
"${config.home.homeDirectory}/.nix-profile"
"${config.home.homeDirectory}/.nv"
"${config.home.homeDirectory}/.pki"
"${config.home.homeDirectory}/.steam*"
"${config.home.homeDirectory}/.zshenv"
];
ratios = [
2
3
];
preview = true;
ignorecase = true;
icons = true;
number = true;
relativenumber = true;
};
commands = {
dragon-out = ''%${pkgs.xdragon}/bin/xdragon -a -x "$fx"'';
mkdir = ''
''${{
printf "Directory Name: "
read DIR
mkdir $DIR
}}
'';
mkfile = ''
''${{
printf "File Name: "
read FILE
mkdir $FILE
}}
'';
trash = ''trash "$fx"'';
};
keybindings = {
";" = "";
x = "trash";
"." = "set hidden!";
";d" = "mkdir";
";f" = "mkfile";
";m" = "dragon-out";
};
extraConfig =
let
previewer =
pkgs.writeShellScriptBin "pv.sh" ''
file=$1
w=$2
h=$3
x=$4
y=$5
if [[ "$( ${pkgs.file}/bin/file -Lb --mime-type "$file")" =~ ^image ]]; then
${pkgs.kitty}/bin/kitty +kitten icat --silent --stdin no --transfer-mode file --place "''${w}x''${h}@''${x}x''${y}" "$file" < /dev/null > /dev/tty
exit 1
fi
${pkgs.pistol}/bin/pistol "$file"
'';
cleaner = pkgs.writeShellScriptBin "clean.sh" ''
${pkgs.kitty}/bin/kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty
'';
in
''
set cleaner ${cleaner}/bin/clean.sh
set previewer ${previewer}/bin/pv.sh
'';
};
}

View file

@ -1,16 +0,0 @@
{ config, pkgs, ... }:
{
home.packages = with pkgs; [
lutris
wineWowPackages.stable
# (lutris.override {
# extraLibraries = pkgs: [
# # List library dependencies here
# ];
# extraPkgs = pkgs: [
# # List package dependencies here
# ];
# })
];
}

View file

@ -1,14 +0,0 @@
{ config, pkgs, ... }:
{
programs.mpv.enable = true;
programs.mpv.config = {
volume-max = 150;
force-window = "yes";
script-opts = "ytdl_hook-ytdl_path=yt-dlp";
ytdl-format = "bestvideo[height<=?1080][vcodec!=vp9]+bestaudio/best";
};
home.packages = with pkgs; [
yt-dlp
];
}

Some files were not shown because too many files have changed in this diff Show more