From b9a04777cbbc6e5bdb1f0027f94ff23884e80d9f Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 18 Jun 2025 20:15:21 +0900 Subject: home-manager: split main module into separate modules --- flake.nix | 15 +-- home-manager/home.nix | 265 --------------------------------------- home-manager/modules/common.nix | 265 +++++++++++++++++++++++++++++++++++++++ home-manager/modules/private.nix | 8 ++ home-manager/modules/work.nix | 8 ++ 5 files changed, 289 insertions(+), 272 deletions(-) delete mode 100644 home-manager/home.nix create mode 100644 home-manager/modules/common.nix create mode 100644 home-manager/modules/private.nix create mode 100644 home-manager/modules/work.nix diff --git a/flake.nix b/flake.nix index 3c637f3..e02e2b4 100644 --- a/flake.nix +++ b/flake.nix @@ -50,21 +50,22 @@ readJSON = p: builtins.fromJSON (builtins.readFile p); mkHomeConfiguration = { - system, - env, + profile, + flake, ... }: home-manager.lib.homeManagerConfiguration { - pkgs = import nixpkgs { inherit system; }; + pkgs = import nixpkgs { system = flake.system; }; extraSpecialArgs = { - inherit env; - nurpkgs = nur-packages.legacyPackages.${system}; + env = flake.env; + nurpkgs = nur-packages.legacyPackages.${flake.system}; }; modules = [ - ./home-manager/home.nix + ./home-manager/modules/common.nix + ./home-manager/modules/${profile}.nix ]; }; - mkHomeConfigurationFromJSON = p: mkHomeConfiguration (readJSON p).flake; + mkHomeConfigurationFromJSON = p: mkHomeConfiguration (readJSON p); in { akashi = mkHomeConfigurationFromJSON ./mitamae/node.akashi.json; diff --git a/home-manager/home.nix b/home-manager/home.nix deleted file mode 100644 index 019252c..0000000 --- a/home-manager/home.nix +++ /dev/null @@ -1,265 +0,0 @@ -{ - pkgs, - nurpkgs, - env, - ... -}: -let - username = env.username; - homeDirectory = env.homeDirectory; - clipboardCopyCommand = env.gui.clipboard.copyCommand; - requiresWlClipboard = clipboardCopyCommand == "wl-copy"; - terminalApp = env.gui.terminalApp; -in -{ - nixpkgs.config.allowUnfree = true; - - home.username = username; - home.homeDirectory = homeDirectory; - - home.stateVersion = "23.11"; - - programs.home-manager.enable = true; - - news.display = "silent"; - - home.packages = - [ - # pkgs.alacritty - pkgs.bat - pkgs.bed - pkgs.clang-tools - pkgs.claude-code - pkgs.cmake - pkgs.curl - pkgs.deno - pkgs.efm-langserver - pkgs.fd - pkgs.fzf - pkgs.gcc - pkgs.git - pkgs.gnumake - pkgs.go - pkgs.gomi - pkgs.gopls - pkgs.htop - pkgs.hyperfine - pkgs.imagemagick - pkgs.jnv - pkgs.jq - pkgs.just - pkgs.mmv-go - pkgs.neovim - pkgs.nodejs_22 - pkgs.pandoc - pkgs.phpactor - pkgs.pwgen - pkgs.python314 - pkgs.ripgrep - pkgs.ruby_3_4 - pkgs.rustup - pkgs.sqlite - pkgs.tokei - pkgs.tree - pkgs.universal-ctags - pkgs.vim - pkgs.zig - pkgs.zls - - pkgs.nodePackages.pnpm - pkgs.nodePackages.typescript-language-server - pkgs.nodePackages.yarn - - nurpkgs.hgrep - - nurpkgs.git-helpers - nurpkgs.reparojson - nurpkgs.term-banner - nurpkgs.term-clock - ] - ++ ( - let - php = ( - pkgs.php84.buildEnv { - extensions = { enabled, all }: enabled ++ [ all.ffi ]; - extraConfig = '' - ffi.enable=true - ''; - } - ); - in - [ - php - php.packages.composer - ] - ) - ++ pkgs.lib.optional requiresWlClipboard pkgs.wl-clipboard; - - home.file = { - ".config/skk/jisyo.L".source = "${pkgs.skkDictionaries.l}/share/skk/SKK-JISYO.L"; - }; - - home.sessionVariables = rec { - # XDG Base Directories - # See: https://wiki.archlinux.org/title/XDG_Base_Directory - XDG_CONFIG_HOME = "${homeDirectory}/.config"; - XDG_CACHE_HOME = "${homeDirectory}/.cache"; - XDG_DATA_HOME = "${homeDirectory}/.local/share"; - XDG_STATE_HOME = "${homeDirectory}/.local/state"; - # XDG Base Directories: Node.js - NODE_REPL_HISTORY = "${XDG_CACHE_HOME}/node_repl_history"; - # XDG Base Directories: PHP - PHP_HISTFILE = "${XDG_CACHE_HOME}/php_history"; - # XDG Base Directories: SQLite - SQLITE_HISTORY = "${XDG_CACHE_HOME}/sqlite_history"; - - # Locale settings - LANG = "en_US.utf-8"; - LC_ALL = ""; - # Locale: less - LESSCHARSET = "utf-8"; - - # Editor - VISUAL = "nvim"; - EDITOR = "nvim"; - - # Bat - BAT_THEME = "base16"; - - # Hgrep - HGREP_DEFAULT_OPTS = "--theme=Nord"; - }; - - programs.direnv = { - enable = true; - nix-direnv.enable = true; - }; - - programs.tmux = { - enable = true; - - sensibleOnTop = false; - - aggressiveResize = true; - baseIndex = 1; - clock24 = true; - escapeTime = 5; - historyLimit = 50000; - mouse = false; - prefix = "C-t"; - terminal = "tmux-256color"; - - extraConfig = - let - commonConfig = builtins.readFile ./config/tmux/tmux.conf; - clipboardConfig = - if clipboardCopyCommand != null then - '' - bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "${clipboardCopyCommand}" - '' - else - ""; - terminalConfig = - if terminalApp == "alacritty" then - '' - set-option -ga terminal-overrides ',alacritty:RGB' - '' - else - ""; - in - commonConfig + clipboardConfig + terminalConfig; - }; - - programs.bash = { - enable = true; - }; - - programs.fish = { - enable = true; - - interactiveShellInit = builtins.readFile ./config/fish/config.fish; - shellInitLast = builtins.readFile ./config/fish/path.fish; - }; - - programs.starship = { - enable = true; - - settings = { - add_newline = true; - command_timeout = 1000; - format = "[$directory$git_branch$git_commit$git_status$git_state](bold fg:75)$fill$cmd_duration$time$line_break$jobs$shell$nix_shell$direnv$character"; - continuation_prompt = "[❯](fg:63)[❯](fg:62)[❯](fg:61) "; - character = { - success_symbol = "[❯](fg:150)[❯](fg:153)[❯](fg:159)"; - error_symbol = "[❯](fg:172)[❯](fg:173)[❯](fg:174)"; - }; - directory = { - format = "$path "; - use_os_path_sep = false; - truncate_to_repo = false; - truncation_length = 99; - }; - git_branch = { - format = "\\($branch\\)"; - }; - git_commit = { - format = "\\($hash$tag\\)"; - tag_disabled = false; - tag_symbol = " @ "; - }; - git_status = { - format = "$conflicted$modified$untracked$staged$stashed"; - conflicted = "!"; - modified = "~"; - untracked = "?"; - staged = "*"; - stashed = " \\[$count\\]"; - }; - git_state = { - format = " - $state ($progress_current/$progress_total) "; - }; - cmd_duration = { - format = "~$duration "; - }; - time = { - disabled = false; - format = "\\[$time\\] "; - time_format = "%T"; - }; - fill = { - symbol = " "; - }; - jobs = { - style = "white"; - symbol = "+"; - }; - shell = { - disabled = false; - format = "[$indicator]($style)"; - fish_indicator = ""; - bash_indicator = "bash "; - zsh_indicator = "zsh "; - }; - nix_shell = { - format = "[N]($style) "; - style = "white"; - heuristic = true; - }; - direnv = { - disabled = false; - format = "[$loaded]($style)"; - style = "white"; - loaded_msg = "D "; - unloaded_msg = ""; - }; - }; - }; - - programs.gh = { - enable = true; - - settings.aliases = { - clone = "repo clone"; - }; - }; -} diff --git a/home-manager/modules/common.nix b/home-manager/modules/common.nix new file mode 100644 index 0000000..e8a02f3 --- /dev/null +++ b/home-manager/modules/common.nix @@ -0,0 +1,265 @@ +{ + pkgs, + nurpkgs, + env, + ... +}: +let + username = env.username; + homeDirectory = env.homeDirectory; + clipboardCopyCommand = env.gui.clipboard.copyCommand; + requiresWlClipboard = clipboardCopyCommand == "wl-copy"; + terminalApp = env.gui.terminalApp; +in +{ + nixpkgs.config.allowUnfree = true; + + home.username = username; + home.homeDirectory = homeDirectory; + + home.stateVersion = "23.11"; + + programs.home-manager.enable = true; + + news.display = "silent"; + + home.packages = + [ + # pkgs.alacritty + pkgs.bat + pkgs.bed + pkgs.clang-tools + pkgs.claude-code + pkgs.cmake + pkgs.curl + pkgs.deno + pkgs.efm-langserver + pkgs.fd + pkgs.fzf + pkgs.gcc + pkgs.git + pkgs.gnumake + pkgs.go + pkgs.gomi + pkgs.gopls + pkgs.htop + pkgs.hyperfine + pkgs.imagemagick + pkgs.jnv + pkgs.jq + pkgs.just + pkgs.mmv-go + pkgs.neovim + pkgs.nodejs_22 + pkgs.pandoc + pkgs.phpactor + pkgs.pwgen + pkgs.python314 + pkgs.ripgrep + pkgs.ruby_3_4 + pkgs.rustup + pkgs.sqlite + pkgs.tokei + pkgs.tree + pkgs.universal-ctags + pkgs.vim + pkgs.zig + pkgs.zls + + pkgs.nodePackages.pnpm + pkgs.nodePackages.typescript-language-server + pkgs.nodePackages.yarn + + nurpkgs.hgrep + + nurpkgs.git-helpers + nurpkgs.reparojson + nurpkgs.term-banner + nurpkgs.term-clock + ] + ++ ( + let + php = ( + pkgs.php84.buildEnv { + extensions = { enabled, all }: enabled ++ [ all.ffi ]; + extraConfig = '' + ffi.enable=true + ''; + } + ); + in + [ + php + php.packages.composer + ] + ) + ++ pkgs.lib.optional requiresWlClipboard pkgs.wl-clipboard; + + home.file = { + ".config/skk/jisyo.L".source = "${pkgs.skkDictionaries.l}/share/skk/SKK-JISYO.L"; + }; + + home.sessionVariables = rec { + # XDG Base Directories + # See: https://wiki.archlinux.org/title/XDG_Base_Directory + XDG_CONFIG_HOME = "${homeDirectory}/.config"; + XDG_CACHE_HOME = "${homeDirectory}/.cache"; + XDG_DATA_HOME = "${homeDirectory}/.local/share"; + XDG_STATE_HOME = "${homeDirectory}/.local/state"; + # XDG Base Directories: Node.js + NODE_REPL_HISTORY = "${XDG_CACHE_HOME}/node_repl_history"; + # XDG Base Directories: PHP + PHP_HISTFILE = "${XDG_CACHE_HOME}/php_history"; + # XDG Base Directories: SQLite + SQLITE_HISTORY = "${XDG_CACHE_HOME}/sqlite_history"; + + # Locale settings + LANG = "en_US.utf-8"; + LC_ALL = ""; + # Locale: less + LESSCHARSET = "utf-8"; + + # Editor + VISUAL = "nvim"; + EDITOR = "nvim"; + + # Bat + BAT_THEME = "base16"; + + # Hgrep + HGREP_DEFAULT_OPTS = "--theme=Nord"; + }; + + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; + + programs.tmux = { + enable = true; + + sensibleOnTop = false; + + aggressiveResize = true; + baseIndex = 1; + clock24 = true; + escapeTime = 5; + historyLimit = 50000; + mouse = false; + prefix = "C-t"; + terminal = "tmux-256color"; + + extraConfig = + let + commonConfig = builtins.readFile ../config/tmux/tmux.conf; + clipboardConfig = + if clipboardCopyCommand != null then + '' + bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "${clipboardCopyCommand}" + '' + else + ""; + terminalConfig = + if terminalApp == "alacritty" then + '' + set-option -ga terminal-overrides ',alacritty:RGB' + '' + else + ""; + in + commonConfig + clipboardConfig + terminalConfig; + }; + + programs.bash = { + enable = true; + }; + + programs.fish = { + enable = true; + + interactiveShellInit = builtins.readFile ../config/fish/config.fish; + shellInitLast = builtins.readFile ../config/fish/path.fish; + }; + + programs.starship = { + enable = true; + + settings = { + add_newline = true; + command_timeout = 1000; + format = "[$directory$git_branch$git_commit$git_status$git_state](bold fg:75)$fill$cmd_duration$time$line_break$jobs$shell$nix_shell$direnv$character"; + continuation_prompt = "[❯](fg:63)[❯](fg:62)[❯](fg:61) "; + character = { + success_symbol = "[❯](fg:150)[❯](fg:153)[❯](fg:159)"; + error_symbol = "[❯](fg:172)[❯](fg:173)[❯](fg:174)"; + }; + directory = { + format = "$path "; + use_os_path_sep = false; + truncate_to_repo = false; + truncation_length = 99; + }; + git_branch = { + format = "\\($branch\\)"; + }; + git_commit = { + format = "\\($hash$tag\\)"; + tag_disabled = false; + tag_symbol = " @ "; + }; + git_status = { + format = "$conflicted$modified$untracked$staged$stashed"; + conflicted = "!"; + modified = "~"; + untracked = "?"; + staged = "*"; + stashed = " \\[$count\\]"; + }; + git_state = { + format = " - $state ($progress_current/$progress_total) "; + }; + cmd_duration = { + format = "~$duration "; + }; + time = { + disabled = false; + format = "\\[$time\\] "; + time_format = "%T"; + }; + fill = { + symbol = " "; + }; + jobs = { + style = "white"; + symbol = "+"; + }; + shell = { + disabled = false; + format = "[$indicator]($style)"; + fish_indicator = ""; + bash_indicator = "bash "; + zsh_indicator = "zsh "; + }; + nix_shell = { + format = "[N]($style) "; + style = "white"; + heuristic = true; + }; + direnv = { + disabled = false; + format = "[$loaded]($style)"; + style = "white"; + loaded_msg = "D "; + unloaded_msg = ""; + }; + }; + }; + + programs.gh = { + enable = true; + + settings.aliases = { + clone = "repo clone"; + }; + }; +} diff --git a/home-manager/modules/private.nix b/home-manager/modules/private.nix new file mode 100644 index 0000000..153b780 --- /dev/null +++ b/home-manager/modules/private.nix @@ -0,0 +1,8 @@ +{ + pkgs, + nurpkgs, + env, + ... +}: +{ +} diff --git a/home-manager/modules/work.nix b/home-manager/modules/work.nix new file mode 100644 index 0000000..153b780 --- /dev/null +++ b/home-manager/modules/work.nix @@ -0,0 +1,8 @@ +{ + pkgs, + nurpkgs, + env, + ... +}: +{ +} -- cgit v1.2.3-70-g09d2