···11+{ config, pkgs, ... }:
22+33+{
44+ # Home Manager needs a bit of information about you and the paths it should
55+ # manage.
66+ home.username = "joshua";
77+ home.homeDirectory = "/home/joshua";
88+99+ # This value determines the Home Manager release that your configuration is
1010+ # compatible with. This helps avoid breakage when a new Home Manager release
1111+ # introduces backwards incompatible changes.
1212+ #
1313+ # You should not change this value, even if you update Home Manager. If you do
1414+ # want to update the value, then make sure to first check the Home Manager
1515+ # release notes.
1616+ home.stateVersion = "25.05"; # Please read the comment before changing.
1717+1818+ # The home.packages option allows you to install Nix packages into your
1919+ # environment.
2020+ home.packages = with pkgs; [
2121+ # # Adds the 'hello' command to your environment. It prints a friendly
2222+ # # "Hello, world!" when run.
2323+ rsync
2424+ keepassxc
2525+ syncthing
2626+ terminus_font
2727+ jujutsu
2828+ ripgrep
2929+ goose-cli
3030+ kubectl
3131+ k3d
3232+ tilt
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+4747+ # Home Manager is pretty good at managing dotfiles. The primary way to manage
4848+ # plain files is through 'home.file'.
4949+ home.file = {
5050+ # # Building this configuration will create a copy of 'dotfiles/screenrc' in
5151+ # # the Nix store. Activating the configuration will then make '~/.screenrc' a
5252+ # # symlink to the Nix store copy.
5353+ # ".screenrc".source = dotfiles/screenrc;
5454+5555+ # # You can also set the file content immediately.
5656+ # ".gradle/gradle.properties".text = ''
5757+ # org.gradle.console=verbose
5858+ # org.gradle.daemon.idletimeout=3600000
5959+ # '';
6060+ };
6161+6262+ # Home Manager can also manage your environment variables through
6363+ # 'home.sessionVariables'. These will be explicitly sourced when using a
6464+ # shell provided by Home Manager. If you don't want to manage your shell
6565+ # through Home Manager then you have to manually source 'hm-session-vars.sh'
6666+ # located at either
6767+ #
6868+ # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
6969+ #
7070+ # or
7171+ #
7272+ # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
7373+ #
7474+ # or
7575+ #
7676+ # /etc/profiles/per-user/joshua/etc/profile.d/hm-session-vars.sh
7777+ #
7878+ home.sessionVariables = {
7979+8080+ };
8181+8282+ # Let Home Manager install and manage itself.
8383+ programs.home-manager.enable = true;
8484+ programs.zsh.enable = true;
8585+ programs.emacs.enable = true;
8686+ programs.atuin ={
8787+ enable = true;
8888+ flags = [ "--disable-up-arrow" ];
8989+ };
9090+ programs.direnv = {
9191+ enable = true;
9292+ enableZshIntegration = true;
9393+ nix-direnv.enable = true;
9494+ };
9595+ services.emacs.enable = true;
9696+ services.emacs.defaultEditor = true;
9797+ services.emacs.startWithUserSession = "graphical";
9898+}
9999+
-124
prospero/configuration.nix
···55{ config, lib, pkgs, ... }:
6677{
88- nixpkgs.overlays = [ (final: prev: {
99- inherit (prev.lixPackageSets.stable)
1010- nixpkgs-review
1111- nix-eval-jobs
1212- nix-fast-build
1313- colmena;
1414- }) ];
1515- nix.package = pkgs.lixPackageSets.stable.lix;
168 nix.settings.experimental-features = ["nix-command" "flakes"];
179 imports =
1810 [ # Include the results of the hardware scan.
···40324133 # Enable networking
4234 networking.networkmanager.enable = true;
4343-4444- virtualisation = {
4545- containers.enable = true;
4646- docker = {
4747- enable = true;
4848- };
4949- };
5050-5151- systemd.services."user@".serviceConfig.Delegate="cpu cpuset io memory pids";
5252-5353- systemd.packages = [(
5454- pkgs.writeTextFile {
5555- name = "delegate.conf";
5656- text = ''
5757- [Service]
5858- Delegate=yes
5959- '';
6060- destination = "/etc/systemd/system/user@.service.d/delegate.conf";
6161- }
6262- )];
6363-6464- # Set your time zone.
6565- time.timeZone = "America/New_York";
6666-6767- # Select internationalisation properties.
6868- i18n.defaultLocale = "en_US.UTF-8";
6969-7070- i18n.extraLocaleSettings = {
7171- LC_ADDRESS = "en_US.UTF-8";
7272- LC_IDENTIFICATION = "en_US.UTF-8";
7373- LC_MEASUREMENT = "en_US.UTF-8";
7474- LC_MONETARY = "en_US.UTF-8";
7575- LC_NAME = "en_US.UTF-8";
7676- LC_NUMERIC = "en_US.UTF-8";
7777- LC_PAPER = "en_US.UTF-8";
7878- LC_TELEPHONE = "en_US.UTF-8";
7979- LC_TIME = "en_US.UTF-8";
8080- };
8181-8282- # Enable the X11 windowing system.
8383- # You can disable this if you're only using the Wayland session.
8484- services.xserver.enable = true;
8585-8686- # Enable the KDE Plasma Desktop Environment.
8787- services.displayManager.sddm.enable = true;
8888- services.desktopManager.plasma6.enable = true;
8989-9090- # Configure keymap in X11
9191- services.xserver.xkb = {
9292- layout = "us";
9393- variant = "";
9494- };
9595-9696- # Enable CUPS to print documents.
9797- services.printing.enable = true;
9898-9999- # Enable sound with pipewire.
100100- services.pulseaudio.enable = false;
101101- security.rtkit.enable = true;
102102- services.pipewire = {
103103- enable = true;
104104- alsa.enable = true;
105105- alsa.support32Bit = true;
106106- pulse.enable = true;
107107- # If you want to use JACK applications, uncomment this
108108- #jack.enable = true;
109109-110110- # use the example session manager (no others are packaged yet so this is enabled by default,
111111- # no need to redefine it in your config for now)
112112- #media-session.enable = true;
113113- };
1143511536 # Enable touchpad support (enabled default in most desktopManager).
11637 # services.xserver.libinput.enable = true;
1173811839 # Define a user account. Don't forget to set a password with ‘passwd’.
119119- users.users.joshua = {
120120- subUidRanges = [ { startUid = 100000; count = 65536; } ];
121121- subGidRanges = [ { startGid = 100000; count = 65536; } ];
122122- isNormalUser = true;
123123- description = "Joshua Barrett";
124124- shell = pkgs.zsh;
125125- extraGroups = [ "networkmanager" "wheel" "docker" ];
126126- packages = with pkgs; [
127127-128128- ];
129129- };
130130-131131- # Install firefox.
132132- programs.firefox.enable = true;
133133- programs.zsh.enable = true;
134134- programs.foot.enable = true;
135135- # Install steam
136136- programs.steam = {
137137- enable = true;
138138- remotePlay.openFirewall = true;
139139- localNetworkGameTransfers.openFirewall = true;
140140- };
141141-142142- # Allow unfree packages
143143- nixpkgs.config.allowUnfree = true;
1444014541 # List packages installed in system profile. To search, run:
14642 # $ nix search wget
···16258 # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
16359 # wget
16460 ];
165165-166166- # Some programs need SUID wrappers, can be configured further or are
167167- # started in user sessions.
168168- programs.git.enable = true;
169169- programs.ssh.startAgent = true;
1706117162 # programs.mtr.enable = true;
17263 # programs.gnupg.agent = {
···17869 # Enable the OpenSSH daemon.
17970 # services.openssh.enable = true;
18071 # syncthing gets run as a user service, but we need the ports open up here
181181- services.syncthing.openDefaultPorts = true;
18272 # Open ports in the firewall.
18373 # networking.firewall.allowedTCPPorts = [ ... ];
18474 # networking.firewall.allowedUDPPorts = [ ... ];
18575 # Or disable the firewall altogether.
186186- networking.nftables.enable = true;
187187- networking.firewall = {
188188- enable = true;
189189- trustedInterfaces = [ "tailscale0" ];
190190- allowedUDPPorts = [ config.services.tailscale.port ];
191191- };
192192-193193- systemd.services.tailscaled.serviceConfig.Environment = [
194194- "TS_DEBUG_FIREWALL_MODE=nftables"
195195- ];
196196- services.tailscale.enable = true;
197197- services.resolved.enable = true;
198198- systemd.network.wait-online.enable = false;
199199- boot.initrd.systemd.network.wait-online.enable = false;
2007620177 # This value determines the NixOS release from which the default
20278 # settings for stateful data, like file locations and database versions
+116
uruk/configuration.nix
···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, on
33+# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
44+55+{ config, lib, pkgs, ... }:
66+77+{
88+ imports =
99+ [ # Include the results of the hardware scan.
1010+ ./hardware-configuration.nix
1111+ ];
1212+1313+ # Use the systemd-boot EFI boot loader.
1414+ boot.loader.systemd-boot.enable = true;
1515+ boot.loader.efi.canTouchEfiVariables = true;
1616+ networking.hostId = "5398fbbf";
1717+ networking.hostName = "uruk"; # Define your hostname.
1818+1919+ # Configure network connections interactively with nmcli or nmtui.
2020+2121+ # Set your time zone.
2222+ # time.timeZone = "Europe/Amsterdam";
2323+2424+ # Configure network proxy if necessary
2525+ # networking.proxy.default = "http://user:password@proxy:port/";
2626+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
2727+2828+ # Select internationalisation properties.
2929+ # i18n.defaultLocale = "en_US.UTF-8";
3030+ #console = {
3131+ # font = "Lat2-Terminus16";
3232+ # keyMap = "us";
3333+ # useXkbConfig = true; # use xkb.options in tty.
3434+ #};
3535+3636+ # Configure keymap in X11
3737+ # services.xserver.xkb.layout = "us";
3838+ # services.xserver.xkb.options = "eurosign:e,caps:escape";
3939+4040+ # Enable CUPS to print documents.
4141+ # services.printing.enable = true;
4242+4343+ # Enable sound.
4444+ # services.pulseaudio.enable = true;
4545+ # OR
4646+ # services.pipewire = {
4747+ # enable = true;
4848+ # pulse.enable = true;
4949+ # };
5050+5151+ # Enable touchpad support (enabled default in most desktopManager).
5252+ # services.libinput.enable = true;
5353+5454+ # Define a user account. Don't forget to set a password with ‘passwd’.
5555+ # users.users.alice = {
5656+ # isNormalUser = true;
5757+ # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
5858+ # packages = with pkgs; [
5959+ # tree
6060+ # ];
6161+ # };
6262+6363+ # programs.firefox.enable = true;
6464+6565+ # List packages installed in system profile.
6666+ # You can use https://search.nixos.org/ to find more packages (and options).
6767+ # environment.systemPackages = with pkgs; [
6868+ # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
6969+ # wget
7070+ # ];
7171+7272+ # Some programs need SUID wrappers, can be configured further or are
7373+ # started in user sessions.
7474+ # programs.mtr.enable = true;
7575+ # programs.gnupg.agent = {
7676+ # enable = true;
7777+ # enableSSHSupport = true;
7878+ # };
7979+8080+ # List services that you want to enable:
8181+8282+ # Enable the OpenSSH daemon.
8383+ # services.openssh.enable = true;
8484+8585+ # Open ports in the firewall.
8686+ # networking.firewall.allowedTCPPorts = [ ... ];
8787+ # networking.firewall.allowedUDPPorts = [ ... ];
8888+ # Or disable the firewall altogether.
8989+ # networking.firewall.enable = false;
9090+9191+ # Copy the NixOS configuration file and link it from the resulting system
9292+ # (/run/current-system/configuration.nix). This is useful in case you
9393+ # accidentally delete configuration.nix.
9494+ # system.copySystemConfiguration = true;
9595+9696+ # This option defines the first version of NixOS you have installed on this particular machine,
9797+ # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
9898+ #
9999+ # Most users should NEVER change this value after the initial install, for any reason,
100100+ # even if you've upgraded your system to a new NixOS release.
101101+ #
102102+ # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
103103+ # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
104104+ # to actually do that.
105105+ #
106106+ # This value being lower than the current NixOS release does NOT mean your system is
107107+ # out of date, out of support, or vulnerable.
108108+ #
109109+ # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
110110+ # and migrated your data accordingly.
111111+ #
112112+ # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
113113+ system.stateVersion = "25.11"; # Did you read the comment?
114114+115115+}
116116+