From c1f435441f9aaa65e5e6796f817dfab3ca381af4 Mon Sep 17 00:00:00 2001 From: Chris Toph Date: Mon, 2 Sep 2024 11:03:10 -0400 Subject: [PATCH] Initial commit with boiler plate. Not yet fully working --- .config/fish/fish_variables | 190 +++++++++++++++++++++++++++++++ flake.lock | 47 ++++++++ flake.nix | 31 +++++ home-manager/fish.nix | 13 +++ home-manager/home.nix | 33 ++++++ nixos/configuration.nix | 133 ++++++++++++++++++++++ nixos/hardware-configuration.nix | 13 +++ 7 files changed, 460 insertions(+) create mode 100644 .config/fish/fish_variables create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 home-manager/fish.nix create mode 100644 home-manager/home.nix create mode 100644 nixos/configuration.nix create mode 100644 nixos/hardware-configuration.nix diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables new file mode 100644 index 0000000..425fc65 --- /dev/null +++ b/.config/fish/fish_variables @@ -0,0 +1,190 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3400 +SETUVAR _tide_left_items:pwd\x1egit\x1enewline\x1echaracter +SETUVAR _tide_prompt_92037:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x40PWD\x40\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x20\x1e\x1b\x5b38\x3b5\x3b76m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b5\x3b180mtoph\x40nix\x1b\x5b38\x3b5\x3b246m\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b5\x3b66m11\x3a43\x3a49\x20PM\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm +SETUVAR _tide_right_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1enix_shell\x1etime +SETUVAR fish_color_autosuggestion:brblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:blue +SETUVAR fish_color_comment:red +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:green +SETUVAR fish_color_error:brred +SETUVAR fish_color_escape:brcyan +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:brcyan +SETUVAR fish_color_param:cyan +SETUVAR fish_color_quote:yellow +SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold +SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:yellow\x1e\x2di +SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SETUVAR fish_pager_color_selected_background:\x2dr +SETUVAR tide_aws_bg_color:normal +SETUVAR tide_aws_color:FF9900 +SETUVAR tide_aws_icon:\uf270 +SETUVAR tide_character_color:5FD700 +SETUVAR tide_character_color_failure:FF0000 +SETUVAR tide_character_icon:\u276f +SETUVAR tide_character_vi_icon_default:\u276e +SETUVAR tide_character_vi_icon_replace:\u25b6 +SETUVAR tide_character_vi_icon_visual:V +SETUVAR tide_cmd_duration_bg_color:normal +SETUVAR tide_cmd_duration_color:87875F +SETUVAR tide_cmd_duration_decimals:0 +SETUVAR tide_cmd_duration_icon:\x1d +SETUVAR tide_cmd_duration_threshold:3000 +SETUVAR tide_context_always_display:false +SETUVAR tide_context_bg_color:normal +SETUVAR tide_context_color_default:D7AF87 +SETUVAR tide_context_color_root:D7AF00 +SETUVAR tide_context_color_ssh:D7AF87 +SETUVAR tide_context_hostname_parts:1 +SETUVAR tide_crystal_bg_color:normal +SETUVAR tide_crystal_color:FFFFFF +SETUVAR tide_crystal_icon:\ue62f +SETUVAR tide_direnv_bg_color:normal +SETUVAR tide_direnv_bg_color_denied:normal +SETUVAR tide_direnv_color:D7AF00 +SETUVAR tide_direnv_color_denied:FF0000 +SETUVAR tide_direnv_icon:\u25bc +SETUVAR tide_distrobox_bg_color:normal +SETUVAR tide_distrobox_color:FF00FF +SETUVAR tide_distrobox_icon:\U000f01a7 +SETUVAR tide_docker_bg_color:normal +SETUVAR tide_docker_color:2496ED +SETUVAR tide_docker_default_contexts:default\x1ecolima +SETUVAR tide_docker_icon:\uf308 +SETUVAR tide_elixir_bg_color:normal +SETUVAR tide_elixir_color:4E2A8E +SETUVAR tide_elixir_icon:\ue62d +SETUVAR tide_gcloud_bg_color:normal +SETUVAR tide_gcloud_color:4285F4 +SETUVAR tide_gcloud_icon:\U000f02ad +SETUVAR tide_git_bg_color:normal +SETUVAR tide_git_bg_color_unstable:normal +SETUVAR tide_git_bg_color_urgent:normal +SETUVAR tide_git_color_branch:5FD700 +SETUVAR tide_git_color_conflicted:FF0000 +SETUVAR tide_git_color_dirty:D7AF00 +SETUVAR tide_git_color_operation:FF0000 +SETUVAR tide_git_color_staged:D7AF00 +SETUVAR tide_git_color_stash:5FD700 +SETUVAR tide_git_color_untracked:00AFFF +SETUVAR tide_git_color_upstream:5FD700 +SETUVAR tide_git_icon:\x1d +SETUVAR tide_git_truncation_length:24 +SETUVAR tide_git_truncation_strategy:\x1d +SETUVAR tide_go_bg_color:normal +SETUVAR tide_go_color:00ACD7 +SETUVAR tide_go_icon:\ue627 +SETUVAR tide_java_bg_color:normal +SETUVAR tide_java_color:ED8B00 +SETUVAR tide_java_icon:\ue256 +SETUVAR tide_jobs_bg_color:normal +SETUVAR tide_jobs_color:5FAF00 +SETUVAR tide_jobs_icon:\uf013 +SETUVAR tide_jobs_number_threshold:1000 +SETUVAR tide_kubectl_bg_color:normal +SETUVAR tide_kubectl_color:326CE5 +SETUVAR tide_kubectl_icon:\U000f10fe +SETUVAR tide_left_prompt_frame_enabled:false +SETUVAR tide_left_prompt_items:pwd\x1egit\x1enewline\x1echaracter +SETUVAR tide_left_prompt_prefix: +SETUVAR tide_left_prompt_separator_diff_color:\x20 +SETUVAR tide_left_prompt_separator_same_color:\x20 +SETUVAR tide_left_prompt_suffix:\x20 +SETUVAR tide_nix_shell_bg_color:normal +SETUVAR tide_nix_shell_color:7EBAE4 +SETUVAR tide_nix_shell_icon:\uf313 +SETUVAR tide_node_bg_color:normal +SETUVAR tide_node_color:44883E +SETUVAR tide_node_icon:\ue24f +SETUVAR tide_os_bg_color:normal +SETUVAR tide_os_color:normal +SETUVAR tide_os_icon:\uf313 +SETUVAR tide_php_bg_color:normal +SETUVAR tide_php_color:617CBE +SETUVAR tide_php_icon:\ue608 +SETUVAR tide_private_mode_bg_color:normal +SETUVAR tide_private_mode_color:FFFFFF +SETUVAR tide_private_mode_icon:\U000f05f9 +SETUVAR tide_prompt_add_newline_before:false +SETUVAR tide_prompt_color_frame_and_connection:585858 +SETUVAR tide_prompt_color_separator_same_color:949494 +SETUVAR tide_prompt_icon_connection:\u00b7 +SETUVAR tide_prompt_min_cols:34 +SETUVAR tide_prompt_pad_items:false +SETUVAR tide_prompt_transient_enabled:true +SETUVAR tide_pulumi_bg_color:normal +SETUVAR tide_pulumi_color:F7BF2A +SETUVAR tide_pulumi_icon:\uf1b2 +SETUVAR tide_pwd_bg_color:normal +SETUVAR tide_pwd_color_anchors:00AFFF +SETUVAR tide_pwd_color_dirs:0087AF +SETUVAR tide_pwd_color_truncated_dirs:8787AF +SETUVAR tide_pwd_icon:\x1d +SETUVAR tide_pwd_icon_home:\x1d +SETUVAR tide_pwd_icon_unwritable:\uf023 +SETUVAR tide_pwd_markers:\x2ebzr\x1e\x2ecitc\x1e\x2egit\x1e\x2ehg\x1e\x2enode\x2dversion\x1e\x2epython\x2dversion\x1e\x2eruby\x2dversion\x1e\x2eshorten_folder_marker\x1e\x2esvn\x1e\x2eterraform\x1eCargo\x2etoml\x1ecomposer\x2ejson\x1eCVS\x1ego\x2emod\x1epackage\x2ejson\x1ebuild\x2ezig +SETUVAR tide_python_bg_color:normal +SETUVAR tide_python_color:00AFAF +SETUVAR tide_python_icon:\U000f0320 +SETUVAR tide_right_prompt_frame_enabled:false +SETUVAR tide_right_prompt_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1edirenv\x1enode\x1epython\x1erustc\x1ejava\x1ephp\x1epulumi\x1eruby\x1ego\x1egcloud\x1ekubectl\x1edistrobox\x1etoolbox\x1eterraform\x1eaws\x1enix_shell\x1ecrystal\x1eelixir\x1ezig\x1etime +SETUVAR tide_right_prompt_prefix:\x20 +SETUVAR tide_right_prompt_separator_diff_color:\x20 +SETUVAR tide_right_prompt_separator_same_color:\x20 +SETUVAR tide_right_prompt_suffix: +SETUVAR tide_ruby_bg_color:normal +SETUVAR tide_ruby_color:B31209 +SETUVAR tide_ruby_icon:\ue23e +SETUVAR tide_rustc_bg_color:normal +SETUVAR tide_rustc_color:F74C00 +SETUVAR tide_rustc_icon:\ue7a8 +SETUVAR tide_shlvl_bg_color:normal +SETUVAR tide_shlvl_color:d78700 +SETUVAR tide_shlvl_icon:\uf120 +SETUVAR tide_shlvl_threshold:1 +SETUVAR tide_status_bg_color:normal +SETUVAR tide_status_bg_color_failure:normal +SETUVAR tide_status_color:5FAF00 +SETUVAR tide_status_color_failure:D70000 +SETUVAR tide_status_icon:\u2714 +SETUVAR tide_status_icon_failure:\u2718 +SETUVAR tide_terraform_bg_color:normal +SETUVAR tide_terraform_color:844FBA +SETUVAR tide_terraform_icon:\U000f1062 +SETUVAR tide_time_bg_color:normal +SETUVAR tide_time_color:5F8787 +SETUVAR tide_time_format:\x25r +SETUVAR tide_toolbox_bg_color:normal +SETUVAR tide_toolbox_color:613583 +SETUVAR tide_toolbox_icon:\ue24f +SETUVAR tide_vi_mode_bg_color_default:normal +SETUVAR tide_vi_mode_bg_color_insert:normal +SETUVAR tide_vi_mode_bg_color_replace:normal +SETUVAR tide_vi_mode_bg_color_visual:normal +SETUVAR tide_vi_mode_color_default:949494 +SETUVAR tide_vi_mode_color_insert:87AFAF +SETUVAR tide_vi_mode_color_replace:87AF87 +SETUVAR tide_vi_mode_color_visual:FF8700 +SETUVAR tide_vi_mode_icon_default:D +SETUVAR tide_vi_mode_icon_insert:I +SETUVAR tide_vi_mode_icon_replace:R +SETUVAR tide_vi_mode_icon_visual:V +SETUVAR tide_zig_bg_color:normal +SETUVAR tide_zig_color:F7A41D +SETUVAR tide_zig_icon:\ue6a9 diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..06d24cf --- /dev/null +++ b/flake.lock @@ -0,0 +1,47 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1724435763, + "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1724224976, + "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a1ac3d0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,31 @@ +{ + description = "Unstable Flake"; + + inputs = { + nixpkgs.url = "nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, home-manager, ... }: + let + system = "x86_64-linux"; + lib = nixpkgs.lib; + pkgs = nixpkgs.legacyPackages.${system}; + in { + nixosConfigurations = { + nix = lib.nixosSystem { + inherit system; + modules = [ ./nixos/configuration.nix ]; + }; + }; + homeConfigurations = { + toph = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ ./home-manager/home.nix ]; + }; + }; + }; +} diff --git a/home-manager/fish.nix b/home-manager/fish.nix new file mode 100644 index 0000000..be87b70 --- /dev/null +++ b/home-manager/fish.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: +# progams.fish = +{ + enable = true; + interactiveShellInit = '' + set fish_greeting # Disable greeting + ''; + plugins = [ + # Enable a plugin (here grc for colorized command output) from nixpkgs + { name = "grc"; src = pkgs.fishPlugins.grc.src; } + { name = "tide"; src = pkgs.fishPlugins.tide.src; } + ]; +} diff --git a/home-manager/home.nix b/home-manager/home.nix new file mode 100644 index 0000000..fab991b --- /dev/null +++ b/home-manager/home.nix @@ -0,0 +1,33 @@ +{ pkgs, ... }: + +{ + home.username = "toph"; + home.homeDirectory = "/home/toph"; + home.stateVersion = "24.05"; + + # Packages + home.packages = with pkgs; [ + fish + fishPlugins.grc + fishPlugins.tide + grc + ]; + + home.file = { + ".config/fish" = { + recursive = true; + source = ../.config/fish; + }; + }; + + home.sessionVariables = { + EDITOR = "micro"; + VISUAL = "micro"; + XDG_CONFIG_HOME = "$HOME/.config"; + }; + + # Programs and Services + programs.fish = import ./fish.nix { inherit pkgs; }; + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; +} diff --git a/nixos/configuration.nix b/nixos/configuration.nix new file mode 100644 index 0000000..fae32b8 --- /dev/null +++ b/nixos/configuration.nix @@ -0,0 +1,133 @@ +{ modulesPath, config, pkgs, ... }: +let + hostname = "nix"; + user = "toph"; + password = "[REDACTED]"; + timeZone = "America/New_York"; + defaultLocale = "en_US.UTF-8"; +in { + imports = + [ + # Include the default lxc/lxd configuration. + "${modulesPath}/virtualisation/lxc-container.nix" + # Include the container-specific autogenerated configuration. + #./lxd.nix - this has to be commented out from the system tarball + + # Import hardware configuration. + ./hardware-configuration.nix + ]; + + # NETWORKING + networking = { + dhcpcd.enable = false; + hostName = hostname; + networkmanager.enable = true; + useDHCP = false; + useHostResolvConf = false; + }; + + systemd.network = { + enable = true; + networks."50-eth0" = { + matchConfig.Name = "eth0"; + networkConfig = { + DHCP = "ipv4"; + IPv6AcceptRA = true; + }; + linkConfig.RequiredForOnline = "routable"; + }; + }; + + # LOCALE + time.timeZone = timeZone; + i18n.defaultLocale = defaultLocale; + + # USERS + users = { + mutableUsers = false; + users."${user}" = { + isNormalUser = true; + password = password; + extraGroups = [ "wheel" ]; + shell = pkgs.fish; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIClZstYoT64zHnGfE7LMYNiQPN5/gmCt382lC+Ji8lrH PVE" + ]; + }; + }; + + # Enable passwordless sudo. + security.sudo.extraRules= [ + { users = [ user ]; + commands = [ + { command = "ALL" ; + options= [ "NOPASSWD" ]; + } + ]; + } + ]; + + # SYSTEM PACKAGES + environment.systemPackages = with pkgs; [ + git + micro + openbox + openssh + ranger + sshfs + wget + x2goserver + ]; + + # PROGRAMS & SERVICES + programs.ssh.startAgent = true; + + # Shells + environment.shells = with pkgs; [ bash fish ]; + programs.fish.enable = true; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # OpenSSH service configuration. + services.openssh = { + enable = true; + settings = { + AllowUsers = null; # everyone + PasswordAuthentication = false; + KbdInteractiveAuthentication = false; + PermitRootLogin = "no"; + }; + }; + + # Enable sound. + # hardware.pulseaudio.enable = true; + # OR + # services.pipewire = { + # enable = true; + # pulse.enable = true; + # }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.libinput.enable = true; + + # LXC specific configuration + # Supress systemd units that don't work because of LXC. + # https://blog.xirion.net/posts/nixos-proxmox-lxc/#configurationnix-tweak + systemd.suppressedSystemUnits = [ + "dev-mqueue.mount" + "sys-kernel-debug.mount" + "sys-fs-fuse-connections.mount" + ]; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This value determines the NixOS release with which your system is to be + system.stateVersion = "24.11"; + + # Enable Flakes + nix.settings.experimental-features = [ "nix-command" "flakes" ]; +} diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix new file mode 100644 index 0000000..fe5f906 --- /dev/null +++ b/nixos/hardware-configuration.nix @@ -0,0 +1,13 @@ +{ + # Treats the system as a container. + boot.isContainer = true; + + # TODO: SSHFS + # fileSystems."/" = { + # device = "/dev/sda1"; + # fsType = "ext4"; + # }; + + # Set your system kind (needed for flakes) + nixpkgs.hostPlatform = "x86_64-linux"; +}