···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+{ config, pkgs, lib, ... }:
66+77+{
88+ imports =
99+ [
1010+ ./hardware-configuration.nix
1111+ ../../shared/meta-configs.nix
1212+ ../../shared/networking.nix
1313+ ../../shared/locale.nix
1414+ ../../shared/server/tailscale.nix
1515+ ../../shared/server/ssh.nix
1616+ ../../shared/desktop/kde-plasma.nix
1717+ ../../shared/desktop/bluetooth.nix
1818+ ../../shared/desktop/firewall.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 = {
5050+ # enable = true;
5151+ # package = pkgs.pulseaudioFull;
5252+ #};
5353+ #hardware.pulseaudio.extraConfig = "
5454+ # load-module module-switch-on-connect
5555+ #";
5656+5757+ security.rtkit.enable = true;
5858+ services.pipewire = {
5959+ enable = true;
6060+ alsa.enable = true;
6161+ alsa.support32Bit = true;
6262+ pulse.enable = true;
6363+ # If you want to use JACK applications, uncomment this
6464+ #jack.enable = true;
6565+6666+ # use the example session manager (no others are packaged yet so this is enabled by default,
6767+ # no need to redefine it in your config for now)
6868+ #media-session.enable = true;
6969+ };
7070+7171+ # firmware configurations
7272+ #hardware.firmware = with pkgs; [
7373+ # (pkgs.fetchurl {
7474+ # url = "https://raw.githubusercontent.com/winterheart/broadcom-bt-firmware/refs/heads/master/brcm/BCM43142A0-0a5c-216d.hcd";
7575+ # sha256 = "9ac1e0fac850eec21cda47977858039ffc774d0cfffc6688093a722efc5a3ec0";
7676+ # })
7777+ #];
7878+7979+ # Enable touchpad support (enabled default in most desktopManager).
8080+ # services.xserver.libinput.enable = true;
8181+8282+ # Define a user account. Don't forget to set a password with ‘passwd’.
8383+ # Might be obvious to some since I'm technically roleplaying as
8484+ users.users.gildedguy = {
8585+ isNormalUser = true;
8686+ description = "Gildedguy (Michael Moy)";
8787+ extraGroups = [ "networkmanager" "wheel" ];
8888+ packages = with pkgs; [
8989+ kdePackages.kate
9090+ thunderbird
9191+ ];
9292+ };
9393+9494+ # home-manager specifics
9595+ home-manager.useUserPackages = true;
9696+ home-manager.useGlobalPkgs = true;
9797+ home-manager.users.gildedguy = (import ./users/gildedguy.nix);
9898+9999+ # Install firefox.
100100+ programs.firefox.enable = true;
101101+102102+ # List packages installed in system profile. To search, run:
103103+ # $ nix search wget
104104+ environment.systemPackages = with pkgs; [
105105+ # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
106106+ wget
107107+ dig
108108+ broadcom-bt-firmware
109109+ btop
110110+ htop
111111+ google-chrome
112112+ ];
113113+114114+ # Some programs need SUID wrappers, can be configured further or are
115115+ # started in user sessions.
116116+ programs.mtr.enable = true;
117117+ programs.gnupg.agent = {
118118+ enable = true;
119119+ enableSSHSupport = true;
120120+ };
121121+122122+ # This value determines the NixOS release from which the default
123123+ # settings for stateful data, like file locations and database versions
124124+ # on your system were taken. It‘s perfectly fine and recommended to leave
125125+ # this value at the release version of the first install of this system.
126126+ # Before changing this value read the documentation for this option
127127+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
128128+ system.stateVersion = "24.11"; # Did you read the comment?
129129+130130+}
+54
hosts/stellapent-cier/hardware-configuration.nix
···11+# Do not modify this file! It was generated by ‘nixos-generate-config’
22+# and may be overwritten by future invocations. Please make changes
33+# to /etc/nixos/configuration.nix instead.
44+{ config, lib, pkgs, modulesPath, ... }:
55+66+{
77+ imports =
88+ [ (modulesPath + "/installer/scan/not-detected.nix")
99+ ];
1010+1111+ boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "sr_mod" ];
1212+ boot.initrd.kernelModules = [ ];
1313+ boot.kernelModules = [ "kvm-intel" ];
1414+ boot.extraModulePackages = [ ];
1515+1616+ fileSystems."/" =
1717+ { device = "/dev/disk/by-uuid/e3397457-41d2-4bed-9689-27a9ff3ccb51";
1818+ fsType = "ext4";
1919+ };
2020+2121+ fileSystems."/boot" =
2222+ { device = "/dev/disk/by-uuid/EC7C-6A58";
2323+ fsType = "vfat";
2424+ options = [ "fmask=0077" "dmask=0077" ];
2525+ };
2626+2727+ fileSystems."/home" =
2828+ { device = "/dev/disk/by-uuid/22a6f5ea-79d1-4919-b165-50063fd782f5";
2929+ fsType = "ext4";
3030+ };
3131+3232+ fileSystems."/var/lib/docker" =
3333+ { device = "/dev/disk/by-uuid/299133b8-2585-42a4-b7d1-c995d4fc9e19";
3434+ fsType = "ext4";
3535+ };
3636+3737+ fileSystems."/workspaces" =
3838+ { device = "/dev/disk/by-uuid/a8d0810e-4bbf-479d-baea-28b1441ad68f";
3939+ fsType = "ext4";
4040+ };
4141+4242+ swapDevices = [ ];
4343+4444+ # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
4545+ # (the default) this is the recommended approach. When using systemd-networkd it's
4646+ # still possible to use this option, but it's recommended to use it in conjunction
4747+ # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
4848+ networking.useDHCP = lib.mkDefault true;
4949+ # networking.interfaces.enp2s0.useDHCP = lib.mkDefault true;
5050+ # networking.interfaces.wlp0s20u3.useDHCP = lib.mkDefault true;
5151+5252+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
5353+ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
5454+}
+178
hosts/stellapent-cier/users/gildedguy.nix
···11+{ config, 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+ programs.vscode = {
173173+ enable = true;
174174+ package = pkgs.vscode;
175175+ enableExtensionUpdateCheck = true;
176176+ mutableExtensionsDir = true;
177177+ };
178178+}