diff --git a/.DS_Store b/.DS_Store index 3dc951b..97ec451 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..1fa1c5f --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Nix Flake Config +This repo contains personal nix flake config for macbook / wsl with home-manager. + +# Getting started +If you want to use my config on macbook, make sure you're using nix-determinate. It's the best for MacOS. + +Clone this repo to the folder of your liking, \ No newline at end of file diff --git a/flake.lock b/flake.lock index add283b..bc3cf6c 100755 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1759853171, - "narHash": "sha256-uqbhyXtqMbYIiMqVqUhNdSuh9AEEkiasoK3mIPIVRhk=", + "lastModified": 1760130406, + "narHash": "sha256-GKMwBaFRw/C1p1VtjDz4DyhyzjKUWyi1K50bh8lgA2E=", "owner": "nix-community", "repo": "home-manager", - "rev": "1a09eb84fa9e33748432a5253102d01251f72d6d", + "rev": "d305eece827a3fe317a2d70138f53feccaf890a1", "type": "github" }, "original": { @@ -72,11 +72,11 @@ "homebrew-cask": { "flake": false, "locked": { - "lastModified": 1759948268, - "narHash": "sha256-PKfR49kBk6QWICMiiAZ1gTA6ns2AgJ4PR54POhApPEQ=", + "lastModified": 1760211302, + "narHash": "sha256-HVl2Z625D3Y7Bh9fPbj0oFt1vGjVWt7ZCaoV1n08ojc=", "owner": "homebrew", "repo": "homebrew-cask", - "rev": "5fd3508b3552a5c0c28fb4a625b94c6e16253f45", + "rev": "f87e2b258ef5fbe8900380227a7215d54de104fd", "type": "github" }, "original": { @@ -88,11 +88,11 @@ "homebrew-core": { "flake": false, "locked": { - "lastModified": 1759949937, - "narHash": "sha256-XWl8nOFNrjJlYE7MjI1kI3u4X58cV+4JZ8KJr32E3RM=", + "lastModified": 1760212566, + "narHash": "sha256-AqJpqsm1+WXonanloEoivHhb9WqvFvO38l2Y3Ze0E1Q=", "owner": "homebrew", "repo": "homebrew-core", - "rev": "b6adad21707caea42597e617f676d19a83f05bb9", + "rev": "49d48a960dc89c6282a903a8776c946d5c6be362", "type": "github" }, "original": { @@ -164,11 +164,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1759831965, - "narHash": "sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH+47XEBo=", + "lastModified": 1760038930, + "narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c9b6fb798541223bbb396d287d16f43520250518", + "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 27a7871..e482c3e 100755 --- a/flake.nix +++ b/flake.nix @@ -38,7 +38,7 @@ darwinConfigurations."Dens-MacBook" = nix-darwin.lib.darwinSystem { system = "aarch64-darwin"; modules = [ - ./mbp/configuration.nix + ./hosts/mbp/configuration.nix sops-nix.darwinModules.sops nix-homebrew.darwinModules.nix-homebrew { @@ -58,7 +58,7 @@ home-manager.darwinModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.duumxh = import ./mbp/home.nix; + home-manager.users.duumxh = import ./hosts/mbp/home.nix; } ]; }; diff --git a/mbp/configuration.nix b/hosts/mbp/configuration.nix similarity index 92% rename from mbp/configuration.nix rename to hosts/mbp/configuration.nix index d15a45c..a8b3d0c 100755 --- a/mbp/configuration.nix +++ b/hosts/mbp/configuration.nix @@ -1,9 +1,12 @@ { config, lib, pkgs, ... }: { - + #Disable nix managment, since we use nix-determinate nix.enable = false; - + + imports = [ + ../../modules/homebrew.nix + ]; homebrew = { enable = true; @@ -67,5 +70,4 @@ }; nixpkgs.hostPlatform = "aarch64-darwin"; - nixpkgs.config.allowUnfree = true; } diff --git a/hosts/mbp/home.nix b/hosts/mbp/home.nix new file mode 100755 index 0000000..eeea22b --- /dev/null +++ b/hosts/mbp/home.nix @@ -0,0 +1,22 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ../../modules/common.nix + ../../modules/programs/bat.nix + ../../modules/programs/eza.nix + ../../modules/programs/fzf.nix + ../../modules/programs/git.nix + ../../modules/programs/k9s.nix + ../../modules/programs/micro.nix + ../../modules/programs/ssh.nix + ../../modules/programs/zoxide.nix + ../../modules/programs/zsh.nix + ]; + + programs.zsh = { + localVariables = { + SSH_AUTH_SOCK = "/Users/duumxh/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh"; + }; + }; +} diff --git a/wsl/configuration.nix b/hosts/wsl/configuration.nix similarity index 100% rename from wsl/configuration.nix rename to hosts/wsl/configuration.nix diff --git a/hosts/wsl/home.nix b/hosts/wsl/home.nix new file mode 100755 index 0000000..afef99f --- /dev/null +++ b/hosts/wsl/home.nix @@ -0,0 +1,21 @@ +{ + config, + pkgs, + lib, + ... +}: + +{ + imports = [ + ../../modules/common.nix + ../../modules/programs/bat.nix + ../../modules/programs/eza.nix + ../../modules/programs/fzf.nix + ../../modules/programs/git.nix + ../../modules/programs/k9s.nix + ../../modules/programs/micro.nix + ../../modules/programs/ssh.nix + ../../modules/programs/zoxide.nix + ../../modules/programs/zsh.nix + ]; +} diff --git a/mbp/home.nix b/mbp/home.nix deleted file mode 100755 index a2ee3c5..0000000 --- a/mbp/home.nix +++ /dev/null @@ -1,206 +0,0 @@ -{ config, pkgs, lib, ... }: - -{ - - home = { - packages = with pkgs; [ - rclone - talosctl - bat - teleport - ansible - kubectl - opentofu - nerd-fonts.jetbrains-mono - age - sops - deploy-rs - kubernetes-helm - kubectx - fzf-preview - zsh-fzf-tab - zsh-forgit - zsh-fzf-history-search - ]; - #sessionVariables = { - # SOPS_AGE_KEY_FILE = "/Users/duumxh/.config/sops/age/keys.txt"; - #}; - stateVersion = "25.11"; - }; - - programs = { - - ssh = { - matchBlocks."*" = { identityAgent = "/Users/duumxh/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh"; }; - enableDefaultConfig = false; - enable = true; - }; - - git = { - enable = true; - userName = "Den Afanasyev"; - userEmail = "ceo@furry.industries"; - }; - - zsh = { - enable = true; - enableCompletion = true; - syntaxHighlighting.enable = true; - - prezto = { - prompt = { - theme = "powerlevel10k"; - }; - enable = true; - }; - - autosuggestion = { - #highlight = "fg=#ff00ff,bg=cyan,bold,underline"; - #strategy = [ "completion" "history" ]; - enable = true; - }; - - plugins = [ - { - name = "fzf-tab"; - src = "${pkgs.zsh-fzf-tab}/share/fzf-tab"; - } - ]; - - history = { - append = true; - expireDuplicatesFirst = true; - }; - initContent = lib.mkOrder 500 '' - source ~/.p10k.zsh - export PURE_GIT_PULL=0 - export SSH_AUTH_SOCK=/Users/duumxh/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh - export TELEPORT_ADD_KEYS_TO_AGENT=no - export K9S_SKIN="transparent" - echo "Hey there raccoon! 🦝🍁" - ''; - #localVariables = {}; - - shellAliases = { - drwn-upd = "sudo darwin-rebuild switch --flake ~/Nix"; - ls = "eza"; - cd = "z"; - cat = "bat"; - k = "kubectl"; - m = "micro"; - h = "helm"; - t = "teleport"; - tctl = "talosctl"; - }; - }; - - fzf = { - colors = { - fg = "-1"; - "fg+" = "#d0d0d0"; - bg = "-1"; - "bg+" = "#262626"; - hl = "#5f87af"; - "hl+" = "#5fd7ff"; - info = "#afaf87"; - marker = "#87ff00"; - prompt = "#d7005f"; - spinner = "#af5fff"; - pointer = "#af5fff"; - header = "#87afaf"; - border = "#262626"; - label = "#aeaeae"; - query = "#d9d9d9"; - }; - defaultOptions = [ - "--border=rounded" - "--border-label" - "--preview-window=border-rounded" - "--prompt=> " - "--marker=>" - "--pointer=◆" - "--separator=─" - "--scrollbar=│" - ]; - enableZshIntegration = true; - enable = true; - }; - - eza = { - enableZshIntegration = true; - enable = true; - }; - - bat = { - enable = true; - }; - - zoxide = { - enableZshIntegration = true; - enable = true; - }; - - micro = { - settings = { - colorscheme = "simple"; - scrollbar = true; - }; - enable = true; - }; - - k9s = { - skins = { - transparent = { - k9s = { - body.bgColor = "default"; - prompt.bgColor = "default"; - info.sectionColor = "default"; - dialog = { - bgColor = "default"; - labelFgColor = "default"; - fieldFgColor = "default"; - }; - frame = { - crumbs.bgColor = "default"; - title = { - bgColor = "default"; - counterColor = "default"; - }; - menu.fgColor = "default"; - }; - views = { - charts.bgColor = "default"; - table = { - bgColor = "default"; - header = { - fgColor = "default"; - bgColor = "default"; - }; - }; - xray.bgColor = "default"; - logs = { - bgColor = "default"; - indicator = { - bgColor = "default"; - toggleOnColor = "default"; - toggleOffColor = "default"; - }; - }; - yaml = { - colonColor = "default"; - valueColor = "default"; - }; - }; - }; - }; - }; - enable = true; - - - - }; - - home-manager.enable = true; - }; - -} diff --git a/modules/common.nix b/modules/common.nix new file mode 100644 index 0000000..992aad1 --- /dev/null +++ b/modules/common.nix @@ -0,0 +1,31 @@ +{ pkgs, lib, ... }: + +{ + # Define home options directly if this is a standalone home.nix + # or within config if it's a module + home = { + packages = with pkgs; [ + age + ansible + bat + deploy-rs + fzf-preview + kubectl + kubectx + kubernetes-helm + nerd-fonts.jetbrains-mono + nixfmt-rfc-style + opentofu + sops + talosctl + teleport + zsh-forgit + zsh-fzf-history-search + zsh-fzf-tab + rclone + ]; + stateVersion = "25.11"; + }; + + #nixpkgs.config.allowUnfree = true; # It's better to put this in configuration.nix or a more specific place if it's only meant for certain hosts. +} diff --git a/modules/homebrew.nix b/modules/homebrew.nix new file mode 100644 index 0000000..1b9e8e2 --- /dev/null +++ b/modules/homebrew.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: + +{ + homebrew = { + enable = true; + + onActivation.autoUpdate = true; + onActivation.upgrade = true; + #onActivation.cleanup = "zap"; + + casks = [ + "arc" + "bettermouse" + "blender" + "citrix-workspace" + "cryptomator" + "Discord" + "Element" + "ghostty" + "IINA" + "Keka" + "meta" + "mullvad-vpn" + "obs" + "Obsidian" + "orion" + "Secretive" + "tailscale-app" + "telegram" + "UTM" + "vscodium" + ]; + + masApps = { + "Bitwarden" = 1352778147; + "DropOver" = 1355679052; + "Yubico Authenticator" = 1497506650; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/bat.nix b/modules/programs/bat.nix new file mode 100644 index 0000000..49e8362 --- /dev/null +++ b/modules/programs/bat.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + programs.bat = { + enable = true; + }; +} \ No newline at end of file diff --git a/modules/programs/eza.nix b/modules/programs/eza.nix new file mode 100644 index 0000000..1023f1d --- /dev/null +++ b/modules/programs/eza.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + programs.eza = { + enableZshIntegration = true; + enable = true; + }; +} \ No newline at end of file diff --git a/modules/programs/fzf.nix b/modules/programs/fzf.nix new file mode 100644 index 0000000..3e766fb --- /dev/null +++ b/modules/programs/fzf.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: + +{ + programs.fzf = { + colors = { + fg = "-1"; + "fg+" = "#d0d0d0"; + bg = "-1"; + "bg+" = "#262626"; + hl = "#5f87af"; + "hl+" = "#5fd7ff"; + info = "#afaf87"; + marker = "#87ff00"; + prompt = "#d7005f"; + spinner = "#af5fff"; + pointer = "#af5fff"; + header = "#87afaf"; + border = "#262626"; + label = "#aeaeae"; + query = "#d9d9d9"; + }; + defaultOptions = [ + "--border=rounded" + "--border-label" + "--preview-window=border-rounded" + "--prompt=> " + "--marker=>" + "--pointer=◆" + "--separator=─" + "--scrollbar=│" + ]; + enableZshIntegration = true; + enable = true; + }; +} \ No newline at end of file diff --git a/modules/programs/git.nix b/modules/programs/git.nix new file mode 100644 index 0000000..d69b307 --- /dev/null +++ b/modules/programs/git.nix @@ -0,0 +1,9 @@ +{ config, pkgs, lib, ... }: + +{ + programs.git = { + enable = true; + userName = "Den Afanasyev"; + userEmail = "ceo@furry.industries"; + }; +} \ No newline at end of file diff --git a/modules/programs/k9s.nix b/modules/programs/k9s.nix new file mode 100644 index 0000000..140b4f6 --- /dev/null +++ b/modules/programs/k9s.nix @@ -0,0 +1,52 @@ +{ config, lib, pkgs, ... }: +{ + programs.k9s = { + skins = { + transparent = { + k9s = { + body.bgColor = "default"; + prompt.bgColor = "default"; + info.sectionColor = "default"; + dialog = { + bgColor = "default"; + labelFgColor = "default"; + fieldFgColor = "default"; + }; + frame = { + crumbs.bgColor = "default"; + title = { + bgColor = "default"; + counterColor = "default"; + }; + menu.fgColor = "default"; + }; + views = { + charts.bgColor = "default"; + table = { + bgColor = "default"; + header = { + fgColor = "default"; + bgColor = "default"; + }; + }; + xray.bgColor = "default"; + logs = { + bgColor = "default"; + indicator = { + bgColor = "default"; + toggleOnColor = "default"; + toggleOffColor = "default"; + }; + }; + yaml = { + colonColor = "default"; + valueColor = "default"; + }; + }; + }; + }; + }; + enable = true; + + }; +} diff --git a/modules/programs/micro.nix b/modules/programs/micro.nix new file mode 100644 index 0000000..d1624c9 --- /dev/null +++ b/modules/programs/micro.nix @@ -0,0 +1,11 @@ +{ config, lib, pkgs, ... }: + +{ + programs.micro = { + settings = { + colorscheme = "simple"; + scrollbar = true; + }; + enable = true; + }; +} \ No newline at end of file diff --git a/modules/programs/ssh.nix b/modules/programs/ssh.nix new file mode 100644 index 0000000..97f72c6 --- /dev/null +++ b/modules/programs/ssh.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + programs.ssh = { + enable = true; + enableDefaultConfig = false; + }; +} \ No newline at end of file diff --git a/modules/programs/zoxide.nix b/modules/programs/zoxide.nix new file mode 100644 index 0000000..2136ae5 --- /dev/null +++ b/modules/programs/zoxide.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + programs.zoxide = { + enableZshIntegration = true; + enable = true; + }; +} \ No newline at end of file diff --git a/modules/programs/zsh.nix b/modules/programs/zsh.nix new file mode 100644 index 0000000..b509952 --- /dev/null +++ b/modules/programs/zsh.nix @@ -0,0 +1,53 @@ +{ config, lib, pkgs, ... }: + +{ + programs.zsh = { + enable = true; + enableCompletion = true; + syntaxHighlighting.enable = true; + + prezto = { + prompt = { theme = "powerlevel10k"; }; + enable = true; + }; + + autosuggestion = { + #highlight = "fg=#ff00ff,bg=cyan,bold,underline"; + #strategy = [ "completion" "history" ]; + enable = true; + }; + + plugins = [ + { + name = "fzf-tab"; + src = "${pkgs.zsh-fzf-tab}/share/fzf-tab"; + } + ]; + + history = { + append = true; + expireDuplicatesFirst = true; + }; + + initContent = lib.mkOrder 500 '' + source ~/.p10k.zsh + echo "Hey there raccoon! 🦝🍁" + ''; + localVariables = { + PURE_GIT_PULL = "0"; + TELEPORT_ADD_KEYS_TO_AGENT = "no"; + K9S_SKIN = "transparent"; + }; + + shellAliases = { + ls = "eza"; + cd = "z"; + cat = "bat"; + k = "kubectl"; + m = "micro"; + h = "helm"; + tp = "teleport"; + t = "talosctl"; + }; + }; +} \ No newline at end of file diff --git a/wsl/home.nix b/wsl/home.nix deleted file mode 100755 index 23e654b..0000000 --- a/wsl/home.nix +++ /dev/null @@ -1,195 +0,0 @@ -{ config, pkgs, lib, ... }: - -{ - - home = { - packages = with pkgs; [ - rclone - talosctl - bat - teleport - ansible - kubectl - opentofu - nerd-fonts.jetbrains-mono - age - sops - deploy-rs - kubernetes-helm - kubectx - fzf-preview - zsh-fzf-tab - zsh-forgit - zsh-fzf-history-search - ]; - #sessionVariables = { - # SOPS_AGE_KEY_FILE = "/Users/duumxh/.config/sops/age/keys.txt"; - #}; - stateVersion = "25.11"; - }; - - programs = { - git = { - enable = true; - userName = "Den Afanasyev"; - userEmail = "ceo@furry.industries"; - extraConfig = { core.sshCommand = "ssh.exe"; }; - }; - - zsh = { - enable = true; - enableCompletion = true; - syntaxHighlighting.enable = true; - - prezto = { - prompt = { - theme = "powerlevel10k"; - }; - enable = true; - }; - - autosuggestion = { - #highlight = "fg=#ff00ff,bg=cyan,bold,underline"; - #strategy = [ "completion" "history" ]; - enable = true; - }; - - plugins = [ - { - name = "fzf-tab"; - src = "${pkgs.zsh-fzf-tab}/share/fzf-tab"; - } - ]; - - history = { - append = true; - expireDuplicatesFirst = true; - }; - initContent = lib.mkOrder 500 '' - source ~/.p10k.zsh - export TELEPORT_ADD_KEYS_TO_AGENT=no - export K9S_SKIN="transparent" - echo "Hey there raccoon!" - ''; - #localVariables = {}; - - shellAliases = { - ssh-add = "ssh-add.exe"; - ssh = "ssh-add.exe -l > /dev/null || ssh-add.exe && ssh.exe"; - ls = "eza"; - cd = "z"; - cat = "bat"; - k = "kubectl"; - m = "micro"; - h = "helm"; - t = "teleport"; - tctl = "talosctl"; - }; - }; - - fzf = { - colors = { - fg = "-1"; - "fg+" = "#d0d0d0"; - bg = "-1"; - "bg+" = "#262626"; - hl = "#5f87af"; - "hl+" = "#5fd7ff"; - info = "#afaf87"; - marker = "#87ff00"; - prompt = "#d7005f"; - spinner = "#af5fff"; - pointer = "#af5fff"; - header = "#87afaf"; - border = "#262626"; - label = "#aeaeae"; - query = "#d9d9d9"; - }; - defaultOptions = [ - "--border=rounded" - "--border-label" - "--preview-window=border-rounded" - "--prompt=> " - "--marker=>" - "--pointer=◆" - "--separator=─" - "--scrollbar=│" - ]; - enableZshIntegration = true; - enable = true; - }; - - eza = { - enableZshIntegration = true; - enable = true; - }; - - bat = { - enable = true; - }; - - zoxide = { - enableZshIntegration = true; - enable = true; - }; - - micro = { - settings = { - colorscheme = "simple"; - scrollbar = true; - }; - enable = true; - }; - - k9s = { - skins = { - transparent = { - k9s = { - body.bgColor = "default"; - prompt.bgColor = "default"; - info.sectionColor = "default"; - dialog = { - bgColor = "default"; - labelFgColor = "default"; - fieldFgColor = "default"; - }; - frame = { - crumbs.bgColor = "default"; - title = { - bgColor = "default"; - counterColor = "default"; - }; - menu.fgColor = "default"; - }; - views = { - charts.bgColor = "default"; - table = { - bgColor = "default"; - header = { - fgColor = "default"; - bgColor = "default"; - }; - }; - xray.bgColor = "default"; - logs = { - bgColor = "default"; - indicator = { - bgColor = "default"; - toggleOnColor = "default"; - toggleOffColor = "default"; - }; - }; - yaml = { - colonColor = "default"; - valueColor = "default"; - }; - }; - }; - }; - }; - enable = true; - }; - - home-manager.enable = true; - }; -}