From f2e34e4c771aa0f86d4a39c648b18072f6f64374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20H=C3=A9mono?= Date: Sun, 23 Nov 2025 12:07:42 +0100 Subject: [PATCH 1/2] Modularize home config --- homes/common/base.nix | 10 +++++ homes/common/default.nix | 11 +++++ homes/common/editor.nix | 9 ++++ homes/common/user-info.nix | 18 ++++++++ homes/common/vc.nix | 29 +++++++++++++ homes/me/default.nix | 74 ++------------------------------- homes/scalizer/default.nix | 84 ++++---------------------------------- 7 files changed, 88 insertions(+), 147 deletions(-) create mode 100644 homes/common/base.nix create mode 100644 homes/common/default.nix create mode 100644 homes/common/editor.nix create mode 100644 homes/common/user-info.nix create mode 100644 homes/common/vc.nix diff --git a/homes/common/base.nix b/homes/common/base.nix new file mode 100644 index 0000000..0f0a003 --- /dev/null +++ b/homes/common/base.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: +{ + + programs.bash.enable = true; + + programs.fish = { + enable = true; + }; + +} diff --git a/homes/common/default.nix b/homes/common/default.nix new file mode 100644 index 0000000..6cab159 --- /dev/null +++ b/homes/common/default.nix @@ -0,0 +1,11 @@ +{ ... }: +{ + + imports = [ + ./user-info.nix + ./base.nix + ./editor.nix + ./vc.nix + ]; + +} diff --git a/homes/common/editor.nix b/homes/common/editor.nix new file mode 100644 index 0000000..441f4f0 --- /dev/null +++ b/homes/common/editor.nix @@ -0,0 +1,9 @@ +{ config, pkgs, ... }: +{ + + programs.helix = { + enable = true; + defaultEditor = true; + }; + +} diff --git a/homes/common/user-info.nix b/homes/common/user-info.nix new file mode 100644 index 0000000..96f8bd1 --- /dev/null +++ b/homes/common/user-info.nix @@ -0,0 +1,18 @@ +{ lib, ... }: +{ + + options.user.info = { + name = lib.mkOption { + type = lib.types.str; + }; + email = lib.mkOption { + type = lib.types.str; + }; + }; + + config.user.info = { + name = lib.mkDefault "Julien Hémono"; + email = lib.mkDefault "julien@hemono.fr"; + }; + +} diff --git a/homes/common/vc.nix b/homes/common/vc.nix new file mode 100644 index 0000000..9bbb8a3 --- /dev/null +++ b/homes/common/vc.nix @@ -0,0 +1,29 @@ +{ config, pkgs, ... }: +{ + + programs.git = { + enable = true; + settings = { + user = { + email = config.user.info.email; + name = config.user.info.name; + }; + }; + }; + + programs.jujutsu = { + enable = true; + settings = { + user = { + email = config.user.info.email; + name = config.user.info.name; + }; + ui.default-command = "log"; + }; + }; + + programs.gh = { + enable = true; + }; + +} diff --git a/homes/me/default.nix b/homes/me/default.nix index 37cd2dd..e0f747d 100644 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -2,44 +2,12 @@ { + imports = [ + ../common + ]; + home.stateVersion = "25.05"; # Please read the comment before changing. - programs.bash.enable = true; - - programs.fish = { - enable = true; - }; - - programs.git = { - enable = true; - settings = { - user = { - name = "Julien Hémono"; - email = "julien@hemono.fr"; - }; - }; - }; - - programs.jujutsu = { - enable = true; - settings = { - user = { - email = "julien@hemono.fr"; - name = "Julien Hémono"; - }; - ui.default-command = "log"; - }; - }; - - programs.gh = { - enable = true; - }; - - programs.helix = { - enable = true; - defaultEditor = true; - }; - programs.uv.enable = true; programs.firefox = { @@ -97,38 +65,4 @@ # nodejs ]; - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - home.file = { - # # Building this configuration will create a copy of 'dotfiles/screenrc' in - # # the Nix store. Activating the configuration will then make '~/.screenrc' a - # # symlink to the Nix store copy. - # ".screenrc".source = dotfiles/screenrc; - - # # You can also set the file content immediately. - # ".gradle/gradle.properties".text = '' - # org.gradle.console=verbose - # org.gradle.daemon.idletimeout=3600000 - # ''; - }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. These will be explicitly sourced when using a - # shell provided by Home Manager. If you don't want to manage your shell - # through Home Manager then you have to manually source 'hm-session-vars.sh' - # located at either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/julien/etc/profile.d/hm-session-vars.sh - # - home.sessionVariables = { - }; - } diff --git a/homes/scalizer/default.nix b/homes/scalizer/default.nix index 5d94bf7..08b24ba 100644 --- a/homes/scalizer/default.nix +++ b/homes/scalizer/default.nix @@ -1,50 +1,17 @@ { config, pkgs, ... }: { - # Home Manager needs a bit of information about you and the paths it should - # manage. + + imports = [ + ../common + ]; + home.username = "julien"; home.homeDirectory = "/home/julien"; - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. - home.stateVersion = "25.05"; # Please read the comment before changing. + home.stateVersion = "25.05"; - programs.bash.enable = true; - programs.fish = { - enable = true; - }; - - programs.git = { - enable = true; - userName = "Julien Hémono"; - userEmail = "julien@scalizer.fr"; - }; - - programs.jujutsu = { - enable = true; - settings = { - user = { - email = "julien@scalizer.fr"; - name = "Julien Hémono"; - }; - ui.default-command = "log"; - }; - }; - - programs.gh = { - enable = true; - }; - - programs.helix = { - enable = true; - defaultEditor = true; - }; + user.info.email = "julien@scalizer.fr"; programs.uv.enable = true; @@ -52,46 +19,9 @@ enable = true; }; - # The home.packages option allows you to install Nix packages into your - # environment. home.packages = with pkgs; [ ]; - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - home.file = { - # # Building this configuration will create a copy of 'dotfiles/screenrc' in - # # the Nix store. Activating the configuration will then make '~/.screenrc' a - # # symlink to the Nix store copy. - # ".screenrc".source = dotfiles/screenrc; - - # # You can also set the file content immediately. - # ".gradle/gradle.properties".text = '' - # org.gradle.console=verbose - # org.gradle.daemon.idletimeout=3600000 - # ''; - }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. These will be explicitly sourced when using a - # shell provided by Home Manager. If you don't want to manage your shell - # through Home Manager then you have to manually source 'hm-session-vars.sh' - # located at either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/julien/etc/profile.d/hm-session-vars.sh - # - home.sessionVariables = { - # EDITOR = "emacs"; - }; - # Let Home Manager install and manage itself. programs.home-manager.enable = true; services.home-manager.autoExpire.enable = true; From d0b1495eded87407e8dd56cab4712c90dd9f3a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20H=C3=A9mono?= Date: Sun, 23 Nov 2025 12:53:18 +0100 Subject: [PATCH 2/2] Modularize nix config --- hosts/common/default.nix | 8 ++++++++ hosts/common/nix.nix | 18 ++++++++++++++++++ hosts/gwiad/configuration.nix | 16 +--------------- hosts/sesame/configuration.nix | 10 +--------- 4 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 hosts/common/default.nix create mode 100644 hosts/common/nix.nix diff --git a/hosts/common/default.nix b/hosts/common/default.nix new file mode 100644 index 0000000..b53c63e --- /dev/null +++ b/hosts/common/default.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + + imports = [ + ./nix.nix + ]; + +} diff --git a/hosts/common/nix.nix b/hosts/common/nix.nix new file mode 100644 index 0000000..ac50a2b --- /dev/null +++ b/hosts/common/nix.nix @@ -0,0 +1,18 @@ +{ config, pkgs, ... }: +{ + + nix = { + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + settings = { + experimental-features = [ "nix-command" "flakes" ]; + auto-optimise-store = true; + trusted-users = [ "jhemono" ]; + }; + channel.enable = false; + }; + +} diff --git a/hosts/gwiad/configuration.nix b/hosts/gwiad/configuration.nix index 8a02f1a..dbc22a8 100644 --- a/hosts/gwiad/configuration.nix +++ b/hosts/gwiad/configuration.nix @@ -8,6 +8,7 @@ imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix + ../common ./home.nix # Services ./btrbk.nix @@ -87,21 +88,6 @@ environment.variables.EDITOR = "vim"; - # Nix configuration - nix = { - gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; - }; - settings = { - experimental-features = [ "nix-command" "flakes" ]; - auto-optimise-store = true; - trusted-users = [ "jhemono" ]; - }; - channel.enable = false; - }; - # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; diff --git a/hosts/sesame/configuration.nix b/hosts/sesame/configuration.nix index 057ac65..28a5a97 100644 --- a/hosts/sesame/configuration.nix +++ b/hosts/sesame/configuration.nix @@ -8,6 +8,7 @@ imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix + ../common # Supporting ./buckets.nix ./nginx.nix @@ -69,15 +70,6 @@ environment.variables.EDITOR = "vim"; - # Nix configuration - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; - }; - nix.settings.auto-optimise-store = true; - # OpenSSH services.openssh = { enable = true;