From 7be0309d275a0bb7c7b7d70499f647fbc7a3bf03 Mon Sep 17 00:00:00 2001 From: alfonzso Date: Sun, 15 Feb 2026 22:26:47 +0000 Subject: [PATCH] init --- config-files/.vimrc | 10 ++ config-files/nokia.enc.helper.sh | 2 + config-files/nokia.enc.nmconnection | 15 +++ config-files/rclone-filters.txt | 44 +++++++ config-files/rclone.alfoldi.sh | 3 + config-files/rclone.conf | 12 ++ config-files/restic-exclude-files.txt | 105 ++++++++++++++++ config-files/restic.alfoldi.sh | 1 + config-files/starship.toml | 16 +++ config-files/tmux.conf | 56 +++++++++ flake.lock | 172 ++++++++++++++++++++++++++ flake.nix | 34 +++++ hm_programs/bash.nix | 72 +++++++++++ hm_programs/default.nix | 3 + hm_programs/git.nix | 65 ++++++++++ hm_programs/tmux.nix | 41 ++++++ hm_programs/vim.nix | 43 +++++++ home.nix | 88 +++++++++++++ packages.nix | 78 ++++++++++++ 19 files changed, 860 insertions(+) create mode 100644 config-files/.vimrc create mode 100644 config-files/nokia.enc.helper.sh create mode 100644 config-files/nokia.enc.nmconnection create mode 100644 config-files/rclone-filters.txt create mode 100644 config-files/rclone.alfoldi.sh create mode 100644 config-files/rclone.conf create mode 100644 config-files/restic-exclude-files.txt create mode 100644 config-files/restic.alfoldi.sh create mode 100644 config-files/starship.toml create mode 100644 config-files/tmux.conf create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 hm_programs/bash.nix create mode 100644 hm_programs/default.nix create mode 100644 hm_programs/git.nix create mode 100644 hm_programs/tmux.nix create mode 100644 hm_programs/vim.nix create mode 100644 home.nix create mode 100644 packages.nix diff --git a/config-files/.vimrc b/config-files/.vimrc new file mode 100644 index 0000000..7c26304 --- /dev/null +++ b/config-files/.vimrc @@ -0,0 +1,10 @@ +set tabstop =2 +set softtabstop =2 +set shiftwidth =2 +set expandtab +set backupdir=/home/alfoldi/.vim-tmp +set directory=/home/alfoldi/.vim-tmp + +set exrc +set secure + diff --git a/config-files/nokia.enc.helper.sh b/config-files/nokia.enc.helper.sh new file mode 100644 index 0000000..df4c8b4 --- /dev/null +++ b/config-files/nokia.enc.helper.sh @@ -0,0 +1,2 @@ +sops --output-type yaml --age age17k7e9a8w95eu73uts6nr0fuww94kl5chrwgg0xudgmum03hv45sq9yuf4c --encrypt ./config-files/nokia.nmconnection > nokia.enc.nmconnection +sops decrypt --input-type yaml --output-type binary config-files/nokia.enc.nmconnection diff --git a/config-files/nokia.enc.nmconnection b/config-files/nokia.enc.nmconnection new file mode 100644 index 0000000..87488c8 --- /dev/null +++ b/config-files/nokia.enc.nmconnection @@ -0,0 +1,15 @@ +data: ENC[AES256_GCM,data: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,iv:DnNr5Dcfkir2b+UaAbfuVctNFHK13n+5ZQT3Y9qRWGw=,tag:w1A1Rk1atpu4ZNy7grPDvQ==,type:str] +sops: + age: + - recipient: age17k7e9a8w95eu73uts6nr0fuww94kl5chrwgg0xudgmum03hv45sq9yuf4c + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4UzlBRGhob2dCMjB5ZFFK + UGFMZUJLcGM1UUZjb0Q1ZUUra0xSQlVxcUh3CkZIRHdnVXBzM2kvblJCZ085MjhR + R0JxaysxRWhYakV0QUlBNDZOR0JtdnMKLS0tIGVVVVZmVUxqOGtSVGoxbkUyTkdj + d0FUamtPM2V1aTZrWUc3Y0J5cmk2a1UKIes+nOgJ7D+czak229ucyRCsYxXRp1vV + TodKLC4luPtTry2VLTQKIv2xEWqgOkvdZzEH4m/E/Cr2C1n3OZr/zA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-11-16T23:09:18Z" + mac: ENC[AES256_GCM,data:Fc/STVRr8IWv/umDwACQD7HEtAv+6ZD50n+CUJWtHvHK+nv5U02qJX2uDS02bcxSQ0YCVj/pP32qk8TFAXQrx3Xe+h0I2tO0bz02REyG0OL7+GI/14ywpZbNGgrPMxfG0ccL8JjHj2JYWTZwKNxMAoTC8/tvw/nNR0vEierkIGo=,iv:cX/cX7xBRHFRLP2fXksQtQCdfnThpy4uVkQAkvrEdHw=,tag:h1hwyt6jXsseOK8CMDG3Ew==,type:str] + version: 3.11.0 diff --git a/config-files/rclone-filters.txt b/config-files/rclone-filters.txt new file mode 100644 index 0000000..58f946c --- /dev/null +++ b/config-files/rclone-filters.txt @@ -0,0 +1,44 @@ +# exclude common cruft and envs +- **/.DS_Store +- **/Thumbs.db +- **/desktop.ini + +# python +- **/venv/** +- **/.venv/** +- **/__pycache__/** +- **/*.pyc +- **/.pytest_cache/** + ++ **/.git ++ **/.git/config +- **/.git/** +# - **/.git/objects/** +# - **/.git/refs/** + +# node +- **/node_modules/** +- **/dist/** +- **/build/** + +# caches, temporary +- **/.cache/** +- **/*.swp +- **/*~ +- **/*.bak + +# VM/disks/databases (review before enabling) +- **/*.vdi +- **/*.vmdk +- **/*.iso +- **/*.img +- **/*.sqlite3 +- **/*.db + +# more ignoring ... +- **/.mypy_cache/** +- **/__dist__/** +- **/.ruff_cache/** +- **/.tmp/** +- **/tmp/** +- **/.vagrant/** diff --git a/config-files/rclone.alfoldi.sh b/config-files/rclone.alfoldi.sh new file mode 100644 index 0000000..bdd31b0 --- /dev/null +++ b/config-files/rclone.alfoldi.sh @@ -0,0 +1,3 @@ +# rclone --filter-from config-files/rclone-filters.txt --config ~/.config/rclone/b2.storage.conf sync /home/alfoldi/workplace/home/ b2-storage:cnwco-storage/alfoldi/home --delete-excluded +# rclone --filter-from config-files/rclone-filters.txt --config ~/.config/rclone/b2.storage.conf sync /home/alfoldi/workplace/home/ b2-storage:cnwco-storage/alfoldi/home --dry-run +rclone --filter-from config-files/rclone-filters.txt --config ~/.config/rclone/b2.storage.conf sync /home/alfoldi/workplace/NOKIA/ b2-storage:cnwco-storage/alfoldi/NOKIA --dry-run diff --git a/config-files/rclone.conf b/config-files/rclone.conf new file mode 100644 index 0000000..9a44765 --- /dev/null +++ b/config-files/rclone.conf @@ -0,0 +1,12 @@ +[NokiaOneDrive] +type = onedrive +token = {"access_token":"","token_type":"Bearer","refresh_token":"1.ARAAURdHXXWWjUKRe3D0T5YwsNllVrGm7ZJAhTkO7Ddq_VkQABkQAA.BQABAwEAAAADAOz_BQD0__8RgzGNIRA3TSQx7WXz5v7H5EVEocAEePqGP_k3m_mmxxTsL5prcnqNIFAxh1BIwjdlr26zuAQWiTpLT0Bz6dfYILGRVpkbpZVbdc_XCssdUof2I0HyDfbGBfifzhYMsyj8IJlY6sSVJLHXmv2XbU5CpD_EBM51QTxpzjdG54_ldJes86sOtshu1wTFNqNAKEDVH-ae2-0153AwDjY1N6sBv35iqHrm-csn8y3Qx9Ee0fCrxFCV4x7QMpvnHk8Kc8WikGhSoVVJnOwMcY4cVwGfvZ3IvMsr0CE2aZQciJ_BUr6F1t72eDXNAhqJsEOJfWT9B81wlEQAYe7R39Pe3to5k_sbtjXVLIlAVcWPFMYQ2boyeRD0rdtlAjoyJecwLZVuKf5D3yEyV6LbznIkhmtkDQMGkhj2boRFdb9HeIC2wgLFT0xM40sYMReo6yUD3USw3LTVjhUqElphciN3HKm-nKBRbqAmIAC4WPXWXvcw3YannM6WfMQCZzdo4Dt7WP0rOBFUtiElMHzbiXxL3iT_dTGyLqggU6vU0RKJBUZTZWnmrLC4rqY6ZHauRPw0J0SyM8yz5D2LEjxfDgm47TYTuva1ZEgy04LPFF9uhAJKlKz2ZzGheYSGXILNGzEGZSne9ztupSJnG-YNrjbcoC8HGytXNzamf1xFc6TpYH5uIpu5sSMrxZSbJg7rBTwaySSCoqPTtFaY8ihP_YFV_vrXcumiGze3EQxk3Xg8V5CzwckXrtLE2k3u7iIEo1mqZvgE1S3Wkwr_mZS5dYyULnmJsf6G0GbMl49DdTtZR91OtjnQJdwd8X4O6IH38UZ9nB4T-3ZsnMVagHIf3MRwyMe-JR2-Dc8L-LZrQBe0R1yvY2lAqrqktQbQtqQnbO7iY7COdPV18WU0YzWtGkczXotphzsqw5nAEKWhgOR9QSU1UpIbokLXuS1edptij-C_tqWXW50ndWAfsLoUbgSN7FM3qrVOMCD29u6_PRCvz3jAPsIAfXqt-0vKa5Nsaeg-Yd08cOIBPp88c0qVlW1rGHvk8_UyACv7pjq4eZ-tTx00zZw86bjI9LFEpugZsYnOEMtIqbo8srSSA6YCoQfrLfhWoRTCp1FaHmlSNIwIPgmM58jMCDetgpxgRVO25TdE3EZa7ivfjMGpJ_YYB0BgWbd-eUOVuCtl2N-aBLfKfno9agtJqvYW4-Dta4yxi359x-Aba6w1R2ljRLKDhGWIbOiN4kiIItz2iJ7cnR8Rz824evWsDsWWeAWiB2U0Jm4Zl1JGm3_BgJQnBgoqrBO2QW57gjmK-9cmBxHKaUISBCWf7UthG_al9MR8KMfHtqWeGw3Hx0hdUmdJihfa5w5boI8N","expiry":"2025-11-17T03:18:03.482881953+01:00","expires_in":3599} +drive_id = b!oZ68HakfOUyIjtCl8y_4dvI3LGh9x-FOpAsswDAgqczNrTmVYBjfSaurRAe77n-g +drive_type = business + +[NokiaSharePoint] +type = onedrive +token = {"access_token":"","token_type":"Bearer","refresh_token":"1.ARAAURdHXXWWjUKRe3D0T5YwsNllVrGm7ZJAhTkO7Ddq_VkQABkQAA.BQABAwEAAAADAOz_BQD0_y9ehjxi2_gHUIE4pOws9ipNlooFA1T_c_-SoKE9Vd8mOPkxML0H8H9-5rEfDub5RoxMkYmEVpjXO04WQIhG9AGuEzNd_ecrKawyNtwU8b1uSJE4p8ogoBtncpdK3hkaa4jAHfo_Cvm8_pa-BhZWfryqCTapIBaDpBBL_YNPKoSsujUX4I_Zy2sV6PgDwv7FGUIz2HK_y839leLMIyieZgMr9ClefU1fJuFUQ8c33oQcUOsimAssLIGHc5NVbyxpUrPCO2rPfk_rKULhnsx-ZLy6TaltSRkec57Wog4aUxzd5fFy2WF5RJ7yEceo1Nd6NdcQ-ncqeAuYZBdk8IdlpYx3AJ6g4IU_M5o961mqKlJHJJfjc5r9QXKgakdWku835u-I-z4oUImsKKJZndfik5hUa_GQH0YpFT_Nkh_R8I3dkXkBWfVUZuVIuEPfLSnWkIVEgmnuV3dMEeu3oZTVBxpzvWFOEOXjOUDyo85Cejl7QGeMd2sKH1ee4vHAYuGf5I7v9gbmTwLTOd3ULgOMIKFVwcZoHmikDxJSl3n1lH0WSETP6YIv93fXL48IK556wW1NnTu-ZYNwD9gHU97mug1A1v0Mpp_X_Ix0iNkQ2-zG5FT88GzDZk-rE-eiye_Bq2Hyc15b6PJC3Hwgjg9Ci_iCjbjIO3WotkZbV1cpwSvtbu72n51jMO2cHFqXfvF7vOsDhgipCNU1MMnfqXG9eKnDxKKqwL_Jgz4070jSbfGm5AzhLWvGYX147tGZ1kz_JQ7OetQX30yEwLEw2tXprtdlFqjRWxo5lh_07V1LicORabmWL8_vMauuCRdZ_m6RwK3mwb0L_yoGZ__bS4Y95w0MCgAfu-3AnGgCV2xWRtq49M1ucjlGcU3TLdGz35enjG0vWY64kO_xQ2kCTYGVwFpImR02EaOuQnlndmnp2kBuGKgs2T5QcQ096xKkxa1omptkkLhgh7jPKexoVqIuwWVT_BJps5BraUBdep5A-XjD6oCvhAuwY3qJI7Hjez0mUYLvP7P-7xhT5nBw-Q5SCmZrmIaSEuyKgHlE1WcdvQV2t5lBU0KQ3b4TSEqxfP9t1Hu0kbPceIvdJjPiQ1kEB-DEqB7HZ0LlebYSdgAWlwuVtfxbu242ZB-qtQr64bMeKdYP4ltIFOgwDE7B-1eY0HY7Przu7dK23e1_gJAJ1js5C7BrtdaJs3ULXH3R-Bowqln-xxzF2RdeMJpDrKuo0iJ1yF5xdehu0cEkR7V_qFZ7iPsh8h3h_xK7dPPNR4H3P_ABUE3xSUSUx1r2OO4NergXHxZku4qayh36laEcfzwqoOh-DQT-T6PdzD1fMFl72V4ikDhTj2vrFfH9","expiry":"2025-11-17T03:18:03.526767239+01:00","expires_in":3599} +drive_id = b!KYmFKOmdnkuSkc8bRewSC4UuJN0bH89BjwJ4EyMN-SNDFuXWviqkQpZdC2IPBjPL +drive_type = documentLibrary + diff --git a/config-files/restic-exclude-files.txt b/config-files/restic-exclude-files.txt new file mode 100644 index 0000000..41baa1d --- /dev/null +++ b/config-files/restic-exclude-files.txt @@ -0,0 +1,105 @@ + +# Cache directories +.cache/ +*.cache/ +**/cache/ +**/Cache/ +**/CacheData/** +**/CachedData/** +**/CacheStorage/** +**/Extensions/** +**/Index*DB/** +**/Code/logs/** + +# Temporary files +.tmp/ +*.tmp/ +**/tmp/ +/tmp/ + +# Browser caches and data +.mozilla/firefox/*/cache2/ +.config/google-chrome/*/Cache/ +.config/chromium/*/Cache/ + +# Development Stuffs +node_modules/ +.venv/ +__pycache__/ +*.pyc + +# System garbage +.Trash/ +.local/share/Trash/ + +# Large media caches that we don't care about +.thumbnails/ + +# Junk from Windows Drives +$RECYCLE.BIN/ +System\ Volume\ Information/ + + +**/venv/** +**/.venv/** +**/__pycache__/** +**/*.pyc +**/.pytest_cache/** + +# git +# **/.git/* +**/.git/* +!**/.git/config + +# node +**/virtualenv/** +**/node_modules/** +**/.ansible/** +**/.tldrc/** +**/.npm/** +**/.cargo/** +**/.docker/buildx/** +**/dist/** +**/build/** + +# caches, temporary +**/.cache/** +**/*.swp +**/*~ +**/*.bak + +# VM/disks/databases (review before enabling) +**/*.vdi +**/*.vmdk +**/*.iso +**/*.img +**/*.sqlite3 +**/*.db + +# more ignoring ... +**/.mypy_cache/** +**/__dist__/** +**/.ruff_cache/** +**/.tmp/** +**/tmp/** +**/.vagrant/** +**/.arduino15/** +**/.config/intune/** +**/.config/libvirt/** +**/.config/microsoft-edge/** + + +**/VirtualBox VMs +# /home/alfoldi/go +**/go/** +**/snap +**/share/containers/storage/** +**/NokiaOneDrive/** +**/NokiaSharePoint/** +**/.vagrant.d/** +**/.vscode-server/** +**/.vscode/** +**/.local/share/nvim/** +**/.local/state/nvim/** +**/.local/share/pipx/** + diff --git a/config-files/restic.alfoldi.sh b/config-files/restic.alfoldi.sh new file mode 100644 index 0000000..efc7990 --- /dev/null +++ b/config-files/restic.alfoldi.sh @@ -0,0 +1 @@ +restic backup /home/alfoldi --exclude-file home-manager/config-files/restic-exclude-files.txt diff --git a/config-files/starship.toml b/config-files/starship.toml new file mode 100644 index 0000000..a235e08 --- /dev/null +++ b/config-files/starship.toml @@ -0,0 +1,16 @@ +[kubernetes] +style = "bold #2b6fe5" +disabled = false + +[directory] +truncate_to_repo = false + +[hostname] +ssh_only = false + +[username] +# style_user = 'white bold' +# style_root = 'black bold' +# format = 'user: [$user]($style) ' +# disabled = false +show_always = true diff --git a/config-files/tmux.conf b/config-files/tmux.conf new file mode 100644 index 0000000..24ec854 --- /dev/null +++ b/config-files/tmux.conf @@ -0,0 +1,56 @@ +bind h select-pane -L +bind j select-pane -D +bind k select-pane -U +bind l select-pane -R + +# bind-key q last-window +# bind q last-window +bind-key -T prefix e switch-client -T last_window +bind-key -T last_window e last-window + +# bind cc new-window -c "#{pane_current_path}" + +# +# want to open new panel with current session path ... +# but space already taken for another shortcut +# +# bind-key -T prefix Space switch-client -T prefix_c +# bind-key -T prefix_c c new-window -c "#{pane_current_path}" +# bind-key -T prefix_c % split-window -h -c "#{pane_current_path}" +# bind-key -T prefix_c '"' split-window -v -c "#{pane_current_path}" + +# bind Space split-window -h -c "#{pane_current_path}" +# bind r split-window -h -c "#{pane_current_path}" +# bind % split-window -h -c "#{pane_current_path}" +# bind '"' split-window -v -c "#{pane_current_path}" + +# List of plugins +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin 'tmux-plugins/tmux-resurrect' + +# weird escape char when tmux starting +set -sg escape-time 250 +# vi mode +setw -g mode-keys vi + +set -s copy-command 'wl-copy' + +# (Optional) Explicitly bind 'v' to begin selection if not working +# bind-key -T copy-mode-vi v send-keys -X begin-selection +# bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' + +# press ‑T to toggle between C‑b and C‑a +bind-key T run-shell "~/.tmux/toggle-prefix.sh" + +set-option -g default-shell "/bin/bash" +set -g default-terminal "screen-256color" +new -n WindowName bash --login + +# Other examples: +# set -g @plugin 'github_username/plugin_name' +# set -g @plugin 'git@github.com/user/plugin' +# set -g @plugin 'git@bitbucket.com/user/plugin' + +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +run '~/.tmux/plugins/tpm/tpm' diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..09557d4 --- /dev/null +++ b/flake.lock @@ -0,0 +1,172 @@ +{ + "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1770260404, + "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.11", + "repo": "home-manager", + "type": "github" + } + }, + "nix-secrets": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1769466557, + "narHash": "sha256-1zrWg05ptRV9ntrxDF9onwozCPMXk8RbStgxb77NhTA=", + "ref": "main", + "rev": "026ee38dce0a1f0631c6bdd03f9e727b3eee8b1e", + "shallow": true, + "type": "git", + "url": "ssh://git@github.com/alfonzso/nix-secrets.git" + }, + "original": { + "ref": "main", + "shallow": true, + "type": "git", + "url": "ssh://git@github.com/alfonzso/nix-secrets.git" + } + }, + "nixos-wsl": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1770657009, + "narHash": "sha256-v/LA5ZSJ+JQYzMSKB4sySM0wKfsAqddNzzxLLnbsV/E=", + "owner": "nix-community", + "repo": "NixOS-WSL", + "rev": "5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "main", + "repo": "NixOS-WSL", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1764947035, + "narHash": "sha256-EYHSjVM4Ox4lvCXUMiKKs2vETUSL5mx+J2FfutM7T9w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a672be65651c80d3f592a89b3945466584a22069", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1770019141, + "narHash": "sha256-VKS4ZLNx4PNrABoB0L8KUpc1fE7CLpQXQs985tGfaCU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cb369ef2efd432b3cdf8622b0ffc0a97a02f3137", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1770617025, + "narHash": "sha256-1jZvgZoAagZZB6NwGRv2T2ezPy+X6EFDsJm+YSlsvEs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2db38e08fdadcc0ce3232f7279bab59a15b94482", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1770380644, + "narHash": "sha256-P7dWMHRUWG5m4G+06jDyThXO7kwSk46C1kgjEWcybkE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ae67888ff7ef9dff69b3cf0cc0fbfbcd3a722abe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nix-secrets": "nix-secrets", + "nixos-wsl": "nixos-wsl", + "nixpkgs": "nixpkgs_3", + "sops-nix": "sops-nix" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1770683991, + "narHash": "sha256-xVfPvXDf9QN3Eh9dV+Lw6IkWG42KSuQ1u2260HKvpnc=", + "owner": "mic92", + "repo": "sops-nix", + "rev": "8b89f44c2cc4581e402111d928869fe7ba9f7033", + "type": "github" + }, + "original": { + "owner": "mic92", + "repo": "sops-nix", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..b374963 --- /dev/null +++ b/flake.nix @@ -0,0 +1,34 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; + + sops-nix.url = "github:mic92/sops-nix"; + + home-manager = { + url = "github:nix-community/home-manager/release-25.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nix-secrets = { + url = "git+ssh://git@github.com/alfonzso/nix-secrets.git?ref=main&shallow=1"; + inputs = { }; + }; + + }; + + outputs = { self, nixpkgs, nixos-wsl, + sops-nix, + home-manager, ... }: { + nixosConfigurations.nokiaWslNix = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + home-manager.nixosModules.home-manager + sops-nix.nixosModules.sops + nixos-wsl.nixosModules.default + ./home.nix + ]; + }; + }; +} + diff --git a/hm_programs/bash.nix b/hm_programs/bash.nix new file mode 100644 index 0000000..e5cb997 --- /dev/null +++ b/hm_programs/bash.nix @@ -0,0 +1,72 @@ +{ config, hostCfg, ... }: +let + gitPrompt = builtins.fetchurl { + url = + "https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh"; + sha256 = "7ff718f4a06fd0a0be7edfef926abb41b1353c48c1515ad312d226965b74943a"; + }; + PROJECT_ROOT = ./.; +in { + programs = { + bash = { + enable = true; + profileExtra = '' + # if running bash + if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi + fi + + # set PATH so it includes user's private bin if it exists + if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" + fi + + # set PATH so it includes user's private bin if it exists + if [ -d "$HOME/.local/bin" ] ; then + PATH="$HOME/.local/bin:$PATH" + fi + ''; + initExtra = '' + # some more ls aliases + alias ll='ls -alF' + alias la='ls -A' + alias l='ls -CF' + alias sudonix='sudo env PATH=$PATH' + alias k='kubectl' + alias rm="trash-put" + + # export BASH_COMPLETION_USER_DIR=$HOME/.nix-profile/share/bash-completion.d/ + + # Eternal bash history. + # --------------------- + # Undocumented feature which sets the size to "unlimited". + # http://stackoverflow.com/questions/9457233/unlimited-bash-history + export HISTFILESIZE= + export HISTSIZE= + # export HISTTIMEFORMAT="[%F %T] " + # Change the file location because certain bash sessions truncate .bash_history file upon close. + # http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login + export HISTFILE=~/.bash_eternal_history + # Force prompt to write history after every command. + # PROMPT_COMMAND="history -a; $PROMPT_COMMAND" + PROMPT_COMMAND="history -a '$HISTFILE'; $PROMPT_COMMAND" + + # Source custom configuration + if [ -f "$HOME/.bashrc.zs00lt" ]; then + . "${PROJECT_ROOT}/config-files/bashrc.zs00lt" + fi + + # source <(kubectl completion bash) + # source <(helm completion bash) + # source <(rclone completion bash) + + source ${gitPrompt} + eval "$(starship init bash)" + ''; + }; + }; + +} diff --git a/hm_programs/default.nix b/hm_programs/default.nix new file mode 100644 index 0000000..4b21871 --- /dev/null +++ b/hm_programs/default.nix @@ -0,0 +1,3 @@ +{ ... }: { + imports = [ ./bash.nix ./git.nix ./tmux.nix ./vim.nix ]; +} diff --git a/hm_programs/git.nix b/hm_programs/git.nix new file mode 100644 index 0000000..6b85f5d --- /dev/null +++ b/hm_programs/git.nix @@ -0,0 +1,65 @@ +{ ... }: +{ + + programs.git = { + enable = true; + + ignores = [ ".tmp" "tmp" ".envrc" ]; + + settings = { + + user.name = "alfonzso"; + user.email = "alfonzso@gmail.com"; + + core = { + editor = "nvim"; + whitespace = "trailing-space,space-before-tab"; + quotepath = "off"; + }; + # pull.rebase = "true"; + stash = { showPatch = "1"; }; + color = { + pager = "true"; + diff = "true"; + grep = "true"; + interactive = "true"; + status = "always"; + ui = "true"; + }; + "merge \"po\"" = { + name = "Gettext merge driver"; + driver = "git-merge-po.sh %O %A %B"; + }; + apply = { whitespace = "fix"; }; + diff = { + tool = "nvim -d"; + colorMoved = "default"; + }; + "color \"diff-highlight\"" = { + oldNormal = "red bold"; + oldHighlight = "red bold 52"; + newNormal = "green bold"; + newHighlight = "green bold 22"; + }; + "color \"diff\"" = { + meta = "yellow"; + frag = "magenta bold"; + commit = "yellow bold"; + old = "red bold"; + new = "green bold"; + whitespace = "red reverse"; + }; + merge = { tool = "nvim"; }; + "mergetool \"meld\"" = { + cmd = ''meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"''; + }; + "mergetool \"nvim\"" = { + cmd = + "nvim -d \"$LOCAL\" \"$REMOTE\" \"$MERGED\" -c '$wincmd w' -c 'wincmd J'"; + }; + "mergetool \"vscode\"" = { cmd = ''code --wait "$MERGED"''; }; + }; + + }; + +} diff --git a/hm_programs/tmux.nix b/hm_programs/tmux.nix new file mode 100644 index 0000000..bdb0138 --- /dev/null +++ b/hm_programs/tmux.nix @@ -0,0 +1,41 @@ +{ pkgs, ... }: { + programs.tmux = { + enable = true; + extraConfig = '' + bind h select-pane -L + bind j select-pane -D + bind k select-pane -U + bind l select-pane -R + + # bind-key q last-window + # bind q last-window + + bind-key -T prefix e switch-client -T last_window + bind-key -T last_window e last-window + + # List of plugins + set -g @plugin 'tmux-plugins/tpm' + set -g @plugin 'tmux-plugins/tmux-sensible' + set -g @plugin 'tmux-plugins/tmux-resurrect' + set -sg escape-time 250 + + set-window-option -g mode-keys vi + + # press ‑T to toggle between C‑b and C‑a + # bind-key T run-shell "~/.tmux/toggle-prefix.sh" + + set-option -g default-shell "${pkgs.bash}/bin/bash" + set -g default-terminal "screen-256color" + new -n WindowName bash --login + + # Other examples: + # set -g @plugin 'github_username/plugin_name' + # set -g @plugin 'git@github.com/user/plugin' + # set -g @plugin 'git@bitbucket.com/user/plugin' + # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) + run '~/.tmux/plugins/tpm/tpm' + + ''; + }; + +} diff --git a/hm_programs/vim.nix b/hm_programs/vim.nix new file mode 100644 index 0000000..82b8f50 --- /dev/null +++ b/hm_programs/vim.nix @@ -0,0 +1,43 @@ +{ config, pkgs, hostCfg, ... }: +# let +# hostCfg = config.hostCfg ; +# in +let + hostCfg = { username = "nixos"; }; +in +{ + + programs.vim = { + enable = true; + defaultEditor = true; + + # config = builtins.readFile ~/.vimrc; + # extraConfig = builtins.readFile /home/nixos/.vimrc; + + plugins = with pkgs.vimPlugins; [ + vim-fzf-coauthorship + vim-sensible + vim-automkdir + vim-nix # Syntax highlighting for Nix + nerdtree # File explorer + fugitive # Git integration + ]; + + extraConfig = '' + " NERDTree configuration + " nnoremap n :NERDTreeToggle + set tabstop =2 + set softtabstop =2 + set shiftwidth =2 + set expandtab + set backupdir=/home/${hostCfg.username}/.vim-tmp + set directory=/home/${hostCfg.username}/.vim-tmp + + set exrc + set secure + + " Reopen the last edited position in files + au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif + ''; + }; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..d33fa6d --- /dev/null +++ b/home.nix @@ -0,0 +1,88 @@ +{ pkgs, lib, config, ... }: +let + downloadedFile = builtins.fetchurl { + url = + "https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh"; + sha256 = "7ff718f4a06fd0a0be7edfef926abb41b1353c48c1515ad312d226965b74943a"; + }; + ProjectRoot = ./.; +in { + # Mandatory WSL settings + wsl.enable = true; + wsl.defaultUser = "nixos"; + + # Enable Flakes and new 'nix' commands + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + environment.systemPackages = with pkgs; [ + + # for neovim to x11 clipboard sync + # or not just neovim ... + xclip + + # lua-language-server + # stylua + + rsync + # screen + openssh + bash-completion + gcc + # cargo + cmake + gnumake + # fzf + trash-cli + wl-clipboard + + wget + curl + tree + inetutils # telnet + + restic + wireguard-tools + + ]; + + home-manager = { + users.nixos = { + + imports = [ ./hm_programs ./packages.nix ]; + + home = { + + sessionVariables = { POETRY_VIRTUALENVS_IN_PROJECT = "true"; }; + + activation.createCustomDir = lib.mkAfter '' + mkdir -p ~/.vim-tmp + chmod u+rw ~/.vim-tmp + ''; + + file = { + + ".local/share/git/contrib/completion/git-prompt.sh".source = + downloadedFile; + + ".config/starship.toml".source = + "${ProjectRoot}/config-files/starship.toml"; + + ".tmux.conf".source = "${ProjectRoot}/config-files/tmux.conf"; + + # home-manager config ... and not working + # "current-system-packages".text = let + # packages = builtins.map (p: "${p.name}") config.home.packages; + # sortedUnique = + # builtins.sort builtins.lessThan (pkgs.lib.lists.unique packages); + # formatted = builtins.concatStringsSep "\n" sortedUnique; + # in formatted; + + }; + stateVersion = "25.11"; + }; + + }; + }; + + system.stateVersion = "25.11"; +} diff --git a/packages.nix b/packages.nix new file mode 100644 index 0000000..35de863 --- /dev/null +++ b/packages.nix @@ -0,0 +1,78 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + + kubectl + kubernetes-helm + kustomize + podman + k9s + + # needed by nvim + neovim + (python312.withPackages (ps: with ps; [ pip ])) + poetry + + # LSP servers + tree-sitter + nil # Nix LSP + stylua + prettierd + bash-language-server + lua-language-server + just-lsp + + # Formatters + # nixfmt-rfc-style # or nixpkgs-fmt + # nixfmt + nixfmt-classic + shfmt + nodePackages.prettier + + nodejs_24 + + ########### + # Rust not needed if blink is used from prebuilt binary + ########### + # # Rust nightly with rust-src + # (rust-bin.selectLatestNightlyWith (toolchain: + # toolchain.default.override { + # extensions = [ "rust-src" "rust-analyzer" ]; + # })) + + ripgrep + fzf + fd + ripgrep-all + + sops + age + + dig + htop + iotop + ncdu + nmon + pciutils # lspci + ps # ps aux + socat + # unixtools.net-tools + nettools + usbutils # lsusb + + bat + git + mc + direnv + neofetch + rclone + rename + starship + tldr + tmux + unzip + + yq + jq + + ]; +}