diff --git a/homeManagerModules/default.nix b/homeManagerModules/default.nix index b021e28..75c1851 100644 --- a/homeManagerModules/default.nix +++ b/homeManagerModules/default.nix @@ -1 +1,7 @@ -{ }: { } +{ ... }: +{ + imports = [ + ./desktop + ./programs + ]; +} diff --git a/homeManagerModules/desktop/assets/nyan_cat.jpg b/homeManagerModules/desktop/assets/nyan_cat.jpg new file mode 100644 index 0000000..9f1e8d0 Binary files /dev/null and b/homeManagerModules/desktop/assets/nyan_cat.jpg differ diff --git a/homeManagerModules/desktop/default.nix b/homeManagerModules/desktop/default.nix new file mode 100644 index 0000000..8b73239 --- /dev/null +++ b/homeManagerModules/desktop/default.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + imports = [ + ./gnome.nix + ]; +} diff --git a/homeManagerModules/desktop/gnome.nix b/homeManagerModules/desktop/gnome.nix new file mode 100644 index 0000000..8a327de --- /dev/null +++ b/homeManagerModules/desktop/gnome.nix @@ -0,0 +1,125 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.krop.hm.deskop.gnome; +in +{ + options.krop.hm.desktop.gnome = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + example = true; + description = "Enable my gnome configuration"; + }; + }; + config = lib.mkif cfg.enable { + home.packages = with pkgs; [ + gnomeExtensions.grand-theft-focus + gnomeExtensions.vitals + gnomeExtensions.appindicator + gnome-commander + ]; + dconf = { + settings = { + "org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = with pkgs.gnomeExtensions; [ + grand-theft-focus.extensionUuid + vitals.extensionUuid + appindicator.extensionUuid + ]; + favorite-apps = [ + "firefox.desktop" + "Alacritty.desktop" + "thunderbird.desktop" + "org.gnome.gnome-commander.desktop" + ]; + }; + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + accent-color = "red"; + show-battery-percentage = true; + gtk-enable-primary-paste = false; + }; + "org/gnome/mutter" = { + dynamic-workspaces = true; + edge-tiling = true; + workspaces-only-on-primary = true; + }; + "org/gnome/desktop/peripherals/touchpad" = { + natural-scroll = false; + click-method = "areas"; + }; + "org/gnome/desktop/wm/preferences" = { + button-layout = "appmenu:minimize,maximize,close"; + resize-with-right-button = true; + }; + "org/gnome/desktop/sound" = { + event-sounds = false; + }; + "org/gnome/desktop/search-providers" = { + disabled = [ + "org.gnome.Contacts.desktop" + "org.gnome.Calculator.desktop" + "org.gnome.Calendar.desktop" + "org.gnome.Characters.desktop" + "org.gnome.clocks.desktop" + "org.gnome.Software.desktop" + ]; + }; + "org/gnome/shell/extensions/vitals" = { + position-in-panel = 0; + show-battery = true; + icon-style = 1; + hot-sensors = [ + "__temperature_max__" + "_memory_available_" + "_storage_free_" + ]; + }; + "org/gnome/desktop/background" = + let + bgPath = "file://${./assets/nyan_cat.jpg}"; + in + { + picture-options = "zoom"; + picture-uri = bgPath; + picture-uri-dark = bgPath; + }; + }; + }; + + gtk = { + enable = true; + theme = { + name = "Adwaita-dark"; + package = pkgs.gnome-themes-extra; + }; + gtk3.extraConfig = { + gtk-application-prefer-dark-theme = 1; + }; + gtk4.extraConfig = { + gtk-application-prefer-dark-theme = 1; + }; + }; + + qt = { + enable = true; + platformTheme.name = "Adwaita-dark"; + style = { + name = "Adwaita-dark"; + package = pkgs.adwaita-qt; + }; + }; + + xdg.portal = { + enable = true; + extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; + configPackages = with pkgs; [ xdg-desktop-portal-gtk ]; + }; + }; +} diff --git a/homeManagerModules/programs/alacritty.nix b/homeManagerModules/programs/alacritty.nix new file mode 100644 index 0000000..18a7d9b --- /dev/null +++ b/homeManagerModules/programs/alacritty.nix @@ -0,0 +1,32 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.krop.hm.programs.alacritty; +in +{ + options.krop.hm.programs.alacritty = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + example = false; + description = "Enable my alacritty configuration"; + }; + }; + config = lib.mkif cfg.enable { + programs.alacritty = { + enable = true; + settings = { + general = { + import = [ "${pkgs.alacritty-theme}/gnome_terminal.toml" ]; + }; + font = { + size = 16; + }; + }; + }; + }; +} diff --git a/homeManagerModules/programs/codium.nix b/homeManagerModules/programs/codium.nix new file mode 100644 index 0000000..df694be --- /dev/null +++ b/homeManagerModules/programs/codium.nix @@ -0,0 +1,38 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.krop.hm.programs.codium; +in +{ + options.krop.hm.programs.codium = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + example = false; + description = "Enable my codium configuration"; + }; + }; + config = lib.mkif cfg.enable { + programs.vscode = { + enable = true; + package = pkgs.vscodium; + extensions = with pkgs.vscode-extensions; [ + jnoortheen.nix-ide + tamasfe.even-better-toml + vscodevim.vim + ms-azuretools.vscode-docker + ms-kubernetes-tools.vscode-kubernetes-tools + redhat.vscode-yaml + ms-python.python + ms-python.debugpy + ms-python.vscode-pylance + golang.go + ]; + mutableExtensionsDir = false; + }; + }; +} diff --git a/homeManagerModules/programs/default.nix b/homeManagerModules/programs/default.nix new file mode 100644 index 0000000..2878a2a --- /dev/null +++ b/homeManagerModules/programs/default.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + import = [ + ./alacritty.nix + ./codium.nix + ./direnv.nix + ./git.nix + ./micro.nix + ./tmux.nix + ./zoxide.nix + ./zsh.nix + ]; +} diff --git a/homeManagerModules/programs/direnv.nix b/homeManagerModules/programs/direnv.nix new file mode 100644 index 0000000..f170b2d --- /dev/null +++ b/homeManagerModules/programs/direnv.nix @@ -0,0 +1,37 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.krop.hm.programs.direnv; +in +{ + options.krop.hm.programs.direnv = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + example = false; + description = "Enable my direnv configuration"; + }; + }; + config = lib.mkif cfg.enable { + programs.direnv = { + enable = true; + enableZshIntegration = true; + nix-direnv.enable = true; + stdlib = '' + : ''${XDG_CACHE_HOME:=$HOME/.cache} + declare -A direnv_layout_dirs + direnv_layout_dir() { + echo "''${direnv_layout_dirs[$PWD]:=$( + echo -n "$XDG_CACHE_HOME"/direnv/layouts/ + echo -n "$PWD" | sha1sum | cut -d ' ' -f 1 + )}" + } + ''; + }; + + }; +} diff --git a/homeManagerModules/programs/git.nix b/homeManagerModules/programs/git.nix new file mode 100644 index 0000000..a20b25e --- /dev/null +++ b/homeManagerModules/programs/git.nix @@ -0,0 +1,71 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.krop.hm.programs.git; +in +{ + options.krop.hm.programs.git = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + example = false; + description = "Enable my git configuration"; + }; + work-config = lib.mkOption { + type = lib.types.bool; + default = false; + example = true; + description = "Generate my job configuration"; + }; + }; + config = lib.mkif cfg.enable { + programs.git = { + enable = true; + userName = "Jakub Kropáček"; + userEmail = "kropikuba@gmail.com"; + includes = + if cfg.work-config then + let + workcfg = { + user = { + email = "jakub.kropacek@olc.cz"; + name = "Jakub Kropáček"; + }; + }; + in + [ + { + condition = "gitdir:~/Repositories/OLC/**"; + contents = workcfg; + } + { + condition = "gitdir:~/Repositories/OLC-Hexpol/**"; + contents = workcfg; + } + ] + else + [ ]; + extraConfig = { + init = { + defaultBranch = "master"; + }; + push = { + autoSetupRemote = true; + }; + status = { + submoduleSummary = true; + }; + diff = { + submodule = "log"; + }; + core = { + autocrlf = "input"; + }; + }; + }; + }; +} diff --git a/homeManagerModules/programs/micro.nix b/homeManagerModules/programs/micro.nix new file mode 100644 index 0000000..41d1045 --- /dev/null +++ b/homeManagerModules/programs/micro.nix @@ -0,0 +1,28 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.krop.hm.programs.micro; +in +{ + options.krop.hm.programs.micro = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + example = false; + description = "Enable my micro configuration"; + }; + }; + config = lib.mkif cfg.enable { + programs.micro = { + enable = true; + settings = { + colorscheme = "atom-dark"; + wordwrap = true; + }; + }; + }; +} diff --git a/homeManagerModules/programs/tmux.nix b/homeManagerModules/programs/tmux.nix new file mode 100644 index 0000000..a4bf4df --- /dev/null +++ b/homeManagerModules/programs/tmux.nix @@ -0,0 +1,41 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.krop.hm.programs.tmux; +in +{ + options.krop.hm.programs.tmux = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + example = false; + description = "Enable my tmux configuration"; + }; + }; + config = lib.mkif cfg.enable { + programs.tmux = { + enable = true; + mouse = true; + terminal = "tmux-256color"; + plugins = with pkgs.tmuxPlugins; [ + yank + sensible + ]; + extraConfig = '' + # Move status bar to top + set -g status-position top + + # Indexing from 1 instead of 0 + set -g base-index 1 + set -g pane-base-index 1 + set-window-option -g pane-base-index 1 + set-option -g renumber-windows on + ''; + }; + + }; +} diff --git a/homeManagerModules/programs/zoxide.nix b/homeManagerModules/programs/zoxide.nix new file mode 100644 index 0000000..644efd6 --- /dev/null +++ b/homeManagerModules/programs/zoxide.nix @@ -0,0 +1,31 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.krop.hm.programs.zoxide; +in +{ + options.krop.hm.programs.zoxide = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + example = false; + description = "Enable my zoxide configuration"; + }; + }; + config = lib.mkif cfg.enable { + programs.fzf = { + enable = true; + }; + + programs.zoxide = { + enable = true; + options = [ + "--cmd cd" + ]; + }; + }; +} diff --git a/homeManagerModules/programs/zsh.nix b/homeManagerModules/programs/zsh.nix new file mode 100644 index 0000000..e698ec7 --- /dev/null +++ b/homeManagerModules/programs/zsh.nix @@ -0,0 +1,99 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.krop.hm.programs.zsh; +in +{ + options.krop.hm.programs.zsh = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + example = false; + description = "Enable my zsh configuration"; + }; + }; + config = lib.mkif cfg.enable { + programs.zsh = { + enable = true; + autocd = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + initExtra = '' + bindkey "^[[1;3D" backward-word + bindkey "^[[1;5D" backward-word + bindkey "^[[1;3C" forward-word + bindkey "^[[1;5C" forward-word + bindkey "^[[3~" delete-char + + autoload -Uz vcs_info + setopt auto_menu + setopt complete_in_word + setopt always_to_end + + # zstyle command format + # zstyle ::::::