···9595 home-manager.useUserPackages = true;
9696 home-manager.useGlobalPkgs = true;
9797 home-manager.users.gildedguy = (import ./users/gildedguy.nix);
9898+ programs.home-manager.enable = true; # allow home-manager to manage itself
989999100 # Install firefox.
100101 programs.firefox.enable = true;
···109110 btop
110111 htop
111112 google-chrome
113113+ direnv
112114 ];
113115114116 # Some programs need SUID wrappers, can be configured further or are
115117 # started in user sessions.
116118 programs.mtr.enable = true;
119119+120120+ # enable gpg-agent with SSH support
117121 programs.gnupg.agent = {
118122 enable = true;
119123 enableSSHSupport = true;
+4-172
hosts/stellapent-cier/users/gildedguy.nix
···11{ config, pkgs, lib, ... }:
2233-let
44- vscExts = (import ../../../shared/vscode/extensions.nix) {
55- pkgs = pkgs;
66- lib = lib;
77- };
88- #extList = lib.attrsets.mapAttrsToList (name: value: value) vscExts;
99-in
1010-with pkgs;
113{
1212- # https://fnordig.de/til/nix/home-manager-allow-unfree.html
1313- nixpkgs = {
1414- config = {
1515- allowUnfree = true;
1616- # https://github.com/nix-community/home-manager/issues/2942
1717- allowUnfreePredicate = (_: true);
1818- };
1919- };
44+ imports = [
55+ ../../../shared/home-manager/main.nix
66+ ];
2072121- # Home Manager needs a bit of information about you and the paths it should
2222- # manage. Also don't ask how we got here on the roleplaying part.
238 home.username = "gildedguy";
249 home.homeDirectory = "/home/gildedguy";
2525-2626- # This value determines the Home Manager release that your configuration is
2727- # compatible with. This helps avoid breakage when a new Home Manager release
2828- # introduces backwards incompatible changes.
2929- #
3030- # You should not change this value, even if you update Home Manager. If you do
3131- # want to update the value, then make sure to first check the Home Manager
3232- # release notes.
3333- home.stateVersion = "24.11"; # Please read the comment before changing.
3434-3535- # The home.packages option allows you to install Nix packages into your
3636- # environment.
3737- home.packages = with pkgs; [
3838- # # Adds the 'hello' command to your environment. It prints a friendly
3939- # # "Hello, world!" when run.
4040- # pkgs.hello
4141-4242- # # It is sometimes useful to fine-tune packages, for example, by applying
4343- # # overrides. You can do that directly here, just don't forget the
4444- # # parentheses. Maybe you want to install Nerd Fonts with a limited number of
4545- # # fonts?
4646- # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
4747-4848- # # You can also create simple shell scripts directly inside your
4949- # # configuration. For example, this adds a command 'my-hello' to your
5050- # # environment:
5151- # (pkgs.writeShellScriptBin "my-hello" ''
5252- # echo "Hello, ${config.home.username}!"
5353- # '')
5454-5555- ## devtools ##
5656- # https://httpie.io
5757- httpie
5858- # https://devenv.sh
5959- devenv
6060- # https://cli.github.com
6161- gh
6262- # bet we'll going to have a field day since Copilot is now available for free
6363- # (this is seperate from the gh copilot extension for those asking)
6464- # context: https://github.blog/news-insights/product-news/github-copilot-in-vscode-free/
6565- github-copilot-cli
6666- # markdownlint
6767- markdownlint-cli
6868- # https://doppler.com
6969- doppler
7070-7171- ## programming languages
7272- deno
7373- nodejs_22
7474- python313
7575- pipx
7676- pipenv
7777-7878- ## language servers ##
7979- # nix language server - https://github.com/oxalica/nil
8080- nil
8181- # https://github.com/alesbrelih/gitlab-ci-ls
8282- gitlab-ci-ls
8383- ];
8484-8585- home.sessionPath = [
8686- "$HOME/bin"
8787- ];
8888-8989- # Home Manager is pretty good at managing dotfiles. The primary way to manage
9090- # plain files is through 'home.file'.
9191- home.file = {
9292- # # Building this configuration will create a copy of 'dotfiles/screenrc' in
9393- # # the Nix store. Activating the configuration will then make '~/.screenrc' a
9494- # # symlink to the Nix store copy.
9595- # ".screenrc".source = dotfiles/screenrc;
9696-9797- # # You can also set the file content immediately.
9898- # ".gradle/gradle.properties".text = ''
9999- # org.gradle.console=verbose
100100- # org.gradle.daemon.idletimeout=3600000
101101- # '';
102102- };
103103-104104- # Home Manager can also manage your environment variables through
105105- # 'home.sessionVariables'. These will be explicitly sourced when using a
106106- # shell provided by Home Manager. If you don't want to manage your shell
107107- # through Home Manager then you have to manually source 'hm-session-vars.sh'
108108- # located at either
109109- #
110110- # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
111111- #
112112- # or
113113- #
114114- # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
115115- #
116116- # or
117117- #
118118- # /etc/profiles/per-user/gildedguy/etc/profile.d/hm-session-vars.sh
119119- #
120120- home.sessionVariables = {
121121- EDITOR = "nano";
122122- NIXOS_ALLOW_UNFREE = "1"; # for impure builds
123123- GIT_EDITOR = "code --wait";
124124- VISUAL = "code --wait";
125125- DOCKER_BUILDKIT = "1";
126126- };
127127-128128- # Let Home Manager install and manage itself.
129129- programs.home-manager.enable = true;
130130-131131- # let me cook with the configs, starting with git
132132- programs.git = {
133133- enable = true;
134134- package = pkgs.gitAndTools.gitFull;
135135- lfs = {
136136- enable = true;
137137- };
138138- userName = "Andrei Jiroh Halili";
139139- userEmail = "ajhalili2006@andreijiroh.dev";
140140- aliases = {
141141- signoff = "commit --signoff";
142142- amend = "commit -a --amend";
143143- remotes = "remote -v";
144144- root = "rev-parse --show-toplevel";
145145- unstage = "restore --staged";
146146- stats = "status";
147147- };
148148- extraConfig = {
149149- format = {
150150- signOff = true;
151151- };
152152- init = {
153153- defaultBranch = "main";
154154- };
155155-156156- # https://groups.google.com/g/binary-transparency/c/f-BI4o8HZW0
157157- transfer = {
158158- fsckobjects = true;
159159- };
160160- fetch = {
161161- fsckobjects = true;
162162- };
163163- receive = {
164164- fsckobjects = true;
165165- };
166166- push = {
167167- autoSetupRemote = true;
168168- };
169169- };
170170- };
171171-172172- programs.vscode = {
173173- enable = true;
174174- package = pkgs.vscode;
175175- enableExtensionUpdateCheck = true;
176176- mutableExtensionsDir = true;
177177- };
178178-}
1010+}
+193
shared/home-manager/main.nix
···11+# This is the meta configuration for my dotfiles with home-manager, except
22+# some home.{username,userDirectory} configs to ensure portability between
33+# hosts
44+55+{ config, pkgs, lib, ... }:
66+77+{
88+ # https://fnordig.de/til/nix/home-manager-allow-unfree.html
99+ nixpkgs = {
1010+ config = {
1111+ allowUnfree = true;
1212+ # https://github.com/nix-community/home-manager/issues/2942
1313+ allowUnfreePredicate = (_: true);
1414+ };
1515+ };
1616+1717+ # This value determines the Home Manager release that your configuration is
1818+ # compatible with. This helps avoid breakage when a new Home Manager release
1919+ # introduces backwards incompatible changes.
2020+ #
2121+ # You should not change this value, even if you update Home Manager. If you do
2222+ # want to update the value, then make sure to first check the Home Manager
2323+ # release notes.
2424+ home.stateVersion = "24.11"; # Please read the comment before changing.
2525+2626+ # The home.packages option allows you to install Nix packages into your
2727+ # environment.
2828+ home.packages = with pkgs; [
2929+ # # Adds the 'hello' command to your environment. It prints a friendly
3030+ # # "Hello, world!" when run.
3131+ # pkgs.hello
3232+3333+ # # It is sometimes useful to fine-tune packages, for example, by applying
3434+ # # overrides. You can do that directly here, just don't forget the
3535+ # # parentheses. Maybe you want to install Nerd Fonts with a limited number of
3636+ # # fonts?
3737+ # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
3838+3939+ # # You can also create simple shell scripts directly inside your
4040+ # # configuration. For example, this adds a command 'my-hello' to your
4141+ # # environment:
4242+ # (pkgs.writeShellScriptBin "my-hello" ''
4343+ # echo "Hello, ${config.home.username}!"
4444+ # '')
4545+4646+ ## devtools ##
4747+ # https://httpie.io
4848+ httpie
4949+ # https://devenv.sh
5050+ devenv
5151+ # https://cli.github.com
5252+ gh
5353+ # bet we'll going to have a field day since Copilot is now available for free
5454+ # (this is seperate from the gh copilot extension for those asking)
5555+ # context: https://github.blog/news-insights/product-news/github-copilot-in-vscode-free/
5656+ github-copilot-cli
5757+ # markdownlint
5858+ markdownlint-cli
5959+ # https://doppler.com
6060+ doppler
6161+ direnv
6262+ shellcheck
6363+ hadolint
6464+6565+ ## programming languages
6666+ deno
6767+ nodejs_22
6868+ python313
6969+ pipx
7070+ pipenv
7171+7272+ ## language servers ##
7373+ # nix language server - https://github.com/oxalica/nil
7474+ nil
7575+ # https://github.com/alesbrelih/gitlab-ci-ls
7676+ gitlab-ci-ls
7777+ ];
7878+7979+ home.sessionPath = [
8080+ "${config.home.homeDirectory}/bin"
8181+ ];
8282+8383+ # Home Manager is pretty good at managing dotfiles. The primary way to manage
8484+ # plain files is through 'home.file'.
8585+ home.file = {
8686+ # # Building this configuration will create a copy of 'dotfiles/screenrc' in
8787+ # # the Nix store. Activating the configuration will then make '~/.screenrc' a
8888+ # # symlink to the Nix store copy.
8989+ # ".screenrc".source = dotfiles/screenrc;
9090+9191+ # # You can also set the file content immediately.
9292+ # ".gradle/gradle.properties".text = ''
9393+ # org.gradle.console=verbose
9494+ # org.gradle.daemon.idletimeout=3600000
9595+ # '';
9696+ };
9797+9898+ # Home Manager can also manage your environment variables through
9999+ # 'home.sessionVariables'. These will be explicitly sourced when using a
100100+ # shell provided by Home Manager. If you don't want to manage your shell
101101+ # through Home Manager then you have to manually source 'hm-session-vars.sh'
102102+ # located at either
103103+ #
104104+ # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
105105+ #
106106+ # or
107107+ #
108108+ # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
109109+ #
110110+ # or
111111+ #
112112+ # /etc/profiles/per-user/gildedguy/etc/profile.d/hm-session-vars.sh
113113+ #
114114+ home.sessionVariables = {
115115+ EDITOR = "nano";
116116+ NIXOS_ALLOW_UNFREE = "1"; # for impure builds
117117+ GIT_EDITOR = "code --wait";
118118+ VISUAL = "code --wait";
119119+ DOCKER_BUILDKIT = "1";
120120+ };
121121+122122+ # Let Home Manager install and manage itself.
123123+ programs.home-manager.enable = true;
124124+125125+ # let me cook with the configs, starting with git
126126+ programs.git = {
127127+ enable = true;
128128+ package = pkgs.gitAndTools.gitFull;
129129+ lfs = {
130130+ enable = true;
131131+ };
132132+ userName = "Andrei Jiroh Halili";
133133+ userEmail = "ajhalili2006@andreijiroh.dev";
134134+ aliases = {
135135+ signoff = "commit --signoff";
136136+ amend = "commit -a --amend";
137137+ remotes = "remote -v";
138138+ root = "rev-parse --show-toplevel";
139139+ unstage = "restore --staged";
140140+ stats = "status";
141141+ };
142142+ extraConfig = {
143143+ format = {
144144+ signOff = true;
145145+ };
146146+ init = {
147147+ defaultBranch = "main";
148148+ };
149149+150150+ # https://groups.google.com/g/binary-transparency/c/f-BI4o8HZW0
151151+ transfer = {
152152+ fsckobjects = true;
153153+ };
154154+ fetch = {
155155+ fsckobjects = true;
156156+ };
157157+ receive = {
158158+ fsckobjects = true;
159159+ };
160160+ push = {
161161+ autoSetupRemote = true;
162162+ };
163163+164164+165165+ };
166166+ };
167167+168168+ programs.vscode = {
169169+ enable = true;
170170+ package = pkgs.vscode;
171171+ enableExtensionUpdateCheck = true;
172172+ mutableExtensionsDir = true;
173173+ # userSettings = {
174174+ # "nix.enableLanguageServer" = true;
175175+ # "nix.serverPath" = "nil";
176176+ # "window.customTitleBarVisibility" = "auto";
177177+ # "window.titleBarStyle" = "custom";
178178+ # "window.menuBarVisibility" = "classic";
179179+ # "redhat.telemetry.enabled" = true;
180180+ # "github.copilot.editor.enableAutoCompletions" = false;
181181+ # "github.copilot.chat.followUps" = "always";
182182+ # "github.copilot.chat.terminalChatLocation" = "terminal";
183183+ # "git.confirmSync" = false;
184184+ # "microsoft-authentication.implementation" = "msal";
185185+ # "workbench.colorTheme" = "GitHub Dark Colorblind (Beta)";
186186+ # "workbench.iconTheme" = "material-icon-theme";
187187+ # "workbench.productIconTheme" = "material-product-icons";
188188+ # };
189189+ # We're importing what's generated from nix4vscode here as a workaround
190190+ # for now.
191191+ #extensions = lib.attrsets.mapAttrsToList (_: v: v) vscExts;
192192+ };
193193+}