From ffada2703cf16ed5e3b8e38710fd49ca84152998 Mon Sep 17 00:00:00 2001 From: Julia Lange Date: Sun, 14 Apr 2024 05:40:02 -0700 Subject: [PATCH] Refactor codebase to use nix modules --- flake.lock | 46 +++++----- flake.nix | 13 +-- hmModules/apps/chat/beeper/default.nix | 13 +++ hmModules/apps/chat/default.nix | 8 ++ hmModules/apps/chat/discord/default.nix | 12 +++ hmModules/apps/default.nix | 18 ++++ hmModules/apps/file-browsers/default.nix | 8 ++ hmModules/apps/file-browsers/lf/default.nix | 82 +++++++++++++++++ .../apps/file-browsers}/lf/icons | 0 hmModules/apps/file-browsers/nnn/default.nix | 17 ++++ hmModules/apps/gimp/default.nix | 13 +++ hmModules/apps/git/default.nix | 19 ++++ hmModules/apps/hypr/default.nix | 50 ++++++++++ .../apps}/hypr/keybinds.conf | 0 .../apps}/hypr/league_rules.conf | 0 {programs => hmModules/apps}/hypr/nvidia.conf | 0 .../apps}/hypr/scripts/changeprimary.xsh | 0 .../apps}/hypr/scripts/changesecondary.xsh | 0 .../apps}/hypr/scripts/initdb.xsh | 0 .../apps}/hypr/settings.conf | 0 .../apps}/hypr/window_rules.conf | 0 .../apps}/hypr/xwaylandvideobridge.conf | 0 hmModules/apps/librewolf/default.nix | 16 ++++ hmModules/apps/lutris/default.nix | 22 +++++ hmModules/apps/media-viewers/default.nix | 9 ++ hmModules/apps/media-viewers/feh/default.nix | 13 +++ hmModules/apps/media-viewers/mpv/default.nix | 22 +++++ .../apps/media-viewers/zathura/default.nix | 13 +++ hmModules/apps/neovim/default.nix | 86 ++++++++++++++++++ .../nvim => hmModules/apps/neovim}/init.vim | 3 +- hmModules/apps/obs/default.nix | 17 ++++ hmModules/apps/rofi/default.nix | 14 +++ hmModules/apps/shells/default.nix | 9 ++ hmModules/apps/shells/fish/default.nix | 45 +++++++++ .../shells}/fish/functions/fish_prompt.fish | 0 .../fish/functions/fish_right_prompt.fish | 0 .../fish/functions/git_branch_name.fish | 0 .../shells}/fish/functions/git_is_dirty.fish | 0 .../shells}/fish/functions/git_is_repo.fish | 0 .../shells}/fish/functions/git_is_staged.fish | 0 .../fish/functions/git_is_touched.fish | 0 .../fish/functions/git_is_worktree.fish | 0 .../apps/shells}/fish/functions/n.fish | 0 .../apps/shells}/fish/functions/ssh.fish | 0 hmModules/apps/shells/xonsh/default.nix | 22 +++++ .../apps/shells}/xonsh/rc.xsh | 0 hmModules/apps/shells/zsh/default.nix | 47 ++++++++++ .../terminal-emulators/alacritty/default.nix | 39 ++++++++ hmModules/apps/terminal-emulators/default.nix | 8 ++ .../apps/terminal-emulators/kitty/default.nix | 20 ++++ hmModules/default.nix | 8 ++ hmModules/services/default.nix | 14 +++ hmModules/services/dunst/default.nix | 49 ++++++++++ hmModules/services/home/default.nix | 38 ++++++++ hmModules/services/manpages/default.nix | 15 +++ hmModules/services/ssh/default.nix | 14 +++ hmModules/services/timers/default.nix | 60 ++++++++++++ .../services}/timers/scripts/chimes.ogg | Bin .../services}/timers/scripts/notify-time.sh | 0 hmModules/services/trash/default.nix | 13 +++ hmModules/services/wal/default.nix | 34 +++++++ .../services/widgets}/ags/config/config.js | 0 .../widgets}/ags/config/modules/clock.js | 0 .../notifications/notificationPopup.ts | 0 .../config/modules/notifications/style.css | 0 .../ags/config/modules/workspace-switch.js | 0 hmModules/services/widgets/ags/default.nix | 25 +++++ hmModules/services/widgets/default.nix | 8 ++ .../services/widgets}/eww/config/eww.scss | 0 .../services/widgets}/eww/config/eww.yuck | 0 .../widgets}/eww/config/modules/bar.yuck | 0 .../config/modules/components/hyprwindow.yuck | 0 .../modules/components/hyprworkspaces.yuck | 0 .../config/modules/components/internet.yuck | 0 .../modules/components/japaneseaudio.yuck | 0 .../modules/components/japanesebattery.yuck | 0 .../modules/components/japanesedate.yuck | 0 .../widgets}/eww/config/modules/powerbar.yuck | 0 .../widgets}/eww/config/modules/switch.yuck | 0 .../config/scripts/change-active-workspace | 0 .../eww/config/scripts/get-active-workspace | 0 .../eww/config/scripts/get-window-title | 0 .../eww/config/scripts/get-workspaces | 0 .../widgets}/eww/config/scripts/japanesedate | 0 .../widgets}/eww/config/scripts/medpreview | 0 .../widgets}/eww/config/variables.yuck | 0 hmModules/services/widgets/eww/default.nix | 13 +++ home.nix | 77 ---------------- programs/ags/default.nix | 23 ----- programs/alacritty/default.nix | 32 ------- programs/discord/default.nix | 6 -- programs/dunst/default.nix | 41 --------- programs/eww/default.nix | 7 -- programs/fish/default.nix | 43 --------- programs/git/default.nix | 12 --- programs/hypr/default.nix | 43 --------- programs/kitty/default.nix | 12 --- programs/lf/default.nix | 85 ----------------- programs/lutris/default.nix | 16 ---- programs/mpv/default.nix | 14 --- programs/nnn/default.nix | 14 --- programs/nvim/default.nix | 74 --------------- programs/obs/default.nix | 11 --- programs/rofi/default.nix | 6 -- programs/spotify/default.nix | 18 ---- programs/ssh/default.nix | 8 -- programs/wal/default.nix | 28 ------ programs/xdg/default.nix | 18 ---- programs/xonsh/default.nix | 17 ---- programs/zsh/default.nix | 31 ------- services/scripts/default.nix | 10 -- services/scripts/select.nix | 15 --- services/timers/default.nix | 52 ----------- systems/pan/default.nix | 54 +++++++++++ 114 files changed, 1018 insertions(+), 744 deletions(-) create mode 100644 hmModules/apps/chat/beeper/default.nix create mode 100644 hmModules/apps/chat/default.nix create mode 100644 hmModules/apps/chat/discord/default.nix create mode 100644 hmModules/apps/default.nix create mode 100644 hmModules/apps/file-browsers/default.nix create mode 100644 hmModules/apps/file-browsers/lf/default.nix rename {programs => hmModules/apps/file-browsers}/lf/icons (100%) create mode 100644 hmModules/apps/file-browsers/nnn/default.nix create mode 100644 hmModules/apps/gimp/default.nix create mode 100644 hmModules/apps/git/default.nix create mode 100644 hmModules/apps/hypr/default.nix rename {programs => hmModules/apps}/hypr/keybinds.conf (100%) rename {programs => hmModules/apps}/hypr/league_rules.conf (100%) rename {programs => hmModules/apps}/hypr/nvidia.conf (100%) rename {programs => hmModules/apps}/hypr/scripts/changeprimary.xsh (100%) rename {programs => hmModules/apps}/hypr/scripts/changesecondary.xsh (100%) rename {programs => hmModules/apps}/hypr/scripts/initdb.xsh (100%) rename {programs => hmModules/apps}/hypr/settings.conf (100%) rename {programs => hmModules/apps}/hypr/window_rules.conf (100%) rename {programs => hmModules/apps}/hypr/xwaylandvideobridge.conf (100%) create mode 100644 hmModules/apps/librewolf/default.nix create mode 100644 hmModules/apps/lutris/default.nix create mode 100644 hmModules/apps/media-viewers/default.nix create mode 100644 hmModules/apps/media-viewers/feh/default.nix create mode 100644 hmModules/apps/media-viewers/mpv/default.nix create mode 100644 hmModules/apps/media-viewers/zathura/default.nix create mode 100644 hmModules/apps/neovim/default.nix rename {programs/nvim => hmModules/apps/neovim}/init.vim (93%) create mode 100644 hmModules/apps/obs/default.nix create mode 100644 hmModules/apps/rofi/default.nix create mode 100644 hmModules/apps/shells/default.nix create mode 100644 hmModules/apps/shells/fish/default.nix rename {programs => hmModules/apps/shells}/fish/functions/fish_prompt.fish (100%) rename {programs => hmModules/apps/shells}/fish/functions/fish_right_prompt.fish (100%) rename {programs => hmModules/apps/shells}/fish/functions/git_branch_name.fish (100%) rename {programs => hmModules/apps/shells}/fish/functions/git_is_dirty.fish (100%) rename {programs => hmModules/apps/shells}/fish/functions/git_is_repo.fish (100%) rename {programs => hmModules/apps/shells}/fish/functions/git_is_staged.fish (100%) rename {programs => hmModules/apps/shells}/fish/functions/git_is_touched.fish (100%) rename {programs => hmModules/apps/shells}/fish/functions/git_is_worktree.fish (100%) rename {programs => hmModules/apps/shells}/fish/functions/n.fish (100%) rename {programs => hmModules/apps/shells}/fish/functions/ssh.fish (100%) create mode 100644 hmModules/apps/shells/xonsh/default.nix rename {programs => hmModules/apps/shells}/xonsh/rc.xsh (100%) create mode 100644 hmModules/apps/shells/zsh/default.nix create mode 100644 hmModules/apps/terminal-emulators/alacritty/default.nix create mode 100644 hmModules/apps/terminal-emulators/default.nix create mode 100644 hmModules/apps/terminal-emulators/kitty/default.nix create mode 100644 hmModules/default.nix create mode 100644 hmModules/services/default.nix create mode 100644 hmModules/services/dunst/default.nix create mode 100644 hmModules/services/home/default.nix create mode 100644 hmModules/services/manpages/default.nix create mode 100644 hmModules/services/ssh/default.nix create mode 100644 hmModules/services/timers/default.nix rename {services => hmModules/services}/timers/scripts/chimes.ogg (100%) rename {services => hmModules/services}/timers/scripts/notify-time.sh (100%) create mode 100644 hmModules/services/trash/default.nix create mode 100644 hmModules/services/wal/default.nix rename {programs => hmModules/services/widgets}/ags/config/config.js (100%) rename {programs => hmModules/services/widgets}/ags/config/modules/clock.js (100%) rename {programs => hmModules/services/widgets}/ags/config/modules/notifications/notificationPopup.ts (100%) rename {programs => hmModules/services/widgets}/ags/config/modules/notifications/style.css (100%) rename {programs => hmModules/services/widgets}/ags/config/modules/workspace-switch.js (100%) create mode 100644 hmModules/services/widgets/ags/default.nix create mode 100644 hmModules/services/widgets/default.nix rename {programs => hmModules/services/widgets}/eww/config/eww.scss (100%) rename {programs => hmModules/services/widgets}/eww/config/eww.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/modules/bar.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/modules/components/hyprwindow.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/modules/components/hyprworkspaces.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/modules/components/internet.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/modules/components/japaneseaudio.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/modules/components/japanesebattery.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/modules/components/japanesedate.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/modules/powerbar.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/modules/switch.yuck (100%) rename {programs => hmModules/services/widgets}/eww/config/scripts/change-active-workspace (100%) rename {programs => hmModules/services/widgets}/eww/config/scripts/get-active-workspace (100%) rename {programs => hmModules/services/widgets}/eww/config/scripts/get-window-title (100%) rename {programs => hmModules/services/widgets}/eww/config/scripts/get-workspaces (100%) rename {programs => hmModules/services/widgets}/eww/config/scripts/japanesedate (100%) rename {programs => hmModules/services/widgets}/eww/config/scripts/medpreview (100%) rename {programs => hmModules/services/widgets}/eww/config/variables.yuck (100%) create mode 100644 hmModules/services/widgets/eww/default.nix delete mode 100644 home.nix delete mode 100644 programs/ags/default.nix delete mode 100644 programs/alacritty/default.nix delete mode 100644 programs/discord/default.nix delete mode 100644 programs/dunst/default.nix delete mode 100644 programs/eww/default.nix delete mode 100644 programs/fish/default.nix delete mode 100644 programs/git/default.nix delete mode 100644 programs/hypr/default.nix delete mode 100644 programs/kitty/default.nix delete mode 100644 programs/lf/default.nix delete mode 100644 programs/lutris/default.nix delete mode 100644 programs/mpv/default.nix delete mode 100644 programs/nnn/default.nix delete mode 100644 programs/nvim/default.nix delete mode 100644 programs/obs/default.nix delete mode 100644 programs/rofi/default.nix delete mode 100644 programs/spotify/default.nix delete mode 100644 programs/ssh/default.nix delete mode 100644 programs/wal/default.nix delete mode 100644 programs/xdg/default.nix delete mode 100644 programs/xonsh/default.nix delete mode 100644 programs/zsh/default.nix delete mode 100644 services/scripts/default.nix delete mode 100644 services/scripts/select.nix delete mode 100644 services/timers/default.nix create mode 100644 systems/pan/default.nix diff --git a/flake.lock b/flake.lock index 7c3d189..3a7bcc5 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1712250145, - "narHash": "sha256-8WTGn7It2kZfAmN97Epi3g/Su/w3Hbw/T4dWxE7OrBw=", + "lastModified": 1712834339, + "narHash": "sha256-gRYAbyxx4Z2s4hMoXHSu3wv2+VSiiR2Nk+AZmCZ6kc4=", "owner": "Aylur", "repo": "ags", - "rev": "d589077199ec8a055ef936bf8a1f051b7a0c7e34", + "rev": "c13bcba224f9ecaaa2f22b1d2895bb62e8face19", "type": "github" }, "original": { @@ -27,11 +27,11 @@ ] }, "locked": { - "lastModified": 1712462372, - "narHash": "sha256-WA3bbBWhd3o1wAgyHZNypjb/LG4oq+IWxFq8ey8yNPU=", + "lastModified": 1713077896, + "narHash": "sha256-Noot8H0EZEAFRQWyGxh9ryvhK96xpIqKbh78X447JWs=", "owner": "nix-community", "repo": "home-manager", - "rev": "a561ad6ab38578c812cc9af3b04f2cc60ebf48c9", + "rev": "630a0992b3627c64e34f179fab68e3d48c6991c0", "type": "github" }, "original": { @@ -82,11 +82,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1712528342, - "narHash": "sha256-5tRzlHnhk28M2ClRshRAEANGE/GF9A1Cl36OXAmi+Ig=", + "lastModified": 1713050186, + "narHash": "sha256-AKdzVa0Zz5PQ1ptQgD0jj8J+UZUW9OeKGZ0mNVnkyI4=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "43b96f03b5af60586a864ea64e8c71b11ea6eb85", + "rev": "0634aaeac6cca12e4f72174c431c2db9da9c0072", "type": "github" }, "original": { @@ -167,11 +167,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1712439257, - "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", + "lastModified": 1712791164, + "narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", + "rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5", "type": "github" }, "original": { @@ -207,20 +207,18 @@ "wlroots": { "flake": false, "locked": { - "host": "gitlab.freedesktop.org", - "lastModified": 1709983277, - "narHash": "sha256-wXWIJLd4F2JZeMaihWVDW/yYXCLEC8OpeNJZg9a9ly8=", - "owner": "wlroots", - "repo": "wlroots", - "rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", - "type": "gitlab" + "lastModified": 1712935342, + "narHash": "sha256-zzIbTFNFd/as42jyGx23fil2uBDYYv+8GA5JmRq5y9c=", + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "62eeffbe233d199f520a5755c344e85f8eab7940", + "type": "github" }, "original": { - "host": "gitlab.freedesktop.org", - "owner": "wlroots", - "repo": "wlroots", - "rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", - "type": "gitlab" + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "62eeffbe233d199f520a5755c344e85f8eab7940", + "type": "github" } }, "xdph": { diff --git a/flake.nix b/flake.nix index d3ec4c7..af16e17 100644 --- a/flake.nix +++ b/flake.nix @@ -17,17 +17,18 @@ ags.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = { nixpkgs, home-manager, hyprland, ... }@inputs: let + outputs = { nixpkgs, home-manager, ... }@inputs: + let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; - in { - homeConfigurations."pan" = home-manager.lib.homeManagerConfiguration { + defaultConfig = extraModules: home-manager.lib.homeManagerConfiguration { inherit pkgs; extraSpecialArgs = { inherit inputs; }; modules = [ - hyprland.homeManagerModules.default - ./home.nix - ]; + ./hmModules + ] ++ extraModules; }; + in { + homeConfigurations.pan = defaultConfig [ ./systems/pan ]; }; } diff --git a/hmModules/apps/chat/beeper/default.nix b/hmModules/apps/chat/beeper/default.nix new file mode 100644 index 0000000..9f43a70 --- /dev/null +++ b/hmModules/apps/chat/beeper/default.nix @@ -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 + ]; + }; +} diff --git a/hmModules/apps/chat/default.nix b/hmModules/apps/chat/default.nix new file mode 100644 index 0000000..84ad4e5 --- /dev/null +++ b/hmModules/apps/chat/default.nix @@ -0,0 +1,8 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./discord + ./beeper + ]; +} diff --git a/hmModules/apps/chat/discord/default.nix b/hmModules/apps/chat/discord/default.nix new file mode 100644 index 0000000..474b6ac --- /dev/null +++ b/hmModules/apps/chat/discord/default.nix @@ -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 + ]; + }; +} diff --git a/hmModules/apps/default.nix b/hmModules/apps/default.nix new file mode 100644 index 0000000..4d496dc --- /dev/null +++ b/hmModules/apps/default.nix @@ -0,0 +1,18 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./chat + ./file-browsers + ./gimp + ./git + ./hypr + ./lutris + ./media-viewers + ./neovim + ./obs + ./rofi + ./shells + ./terminal-emulators + ]; +} diff --git a/hmModules/apps/file-browsers/default.nix b/hmModules/apps/file-browsers/default.nix new file mode 100644 index 0000000..118e357 --- /dev/null +++ b/hmModules/apps/file-browsers/default.nix @@ -0,0 +1,8 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ./lf + ./nnn + ]; +} diff --git a/hmModules/apps/file-browsers/lf/default.nix b/hmModules/apps/file-browsers/lf/default.nix new file mode 100644 index 0000000..c37b608 --- /dev/null +++ b/hmModules/apps/file-browsers/lf/default.nix @@ -0,0 +1,82 @@ +{ config, pkgs, lib, ... }: + +{ + options.lf = { + enable = lib.mkEnableOption "Enables lf"; + hiddenfiles = lib.mkOption { default = [ ".*" ]; }; + leader = lib.mkOption { default = ""; }; + }; + + 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 + ''; + }; + }; +} diff --git a/programs/lf/icons b/hmModules/apps/file-browsers/lf/icons similarity index 100% rename from programs/lf/icons rename to hmModules/apps/file-browsers/lf/icons diff --git a/hmModules/apps/file-browsers/nnn/default.nix b/hmModules/apps/file-browsers/nnn/default.nix new file mode 100644 index 0000000..f68cec2 --- /dev/null +++ b/hmModules/apps/file-browsers/nnn/default.nix @@ -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"; + }; + }; +} diff --git a/hmModules/apps/gimp/default.nix b/hmModules/apps/gimp/default.nix new file mode 100644 index 0000000..0998e28 --- /dev/null +++ b/hmModules/apps/gimp/default.nix @@ -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 + ]; + }; +} diff --git a/hmModules/apps/git/default.nix b/hmModules/apps/git/default.nix new file mode 100644 index 0000000..0a87ff0 --- /dev/null +++ b/hmModules/apps/git/default.nix @@ -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; + }; + }; +} diff --git a/hmModules/apps/hypr/default.nix b/hmModules/apps/hypr/default.nix new file mode 100644 index 0000000..0c83ffd --- /dev/null +++ b/hmModules/apps/hypr/default.nix @@ -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; + }; + }; +} diff --git a/programs/hypr/keybinds.conf b/hmModules/apps/hypr/keybinds.conf similarity index 100% rename from programs/hypr/keybinds.conf rename to hmModules/apps/hypr/keybinds.conf diff --git a/programs/hypr/league_rules.conf b/hmModules/apps/hypr/league_rules.conf similarity index 100% rename from programs/hypr/league_rules.conf rename to hmModules/apps/hypr/league_rules.conf diff --git a/programs/hypr/nvidia.conf b/hmModules/apps/hypr/nvidia.conf similarity index 100% rename from programs/hypr/nvidia.conf rename to hmModules/apps/hypr/nvidia.conf diff --git a/programs/hypr/scripts/changeprimary.xsh b/hmModules/apps/hypr/scripts/changeprimary.xsh similarity index 100% rename from programs/hypr/scripts/changeprimary.xsh rename to hmModules/apps/hypr/scripts/changeprimary.xsh diff --git a/programs/hypr/scripts/changesecondary.xsh b/hmModules/apps/hypr/scripts/changesecondary.xsh similarity index 100% rename from programs/hypr/scripts/changesecondary.xsh rename to hmModules/apps/hypr/scripts/changesecondary.xsh diff --git a/programs/hypr/scripts/initdb.xsh b/hmModules/apps/hypr/scripts/initdb.xsh similarity index 100% rename from programs/hypr/scripts/initdb.xsh rename to hmModules/apps/hypr/scripts/initdb.xsh diff --git a/programs/hypr/settings.conf b/hmModules/apps/hypr/settings.conf similarity index 100% rename from programs/hypr/settings.conf rename to hmModules/apps/hypr/settings.conf diff --git a/programs/hypr/window_rules.conf b/hmModules/apps/hypr/window_rules.conf similarity index 100% rename from programs/hypr/window_rules.conf rename to hmModules/apps/hypr/window_rules.conf diff --git a/programs/hypr/xwaylandvideobridge.conf b/hmModules/apps/hypr/xwaylandvideobridge.conf similarity index 100% rename from programs/hypr/xwaylandvideobridge.conf rename to hmModules/apps/hypr/xwaylandvideobridge.conf diff --git a/hmModules/apps/librewolf/default.nix b/hmModules/apps/librewolf/default.nix new file mode 100644 index 0000000..7995cbb --- /dev/null +++ b/hmModules/apps/librewolf/default.nix @@ -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"; + }; + }; +} diff --git a/hmModules/apps/lutris/default.nix b/hmModules/apps/lutris/default.nix new file mode 100644 index 0000000..aa78d39 --- /dev/null +++ b/hmModules/apps/lutris/default.nix @@ -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 + # ]; + # }) + ]; + }; +} diff --git a/hmModules/apps/media-viewers/default.nix b/hmModules/apps/media-viewers/default.nix new file mode 100644 index 0000000..5b26119 --- /dev/null +++ b/hmModules/apps/media-viewers/default.nix @@ -0,0 +1,9 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./feh + ./mpv + ./zathura + ]; +} diff --git a/hmModules/apps/media-viewers/feh/default.nix b/hmModules/apps/media-viewers/feh/default.nix new file mode 100644 index 0000000..c1c4462 --- /dev/null +++ b/hmModules/apps/media-viewers/feh/default.nix @@ -0,0 +1,13 @@ +{ config, pkgs, lib, ... }: + +{ + options.feh = { + enable = lib.mkEnableOption "Enables feh"; + }; + + config = lib.mkIf config.feh.enable { + programs.feh = { + enable = true; + }; + }; +} diff --git a/hmModules/apps/media-viewers/mpv/default.nix b/hmModules/apps/media-viewers/mpv/default.nix new file mode 100644 index 0000000..e64e5ce --- /dev/null +++ b/hmModules/apps/media-viewers/mpv/default.nix @@ -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"; + }; + }; + }; +} diff --git a/hmModules/apps/media-viewers/zathura/default.nix b/hmModules/apps/media-viewers/zathura/default.nix new file mode 100644 index 0000000..005c2b6 --- /dev/null +++ b/hmModules/apps/media-viewers/zathura/default.nix @@ -0,0 +1,13 @@ +{ config, pkgs, lib, ... }: + +{ + options.zathura = { + enable = lib.mkEnableOption "Enables zathura"; + }; + + config = lib.mkIf config.zathura.enable { + programs.zathura = { + enable = true; + }; + }; +} diff --git a/hmModules/apps/neovim/default.nix b/hmModules/apps/neovim/default.nix new file mode 100644 index 0000000..e8a805e --- /dev/null +++ b/hmModules/apps/neovim/default.nix @@ -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 = { + \ '': 'tab split', + \ '': 'split', + \ '': 'vsplit' } + let g:nnn#command = 'nnn -HoeT v' + let g:nnn#replace_netrw = 1 + ''; + } + { # Fuzzy searches + plugin = fzf-vim; + config = '' + map :Files + map :Ag + ''; + } + { # Auto completions + plugin = coc-nvim; + config = '' + function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' + endfunction + + inoremap + \ pumvisible() ? "\" : + \ check_back_space() ? "\" : + \ coc#refresh() + inoremap pumvisible() ? "\" : "\" + ''; + } + 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 + ]; + }; + }; +} diff --git a/programs/nvim/init.vim b/hmModules/apps/neovim/init.vim similarity index 93% rename from programs/nvim/init.vim rename to hmModules/apps/neovim/init.vim index a40649a..d8b95c9 100644 --- a/programs/nvim/init.vim +++ b/hmModules/apps/neovim/init.vim @@ -14,7 +14,8 @@ nnoremap nnoremap " 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 set smartcase diff --git a/hmModules/apps/obs/default.nix b/hmModules/apps/obs/default.nix new file mode 100644 index 0000000..a42a495 --- /dev/null +++ b/hmModules/apps/obs/default.nix @@ -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 + ]; + }; + }; +} diff --git a/hmModules/apps/rofi/default.nix b/hmModules/apps/rofi/default.nix new file mode 100644 index 0000000..c98e81f --- /dev/null +++ b/hmModules/apps/rofi/default.nix @@ -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; + }; + }; +} diff --git a/hmModules/apps/shells/default.nix b/hmModules/apps/shells/default.nix new file mode 100644 index 0000000..03ae484 --- /dev/null +++ b/hmModules/apps/shells/default.nix @@ -0,0 +1,9 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ./fish + ./xonsh + ./zsh + ]; +} diff --git a/hmModules/apps/shells/fish/default.nix b/hmModules/apps/shells/fish/default.nix new file mode 100644 index 0000000..46e6de1 --- /dev/null +++ b/hmModules/apps/shells/fish/default.nix @@ -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} + ''; + }; + }; +} diff --git a/programs/fish/functions/fish_prompt.fish b/hmModules/apps/shells/fish/functions/fish_prompt.fish similarity index 100% rename from programs/fish/functions/fish_prompt.fish rename to hmModules/apps/shells/fish/functions/fish_prompt.fish diff --git a/programs/fish/functions/fish_right_prompt.fish b/hmModules/apps/shells/fish/functions/fish_right_prompt.fish similarity index 100% rename from programs/fish/functions/fish_right_prompt.fish rename to hmModules/apps/shells/fish/functions/fish_right_prompt.fish diff --git a/programs/fish/functions/git_branch_name.fish b/hmModules/apps/shells/fish/functions/git_branch_name.fish similarity index 100% rename from programs/fish/functions/git_branch_name.fish rename to hmModules/apps/shells/fish/functions/git_branch_name.fish diff --git a/programs/fish/functions/git_is_dirty.fish b/hmModules/apps/shells/fish/functions/git_is_dirty.fish similarity index 100% rename from programs/fish/functions/git_is_dirty.fish rename to hmModules/apps/shells/fish/functions/git_is_dirty.fish diff --git a/programs/fish/functions/git_is_repo.fish b/hmModules/apps/shells/fish/functions/git_is_repo.fish similarity index 100% rename from programs/fish/functions/git_is_repo.fish rename to hmModules/apps/shells/fish/functions/git_is_repo.fish diff --git a/programs/fish/functions/git_is_staged.fish b/hmModules/apps/shells/fish/functions/git_is_staged.fish similarity index 100% rename from programs/fish/functions/git_is_staged.fish rename to hmModules/apps/shells/fish/functions/git_is_staged.fish diff --git a/programs/fish/functions/git_is_touched.fish b/hmModules/apps/shells/fish/functions/git_is_touched.fish similarity index 100% rename from programs/fish/functions/git_is_touched.fish rename to hmModules/apps/shells/fish/functions/git_is_touched.fish diff --git a/programs/fish/functions/git_is_worktree.fish b/hmModules/apps/shells/fish/functions/git_is_worktree.fish similarity index 100% rename from programs/fish/functions/git_is_worktree.fish rename to hmModules/apps/shells/fish/functions/git_is_worktree.fish diff --git a/programs/fish/functions/n.fish b/hmModules/apps/shells/fish/functions/n.fish similarity index 100% rename from programs/fish/functions/n.fish rename to hmModules/apps/shells/fish/functions/n.fish diff --git a/programs/fish/functions/ssh.fish b/hmModules/apps/shells/fish/functions/ssh.fish similarity index 100% rename from programs/fish/functions/ssh.fish rename to hmModules/apps/shells/fish/functions/ssh.fish diff --git a/hmModules/apps/shells/xonsh/default.nix b/hmModules/apps/shells/xonsh/default.nix new file mode 100644 index 0000000..34a7a70 --- /dev/null +++ b/hmModules/apps/shells/xonsh/default.nix @@ -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"; + }; + }; +} diff --git a/programs/xonsh/rc.xsh b/hmModules/apps/shells/xonsh/rc.xsh similarity index 100% rename from programs/xonsh/rc.xsh rename to hmModules/apps/shells/xonsh/rc.xsh diff --git a/hmModules/apps/shells/zsh/default.nix b/hmModules/apps/shells/zsh/default.nix new file mode 100644 index 0000000..713a527 --- /dev/null +++ b/hmModules/apps/shells/zsh/default.nix @@ -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" + ''; + }; + }; +} diff --git a/hmModules/apps/terminal-emulators/alacritty/default.nix b/hmModules/apps/terminal-emulators/alacritty/default.nix new file mode 100644 index 0000000..c172d63 --- /dev/null +++ b/hmModules/apps/terminal-emulators/alacritty/default.nix @@ -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; + }; + }; + }; +} diff --git a/hmModules/apps/terminal-emulators/default.nix b/hmModules/apps/terminal-emulators/default.nix new file mode 100644 index 0000000..ceb550b --- /dev/null +++ b/hmModules/apps/terminal-emulators/default.nix @@ -0,0 +1,8 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ./kitty + ./alacritty + ]; +} diff --git a/hmModules/apps/terminal-emulators/kitty/default.nix b/hmModules/apps/terminal-emulators/kitty/default.nix new file mode 100644 index 0000000..6195726 --- /dev/null +++ b/hmModules/apps/terminal-emulators/kitty/default.nix @@ -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"; + }; + }; + }; +} diff --git a/hmModules/default.nix b/hmModules/default.nix new file mode 100644 index 0000000..3401811 --- /dev/null +++ b/hmModules/default.nix @@ -0,0 +1,8 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./apps + ./services + ]; +} diff --git a/hmModules/services/default.nix b/hmModules/services/default.nix new file mode 100644 index 0000000..75bc088 --- /dev/null +++ b/hmModules/services/default.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./dunst + ./home + ./manpages + ./ssh + ./timers + ./trash + ./wal + ./widgets + ]; +} diff --git a/hmModules/services/dunst/default.nix b/hmModules/services/dunst/default.nix new file mode 100644 index 0000000..84e4bcb --- /dev/null +++ b/hmModules/services/dunst/default.nix @@ -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"; + }; + }; + }; + }; +} diff --git a/hmModules/services/home/default.nix b/hmModules/services/home/default.nix new file mode 100644 index 0000000..bbb4cf2 --- /dev/null +++ b/hmModules/services/home/default.nix @@ -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; + }; +} diff --git a/hmModules/services/manpages/default.nix b/hmModules/services/manpages/default.nix new file mode 100644 index 0000000..678d734 --- /dev/null +++ b/hmModules/services/manpages/default.nix @@ -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 + ]; + }; +} diff --git a/hmModules/services/ssh/default.nix b/hmModules/services/ssh/default.nix new file mode 100644 index 0000000..418ae9c --- /dev/null +++ b/hmModules/services/ssh/default.nix @@ -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 + ]; + }; +} diff --git a/hmModules/services/timers/default.nix b/hmModules/services/timers/default.nix new file mode 100644 index 0000000..548ab30 --- /dev/null +++ b/hmModules/services/timers/default.nix @@ -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; + }; + }; +} diff --git a/services/timers/scripts/chimes.ogg b/hmModules/services/timers/scripts/chimes.ogg similarity index 100% rename from services/timers/scripts/chimes.ogg rename to hmModules/services/timers/scripts/chimes.ogg diff --git a/services/timers/scripts/notify-time.sh b/hmModules/services/timers/scripts/notify-time.sh similarity index 100% rename from services/timers/scripts/notify-time.sh rename to hmModules/services/timers/scripts/notify-time.sh diff --git a/hmModules/services/trash/default.nix b/hmModules/services/trash/default.nix new file mode 100644 index 0000000..cf54f67 --- /dev/null +++ b/hmModules/services/trash/default.nix @@ -0,0 +1,13 @@ +{ config, pkgs, lib, ... }: + +{ + options.trash = { + enable = lib.mkEnableOption "Enables trash"; + }; + + config = { + home.packages = [ + pkgs.trash-cli + ]; + }; +} diff --git a/hmModules/services/wal/default.nix b/hmModules/services/wal/default.nix new file mode 100644 index 0000000..41930fe --- /dev/null +++ b/hmModules/services/wal/default.nix @@ -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/"; + #}; + }; +} diff --git a/programs/ags/config/config.js b/hmModules/services/widgets/ags/config/config.js similarity index 100% rename from programs/ags/config/config.js rename to hmModules/services/widgets/ags/config/config.js diff --git a/programs/ags/config/modules/clock.js b/hmModules/services/widgets/ags/config/modules/clock.js similarity index 100% rename from programs/ags/config/modules/clock.js rename to hmModules/services/widgets/ags/config/modules/clock.js diff --git a/programs/ags/config/modules/notifications/notificationPopup.ts b/hmModules/services/widgets/ags/config/modules/notifications/notificationPopup.ts similarity index 100% rename from programs/ags/config/modules/notifications/notificationPopup.ts rename to hmModules/services/widgets/ags/config/modules/notifications/notificationPopup.ts diff --git a/programs/ags/config/modules/notifications/style.css b/hmModules/services/widgets/ags/config/modules/notifications/style.css similarity index 100% rename from programs/ags/config/modules/notifications/style.css rename to hmModules/services/widgets/ags/config/modules/notifications/style.css diff --git a/programs/ags/config/modules/workspace-switch.js b/hmModules/services/widgets/ags/config/modules/workspace-switch.js similarity index 100% rename from programs/ags/config/modules/workspace-switch.js rename to hmModules/services/widgets/ags/config/modules/workspace-switch.js diff --git a/hmModules/services/widgets/ags/default.nix b/hmModules/services/widgets/ags/default.nix new file mode 100644 index 0000000..5d248d1 --- /dev/null +++ b/hmModules/services/widgets/ags/default.nix @@ -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 + ]; + }; + }; +} diff --git a/hmModules/services/widgets/default.nix b/hmModules/services/widgets/default.nix new file mode 100644 index 0000000..caebead --- /dev/null +++ b/hmModules/services/widgets/default.nix @@ -0,0 +1,8 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ./ags + ./eww + ]; +} diff --git a/programs/eww/config/eww.scss b/hmModules/services/widgets/eww/config/eww.scss similarity index 100% rename from programs/eww/config/eww.scss rename to hmModules/services/widgets/eww/config/eww.scss diff --git a/programs/eww/config/eww.yuck b/hmModules/services/widgets/eww/config/eww.yuck similarity index 100% rename from programs/eww/config/eww.yuck rename to hmModules/services/widgets/eww/config/eww.yuck diff --git a/programs/eww/config/modules/bar.yuck b/hmModules/services/widgets/eww/config/modules/bar.yuck similarity index 100% rename from programs/eww/config/modules/bar.yuck rename to hmModules/services/widgets/eww/config/modules/bar.yuck diff --git a/programs/eww/config/modules/components/hyprwindow.yuck b/hmModules/services/widgets/eww/config/modules/components/hyprwindow.yuck similarity index 100% rename from programs/eww/config/modules/components/hyprwindow.yuck rename to hmModules/services/widgets/eww/config/modules/components/hyprwindow.yuck diff --git a/programs/eww/config/modules/components/hyprworkspaces.yuck b/hmModules/services/widgets/eww/config/modules/components/hyprworkspaces.yuck similarity index 100% rename from programs/eww/config/modules/components/hyprworkspaces.yuck rename to hmModules/services/widgets/eww/config/modules/components/hyprworkspaces.yuck diff --git a/programs/eww/config/modules/components/internet.yuck b/hmModules/services/widgets/eww/config/modules/components/internet.yuck similarity index 100% rename from programs/eww/config/modules/components/internet.yuck rename to hmModules/services/widgets/eww/config/modules/components/internet.yuck diff --git a/programs/eww/config/modules/components/japaneseaudio.yuck b/hmModules/services/widgets/eww/config/modules/components/japaneseaudio.yuck similarity index 100% rename from programs/eww/config/modules/components/japaneseaudio.yuck rename to hmModules/services/widgets/eww/config/modules/components/japaneseaudio.yuck diff --git a/programs/eww/config/modules/components/japanesebattery.yuck b/hmModules/services/widgets/eww/config/modules/components/japanesebattery.yuck similarity index 100% rename from programs/eww/config/modules/components/japanesebattery.yuck rename to hmModules/services/widgets/eww/config/modules/components/japanesebattery.yuck diff --git a/programs/eww/config/modules/components/japanesedate.yuck b/hmModules/services/widgets/eww/config/modules/components/japanesedate.yuck similarity index 100% rename from programs/eww/config/modules/components/japanesedate.yuck rename to hmModules/services/widgets/eww/config/modules/components/japanesedate.yuck diff --git a/programs/eww/config/modules/powerbar.yuck b/hmModules/services/widgets/eww/config/modules/powerbar.yuck similarity index 100% rename from programs/eww/config/modules/powerbar.yuck rename to hmModules/services/widgets/eww/config/modules/powerbar.yuck diff --git a/programs/eww/config/modules/switch.yuck b/hmModules/services/widgets/eww/config/modules/switch.yuck similarity index 100% rename from programs/eww/config/modules/switch.yuck rename to hmModules/services/widgets/eww/config/modules/switch.yuck diff --git a/programs/eww/config/scripts/change-active-workspace b/hmModules/services/widgets/eww/config/scripts/change-active-workspace similarity index 100% rename from programs/eww/config/scripts/change-active-workspace rename to hmModules/services/widgets/eww/config/scripts/change-active-workspace diff --git a/programs/eww/config/scripts/get-active-workspace b/hmModules/services/widgets/eww/config/scripts/get-active-workspace similarity index 100% rename from programs/eww/config/scripts/get-active-workspace rename to hmModules/services/widgets/eww/config/scripts/get-active-workspace diff --git a/programs/eww/config/scripts/get-window-title b/hmModules/services/widgets/eww/config/scripts/get-window-title similarity index 100% rename from programs/eww/config/scripts/get-window-title rename to hmModules/services/widgets/eww/config/scripts/get-window-title diff --git a/programs/eww/config/scripts/get-workspaces b/hmModules/services/widgets/eww/config/scripts/get-workspaces similarity index 100% rename from programs/eww/config/scripts/get-workspaces rename to hmModules/services/widgets/eww/config/scripts/get-workspaces diff --git a/programs/eww/config/scripts/japanesedate b/hmModules/services/widgets/eww/config/scripts/japanesedate similarity index 100% rename from programs/eww/config/scripts/japanesedate rename to hmModules/services/widgets/eww/config/scripts/japanesedate diff --git a/programs/eww/config/scripts/medpreview b/hmModules/services/widgets/eww/config/scripts/medpreview similarity index 100% rename from programs/eww/config/scripts/medpreview rename to hmModules/services/widgets/eww/config/scripts/medpreview diff --git a/programs/eww/config/variables.yuck b/hmModules/services/widgets/eww/config/variables.yuck similarity index 100% rename from programs/eww/config/variables.yuck rename to hmModules/services/widgets/eww/config/variables.yuck diff --git a/hmModules/services/widgets/eww/default.nix b/hmModules/services/widgets/eww/default.nix new file mode 100644 index 0000000..7417cdf --- /dev/null +++ b/hmModules/services/widgets/eww/default.nix @@ -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; + }; +} diff --git a/home.nix b/home.nix deleted file mode 100644 index 34a4693..0000000 --- a/home.nix +++ /dev/null @@ -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"; -} diff --git a/programs/ags/default.nix b/programs/ags/default.nix deleted file mode 100644 index 74eae58..0000000 --- a/programs/ags/default.nix +++ /dev/null @@ -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 - ]; - }; -} diff --git a/programs/alacritty/default.nix b/programs/alacritty/default.nix deleted file mode 100644 index d3a0378..0000000 --- a/programs/alacritty/default.nix +++ /dev/null @@ -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; - }; - }; -} diff --git a/programs/discord/default.nix b/programs/discord/default.nix deleted file mode 100644 index 8344f47..0000000 --- a/programs/discord/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ config, pkgs, ... }: -{ - home.packages = with pkgs; [ - vesktop # Base app - ]; -} diff --git a/programs/dunst/default.nix b/programs/dunst/default.nix deleted file mode 100644 index 3f1e60e..0000000 --- a/programs/dunst/default.nix +++ /dev/null @@ -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"; - }; - }; -} diff --git a/programs/eww/default.nix b/programs/eww/default.nix deleted file mode 100644 index 135aed8..0000000 --- a/programs/eww/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.eww.enable = true; - programs.eww.package = pkgs.eww-wayland; - programs.eww.configDir = ./config; -} diff --git a/programs/fish/default.nix b/programs/fish/default.nix deleted file mode 100644 index 93c6018..0000000 --- a/programs/fish/default.nix +++ /dev/null @@ -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} - ''; - }; -} diff --git a/programs/git/default.nix b/programs/git/default.nix deleted file mode 100644 index 9f134ee..0000000 --- a/programs/git/default.nix +++ /dev/null @@ -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"; - }; - }; -} diff --git a/programs/hypr/default.nix b/programs/hypr/default.nix deleted file mode 100644 index f390790..0000000 --- a/programs/hypr/default.nix +++ /dev/null @@ -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; - }; -} diff --git a/programs/kitty/default.nix b/programs/kitty/default.nix deleted file mode 100644 index 2bff14d..0000000 --- a/programs/kitty/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.kitty = { - enable = true; - settings = { - font_family = "Cascadia Code"; - font_size = 18; - enable_audio_bell = "no"; - }; - }; -} diff --git a/programs/lf/default.nix b/programs/lf/default.nix deleted file mode 100644 index 1eb8c30..0000000 --- a/programs/lf/default.nix +++ /dev/null @@ -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 - ''; - }; -} diff --git a/programs/lutris/default.nix b/programs/lutris/default.nix deleted file mode 100644 index 05993cd..0000000 --- a/programs/lutris/default.nix +++ /dev/null @@ -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 - # ]; - # }) - ]; -} diff --git a/programs/mpv/default.nix b/programs/mpv/default.nix deleted file mode 100644 index bc41ad5..0000000 --- a/programs/mpv/default.nix +++ /dev/null @@ -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 - ]; -} diff --git a/programs/nnn/default.nix b/programs/nnn/default.nix deleted file mode 100644 index 583a7b2..0000000 --- a/programs/nnn/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.nnn.enable = true; - home.sessionVariables = { - NNN_FCOLORS = "0000E6310000000000000000"; - NNN_OPTS = "eH"; - NNN_FIFO = "/tmp/nnn.fifo"; - NNN_TRASH = "1"; - }; - home.packages = with pkgs; [ - trash-cli # Trash program for nnn - ]; -} diff --git a/programs/nvim/default.nix b/programs/nvim/default.nix deleted file mode 100644 index bd19ffd..0000000 --- a/programs/nvim/default.nix +++ /dev/null @@ -1,74 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.neovim.enable = true; - programs.neovim.extraConfig = '' - ${builtins.readFile ./init.vim} - ''; - programs.neovim.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 = { - \ '': 'tab split', - \ '': 'split', - \ '': 'vsplit' } - let g:nnn#command = 'nnn -HoeT v' - let g:nnn#replace_netrw = 1 - ''; - } - { # Fuzzy searches - plugin = fzf-vim; - config = '' - map :Files - map :Ag - ''; - } - { # Auto completions - plugin = coc-nvim; - config = '' - function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' - endfunction - - inoremap - \ pumvisible() ? "\" : - \ check_back_space() ? "\" : - \ coc#refresh() - inoremap pumvisible() ? "\" : "\" - ''; - } - 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 - ]; -} diff --git a/programs/obs/default.nix b/programs/obs/default.nix deleted file mode 100644 index edd2865..0000000 --- a/programs/obs/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, pkgs, ... }: -{ - programs.obs-studio = { - enable = true; - plugins = with pkgs.obs-studio-plugins; [ - wlrobs - obs-backgroundremoval - obs-pipewire-audio-capture - ]; - }; -} diff --git a/programs/rofi/default.nix b/programs/rofi/default.nix deleted file mode 100644 index 1db30ee..0000000 --- a/programs/rofi/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.rofi.enable = true; - programs.rofi.package = pkgs.rofi-wayland; -} diff --git a/programs/spotify/default.nix b/programs/spotify/default.nix deleted file mode 100644 index 7510db3..0000000 --- a/programs/spotify/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, pkgs, ... }: - -{ - services.spotifyd.enable = true; - services.spotifyd.settings = { - global = { - username = "me@daltonlange.com"; - password = "5ThM^G3!FTfH6rH#cJEx"; - backend = "pulseaudio"; - device_name = "onizuka"; - bitrate = 320; - }; - }; - - home.packages = with pkgs; [ - spotify-tui # Spotify TUI player - ]; -} diff --git a/programs/ssh/default.nix b/programs/ssh/default.nix deleted file mode 100644 index 4e0f26f..0000000 --- a/programs/ssh/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.ssh.enable = true; - home.packages = with pkgs; [ - sshfs # SSH File system - ]; -} diff --git a/programs/wal/default.nix b/programs/wal/default.nix deleted file mode 100644 index 5d63ae9..0000000 --- a/programs/wal/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ config, pkgs, ... }: -let rootPath = ./.; in -{ - 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/"; - #}; -} diff --git a/programs/xdg/default.nix b/programs/xdg/default.nix deleted file mode 100644 index 81a7a84..0000000 --- a/programs/xdg/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, pkgs, ... }: - -{ - xdg.enable = true; - xdg.userDirs.enable = true; - xdg.userDirs = { - desktop = "${config.home.homeDirectory}/dwn"; - download = "${config.home.homeDirectory}/dwn"; - documents = "${config.home.homeDirectory}/dox"; - publicShare = "${config.home.homeDirectory}/dox/public"; - templates = "${config.home.homeDirectory}/dox/templates"; - music = "${config.home.homeDirectory}/med/mus"; - pictures = "${config.home.homeDirectory}/med/pix"; - videos = "${config.home.homeDirectory}/med/vid"; - }; - - xdg.mimeApps.enable = true; -} diff --git a/programs/xonsh/default.nix b/programs/xonsh/default.nix deleted file mode 100644 index 9700e76..0000000 --- a/programs/xonsh/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ config, pkgs, ... }: -let rootPath = ./.; in -{ - 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"; - }; - -} diff --git a/programs/zsh/default.nix b/programs/zsh/default.nix deleted file mode 100644 index 694b981..0000000 --- a/programs/zsh/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ config, pkgs, ... }: -{ - 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 = '' - # 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" - ''; - }; -} diff --git a/services/scripts/default.nix b/services/scripts/default.nix deleted file mode 100644 index aa31a14..0000000 --- a/services/scripts/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, pkgs, ... }: - -let - select = import ./select.nix { inherit pkgs; }; -in -{ - home.packages = [ - select - ]; -} diff --git a/services/scripts/select.nix b/services/scripts/select.nix deleted file mode 100644 index c9462ab..0000000 --- a/services/scripts/select.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "select"; - - runtimeInputs = [ fzf rofi ]; - - text = '' - if [ ${PPID} -ne 1 ]; then - echo -e $1 | fzf - else - echo -e $1 | rofi -dmenu -p $2 - fi - ''; -} diff --git a/services/timers/default.nix b/services/timers/default.nix deleted file mode 100644 index 8eb16b7..0000000 --- a/services/timers/default.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ config, pkgs, ... }: -let rootPath = ./.; in -{ - systemd.user.timers = { - hourly-time = { - Timer = { - OnCalendar = "hourly"; - }; - Install = { - WantedBy = [ - "timers.target" - ]; - }; - }; - quarterly-time = { - Timer = { - OnCalendar = "*-*-* *:15,30,45:00"; - }; - Install = { - WantedBy = [ - "timers.target" - ]; - }; - }; - }; - systemd.user.services = { - hourly-time = { - 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 = { - 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; - }; -} diff --git a/systems/pan/default.nix b/systems/pan/default.nix new file mode 100644 index 0000000..8947e74 --- /dev/null +++ b/systems/pan/default.nix @@ -0,0 +1,54 @@ +{ config, pkgs, ... }: + +{ + home.username = "pan"; + nixpkgs.config.allowUnfree = true; + home.stateVersion = "23.05"; + + hypr.enable = true; + ags.enable = true; + rofi.enable = true; + + timer.enableHourly = true; + timer.enableQuarterly = true; + colors.enable = true; + manpages.enable = true; + + zsh.enable = true; + kitty.enable = true; + kitty.font = "Cascadia Code"; + git.enable = true; + git.username = "Julia Lange"; + git.email = "public@julialange.org"; + ssh.enable = true; + + mpv.enable = true; + zathura.enable = true; + feh.enable = true; + + neovim.enable = true; + lf.enable = true; + lf.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" + ]; + + gimp.enable = true; + + beeper.enable = true; + discord.enable = true; + + lutris.enable = true; + + extraPkgs = with pkgs; [ + # Applications + ani-cli # Easy anime player + lutgen # LUT generator + prismlauncher # Minecraft launcher + ]; +}