diff --git a/.dotter/global.toml b/.dotter/global.toml
index a63c37c..aa00ade 100644
--- a/.dotter/global.toml
+++ b/.dotter/global.toml
@@ -1,22 +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/ghostty" = "~/.config/ghostty"
-"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"
-"conf.d/autoexec.cfg" = "~/.steam/steam/steamapps/common/Counter-Strike Global Offensive/game/csgo/cfg/autoexec.cfg"
+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 20576d5..978d712 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,141 @@
-# dotfiles
+# dots
-
-Rice screenshot
-
-
+This repository contains my dotfiles and a Nix flake that supports multiple hosts (machines) with a shared base and per-host configuration.
-# limgrave
+- 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/autoexec.cfg b/conf.d/autoexec.cfg
deleted file mode 100644
index aeadb05..0000000
--- a/conf.d/autoexec.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-// Generated by CS2 Configs — autoexec.cfg
-
-// Viewmodel
-viewmodel_fov "60"
-viewmodel_offset_x "1"
-viewmodel_offset_y "1"
-viewmodel_offset_z "-1.5"
-
-// HUD & radar
-cl_radar_scale "0.4"
-cl_hud_radar_scale "1"
-cl_radar_always_centered "0"
-cl_showfps "1"
-
-// Network & performance
-rate "786432"
-fps_max "0"
-
-echo "Loaded autoexec.cfg"
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/ghostty/config b/conf.d/ghostty/config
deleted file mode 100644
index 7a00c7d..0000000
--- a/conf.d/ghostty/config
+++ /dev/null
@@ -1,44 +0,0 @@
-# theme
-background = 303446
-foreground = C6D0F5
-selection-background = F2D5CF
-selection-foreground = 303446
-cursor-color = F2D5CF
-cursor-text = 303446
-
-# 16 terminal colors
-palette = 0=#51576D
-palette = 1=#E78284
-palette = 2=#A6D189
-palette = 3=#E5C890
-palette = 4=#8CAAEE
-palette = 5=#F4B8E4
-palette = 6=#81C8BE
-palette = 7=#B5BFE2
-palette = 8=#626880
-palette = 9=#E78284
-palette = 10=#A6D189
-palette = 11=#E5C890
-palette = 12=#8CAAEE
-palette = 13=#F4B8E4
-palette = 14=#81C8BE
-palette = 15=#A5ADCE
-
-# appearance
-font-family = inconsolata
-font-size = 17
-background-opacity = 0.8
-window-decoration = true
-gtk-titlebar = true
-gtk-toolbar-style = flat
-gtk-titlebar-style = tabs
-gtk-tabs-location = bottom
-gtk-wide-tabs = false
-confirm-close-surface = false
-clipboard-read = allow
-clipboard-write = allow
-
-# maps
-keybind = ctrl+shift+enter=new_tab
-keybind = ctrl+shift+n=new_window
-keybind = ctrl+shift+backspace=close_tab
\ No newline at end of file
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 93%
rename from conf.d/fish/conf.d/aliases.fish
rename to fish/conf.d/aliases.fish
index ce44e67..a360b9c 100644
--- a/conf.d/fish/conf.d/aliases.fish
+++ b/fish/conf.d/aliases.fish
@@ -12,7 +12,6 @@ alias rm 'trash'
alias v 'vim'
alias nv 'nvim'
alias m 'make'
-alias mv 'rsync -avP --remove-source-files'
alias future-commit 'git commit --date (echo (date -d +7hours))'
alias scp 'rsync -avz'
alias rs 'rsync'
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 b717d43..0000000
--- a/flake.lock
+++ /dev/null
@@ -1,208 +0,0 @@
-{
- "nodes": {
- "atuin": {
- "inputs": {
- "fenix": "fenix",
- "flake-compat": "flake-compat",
- "flake-utils": "flake-utils",
- "nixpkgs": "nixpkgs"
- },
- "locked": {
- "lastModified": 1778629013,
- "narHash": "sha256-XrJFetPs7TsbX5Cxekj+h3hlmQLoOpB7U+c36NM/jeA=",
- "owner": "atuinsh",
- "repo": "atuin",
- "rev": "671f96b60dac49d1d2de73cc0812986a5e22ce7b",
- "type": "github"
- },
- "original": {
- "owner": "atuinsh",
- "ref": "v18.16.1",
- "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": 1786924861,
- "narHash": "sha256-hftabkb+73OcGzvwFAjCiQorAhprs9TnU1+FkGO5CIw=",
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "09ae1b85a6db412d841d60f924b23f881f0d0a38",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "ref": "release-26.05",
- "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": 1787042014,
- "narHash": "sha256-lgnV/xeEatfEnPZG0RrXS0fhcr63p3tsVvL1GdaVkJQ=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "c69ae8fb8faeb3472fd11234ba55a70ac3601f9b",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-26.05",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "root": {
- "inputs": {
- "atuin": "atuin",
- "home-manager": "home-manager",
- "nix-flatpak": "nix-flatpak",
- "nixpkgs": "nixpkgs_2",
- "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": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
- "owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
- "type": "github"
- },
- "original": {
- "id": "systems",
- "type": "indirect"
- }
- }
- },
- "root": "root",
- "version": 7
-}
diff --git a/flake.nix b/flake.nix
deleted file mode 100644
index bfbdbbf..0000000
--- a/flake.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- description = "NixOS flake";
-
- inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
- nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.7.0";
- home-manager = {
- url = "github:nix-community/home-manager/release-26.05";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- atuin.url = "github:atuinsh/atuin/v18.16.1";
- };
-
- outputs = { self, nixpkgs, nix-flatpak, systems, home-manager, ... } @ 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
- ];
- })
- ];
- };
- };
-
- 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 97%
rename from conf.d/gitconfig
rename to gitconfig
index 7927d09..f1ce21c 100644
--- a/conf.d/gitconfig
+++ b/gitconfig
@@ -12,7 +12,6 @@
[merge]
conflictstyle = diff3
- ff = only
[diff]
colorMoved = default
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 4e8aa18..0000000
--- a/hosts/limgrave/nixos/default.nix
+++ /dev/null
@@ -1,194 +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";
- cryptoModules = [
- "aes"
- # "aes_generic"
- "blowfish"
- "twofish"
- "serpent"
- "cbc"
- "xts"
- "lrw"
- "sha1"
- "sha256"
- "sha512"
- "af_alg"
- "algif_skcipher"
- "cryptd"
- "input_leds"
- ];
- };
-
- };
-
- nix = {
- settings.experimental-features = [ "nix-command" "flakes" ];
- settings.trusted-users = [ "root" "catalin" ];
- };
-
- networking = {
- hostName = "limgrave";
- networkmanager.enable = true;
- };
-
- services = {
- gvfs.enable = true;
- 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;
- jack.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;
- gamemode.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;
- permittedInsecurePackages = [
- "docker-28.5.2"
- ];
- };
- environment = {
- sessionVariables = {
- GST_PLUGIN_SYSTEM_PATH_1_0 = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" [
- pkgs.gst_all_1.gst-plugins-good
- pkgs.gst_all_1.gst-plugins-bad
- pkgs.gst_all_1.gst-plugins-ugly
- ];
- NIXOS_OZONE_WL = "1";
- };
-
- systemPackages = with pkgs; (
- import ./packages/system.nix pkgs
- ++ import ./packages/cli.nix pkgs
- ++ import ./packages/gui.nix pkgs
- ++ import ./packages/rice.nix pkgs
- ++ import ./packages/pandora.nix pkgs
- );
- loginShellInit = ''
- [[ "$(tty)" = "/dev/tty1" ]] && ~/.dotfiles/conf.d/utils/gs.sh
- '';
- };
-
- networking.nameservers = [ "192.168.1.32" "192.168.1.43" "1.1.1.1" ];
-
- system.stateVersion = "25.11";
-}
diff --git a/hosts/limgrave/nixos/flatpaks.nix b/hosts/limgrave/nixos/flatpaks.nix
deleted file mode 100644
index 4501f53..0000000
--- a/hosts/limgrave/nixos/flatpaks.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-[
- "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"
- "io.github.Foldex.AdwSteamGtk"
- "io.github.seadve.Kooha"
- "org.equicord.equibop"
- "com.discordapp.Discord"
-]
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/hosts/limgrave/nixos/packages/cli.nix b/hosts/limgrave/nixos/packages/cli.nix
deleted file mode 100644
index d31900e..0000000
--- a/hosts/limgrave/nixos/packages/cli.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-pkgs: with pkgs; [
- kubectl
- k9s
- kubecolor
- kubeseal
- kubeconform
- kubernetes-helm
- k3sup
- kustomize
- argocd
-
- opentofu
- tflint
- terragrunt
- ansible
- pulumi
- awscli2
- yq
- uv
-
- git
- neovim
- vim
- bat
- jq
- tmux
- direnv
- cargo
- python3
- poetry
- pre-commit
- shellcheck
- atuin
- dotter
- restic
- kor
- devenv
- fish-lsp
- nvtopPackages.amd
- unzip
- opencode
-
- yt-dlp
- streamlink
- lrcget
- exiftool
- hunspell
- hunspellDicts.es_ES
- hunspellDicts.en_US
-
- xclip
- unrar-wrapper
- p7zip
- xcolor
- trash-cli
- caligula
-
- steam-run
- protontricks
- mangohud
-
- android-tools
-]
diff --git a/hosts/limgrave/nixos/packages/gui.nix b/hosts/limgrave/nixos/packages/gui.nix
deleted file mode 100644
index 8e3b8b3..0000000
--- a/hosts/limgrave/nixos/packages/gui.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-pkgs: with pkgs; [
- steam
- mpv
- vlc
- jetbrains-toolbox
- coder
- kitty
- libreoffice-qt
- signal-desktop
- remmina
- ayugram-desktop
- tor-browser
- samrewritten
- ghostty
- zed-editor
-]
diff --git a/hosts/limgrave/nixos/packages/pandora.nix b/hosts/limgrave/nixos/packages/pandora.nix
deleted file mode 100644
index 7c5a36f..0000000
--- a/hosts/limgrave/nixos/packages/pandora.nix
+++ /dev/null
@@ -1,3 +0,0 @@
-pkgs: with pkgs; [
- difftastic
-]
\ No newline at end of file
diff --git a/hosts/limgrave/nixos/packages/rice.nix b/hosts/limgrave/nixos/packages/rice.nix
deleted file mode 100644
index c5741c8..0000000
--- a/hosts/limgrave/nixos/packages/rice.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-pkgs: with pkgs; [
- gnome-themes-extra
- adwaita-icon-theme
- atkinson-hyperlegible
- inconsolata
- marble-shell-theme
- colloid-gtk-theme
- colloid-icon-theme
- gnomeExtensions.appindicator
- iosevka
- ufetch
-]
\ No newline at end of file
diff --git a/hosts/limgrave/nixos/packages/system.nix b/hosts/limgrave/nixos/packages/system.nix
deleted file mode 100644
index b64ed65..0000000
--- a/hosts/limgrave/nixos/packages/system.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-pkgs: with pkgs; [
- openssl
- gnupg
- sqlite-interactive
- ffmpeg
- lm_sensors
- nmap
- gnumake
- gamemode
- libheif
- ffmpegthumbnailer
- appimage-run
- sysprof
-]
\ No newline at end of file
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/nix/hosts/limgrave/packages.nix b/nix/hosts/limgrave/packages.nix
new file mode 100644
index 0000000..ede77dd
--- /dev/null
+++ b/nix/hosts/limgrave/packages.nix
@@ -0,0 +1,77 @@
+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
+ openssl
+ xclip
+ resticprofile
+ gnupg
+ 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
+ libreoffice-qt
+ hunspell
+ hunspellDicts.es_ES
+ hunspellDicts.en_US
+ sqlite-interactive
+ ffmpeg
+ filezilla
+ lrcget
+ picard
+ gimp
+ yq
+ qbittorrent
+ p7zip
+ ansible
+ k3sup
+ gamemode
+ lm_sensors
+ appimage-run
+ coder
+ xcolor
+ signal-desktop
+ 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 50%
rename from conf.d/sshconfig
rename to sshconfig
index 9e5cdeb..97e637c 100644
--- a/conf.d/sshconfig
+++ b/sshconfig
@@ -6,17 +6,21 @@ Host fuku.ramiel
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
-Host fuku.tabris
- HostName tabris.fuku
+Host fuku.containers.root
+ HostName containers.fuku
User root
IdentityFile ~/.ssh/id_ed25519
- IdentitiesOnly yes
-Host fuku.ireul
- HostName ireul.fuku
+Host fuku.containers
+ HostName containers.fuku
+ User bullseye
+ IdentityFile ~/.ssh/id_ed25519
+
+Host fuku.sandalphon
+ HostName sandalphon.fuku
User root
IdentityFile ~/.ssh/id_ed25519
- IdentitiesOnly yes
+ IdentitiesOnly yes
Host fuku.zeruel
HostName zeruel.fuku
@@ -30,6 +34,40 @@ Host fuku.ireul
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
+Host fuku.dns
+ HostName dns.fuku
+ User root
+ IdentityFile ~/.ssh/id_ed25519
+ IdentitiesOnly yes
+
+Host fuku.cloud
+ HostName cloud.fuku
+ User root
+ IdentityFile ~/.ssh/id_ed25519
+ IdentitiesOnly yes
+
+Host fuku.pg9
+ HostName pg9.fuku
+ IdentityFile ~/.ssh/id_ed25519
+ User root
+
+Host fuku.pg15
+ HostName pg15.fuku
+ IdentityFile ~/.ssh/id_ed25519
+ User root
+
+Host fuku.smough
+ HostName smough.fuku
+ IdentityFile ~/.ssh/id_ed25519
+ User root
+
+Host fuku.gitea
+ HostName gitea.fuku
+ IdentityFile ~/.ssh/id_ed25519
+ User root
+ IdentitiesOnly yes
+ SetEnv TERM=linux
+
Host fuku.nginx
HostName nginx.fuku
IdentityFile ~/.ssh/id_ed25519
@@ -50,38 +88,35 @@ Host fuku.master2
IdentityFile ~/.ssh/id_ed25519
User ci
-Host fuku.k3m3
- HostName k3m3.fuku
- IdentityFile ~/.ssh/id_ed25519
- User root
-
-Host fuku.agent1
- HostName agent1.fuku
+Host fuku.master3
+ HostName master3.ramiel.fuku
IdentityFile ~/.ssh/id_ed25519
User ci
+Host fuku.agent1
+ HostName agent1.zeruel.fuku
+ IdentityFile ~/.ssh/id_ed25519
+ User ci
+
+Host fuku.qdevice
+ HostName qdevice.fuku
+ User root
+
+Host fuku.fz
+ HostName fz.fuku
+ User catalin
+
+Host pico
+ HostName pico.sh
+ User catalin
+ IdentityFile ~/.ssh/id_ed25519
+
Host fuku.dd02
HostName dd02.fuku
User root
IdentityFile ~/.ssh/id_ed25519
-Host fuku.d1
- HostName 192.168.1.10
+Host fuku.dd01
+ HostName dd01.fuku
User root
- IdentityFile ~/.ssh/id_ed25519
-
-Host fuku.d1
- HostName 192.168.1.13
- 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/static/rice.png b/static/rice.png
deleted file mode 100644
index 5784c68..0000000
Binary files a/static/rice.png and /dev/null differ
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