diff --git a/.dotter/global.toml b/.dotter/global.toml index 14359f7..aa00ade 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -1,20 +1,20 @@ [default.files] -"conf.d/fish" = "~/.config/fish/" -"conf.d/utils" = "~/.local/bin/dotutils/" -"conf.d/ideavim" = "~/.ideavimrc" -'conf.d/astronvim/plugins' = "~/.config/nvim/lua/plugins/" -'conf.d/astronvim/community.lua' = "~/.config/nvim/lua/community.lua" -"conf.d/vimrc" = "~/.vimrc" -"conf.d/halig" = "~/.config/halig" -"conf.d/k9smocha.yaml" = "~/.config/k9s/skins/mocha.yaml" -"conf.d/sshconfig" = "~/.ssh/config" -"conf.d/gitconfig" = "~/.gitconfig" -"conf.d/allowed_signers" = "~/.ssh/allowed_signers" -"conf.d/topgrade.toml" = "~/.config/topgrade.toml" -"conf.d/kitty" = "~/.config/kitty" -"conf.d/bat" = "~/.config/bat" -"conf.d/mangohud.conf" = "~/.config/MangoHud/MangoHud.conf" -"conf.d/gamemode.ini" = "~/.config/gamemode.ini" -"conf.d/timewarrior.cfg" = "~/.config/timewarrior/timewarrior.cfg" -"conf.d/tmux.conf" = "~/.tmux.conf" -"conf.d/atuin.toml" = "~/.config/atuin/config.toml" +fish = "~/.config/fish/" +utils = "~/.local/bin/dotutils/" +ideavim = "~/.ideavimrc" +'astronvim/plugins' = "~/.config/nvim/lua/plugins/" +'astronvim/community.lua' = "~/.config/nvim/lua/community.lua" +vimrc = "~/.vimrc" +halig = "~/.config/halig" +"k9smocha.yaml" = "~/.config/k9s/skins/mocha.yaml" +sshconfig = "~/.ssh/config" +gitconfig = "~/.gitconfig" +allowed_signers = "~/.ssh/allowed_signers" +'topgrade.toml' = "~/.config/topgrade.toml" +kitty = "~/.config/kitty" +bat = "~/.config/bat" +'mangohud.conf' = "~/.config/MangoHud/MangoHud.conf" +"gamemode.ini" = "~/.config/gamemode.ini" +"timewarrior.cfg" = "~/.config/timewarrior/timewarrior.cfg" +"tmux.conf" = "~/.tmux.conf" +"atuin.toml" = "~/.config/atuin/config.toml" diff --git a/conf.d/7tv_settings_TWITCH-3_6_2025.json b/7tv_settings_TWITCH-3_6_2025.json similarity index 100% rename from conf.d/7tv_settings_TWITCH-3_6_2025.json rename to 7tv_settings_TWITCH-3_6_2025.json diff --git a/README.md b/README.md index 8cecec6..978d712 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,141 @@ # dots -# limgrave +This repository contains my dotfiles and a Nix flake that supports multiple hosts (machines) with a shared base and per-host configuration. + +- On NixOS: hosts are built via `nixosConfigurations`. +- On non-NixOS (e.g., Ubuntu): hosts are applied via Home Manager using `homeConfigurations`. + +## Bootstrap ```shell -sudo nixos-rebuild switch --flake ~/.dotfiles#limgrave --upgrade # first time -dotter # create dotfiles symlinks -nh os switch ~/.dotfiles/ # after -nh home switch ~/.dotfiles # home manager -``` \ No newline at end of file +pip install pipx ansible +ansible-playbook --ask-become-pass ansible/main.yml +# Then apply dotfiles with dotter +dotter +``` + +## NixOS: multi-host layout + +- nix/base/packages.nix — packages installed on all hosts +- nix/hosts// + - configuration.nix — host-specific NixOS configuration + - hardware-configuration.nix — generated per-machine + - packages.nix — extra packages for this host +- nix/flake.nix — exposes each host under nixosConfigurations + +Current hosts: +- limgrave — my main system +- carpates — scaffolded/minimal, ready to extend + +## Naming rule (important) +Your machine hostname must match the Nix flake host name. For example: +- networking.hostName = "limgrave" in the host configuration +- The flake exports nixosConfigurations.limgrave +- The system hostname (output of `hostname -s`) is limgrave + +This allows the upgrade function to pick the right configuration automatically. + +## Build or switch +From repo root: + +```bash +# Limgrave (current system) +sudo nixos-rebuild switch --flake ./nix#limgrave + +# carpates (on target machine) +sudo nixos-rebuild switch --flake ./nix#carpates +# Or during install: +# nixos-install --flake /nix#carpates +``` + +## Upgrades: nix_upgrade +A convenience Fish function is provided in fish/conf.d/functions.fish: `nix_upgrade`. +It updates flake inputs and rebuilds the system using a host name that matches the machine hostname. + +Usage: +```fish +# Automatic: uses (hostname -s) → must match a host in nix/flake.nix +nix_upgrade + +# Override the host explicitly (useful for recovery or chroots) +nix_upgrade limgrave +``` +What it does: +1) sudo nix flake update --flake /home/catalin/.dotfiles/nix +2) sudo nixos-rebuild switch --flake /home/catalin/.dotfiles/nix# --upgrade + +Safety checks: +- Verifies nix/flake.nix exists +- Verifies the host is declared in nix/flake.nix +- Prints clear error if the hostname doesn’t map to a known host + +Tip: ensure your system hostname matches one of the directories in nix/hosts/ and the entry under nixosConfigurations in nix/flake.nix. + +## Adding a new host +1) Create a directory: nix/hosts// +2) Add configuration files (start by copying limgrave and trimming, or use the minimal example from carpates) +3) Generate hardware config on the new machine: +```bash +sudo nixos-generate-config +# Move merge the generated hardware-configuration.nix into nix/hosts// +``` +4) Add the host to nix/flake.nix under nixosConfigurations +5) Make sure networking.hostName = "" in the host configuration +6) Build or install: +```bash +sudo nixos-rebuild switch --flake ./nix# +# or during install: +nixos-install --flake /nix# +``` + +## Notes +- Old single-host files nix/configuration.nix and nix/packages.nix are kept for reference but are not used by the flake. You can remove them once comfortable with the new layout. +- limgrave includes nix-snapd and Home Manager; carpates currently includes Home Manager only. + +## Nix on non-NixOS (Ubuntu, etc.) +You can also use this flake on non-NixOS systems (e.g., Ubuntu) via Home Manager. For that path, hosts are defined under `homeConfigurations` in `nix/flake.nix` and typically live next to their NixOS counterparts. In this repo, `carpates` is prepared for non-NixOS via Home Manager. + +- Naming rule: your machine's hostname (output of `hostname -s`) should match the `homeConfigurations.` entry. Example: `carpates`. +- Packages: non-NixOS hosts usually install user-scoped packages via Home Manager, using the shared base set from `nix/base/packages.nix`. + +### Prerequisites +- Install Nix (multi-user is recommended): + ```bash + sh <(curl -L https://nixos.org/nix/install) --daemon + ``` +- Enable flakes (if not already). On non-NixOS, set in `/etc/nix/nix.conf` or `$XDG_CONFIG_HOME/nix/nix.conf`: + ``` + experimental-features = nix-command flakes + ``` +- Install Home Manager (no separate channel needed when using flakes; we can run it via `nix run` or install it on PATH): + ```bash + # Optional, to have `home-manager` on PATH: + nix profile install github:nix-community/home-manager + ``` + +### Apply the configuration (non-NixOS) +From repo root: +```bash +# Use the prepared Home Manager host (example: carpates) +home-manager switch --flake ./nix#carpates +# If `home-manager` is not installed, you can run it via nix: +nix run github:nix-community/home-manager -- switch --flake ./nix#carpates +``` + +### Upgrades (non-NixOS) +`nix_upgrade` also works on non-NixOS: +```fish +# Auto-detects host from (hostname -s) and runs Home Manager switch +nix_upgrade + +# Or override explicitly +nix_upgrade carpates +``` +What it does on non-NixOS: +- `nix flake update --flake /home/catalin/.dotfiles/nix` +- `home-manager switch --flake /home/catalin/.dotfiles/nix#` (or `nix run ... -- switch` if HM is not on PATH) + +### NixOS vs. non-NixOS summary +- NixOS hosts are declared under `nixosConfigurations` and are applied with `nixos-rebuild`. +- non-NixOS hosts are declared under `homeConfigurations` and are applied with `home-manager switch`. +- The `nix_upgrade` function detects the OS and selects the correct path automatically based on the hostname. diff --git a/conf.d/allowed_signers b/allowed_signers similarity index 100% rename from conf.d/allowed_signers rename to allowed_signers diff --git a/ansible/main.yml b/ansible/main.yml new file mode 100644 index 0000000..611e1d9 --- /dev/null +++ b/ansible/main.yml @@ -0,0 +1,6 @@ +--- +- hosts: localhost + gather_facts: true + tasks: + - import_role: + name: packages diff --git a/ansible/requirements.yml b/ansible/requirements.yml new file mode 100644 index 0000000..052506b --- /dev/null +++ b/ansible/requirements.yml @@ -0,0 +1,2 @@ +collections: + - name: kewlfft.aur diff --git a/ansible/roles/packages/tasks/arch.yml b/ansible/roles/packages/tasks/arch.yml new file mode 100644 index 0000000..76f27da --- /dev/null +++ b/ansible/roles/packages/tasks/arch.yml @@ -0,0 +1,92 @@ +--- +- name: Install Arch packages + become: true + ansible.builtin.package: + name: + # gnome + - gnome + - gnome-extra + - gnome-bluetooth-3.0 + - gnome-control-center + - gnome-shell-extensions + - gnome-themes-extra + - gnome-browser-connector + - gnome-tweaks + + # dbs + - postgresql-client + - freetds + - unixodbc + + # work + - azure-cli + + # bluetooth + - bluez + - bluez-utils + - bluez-deprecated-tools + + # containers + - docker + - docker-buildx + - docker-compose + + # gayming + - steam + - steam-native-runtime + - mangohud + - lib32-mangohud + - gamemode + - lib32-gamemode + - mesa + + # utils + - python-virtualenv + - asciinema + - trash-cli + - git + - base-devel + - bubblewrap + - libseccomp + - xz + - shellcheck + - python-pipx + - python-gobject + + # fonts + - noto-fonts-cjk + - noto-fonts-emoji + - noto-fonts + - ttf-liberation + - ttf-inconsolata + - ttf-fira-code + + # misc + - networkmanager + - firefox + - lutris + - nodejs + - npm + - fd + - less + - timew + - man + state: present + +- name: Install aur packages + kewlfft.aur.aur: + name: + - visual-studio-code-bin + - python-pyodbc + - protonut-qt + - jetbrains-toolbox + - snapd + - gnome-shell-extension-dash-to-dock-git + - catppuccin-gtk-theme-mocha + - tree-sitter-git + - neovim-git + - papirus-icon-theme-git + - pop-launcher-git + state: present + tags: + - aur diff --git a/ansible/roles/packages/tasks/curlers.yml b/ansible/roles/packages/tasks/curlers.yml new file mode 100644 index 0000000..246e773 --- /dev/null +++ b/ansible/roles/packages/tasks/curlers.yml @@ -0,0 +1,6 @@ +--- +- name: Execute curl installers + ansible.builtin.shell: "curl -sSfL {{ item }} | bash" + loop: "{{ curl_install_urls }}" + tags: + - curl diff --git a/ansible/roles/packages/tasks/debian.yml b/ansible/roles/packages/tasks/debian.yml new file mode 100644 index 0000000..dd08c78 --- /dev/null +++ b/ansible/roles/packages/tasks/debian.yml @@ -0,0 +1,36 @@ +--- +- name: Install Debian packages + ansible.builtin.package: + name: + - rofi-dev + - g++ + - nodejs + - npm + - python3.11-venv + - parallel + - postgresql-client-common + - libnss3-tools + - hwinfo + - rsync + - nmap + - nodejs + - unixodbc + - unixodbc-dev + - freetds-bin + - freetds-common + - freetds-dev + - unzip + state: present + tags: + - debian + +- name: Install Debian GUI packages + ansible.builtin.package: + name: + - rofi-dev + - qalculate-gtk + - snapd + state: present + tags: + - debian + - gui diff --git a/ansible/roles/packages/tasks/flatpak.yml b/ansible/roles/packages/tasks/flatpak.yml new file mode 100644 index 0000000..b97374f --- /dev/null +++ b/ansible/roles/packages/tasks/flatpak.yml @@ -0,0 +1,24 @@ +--- +- name: Install flatpak packages + community.general.flatpak: + name: + - com.github.iwalton3.jellyfin-media-player + - com.stremio.Stremio + - dev.geopjr.Tuba + - org.telegram.desktop + - com.tutanota.Tutanota + - org.gnome.DejaDup + - com.bitwarden.desktop + - com.spotify.Client + - org.qbittorrent.qBittorrent + - app/com.nextcloud.desktopclient.nextcloud/x86_64/stable + - net.lutris.Lutris + - io.github.diegoivanme.flowtime + - org.gnome.Decibels + - net.davidotek.pupgui2 + - dev.vencord.Vesktop + - com.discordapp.Discord + - com.google.Chrome + - rest.insomnia.Insomnia + - com.github.neithern.g4music + method: "user" diff --git a/ansible/roles/packages/tasks/main.yml b/ansible/roles/packages/tasks/main.yml new file mode 100644 index 0000000..dd202e2 --- /dev/null +++ b/ansible/roles/packages/tasks/main.yml @@ -0,0 +1,90 @@ +- name: Install CLI os-agnostic packages + become: true + ansible.builtin.package: + name: + - git + - tmux + - python-pip + - fish + - rofi + - automake + - ncdu + - xclip + state: present + tags: + - agnostic + - cli + +- name: Install GUI os-agnostic packages + become: true + ansible.builtin.package: + name: + - mpv + - rofi + state: present + tags: + - agnostic + - gui + +- name: Install Arch packages + when: ansible_os_family == "Archlinux" + ansible.builtin.import_tasks: arch.yml + tags: + - arch + + +- name: Install Debian packages + become: true + when: ansible_os_family == "Debian" + ansible.builtin.import_tasks: debian.yml + + tags: + - debian + +- name: Install RHEL packages + become: true + when: ansible_os_family in ["RedHat", "Nobara"] + ansible.builtin.import_tasks: rhel.yaml + tags: + - rhel + +- name: Curl installers + become: false + ansible.builtin.import_tasks: curlers.yml + vars: + curl_install_urls: + - https://raw.githubusercontent.com/aquaproj/aqua-installer/v3.0.1/aqua-installer + - https://astral.sh/uv/install.sh + + tags: + - curl + +- name: Curl GUI installers + become: false + ansible.builtin.import_tasks: curlers.yml + vars: + curl_install_urls: + - https://sw.kovidgoyal.net/kitty/installer.sh + - https://zed.dev/install.sh | ZED_CHANNEL=preview + tags: + - gui + - curl + + +- name: Install Python packages + ansible.builtin.import_tasks: python.yml + tags: + - python + +- name: Install Flatpak packages + ansible.builtin.import_tasks: flatpak.yml + tags: + - flatpak + - gui + +- name: Install Snap packages + become: true + ansible.builtin.import_tasks: snap.yml + tags: + - snap + - gui diff --git a/ansible/roles/packages/tasks/python.yml b/ansible/roles/packages/tasks/python.yml new file mode 100644 index 0000000..7cfbd65 --- /dev/null +++ b/ansible/roles/packages/tasks/python.yml @@ -0,0 +1,15 @@ +--- +- name: Install pipx packages + community.general.pipx: + name: "{{ item }}" + state: latest + loop: + - yt-dlp + - pdm + - poetry + - halig + - pre-commit + - ruff + - thefuck + - streamlink + - tldr diff --git a/ansible/roles/packages/tasks/rhel.yaml b/ansible/roles/packages/tasks/rhel.yaml new file mode 100644 index 0000000..ce2a288 --- /dev/null +++ b/ansible/roles/packages/tasks/rhel.yaml @@ -0,0 +1,13 @@ +--- +- name: Install RHEL packages + ansible.builtin.package: + name: + - rofi-devel + - qalculate + - automake + - libtool + - cheat + - gcc-c++ + - neovim + - python3-neovim + state: present diff --git a/ansible/roles/packages/tasks/snap.yml b/ansible/roles/packages/tasks/snap.yml new file mode 100644 index 0000000..ac6fae6 --- /dev/null +++ b/ansible/roles/packages/tasks/snap.yml @@ -0,0 +1,5 @@ +--- +- name: Install snaps packages + community.general.snap: + name: + - acestreamplayer diff --git a/conf.d/astronvim/community.lua b/astronvim/community.lua similarity index 100% rename from conf.d/astronvim/community.lua rename to astronvim/community.lua diff --git a/conf.d/astronvim/plugins/astrocore.lua b/astronvim/plugins/astrocore.lua similarity index 100% rename from conf.d/astronvim/plugins/astrocore.lua rename to astronvim/plugins/astrocore.lua diff --git a/conf.d/astronvim/plugins/astrolsp.lua b/astronvim/plugins/astrolsp.lua similarity index 100% rename from conf.d/astronvim/plugins/astrolsp.lua rename to astronvim/plugins/astrolsp.lua diff --git a/conf.d/astronvim/plugins/astroui.lua b/astronvim/plugins/astroui.lua similarity index 100% rename from conf.d/astronvim/plugins/astroui.lua rename to astronvim/plugins/astroui.lua diff --git a/conf.d/astronvim/plugins/catppuccin.lua b/astronvim/plugins/catppuccin.lua similarity index 100% rename from conf.d/astronvim/plugins/catppuccin.lua rename to astronvim/plugins/catppuccin.lua diff --git a/conf.d/astronvim/plugins/grug-far.lua b/astronvim/plugins/grug-far.lua similarity index 100% rename from conf.d/astronvim/plugins/grug-far.lua rename to astronvim/plugins/grug-far.lua diff --git a/atuin.toml b/atuin.toml new file mode 100644 index 0000000..80ae0f7 --- /dev/null +++ b/atuin.toml @@ -0,0 +1,232 @@ +## where to store your database, default is your system data directory +## linux/mac: ~/.local/share/atuin/history.db +## windows: %USERPROFILE%/.local/share/atuin/history.db +# db_path = "~/.history.db" + +## where to store your encryption key, default is your system data directory +## linux/mac: ~/.local/share/atuin/key +## windows: %USERPROFILE%/.local/share/atuin/key +# key_path = "~/.key" + +## where to store your auth session token, default is your system data directory +## linux/mac: ~/.local/share/atuin/session +## windows: %USERPROFILE%/.local/share/atuin/session +# session_path = "~/.session" + +## date format used, either "us" or "uk" +# dialect = "us" + +## default timezone to use when displaying time +## either "l", "local" to use the system's current local timezone, or an offset +## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]" +## for example: "+9", "-05", "+03:30", "-01:23:45", etc. +# timezone = "local" + +## enable or disable automatic sync +# auto_sync = true + +## enable or disable automatic update checks +# update_check = true + +## address of the sync server +# sync_address = "https://api.atuin.sh" + +## how often to sync history. note that this is only triggered when a command +## is ran, so sync intervals may well be longer +## set it to 0 to sync after every command +# sync_frequency = "10m" + +## which search mode to use +## possible values: prefix, fulltext, fuzzy, skim +# search_mode = "fuzzy" + +## which filter mode to use +## possible values: global, host, session, directory +# filter_mode = "global" + +## With workspace filtering enabled, Atuin will filter for commands executed +## in any directory within a git repository tree (default: false) +# workspaces = false + +## which filter mode to use when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "filter_mode" +## leave unspecified to use same mode set in "filter_mode" +# filter_mode_shell_up_key_binding = "global" + +## which search mode to use when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "search_mode" +## leave unspecified to use same mode set in "search_mode" +# search_mode_shell_up_key_binding = "fuzzy" + +## which style to use +## possible values: auto, full, compact +# style = "auto" + +## the maximum number of lines the interface should take up +## set it to 0 to always go full screen +# inline_height = 0 + +## Invert the UI - put the search bar at the top , Default to `false` +# invert = false + +## enable or disable showing a preview of the selected command +## useful when the command is longer than the terminal width and is cut off +# show_preview = true + +## what to do when the escape key is pressed when searching +## possible values: return-original, return-query +# exit_mode = "return-original" + +## possible values: emacs, subl +# word_jump_mode = "emacs" + +## characters that count as a part of a word +# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +## number of context lines to show when scrolling by pages +# scroll_context_lines = 1 + +## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts +## alt-0 .. alt-9 +# ctrl_n_shortcuts = false + +## default history list format - can also be specified with the --format arg +# history_format = "{time}\t{command}\t{duration}" + +## prevent commands matching any of these regexes from being written to history. +## Note that these regular expressions are unanchored, i.e. if they don't start +## with ^ or end with $, they'll match anywhere in the command. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# history_filter = [ +# "^secret-cmd", +# "^innocuous-cmd .*--secret=.+", +# ] + +## prevent commands run with cwd matching any of these regexes from being written +## to history. Note that these regular expressions are unanchored, i.e. if they don't +## start with ^ or end with $, they'll match anywhere in CWD. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# cwd_filter = [ +# "^/very/secret/area", +# ] + +## Configure the maximum height of the preview to show. +## Useful when you have long scripts in your history that you want to distinguish +## by more than the first few lines. +# max_preview_height = 4 + +## Configure whether or not to show the help row, which includes the current Atuin +## version (and whether an update is available), a keymap hint, and the total +## amount of commands in your history. +# show_help = true + +## Configure whether or not to show tabs for search and inspect +# show_tabs = true + +## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include +## 1. AWS key id +## 2. Github pat (old and new) +## 3. Slack oauth tokens (bot, user) +## 4. Slack webhooks +## 5. Stripe live/test keys +# secrets_filter = true + +## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit. +# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise. +enter_accept = false + +## Defaults to "emacs". This specifies the keymap on the startup of `atuin +## search`. If this is set to "auto", the startup keymap mode in the Atuin +## search is automatically selected based on the shell's keymap where the +## keybinding is defined. If this is set to "emacs", "vim-insert", or +## "vim-normal", the startup keymap mode in the Atuin search is forced to be +## the specified one. +keymap_mode = "vim-insert" + +## Cursor style in each keymap mode. If specified, the cursor style is changed +## in entering the cursor shape. Available values are "default" and +## "{blink,steady}-{block,underline,bar}". +# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" } + +# network_connect_timeout = 5 +# network_timeout = 5 + +## Timeout (in seconds) for acquiring a local database connection (sqlite) +# local_timeout = 5 + +## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc. +## Alternatively, set env NO_MOTION=true +# prefers_reduced_motion = false + +[stats] +## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl +# common_subcommands = [ +# "apt", +# "cargo", +# "composer", +# "dnf", +# "docker", +# "git", +# "go", +# "ip", +# "kubectl", +# "nix", +# "nmcli", +# "npm", +# "pecl", +# "pnpm", +# "podman", +# "port", +# "systemctl", +# "tmux", +# "yarn", +# ] + +## Set commands that should be totally stripped and ignored from stats +# common_prefix = ["sudo"] + +## Set commands that will be completely ignored from stats +# ignored_commands = [ +# "cd", +# "ls", +# "vi" +# ] + +[keys] +# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry. +# scroll_exits = false + +[sync] +# Enable sync v2 by default +# This ensures that sync v2 is enabled for new installs only +# In a later release it will become the default across the board +records = true + +[preview] +## which preview strategy to use to calculate the preview height (respects max_preview_height). +## possible values: auto, static +## auto: length of the selected command. +## static: length of the longest command stored in the history. +# strategy = "auto" + +[daemon] +## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon` +# enabled = false + +## How often the daemon should sync in seconds +# sync_frequency = 300 + +## The path to the unix socket used by the daemon (on unix systems) +## linux/mac: ~/.local/share/atuin/atuin.sock +## windows: Not Supported +# socket_path = "~/.local/share/atuin/atuin.sock" + +## Use systemd socket activation rather than opening the given path (the path must still be correct for the client) +## linux: false +## mac/windows: Not Supported +# systemd_socket = false + +## The port that should be used for TCP on non unix systems +# tcp_port = 8889 diff --git a/conf.d/bat/themes/Catppuccin-mocha.tmTheme b/bat/themes/Catppuccin-mocha.tmTheme similarity index 100% rename from conf.d/bat/themes/Catppuccin-mocha.tmTheme rename to bat/themes/Catppuccin-mocha.tmTheme diff --git a/conf.d/atuin.toml b/conf.d/atuin.toml deleted file mode 100644 index edac123..0000000 --- a/conf.d/atuin.toml +++ /dev/null @@ -1,14 +0,0 @@ - -search_mode = "fuzzy" -enter_accept = false -keymap_mode = "vim-insert" - -[sync] -records = true - -[daemon] -enabled = true -autostart = true - -[ai] -enabled = true \ No newline at end of file diff --git a/conf.d/fish/conf.d/atuin.fish b/conf.d/fish/conf.d/atuin.fish deleted file mode 100644 index 80075c2..0000000 --- a/conf.d/fish/conf.d/atuin.fish +++ /dev/null @@ -1,3 +0,0 @@ -if status is-interactive - atuin init fish | source -end diff --git a/conf.d/utils/gs.sh b/conf.d/utils/gs.sh deleted file mode 100755 index 1e51c1c..0000000 --- a/conf.d/utils/gs.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash -set -xeuo pipefail - -gamescopeArgs=( - --adaptive-sync # VRR support - --hdr-enabled - --mangoapp # performance overlay - --rt - --steam -) -steamArgs=( - -pipewire-dmabuf - -tenfoot -) -mangoConfig=( - cpu_temp - gpu_temp - ram - vram -) -mangoVars=( - MANGOHUD=1 - MANGOHUD_CONFIG="$(IFS=,; echo "${mangoConfig[*]}")" -) - -export "${mangoVars[@]}" -exec gamescope "${gamescopeArgs[@]}" -- steam "${steamArgs[@]}" \ No newline at end of file diff --git a/conf.d/fish/conf.d/aliases.fish b/fish/conf.d/aliases.fish similarity index 100% rename from conf.d/fish/conf.d/aliases.fish rename to fish/conf.d/aliases.fish diff --git a/conf.d/fish/conf.d/common.fish b/fish/conf.d/common.fish similarity index 100% rename from conf.d/fish/conf.d/common.fish rename to fish/conf.d/common.fish diff --git a/conf.d/fish/conf.d/functions.fish b/fish/conf.d/functions.fish similarity index 100% rename from conf.d/fish/conf.d/functions.fish rename to fish/conf.d/functions.fish diff --git a/conf.d/fish/conf.d/kubectl.fish b/fish/conf.d/kubectl.fish similarity index 100% rename from conf.d/fish/conf.d/kubectl.fish rename to fish/conf.d/kubectl.fish diff --git a/conf.d/fish/conf.d/paths.fish b/fish/conf.d/paths.fish similarity index 100% rename from conf.d/fish/conf.d/paths.fish rename to fish/conf.d/paths.fish diff --git a/flake.lock b/flake.lock deleted file mode 100644 index df0ba6f..0000000 --- a/flake.lock +++ /dev/null @@ -1,244 +0,0 @@ -{ - "nodes": { - "atuin": { - "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1773709057, - "narHash": "sha256-hLt6CDHEPV8BVpOADVn4bLNcBz89eC2jKtIexHG0yAY=", - "owner": "atuinsh", - "repo": "atuin", - "rev": "e737ba5b9a149eaec706418bc560e8ba7ea8c81b", - "type": "github" - }, - "original": { - "owner": "atuinsh", - "ref": "v18.13.3", - "repo": "atuin", - "type": "github" - } - }, - "fenix": { - "inputs": { - "nixpkgs": [ - "atuin", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1758609765, - "narHash": "sha256-VIYu7R9Yc/CItjmzLSm21Lr9DgpEsKL5H+JUu8KDTn4=", - "owner": "nix-community", - "repo": "fenix", - "rev": "05545a7f3cd5cd5628b195520758e56e6734b90a", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1775077333, - "narHash": "sha256-OXcxobt7lBkh1B8AjwreU+24myhtKpqeLfAeIyNLFY8=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "49ca96b2714c5931e17401eff87f3edd42d2b0f2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "release-25.11", - "repo": "home-manager", - "type": "github" - } - }, - "nix-flatpak": { - "locked": { - "lastModified": 1767983141, - "narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=", - "owner": "gmodena", - "repo": "nix-flatpak", - "rev": "440818969ac2cbd77bfe025e884d0aa528991374", - "type": "github" - }, - "original": { - "owner": "gmodena", - "ref": "v0.7.0", - "repo": "nix-flatpak", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1758446476, - "narHash": "sha256-5rdAi7CTvM/kSs6fHe1bREIva5W3TbImsto+dxG4mBo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a1f79a1770d05af18111fbbe2a3ab2c42c0f6cd0", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1775002709, - "narHash": "sha256-d3Yx83vSrN+2z/loBh4mJpyRqr9aAJqlke4TkpFmRJA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bcd464ccd2a1a7cd09aa2f8d4ffba83b761b1d0e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-25.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1760524057, - "narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "opencode": { - "inputs": { - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1770777255, - "narHash": "sha256-1mKK8D8Jy3AS+4A22YlMsoZHlK/bo2+ULAmYIvXnIMk=", - "owner": "GutMutCode", - "repo": "opencode-nix", - "rev": "687e34c3c406de915c2eb8dc87f964c0f2fa685d", - "type": "github" - }, - "original": { - "owner": "GutMutCode", - "repo": "opencode-nix", - "type": "github" - } - }, - "root": { - "inputs": { - "atuin": "atuin", - "home-manager": "home-manager", - "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_2", - "opencode": "opencode", - "systems": "systems_2" - } - }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1758556272, - "narHash": "sha256-9amq6LAd0CFF3dLrJUItPiG64MQOG4QPrvjbjpa6NFc=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "d05355db16dc526bb16bd84769ea840668d7015e", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 926a884..0000000 --- a/flake.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ - description = "NixOS flake"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; - systems.url = "github:nix-systems/default-linux"; - nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.7.0"; - opencode.url = "github:GutMutCode/opencode-nix/"; - home-manager = { - url = "github:nix-community/home-manager/release-25.11"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - atuin.url = "github:atuinsh/atuin/v18.13.3"; - }; - - outputs = { self, nixpkgs, nix-flatpak, systems, home-manager, opencode, ... } @ inputs: let - inherit (self) outputs; - lib = nixpkgs.lib // home-manager.lib; - formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree; - forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system}); - pkgsFor = lib.genAttrs (import systems) ( - system: - import nixpkgs { - inherit system; - config.allowUnfree = true; - overlays = [ - inputs.atuin.overlays.default - ]; - } - ); - - in { - inherit lib; - - - nixosConfigurations = { - limgrave = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs;}; - modules = [ - nix-flatpak.nixosModules.nix-flatpak - ./hosts/limgrave/nixos - ({ ... }: { - nixpkgs.overlays = [ inputs.atuin.overlays.default opencode.overlays.default ]; - }) - ]; - }; - }; - - homeConfigurations = { - "catalin@limgrave" = home-manager.lib.homeManagerConfiguration { - pkgs = pkgsFor.x86_64-linux; - extraSpecialArgs = {inherit inputs;}; - modules = [ - ./hosts/limgrave/home/home.nix - ]; - }; - }; - }; -} diff --git a/conf.d/freetds.conf b/freetds.conf similarity index 100% rename from conf.d/freetds.conf rename to freetds.conf diff --git a/conf.d/gamemode.ini b/gamemode.ini similarity index 100% rename from conf.d/gamemode.ini rename to gamemode.ini diff --git a/conf.d/gitconfig b/gitconfig similarity index 100% rename from conf.d/gitconfig rename to gitconfig diff --git a/greenclip.toml b/greenclip.toml new file mode 100644 index 0000000..5346073 --- /dev/null +++ b/greenclip.toml @@ -0,0 +1,12 @@ +[greenclip] + history_file = "~/.cache/greenclip.history" + max_history_length = 50 + max_selection_size_bytes = 0 + trim_space_from_selection = true + use_primary_selection_as_input = false + blacklisted_applications = [] + enable_image_support = true + image_cache_directory = "/tmp/greenclip" + static_history = [ + '''¯\_(ツ)_/¯''', +] diff --git a/conf.d/halig/halig.yml b/halig/halig.yml similarity index 100% rename from conf.d/halig/halig.yml rename to halig/halig.yml diff --git a/hosts/limgrave/home/home.nix b/hosts/limgrave/home/home.nix deleted file mode 100644 index 065b62b..0000000 --- a/hosts/limgrave/home/home.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - inputs, - lib, - config, - pkgs, - ... -}: { - home = { - username = "catalin"; - homeDirectory = "/home/catalin"; - shell.enableFishIntegration = true; - packages = with pkgs; [ - gnomeExtensions.user-themes - gnomeExtensions.caffeine - gnomeExtensions.colosseum - gnomeExtensions.dash-to-dock - gnomeExtensions.clipboard-indicator - gnomeExtensions.emoji-copy - gnomeExtensions.gsconnect - gnomeExtensions.bluetooth-battery-meter - gnome-tweaks - catppuccin-gtk - catppuccin-cursors - catppuccin-papirus-folders - catppuccin-grub - opencode - ]; - - }; - dconf = { - enable = true; - settings = { - "org/gnome/desktop/interface".color-scheme = "prefer-dark"; - "org/gnome/shell" = { - disable-user-extensions = false; - enabled-extensions = with pkgs.gnomeExtensions; [ - gsconnect.extensionUuid - user-themes.extensionUuid - caffeine.extensionUuid - colosseum.extensionUuid - dash-to-dock.extensionUuid - clipboard-indicator.extensionUuid - emoji-copy.extensionUuid - bluetooth-battery-meter.extensionUuid - ]; - }; - }; - }; - - - programs.gnome-shell = { - enable = true; - extensions = [{ package = pkgs.gnomeExtensions.gsconnect; }]; - }; - programs.home-manager.enable = true; - programs.git.enable = true; - systemd.user.startServices = "sd-switch"; - programs = { - fish.enable = true; - }; - - home.stateVersion = "25.11"; -} \ No newline at end of file diff --git a/hosts/limgrave/nixos/default.nix b/hosts/limgrave/nixos/default.nix deleted file mode 100644 index 0ff6831..0000000 --- a/hosts/limgrave/nixos/default.nix +++ /dev/null @@ -1,151 +0,0 @@ -{ config, pkgs, flatpaks, lib, ... }: - -{ - imports = - [ - ./hardware-configuration.nix - ]; - - boot = { - loader.systemd-boot.enable = true; - loader.efi.canTouchEfiVariables = true; - kernelPackages = pkgs.linuxPackages_latest; - initrd.luks.devices."luks-7565ba12-2da3-4933-adec-8d62e81afe52".device = "/dev/disk/by-uuid/7565ba12-2da3-4933-adec-8d62e81afe52"; - }; - - nix = { - settings.experimental-features = [ "nix-command" "flakes" ]; - settings.trusted-users = [ "root" "catalin" ]; - }; - - networking = { - hostName = "limgrave"; - networkmanager.enable = true; - }; - - services = { - xserver.enable = true; - desktopManager.gnome.enable = true; - displayManager.gdm.enable = true; - xserver.xkb = { - layout = "us"; - variant = ""; - }; - printing.enable = true; - pulseaudio.enable = false; - pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - udev.packages = with pkgs; [ gnome-settings-daemon ]; - sysprof.enable = true; - flatpak = { - enable = true; - packages = import ./flatpaks.nix; - overrides = { - "org.signal.Signal" = { - Environment = { - "SIGNAL_PASSWORD_STORE" = "gnome-libsecret org.signal.Signal"; - }; - }; - }; - }; - - - }; - - programs = { - fish.enable = true; - appimage.enable = true; - appimage.binfmt = true; - dconf.enable = true; - gamescope = { - enable = true; - capSysNice = true; - }; - steam = { - enable = true; - gamescopeSession.enable = true; - remotePlay.openFirewall = true; - package = pkgs.steam.override { - extraLibraries = p: with p; [ (lib.getLib networkmanager) ]; - }; - }; - firefox.enable = true; - nix-ld.enable = true; - nh = { - enable = true; - clean.enable = true; - clean.extraArgs = "--keep-since 4d --keep 3"; - flake = "/home/.dotfiles"; - }; - }; - - - time.timeZone = "Europe/Madrid"; - i18n.defaultLocale = "en_US.UTF-8"; - i18n.extraLocaleSettings = { - LC_ADDRESS = "es_ES.UTF-8"; - LC_IDENTIFICATION = "es_ES.UTF-8"; - LC_MEASUREMENT = "es_ES.UTF-8"; - LC_MONETARY = "es_ES.UTF-8"; - LC_NAME = "es_ES.UTF-8"; - LC_NUMERIC = "es_ES.UTF-8"; - LC_PAPER = "es_ES.UTF-8"; - LC_TELEPHONE = "es_ES.UTF-8"; - LC_TIME = "es_ES.UTF-8"; - }; - - users = { - users.catalin = { - isNormalUser = true; - description = "catalin"; - extraGroups = [ "networkmanager" "wheel" "docker" "nas"]; - shell = pkgs.fish; - packages = with pkgs; [ - flatpak - ]; - }; - groups.nas.gid = 568; - }; - - - security.rtkit.enable = true; - - hardware = { - graphics = { - enable = true; - enable32Bit = true; - }; - }; - - - xdg.portal = { - enable = true; - config = { - common = { - default = [ - "gtk" - ]; - }; - }; - extraPortals = with pkgs; [ - xdg-desktop-portal-gtk - ]; - }; - virtualisation.docker.enable = true; - - nixpkgs.config.allowUnfree = true; - environment = { - sessionVariables.NIXOS_OZONE_WL = "1"; - systemPackages = import ./packages.nix pkgs; - loginShellInit = '' - [[ "$(tty)" = "/dev/tty1" ]] && ~/.dotfiles/conf.d/utils/gs.sh - ''; - }; - - - system.stateVersion = "25.11"; -} diff --git a/hosts/limgrave/nixos/flatpaks.nix b/hosts/limgrave/nixos/flatpaks.nix deleted file mode 100644 index f09a8fd..0000000 --- a/hosts/limgrave/nixos/flatpaks.nix +++ /dev/null @@ -1,21 +0,0 @@ -[ - "com.microsoft.Edge" - "dev.vencord.Vesktop" - "chat.revolt.RevoltDesktop" - "io.github.hkdb.Aerion" - "io.github.mpobaschnig.Vaults" - "com.bitwarden.desktop" - "com.google.Chrome" - "org.jellyfin.JellyfinDesktop" - "net.lutris.Lutris" - "com.stremio.Stremio" - "org.musicbrainz.Picard" - "org.gimp.GIMP" - "org.qbittorrent.qBittorrent" - "com.tutanota.Tutanota" - "com.usebruno.Bruno" - "com.obsproject.Studio" - "org.kde.kdenlive" - "com.vysp3r.ProtonPlus" - "com.github.IsmaelMartinez.teams_for_linux" -] diff --git a/hosts/limgrave/nixos/hardware-configuration.nix b/hosts/limgrave/nixos/hardware-configuration.nix deleted file mode 100644 index 4a3a8fb..0000000 --- a/hosts/limgrave/nixos/hardware-configuration.nix +++ /dev/null @@ -1,60 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; - boot.supportedFilesystems = [ "nfs" ]; - - fileSystems."/" = - { device = "/dev/mapper/luks-0e11cc3f-cf15-42a3-8356-12780ac991f6"; - fsType = "ext4"; - }; - - boot.initrd.luks.devices."luks-0e11cc3f-cf15-42a3-8356-12780ac991f6".device = "/dev/disk/by-uuid/0e11cc3f-cf15-42a3-8356-12780ac991f6"; - - fileSystems."/mnt/zeruel/nas1" = - { device = "zeruel.fuku:/mnt/pool1/nas1/"; - fsType = "nfs"; - options = [ "x-systemd.automount" ]; - }; - - fileSystems."/mnt/zeruel/vods" = - { device = "zeruel.fuku:/mnt/vods"; - fsType = "nfs"; - options = [ "x-systemd.automount" ]; - }; - - fileSystems."/mnt/windoze" = - { device = "/dev/disk/by-uuid/46B01460B01458AF"; - fsType = "ntfs-3g"; - options = [ "rw" "uid=1000" "x-gvfs-show"]; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/0362-9D53"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; - - fileSystems."/mnt/windoze2" = - { device = "/dev/disk/by-uuid/6084BE5384BE2B82"; - fsType = "ntfs-3g"; - options = [ "rw" "uid=1000" "x-gvfs-show"]; - }; - - swapDevices = - [ { device = "/dev/mapper/luks-7565ba12-2da3-4933-adec-8d62e81afe52"; } - ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/conf.d/ideavim b/ideavim similarity index 100% rename from conf.d/ideavim rename to ideavim diff --git a/conf.d/k9smocha.yaml b/k9smocha.yaml similarity index 100% rename from conf.d/k9smocha.yaml rename to k9smocha.yaml diff --git a/conf.d/kitty/kitty.conf b/kitty/kitty.conf similarity index 100% rename from conf.d/kitty/kitty.conf rename to kitty/kitty.conf diff --git a/conf.d/mangohud.conf b/mangohud.conf similarity index 100% rename from conf.d/mangohud.conf rename to mangohud.conf diff --git a/nix/base/packages.nix b/nix/base/packages.nix new file mode 100644 index 0000000..d0c8b68 --- /dev/null +++ b/nix/base/packages.nix @@ -0,0 +1,38 @@ +pkgs: with pkgs; [ + vim + wget + git + tmux + eza + bat + jq + curl + atuin + leaf + dotter + kubectl + k9s + trashy + krew + pre-commit + devenv + git-cliff + difftastic + unzip + hadolint + docker-compose + delta + bottom + bat + dust + popeye + kubecolor + kubeconform + kube-score + uv + neovim + ncdu + direnv + asciinema + yq +] diff --git a/nix/flake.lock b/nix/flake.lock new file mode 100644 index 0000000..1ff6c22 --- /dev/null +++ b/nix/flake.lock @@ -0,0 +1,392 @@ +{ + "nodes": { + "autofirma-nix": { + "inputs": { + "autofirma-src": "autofirma-src", + "clienteafirma-external-src": "clienteafirma-external-src", + "flake-parts": "flake-parts", + "home-manager": "home-manager", + "jmulticard-src": "jmulticard-src", + "nix-unit": "nix-unit", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762846273, + "narHash": "sha256-TvPVL/CLMstwlnsDrBHw7vMbrxwO1RlxJcQD2Csc/3Q=", + "owner": "nix-community", + "repo": "autofirma-nix", + "rev": "014a7decf4a60dcab532f78469ce83387c9aa40e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.05", + "repo": "autofirma-nix", + "type": "github" + } + }, + "autofirma-src": { + "flake": false, + "locked": { + "lastModified": 1716805628, + "narHash": "sha256-GQyj3QuWIHTkYwdJ4oKVsG923YG9mCUXfhqdIvEWNMA=", + "owner": "ctt-gob-es", + "repo": "clienteafirma", + "rev": "f8888062394a4ca41c5802beb2524597a5ce465a", + "type": "github" + }, + "original": { + "owner": "ctt-gob-es", + "ref": "v1.8.3", + "repo": "clienteafirma", + "type": "github" + } + }, + "clienteafirma-external-src": { + "flake": false, + "locked": { + "lastModified": 1712248159, + "narHash": "sha256-iS3I6zIxuKG133s/FqDlXZzOZ2ZOJcqZK9X6Tv3+3lc=", + "owner": "ctt-gob-es", + "repo": "clienteafirma-external", + "rev": "f450ac76094ffe387f6590b9ac61b5ada5a501e7", + "type": "github" + }, + "original": { + "owner": "ctt-gob-es", + "ref": "OT_14395", + "repo": "clienteafirma-external", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "autofirma-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762810396, + "narHash": "sha256-dxFVgQPG+R72dkhXTtqUm7KpxElw3u6E+YlQ2WaDgt8=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "0bdadb1b265fb4143a75bd1ec7d8c915898a9923", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1760948891, + "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1762787259, + "narHash": "sha256-t2U/GLLXHa2+kJkwnFNRVc2fEJ/lUfyZXBE5iKzJdcs=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "37a3d97f2873e0f68711117c34d04b7c7ead8f4e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1747688870, + "narHash": "sha256-ypL9WAZfmJr5V70jEVzqGjjQzF0uCkz+AFQF7n9NmNc=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "d5f1f641b289553927b3801580598d200a501863", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-24.11", + "repo": "home-manager", + "type": "github" + } + }, + "jmulticard-src": { + "flake": false, + "locked": { + "lastModified": 1686816513, + "narHash": "sha256-sCqMK4FvwRHsGIB6iQVyqrx0+EDiUfQSAsPqmDq2Giw=", + "owner": "ctt-gob-es", + "repo": "jmulticard", + "rev": "9983fc690f3b68dc2c8fde19db269766cf0fb387", + "type": "github" + }, + "original": { + "owner": "ctt-gob-es", + "ref": "v1.8", + "repo": "jmulticard", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "autofirma-nix", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737420293, + "narHash": "sha256-F1G5ifvqTpJq7fdkT34e/Jy9VCyzd5XfJ9TO8fHhJWE=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix-snapd": { + "inputs": { + "flake-compat": "flake-compat", + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761703712, + "narHash": "sha256-OKuNVXmHuZ0zi8T0aGWrBJizIfvdTqV1RiV0IN8GPZs=", + "owner": "nix-community", + "repo": "nix-snapd", + "rev": "f7694a0e26d890e285137e1b726b1b44038805c4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-snapd", + "type": "github" + } + }, + "nix-unit": { + "inputs": { + "flake-parts": [ + "autofirma-nix", + "flake-parts" + ], + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "autofirma-nix", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1762774186, + "narHash": "sha256-hRADkHjNt41+JUHw2EiSkMaL4owL83g5ZppjYUdF/Dc=", + "owner": "nix-community", + "repo": "nix-unit", + "rev": "1c9ab50554eed0b768f9e5b6f646d63c9673f0f7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-unit", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1762111121, + "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1754788789, + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1762233356, + "narHash": "sha256-cGS3lLTYusbEP/IJIWGgnkzIl+FA5xDvtiHyjalGr4k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ca534a76c4afb2bdc07b681dbc11b453bab21af8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1761907660, + "narHash": "sha256-kJ8lIZsiPOmbkJypG+B5sReDXSD1KGu2VEPNqhRa/ew=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "autofirma-nix": "autofirma-nix", + "home-manager": "home-manager_2", + "nix-snapd": "nix-snapd", + "nixpkgs": "nixpkgs_2", + "spicetify-nix": "spicetify-nix", + "unstable": "unstable" + } + }, + "spicetify-nix": { + "inputs": { + "nixpkgs": "nixpkgs_3", + "systems": "systems" + }, + "locked": { + "lastModified": 1762057664, + "narHash": "sha256-mdEEvepIi8ebpGP1WWOHNvNQyd8rF0mUrKAiU6mwHCk=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "4aa6e43d29e3c8acf544aa6782a1963a11369208", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "autofirma-nix", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762410071, + "narHash": "sha256-aF5fvoZeoXNPxT0bejFUBXeUjXfHLSL7g+mjR/p5TEg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "97a30861b13c3731a84e09405414398fbf3e109f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "unstable": { + "locked": { + "lastModified": 1762361079, + "narHash": "sha256-lz718rr1BDpZBYk7+G8cE6wee3PiBUpn8aomG/vLLiY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ffcdcf99d65c61956d882df249a9be53e5902ea5", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nix/flake.nix b/nix/flake.nix new file mode 100644 index 0000000..e350be4 --- /dev/null +++ b/nix/flake.nix @@ -0,0 +1,69 @@ +{ + description = "NixOS flake"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; + nix-snapd.url = "github:nix-community/nix-snapd"; + nix-snapd.inputs.nixpkgs.follows = "nixpkgs"; + spicetify-nix.url = "github:Gerg-L/spicetify-nix"; + autofirma-nix = { + url = "github:nix-community/autofirma-nix/release-25.05"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + home-manager = { + url = "github:nix-community/home-manager/release-24.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + nixConfig = { + extra-substituters = [ + "https://nix-community.cachix.org" + ]; + extra-trusted-public-keys = [ + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; + + outputs = { self, nixpkgs, unstable, nix-snapd, home-manager, autofirma-nix, ... }: + let + system = "x86_64-linux"; + lib = nixpkgs.lib; + pkgs-unstable = unstable.legacyPackages.${system}; + pkgs = nixpkgs.legacyPackages.${system}; + in + { + nixosConfigurations = { + limgrave = lib.nixosSystem { + inherit system; + specialArgs = { inherit pkgs-unstable; }; + modules = [ + ./hosts/limgrave/configuration.nix + nix-snapd.nixosModules.default + autofirma-nix.nixosModules.default + home-manager.nixosModules.home-manager + ]; + }; + + carpates = lib.nixosSystem { + inherit system; + specialArgs = { inherit pkgs-unstable; }; + modules = [ + ./hosts/carpates/configuration.nix + home-manager.nixosModules.home-manager + ]; + }; + }; + + # Home Manager configurations for non-NixOS hosts (e.g., Ubuntu) + homeConfigurations = { + # For non-NixOS usage on a machine named "carpates". + # Run: home-manager switch --flake ./nix#carpates + carpates = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ ./hosts/carpates/home.nix ]; + }; + }; + }; +} diff --git a/nix/hosts/carpates/configuration.nix b/nix/hosts/carpates/configuration.nix new file mode 100644 index 0000000..daf1cd7 --- /dev/null +++ b/nix/hosts/carpates/configuration.nix @@ -0,0 +1,37 @@ +{ config, pkgs, pkgs-unstable, ... }: +{ + imports = [ + ./hardware-configuration.nix + ]; + + # Basic system metadata + networking.hostName = "carpates"; + time.timeZone = "Europe/Madrid"; + i18n.defaultLocale = "en_US.UTF-8"; + + # Nix settings + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nixpkgs.config = { + allowUnfree = true; + allowBroken = false; + }; + + # Users + users.users.catalin = { + isNormalUser = true; + description = "catalin"; + shell = pkgs.fish; + extraGroups = [ "networkmanager" "wheel" ]; + }; + + # Minimal services + networking.networkmanager.enable = true; + services.openssh.enable = true; + + # Base CLI set only (shared across hosts) + environment.systemPackages = import ../../base/packages.nix pkgs; + + programs.fish.enable = true; + + system.stateVersion = "24.11"; +} diff --git a/nix/hosts/carpates/home.nix b/nix/hosts/carpates/home.nix new file mode 100644 index 0000000..14099f0 --- /dev/null +++ b/nix/hosts/carpates/home.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: +{ + # Home Manager configuration for non-NixOS usage on host "carpates". + # Apply with: + # home-manager switch --flake ./nix#carpates + + home.username = "catalin"; + home.homeDirectory = "/home/catalin"; + + # Use the same base CLI set as all hosts + home.packages = import ../../base/packages.nix pkgs; + + programs.fish.enable = true; + + # Example: some common quality-of-life programs + programs.git = { + enable = true; + userName = "catalin"; + userEmail = ""; # set if desired + }; + + # Make sure HM itself can manage its state + programs.home-manager.enable = true; + + # Set the HM release; doesn't have to match NixOS release + home.stateVersion = "24.11"; +} diff --git a/nix/hosts/limgrave/configuration.nix b/nix/hosts/limgrave/configuration.nix new file mode 100644 index 0000000..4b0920a --- /dev/null +++ b/nix/hosts/limgrave/configuration.nix @@ -0,0 +1,211 @@ +{ config, pkgs, pkgs-unstable, ... }: +{ + imports = [ + ./hardware-configuration.nix + ]; + + nixpkgs.config.allowBroken = true; + nix.settings.download-buffer-size = 524288000; + nixpkgs.config.permittedInsecurePackages = [ "electron-33.4.11" "mono-5.20.1.34" ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.supportedFilesystems = [ "ntfs" ]; + + services.snap.enable = false; + + networking.hostName = "limgrave"; + networking.networkmanager.enable = true; + services.mullvad-vpn.enable = true; + + + environment.sessionVariables.MOZ_ENABLE_WAYLAND = 0; + + time.timeZone = "Europe/Madrid"; + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "es_ES.UTF-8"; + LC_IDENTIFICATION = "es_ES.UTF-8"; + LC_MEASUREMENT = "es_ES.UTF-8"; + LC_MONETARY = "es_ES.UTF-8"; + LC_NAME = "es_ES.UTF-8"; + LC_NUMERIC = "es_ES.UTF-8"; + LC_PAPER = "es_ES.UTF-8"; + LC_TELEPHONE = "es_ES.UTF-8"; + LC_TIME = "es_ES.UTF-8"; + }; + + networking.firewall = rec { + allowedTCPPortRanges = [ { from = 1714; to = 1764; } ]; + allowedUDPPortRanges = allowedTCPPortRanges; + }; + + home-manager.users.catalin = { + programs.gnome-shell = { + enable = true; + extensions = [{ package = pkgs.gnomeExtensions.gsconnect; }]; + }; + dconf = { + enable = true; + settings."org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = with pkgs.gnomeExtensions; [ + gsconnect.extensionUuid + user-themes.extensionUuid + caffeine.extensionUuid + colosseum.extensionUuid + dash-to-dock.extensionUuid + clipboard-indicator.extensionUuid + emoji-copy.extensionUuid + bluetooth-battery-meter.extensionUuid + ]; + }; + }; + home = { + stateVersion = "24.11"; + enableNixpkgsReleaseCheck = false; + packages = with pkgs; [ + gnomeExtensions.user-themes + gnomeExtensions.caffeine + gnomeExtensions.colosseum + gnomeExtensions.dash-to-dock + gnomeExtensions.clipboard-indicator + gnomeExtensions.emoji-copy + gnomeExtensions.gsconnect + gnomeExtensions.bluetooth-battery-meter + gnome-tweaks + catppuccin-gtk + catppuccin-cursors + catppuccin-papirus-folders + catppuccin-grub + ]; + }; + }; + + services.xserver = { + enable = true; + displayManager.gdm.enable = true; + desktopManager.gnome.enable = true; + windowManager.openbox.enable = true; + + xkb = { + layout = "us"; + variant = ""; + }; + }; + + services.printing.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + hardware.graphics.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + users.users.catalin = { + isNormalUser = true; + description = "catalin"; + shell = pkgs.fish; + useDefaultShell = true; + extraGroups = [ "networkmanager" "wheel" "docker" "nas" ]; + packages = with pkgs; [ flatpak ]; + }; + users.groups.nas.gid = 568; + + programs.firefox.enable = true; + # Enable smart card service and eID tooling (AutoFirma stack) + services.pcscd.enable = true; + programs.autofirma = { + enable = true; + firefoxIntegration.enable = true; + }; + programs.dnieremote = { + enable = true; + jumpIntro = "no"; + wifiPort = 9501; + usbPort = 9501; + openFirewall = false; + }; + programs.configuradorfnmt = { + enable = true; + firefoxIntegration.enable = true; + }; + # Configure Firefox PKCS#11 modules for DNIe and OpenSC + programs.firefox.policies = { + SecurityDevices = { + "OpenSC PKCS#11" = "${pkgs.opensc}/lib/opensc-pkcs11.so"; + "DNIeRemote" = "${config.programs.dnieremote.finalPackage}/lib/libdnieremotepkcs11.so"; + }; + }; + nixpkgs.config.allowUnfree = true; + services.flatpak.enable = true; + programs.nix-ld.enable = true; + + # Merge base packages with host-specific packages + environment.systemPackages = (import ../../base/packages.nix pkgs) ++ (import ./packages.nix pkgs); + + programs = { + bash = { + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; + fish.enable = true; + steam = { + enable = true; + package = pkgs.steam.override { + extraLibraries = p: with p; [ (lib.getLib networkmanager) ]; + }; + }; + }; + + xdg.portal.enable = true; + xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + xdg.portal.config.common.default = "gtk"; + + programs.mtr.enable = true; + programs.dconf.enable = true; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + systemd.services.flatpak-repo = { + wantedBy = [ "multi-user.target" ]; + path = [ pkgs.flatpak ]; + script = '' + flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + ''; + }; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 1w"; + }; + + fonts.packages = with pkgs; [ + atkinson-hyperlegible + ]; + + boot.kernel.sysctl."net.ipv4.ip_forward" = 1; + services.openssh.enable = true; + services.tailscale.enable = true; + virtualisation.docker.enable = true; + networking.nameservers = [ "192.168.1.7" "1.1.1.1" ]; + + nix.extraOptions = '' + trusted-users = root catalin + ''; + + system.autoUpgrade.enable = true; + system.stateVersion = "24.11"; +} diff --git a/nix/hosts/limgrave/hardware-configuration.nix b/nix/hosts/limgrave/hardware-configuration.nix new file mode 100644 index 0000000..7013bdc --- /dev/null +++ b/nix/hosts/limgrave/hardware-configuration.nix @@ -0,0 +1,82 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/07b5dda3-2fcd-494b-893c-72301d637e9a"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/04FD-A91D"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + +# fileSystems."/snap/acestreamplayer/17" = +# { device = "/var/lib/snapd/snaps/acestreamplayer_17.snap"; +# fsType = "squashfs"; +# options = [ "loop" ]; +# }; +# +# fileSystems."/snap/core22/1722" = +# { device = "/var/lib/snapd/snaps/core22_1722.snap"; +# fsType = "squashfs"; +# options = [ "loop" ]; +# }; +# +# fileSystems."/snap/snapd/23258" = +# { device = "/var/lib/snapd/snaps/snapd_23258.snap"; +# fsType = "squashfs"; +# options = [ "loop" ]; +# }; +# + fileSystems."/mnt/zeruel/nas1" = + { device = "zeruel.fuku:/mnt/pool1/nas1"; + fsType = "nfs"; + options = [ "x-systemd.automount" "noauto" ]; + }; + + fileSystems."/mnt/zeruel/dcsi" = + { device = "zeruel.fuku:/mnt/pool1/dcsi"; + fsType = "nfs"; + options = [ "x-systemd.automount" "noauto" ]; + }; + + fileSystems."/mnt/windoze2" = + { device = "/dev/disk/by-uuid/6084BE5384BE2B82"; + fsType = "ntfs-3g"; + options = [ "rw" "uid=1000"]; + }; + fileSystems."/mnt/windoze" = + { device = "/dev/disk/by-uuid/46B01460B01458AF"; + fsType = "ntfs-3g"; + options = [ "rw" "uid=1000"]; + }; + swapDevices = + [ { device = "/dev/disk/by-uuid/03ecd98d-013f-4476-b43a-bcae0bc1de67"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.br-71a907d8e6fd.useDHCP = lib.mkDefault true; + # networking.interfaces.docker0.useDHCP = lib.mkDefault true; + # networking.interfaces.eno1.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/limgrave/nixos/packages.nix b/nix/hosts/limgrave/packages.nix similarity index 53% rename from hosts/limgrave/nixos/packages.nix rename to nix/hosts/limgrave/packages.nix index 0ead3d5..ede77dd 100644 --- a/hosts/limgrave/nixos/packages.nix +++ b/nix/hosts/limgrave/packages.nix @@ -1,14 +1,30 @@ - pkgs: with pkgs; [ - bat - git - neovim - jetbrains-toolbox - coder +pkgs: with pkgs; [ kitty steam steam-run + vesktop + python311 + protonup-qt + jellyfin-media-player + spotify + adwaita-icon-theme + fishPlugins.z + fishPlugins.tide + fishPlugins.transient-fish + fishPlugins.done + fishPlugins.colored-man-pages + lutris + telegram-desktop + restic + bitwarden + pre-commit + cargo + inconsolata + google-chrome + yt-dlp mpv gnumake + stremio kubernetes-helm opentofu kubeseal @@ -19,8 +35,14 @@ awscli2 kor exiftool + jetbrains-toolbox + chiaki-ng gnome-themes-extra + tela-circle-icon-theme hmcl + rose-pine-gtk-theme + rose-pine-icon-theme + rose-pine-cursor vlc unrar-wrapper atkinson-hyperlegible @@ -30,55 +52,26 @@ hunspellDicts.en_US sqlite-interactive ffmpeg + filezilla lrcget + picard + gimp yq + qbittorrent p7zip ansible k3sup gamemode lm_sensors appimage-run + coder xcolor - samrewritten - protontricks - nmap - terragrunt - adwaita-icon-theme - ayugram-desktop - restic - pre-commit - cargo - inconsolata - k9s - kubectl - dotter - kubecolor - trash-cli - gnomeExtensions.appindicator - bruno - devenv - vim - direnv - marble-shell-theme - colloid-gtk-theme - colloid-icon-theme - sysprof - steam-run - streamlink - twitch-chat-downloader - jq - hmcl - tmux - atuin - tor - tor-browser - remmina - yt-dlp - mangohud - difftastic - libheif - ffmpegthumbnailer signal-desktop - tflint - kubeconform - ] + element-desktop + pavucontrol + samrewritten + audacity + mullvad-browser + mullvad-vpn + limo +] diff --git a/nix/packages.nix b/nix/packages.nix new file mode 100644 index 0000000..0d423ca --- /dev/null +++ b/nix/packages.nix @@ -0,0 +1,121 @@ +pkgs: with pkgs; [ + vim + wget + kitty + steam + steam-run + vesktop + protonup-qt + jellyfin-media-player + spotify + adwaita-icon-theme + fishPlugins.z + fishPlugins.tide + fishPlugins.transient-fish + fishPlugins.done + fishPlugins.colored-man-pages + lutris + telegram-desktop + leaf + restic + bitwarden + tmux + git + dotter + pre-commit + kubectl + krew + k9s + trashy + cargo + inconsolata + devenv + google-chrome + discord + topgrade + ruff + python311 + yt-dlp + mpv + gnumake + stremio + kubernetes-helm + opentofu + git-cliff + kubeseal + difftastic + unzip + openssl + xclip + jdk + fuse + prismlauncher + resticprofile + gnupg + awscli2 + r2modman + kor + exiftool + samrewritten + jetbrains-toolbox + atuin + hadolint + delta + bottom + bat + dust + eza + jq + popeye + kubecolor + kubeconform + kube-score + uv + chiaki-ng + gnome-themes-extra + tela-circle-icon-theme + docker-compose + neovim + obs-studio + ncdu + hmcl + rose-pine-gtk-theme + rose-pine-icon-theme + rose-pine-cursor + vlc + unrar-wrapper + atkinson-hyperlegible + libreoffice-qt + hunspell + hunspellDicts.es_ES + hunspellDicts.en_US + sqlite-interactive + direnv + ffmpeg + filezilla + lrcget + picard + asciinema + gimp + yq + qbittorrent + afetch + p7zip + ansible + k3sup + gamemode + lm_sensors + appimage-run + firefox-devedition + coder + xcolor + signal-desktop + element-desktop + pavucontrol + zapzap + altus + nexusmods-app + cargo + rustc + samrewritten +] diff --git a/conf.d/resticprofile.schema.json b/resticprofile.schema.json similarity index 100% rename from conf.d/resticprofile.schema.json rename to resticprofile.schema.json diff --git a/conf.d/resticprofile.toml b/resticprofile.toml similarity index 100% rename from conf.d/resticprofile.toml rename to resticprofile.toml diff --git a/conf.d/sshconfig b/sshconfig similarity index 72% rename from conf.d/sshconfig rename to sshconfig index ed7d333..97e637c 100644 --- a/conf.d/sshconfig +++ b/sshconfig @@ -119,14 +119,4 @@ Host fuku.dd02 Host fuku.dd01 HostName dd01.fuku User root - IdentityFile ~/.ssh/id_ed25519 -# --- START CODER JETBRAINS TOOLBOX mbcode.i.mercedes-benz.com -Host coder-jetbrains-toolbox-mbcode.i.mercedes-benz.com--* - ProxyCommand /home/catalin/.local/share/coder-toolbox/mbcode.i.mercedes-benz.com/coder-linux-amd64 --global-config /home/catalin/.local/share/coder-toolbox/mbcode.i.mercedes-benz.com/config --url https://mbcode.i.mercedes-benz.com/ ssh --stdio --network-info-dir /home/catalin/.local/share/coder-toolbox/ssh-network-metrics --usage-app=jetbrains --ssh-host-prefix coder-jetbrains-toolbox-mbcode.i.mercedes-benz.com-- %h - ConnectTimeout 0 - StrictHostKeyChecking no - UserKnownHostsFile /dev/null - LogLevel ERROR - SetEnv CODER_SSH_SESSION_TYPE=JetBrains - -# --- END CODER JETBRAINS TOOLBOX mbcode.i.mercedes-benz.com + IdentityFile ~/.ssh/id_ed25519 \ No newline at end of file diff --git a/conf.d/timewarrior.cfg b/timewarrior.cfg similarity index 100% rename from conf.d/timewarrior.cfg rename to timewarrior.cfg diff --git a/conf.d/tmux.conf b/tmux.conf similarity index 100% rename from conf.d/tmux.conf rename to tmux.conf diff --git a/conf.d/topgrade.toml b/topgrade.toml similarity index 100% rename from conf.d/topgrade.toml rename to topgrade.toml diff --git a/utils/asciify.sh b/utils/asciify.sh new file mode 100755 index 0000000..0f9e31d --- /dev/null +++ b/utils/asciify.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +ROOT=$(dirname "$(readlink -f "$0")") +tail +3 $ROOT/asciify.txt | rofi -eh 2 -dmenu | cut -f1 -d'|' | xargs | xclip -selection clipboard diff --git a/utils/asciify.txt b/utils/asciify.txt new file mode 100644 index 0000000..a1fe204 --- /dev/null +++ b/utils/asciify.txt @@ -0,0 +1,31 @@ +EMOTE| TAG +=============================== +¯\\_(ツ)_/¯| shrug +( ͡° ͜ʖ ͡°) | lemmyface +ಠ_ಠ| angry +(╯°□°)╯| more angry +༼ つ ◕_◕ ༽つ| gib +ᕕ( ᐛ )ᕗ | walk +(◉-◉)| nerd +(⌐⊙_⊙)| nerd2 +(ᄒ︹ᄒ)| sad +(῏Ṵ῏) | serious +(⌐■_■)| coolguy +( ႎ _ ႎ | sigh +( ၜ 𝄩 ၜ | kewl +ဨ(ၜ ͜ ၜ)| im listenin +(⨪_⨪)| meh +(⨪ˬ⨪)| :v +(𐨨𐭃𐨨)| hmpf +(৲ဓ―ဓ)৲| surething +(☞゚ヮ゚)☞| mahman +ԅ(≖‿≖ԅ)| creepy look +[̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅]| skrilla +[̲̅$̲̅(̲̅ιο̲̅̅)̲̅$̲̅]| dollar +ಥ_ಥ| cryin +(⊙_☉)| derp +ლ(ಠ_ಠლ)| why +(ง •̀_•́)ง| fite me +(👁 ͜ʖ👁)| im looking, respectfully +†| cross + diff --git a/utils/curl2tar.sh b/utils/curl2tar.sh new file mode 100755 index 0000000..27fae06 --- /dev/null +++ b/utils/curl2tar.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -eou pipefail + +curl -L $1 | tar xvzf - diff --git a/utils/dlm.sh b/utils/dlm.sh new file mode 100755 index 0000000..135aa66 --- /dev/null +++ b/utils/dlm.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +# Download files using yt-dlp -x + +# Usage: dlm.sh [URL1 ... URLn] + +# Dependencies: yt-dlp + +# Check if yt-dlp is installed +if ! command -v yt-dlp &> /dev/null; then + echo "yt-dlp is not installed" + exit 1 +fi + +# Check if URLs are provided +if [ "$#" -eq 0 ]; then + echo "No URLs provided" + exit 1 +fi + +# Download files using yt-dlp -x and save them without the youtube id +yt-dlp -x --audio-format mp3 --output "%(title)s.%(ext)s" "$@" + +# Change the file's owner to 568:568 +# Change the file's permissions to 770 +sudo chown 568:568 ./*.mp3 +sudo chmod 770 ./*.mp3 \ No newline at end of file diff --git a/utils/launcher b/utils/launcher new file mode 100755 index 0000000..4d9f4ab --- /dev/null +++ b/utils/launcher @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +rofi \ + -show drun \ + -modi run,drun,ssh,calc \ + -scroll-method 0 \ + -drun-match-fields all \ + -drun-display-format "{name}" \ + -terminal 'kermit -e' \ + -kb-cancel Escape \ + -theme "$HOME"/.config/rofi/config/launcher.rasi diff --git a/conf.d/utils/patch-eldenring.sh b/utils/patch-eldenring.sh similarity index 100% rename from conf.d/utils/patch-eldenring.sh rename to utils/patch-eldenring.sh diff --git a/utils/set-monitors.sh b/utils/set-monitors.sh new file mode 100755 index 0000000..c7d5b08 --- /dev/null +++ b/utils/set-monitors.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -eou pipefail +base_command="xrandr -q | grep connected" +monitors=$(bash -c "$base_command") +monitors_len=$(bash -c "$base_command" | grep -w 'connected' | wc -l) +if [[ "$monitors_len" -eq 2 ]]; +then + xrandr --auto --output eDP-1 --mode 1920x1080 --right-of HDMI-2 + bspc monitor eDP-1 -d I II III IV V + bspc monitor HDMI-2 -d VI VII VIII IX X + +else + bspc monitor eDP-1 -d I II III IV V VI VII VIII IX X +fi diff --git a/utils/toggle-keyboard-layout.sh b/utils/toggle-keyboard-layout.sh new file mode 100755 index 0000000..87510a1 --- /dev/null +++ b/utils/toggle-keyboard-layout.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail +(setxkbmap -query | grep -q "layout:\s\+us") && setxkbmap es || setxkbmap us +notify-send "layout: $(setxkbmap -query | tail -1 | awk '{print $2}')" + + + diff --git a/conf.d/vimrc b/vimrc similarity index 100% rename from conf.d/vimrc rename to vimrc