Select the types of activity you want to include in your feed.
Personal dotfiles for Linux, mostly for Nixpkgs/NixOS-based and Termux setups. Mirrored using GitLab's push mirroring feature.
gitlab.com/andreijiroh-dev/dotfiles
···11+# Edit this configuration file to define what should be installed on
22+# your system. Help is available in the configuration.nix(5) man page
33+# and in the NixOS manual (accessible by running ‘nixos-help’).
44+55+{ pkgs, ... }:
66+77+{
88+ imports =
99+ [
1010+ ./hardware-configuration.nix
1111+1212+ # We're also importing them below just in case
1313+ ../../shared/networking.nix
1414+ ../../shared/locale.nix
1515+ ../../shared/firewall.nix
1616+ ../../shared/kde-plasma.nix
1717+ ../../shared/ssh.nix
1818+ ../../shared/vscode-extensions.nix
1919+ ];
2020+2121+ # Bootloader.
2222+ boot.loader.systemd-boot.enable = true;
2323+ boot.loader.efi.canTouchEfiVariables = true;
2424+2525+ networking.hostName = "stellapent-cier"; # Define your hostname.
2626+ #networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
2727+2828+ # Configure network proxy if necessary
2929+ # networking.proxy.default = "http://user:password@proxy:port/";
3030+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
3131+3232+ # Enable networking via networkmanager
3333+ networking.networkmanager.enable = true;
3434+3535+ # Enable the X11 windowing system.
3636+ # You can disable this if you're only using the Wayland session.
3737+ services.xserver.enable = true;
3838+3939+ # Configure keymap in X11
4040+ services.xserver.xkb = {
4141+ layout = "us";
4242+ variant = "";
4343+ };
4444+4545+ # Enable CUPS to print documents.
4646+ services.printing.enable = true;
4747+4848+ # Enable sound with pipewire.
4949+ hardware.pulseaudio.enable = false;
5050+ security.rtkit.enable = true;
5151+ services.pipewire = {
5252+ enable = true;
5353+ alsa.enable = true;
5454+ alsa.support32Bit = true;
5555+ pulse.enable = true;
5656+ # If you want to use JACK applications, uncomment this
5757+ #jack.enable = true;
5858+5959+ # use the example session manager (no others are packaged yet so this is enabled by default,
6060+ # no need to redefine it in your config for now)
6161+ #media-session.enable = true;
6262+ };
6363+6464+ # firmware configurations
6565+ #hardware.firmware = with pkgs; [
6666+ # (pkgs.fetchurl {
6767+ # url = "https://raw.githubusercontent.com/winterheart/broadcom-bt-firmware/refs/heads/master/brcm/BCM43142A0-0a5c-216d.hcd";
6868+ # sha256 = "9ac1e0fac850eec21cda47977858039ffc774d0cfffc6688093a722efc5a3ec0";
6969+ # })
7070+ #];
7171+7272+ # Enable touchpad support (enabled default in most desktopManager).
7373+ # services.xserver.libinput.enable = true;
7474+7575+ # Define a user account. Don't forget to set a password with ‘passwd’.
7676+ # Might be obvious to some since I'm technically roleplaying as
7777+ users.users.gildedguy = {
7878+ isNormalUser = true;
7979+ description = "Gildedguy (Michael Moy)";
8080+ extraGroups = [ "networkmanager" "wheel" ];
8181+ packages = with pkgs; [
8282+ kdePackages.kate
8383+ thunderbird
8484+ ];
8585+ };
8686+8787+ # home-manager specifics
8888+ home-manager.useUserPackages = true;
8989+ home-manager.useGlobalPkgs = true;
9090+ home-manager.users.gildedguy = (import ./users/gildedguy.nix);
9191+9292+ # Install firefox.
9393+ programs.firefox.enable = true;
9494+9595+ # List packages installed in system profile. To search, run:
9696+ # $ nix search wget
9797+ environment.systemPackages = with pkgs; [
9898+ # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
9999+ wget
100100+ dig
101101+ broadcom-bt-firmware
102102+ btop
103103+ htop
104104+ google-chrome
105105+ ];
106106+107107+ # Some programs need SUID wrappers, can be configured further or are
108108+ # started in user sessions.
109109+ programs.mtr.enable = true;
110110+ programs.gnupg.agent = {
111111+ enable = true;
112112+ enableSSHSupport = true;
113113+ };
114114+115115+ # This value determines the NixOS release from which the default
116116+ # settings for stateful data, like file locations and database versions
117117+ # on your system were taken. It‘s perfectly fine and recommended to leave
118118+ # this value at the release version of the first install of this system.
119119+ # Before changing this value read the documentation for this option
120120+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
121121+ system.stateVersion = "24.11"; # Did you read the comment?
122122+123123+}
···11+{ pkgs, lib, ... }:
22+33+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;
1111+{
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+ };
2020+2121+ # 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.
2323+ home.username = "gildedguy";
2424+ 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+ };
173173+174174+ programs.vscode = {
175175+ enable = true;
176176+ package = pkgs.vscode;
177177+ enableExtensionUpdateCheck = true;
178178+ mutableExtensionsDir = true;
179179+ # userSettings = {
180180+ # "nix.enableLanguageServer" = true;
181181+ # "nix.serverPath" = "nil";
182182+ # "window.customTitleBarVisibility" = "auto";
183183+ # "window.titleBarStyle" = "custom";
184184+ # "window.menuBarVisibility" = "classic";
185185+ # "redhat.telemetry.enabled" = true;
186186+ # "github.copilot.editor.enableAutoCompletions" = false;
187187+ # "github.copilot.chat.followUps" = "always";
188188+ # "github.copilot.chat.terminalChatLocation" = "terminal";
189189+ # "git.confirmSync" = false;
190190+ # "microsoft-authentication.implementation" = "msal";
191191+ # "workbench.colorTheme" = "GitHub Dark Colorblind (Beta)";
192192+ # "workbench.iconTheme" = "material-icon-theme";
193193+ # "workbench.productIconTheme" = "material-product-icons";
194194+ # };
195195+ # Note that not all extensions are available over gh:NixOS/nixpkgs repo, but
196196+ # we'll work on that soon.
197197+ extensions = with vscExts; [
198198+ pkief.material-icon-theme
199199+ pkief.material-product-icons
200200+ github.github-vscode-theme
201201+ wakatime.vscode-wakatime
202202+ doppler.doppler-vscode
203203+ eamodio.gitlens
204204+ vivaxy.vscode-conventional-commits
205205+ denoland.vscode-deno
206206+ jnoortheen.nix-ide
207207+ #redhat.vscode-yaml
208208+ unifiedjs.vscode-mdx
209209+ ];
210210+ };
211211+}
+27
.config/nixos/shared/firewall.nix
···11+{ ... }:
22+33+{
44+ # Open ports in the firewall.
55+ networking.firewall.allowedTCPPortRanges = [
66+ { from = 1714; to = 1764; }
77+ ];
88+ networking.firewall.allowedUDPPortRanges = [
99+ { from = 1714; to = 1764; }
1010+ ];
1111+ networking.firewall.allowTCPPorts = [
1212+ 22
1313+ 80
1414+ 443
1515+ 3000
1616+ 8000
1717+ ];
1818+ networking.firewall.allowUDPPorts = [
1919+ 22
2020+ 80
2121+ 443
2222+ 3000
2323+ 8000
2424+ ];
2525+ # Or disable the firewall altogether.
2626+ # networking.firewall.enable = false;
2727+}
+10
.config/nixos/shared/kde-plasma.nix
···11+{ ... }:
22+33+{
44+ # Enable the KDE Plasma Desktop Environment.
55+ services.displayManager.sddm.enable = true;
66+ services.desktopManager.plasma6.enable = true;
77+88+ # Also enable KDE Connect
99+ programs.kdeconnect.enable = true;
1010+}
···11+# This is the meta config file for nixpkgs and nix cli
22+33+{ ... }:
44+55+{
66+ # Adopted from https://fnordig.de/til/nix/home-manager-allow-unfree.html,
77+ # but we'll also enable it system-wide too.
88+ nixpkgs = {
99+ config = {
1010+ allowUnfree = true;
1111+ # https://github.com/nix-community/home-manager/issues/2942
1212+ allowUnfreePredicate = (_: true);
1313+ };
1414+ };
1515+1616+ # Enable the Flakes feature and the accompanying new nix command-line tool
1717+ nix.settings.experimental-features = [ "nix-command" "flakes" ];
1818+}
+18
.config/nixos/shared/networking.nix
···11+{ ... }:
22+33+{
44+ # Do a lot of systemd-resolved related chores
55+ networking.nameservers = [
66+ "45.90.28.0#c393f6.dns.nextdns.io"
77+ "45.90.30.0#c393f6.dns.nextdns.io"
88+ ];
99+1010+ services.resolved = {
1111+ enable = true;
1212+ dnssec = "false"; # https://superuser.com/a/1493674
1313+ domains = [ "~." "fawn-cod.ts.net" ];
1414+ # Use Cloudflare DNS resolver as fallback if things go wrong.
1515+ fallbackDns = [ "1.1.1.1#one.one.one.one" "1.0.0.1#one.one.one.one" ];
1616+ dnsovertls = "true";
1717+ };
1818+}
+15
.config/nixos/shared/ssh.nix
···11+# To use this shared NixOS configuration for OpenSSH, just import this file
22+# on your NixOS configuration.
33+44+{...}:
55+66+{
77+ programs.openssh = {
88+ enable = true;
99+ settings = {
1010+ PermitRootLogin = "prohibit-password";
1111+ };
1212+ };
1313+1414+ programs.mosh.enable = true;
1515+}
+17
.config/nixos/shared/tailscale.nix
···11+# This Nix file contains the Tailscale configuration here
22+# in NixOS, mostly on the side of the daemon and its related
33+# configurations.
44+55+{ ... }:
66+77+{
88+ services.tailscale = {
99+ enable = true;
1010+ useRoutingFeatures = true;
1111+ openFirewall = true;
1212+ disableTaildrop = false;
1313+ extraDaemonFlags = [
1414+ "--verbose 3"
1515+ ];
1616+ };
1717+}