Skip to content

dotfiles preparado para programar con python, con instalación de paquetes multisistema

License

Notifications You must be signed in to change notification settings

SENTUstudio/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  █▀ █▀▀ █▄░█ ▀█▀ █░█  ┎┤  Ingeniería de Datos & Data Science  ├┒
  ▄█ ██▄ █░▀█ ░█░ █▄█  ┖┤              en Python               ├┚
              .studio

dotfiles

Proyecto que se encarga de hacer una post-instalación a un sistema operativo resién instalado, donde instala las aplicaciones bases de mi preferencia y copia mis archivos de configuración al nuevo sistema. consta de un script llamado sentu_install.py que se usa por medio de curl para llamar a todo el proyecto en formato zip desde un repositorio, lo extrae y ejecuta la instalación mínima requerida para poder ejecutar las Fases de post-instalación.

Su funcionamiento es simple, con la instrucción de instalar (mencionada más abajo) se toma el script sentu_install.py desde el repositorio y se ejecuta, donde comprueba los requerimientos mínimos para su funcionamiento y si no los tiene los instala, luego clona el repositorio dotfiles y ejecuta Ansible para realizar la post-instalación de paquetes y enlaces de mis archivos config

Esta versión del proyecto respalda mis archivos de configuración para linux pensado primeramente y optimizado para la distro de linux Fedora, pero la idea es que sea multi-sistema, para incluir las distros más famosas de linux, mac y windows

Estructura de Archviso del proyecto

El proyecto cuenta con una estructura personalizada adaptada para proyectos python

dotfiles
├── ansible
│   ├── playbook.yml
│   ├── roles
│   │   ├── add_repositories
│   │   │   └── tasks
│   │   │       └── main.yml
│   │   ├── base_system_configuration
│   │   │   └── tasks
│   │   │       └── main.yml
│   │   ├── dotfiles_management
│   │   │   └── tasks
│   │   │       └── main.yml
│   │   ├── install_core_dependencies
│   │   │   └── tasks
│   │   │       └── main.yml
│   │   ├── install_extended_dependencies
│   │   │   └── tasks
│   │   │       └── main.yml
│   │   ├── install_post_install
│   │   │   └── tasks
│   │   │       └── main.yml
│   │   ├── install_rye
│   │   │   └── tasks
│   │   │       └── main.yml
│   │   └── install_uv
│   │       └── tasks
│   │           └── main.yml
│   └── vars
│       └── installer_config.yaml
├── config
│   ├── alacritty
│   ├── bspwm
│   ├── fastfetch
│   ├── gh
│   ├── git
│   ├── kitty
│   ├── lazygit
│   ├── mpd
│   ├── ncmpcpp
│   ├── nvim
│   ├── ohmyposh
│   ├── paru
│   ├── ranger
│   ├── sentu
│   ├── tmux
│   ├── tmuxinator
│   └── zsh
├── home
│   ├── .p10k.zsh
│   └── .zshrc
├── README.md
└── sentu_install.py

Sistemas Operativos probados

  • Fedora KDE 41+

  • OpenSUSE

Instalación

curl -LsSf https://raw.githubusercontent.com/SENTUstudio/dotfiles/refs/heads/main/sentu_install.py | python3

Diagrama de flujo

flowchart TD
    %% Define styles for C4-like appearance
    classDef person fill:#08427B,color:#fff,stroke:#052E56,stroke-width:2px
    classDef externalSystem fill:#999999,stroke:#666666,stroke-width:2px
    classDef container fill:#438DD5,color:#fff,stroke:#2E6295,stroke-width:2px
    classDef component fill:#85BBF0,color:#000,stroke:#5A8CBF,stroke-width:2px
    classDef database fill:#FF8F40,color:#000,stroke:#CC7A3C,stroke-width:2px
    classDef boundary fill:none,stroke:#444,stroke-width:2px,stroke-dasharray:5 5

    %% Installation Process with C4 styling
    subgraph boundary_install ["Proceso de Instalación"]
        A["sentu_install.py\n[Script Instalador]"]:::component
        A -->|"ejecuta"| B["Motor de Ansible Playbook\n[Motor de Orquestación]"]:::container
    end

    %% Configuration File with C4 styling
    subgraph boundary_config ["Configuración"]
        B10["installer_config.yaml\n[Base de Datos de Configuración]"]:::database
    end

    %% Ansible Components with C4 styling
    subgraph boundary_ansible ["Componentes del Motor de Ansible"]
        B1["playbook.yml\n[Playbook Principal]"]:::component
        B2["test\n[Role de Pruebas]"]:::component
        B3["base_system_configuration\n[Role de Configuración Base]"]:::component
        B4["add_repositories\n[Role de Configuración de Repositorios]"]:::component
        B5["install_core_dependencies\n[Role de Dependencias Core]"]:::component
        B6["install_uv\n[Role de Python UV]"]:::component
        B7["install_rye\n[Role de Python Rye]"]:::component
        B8["install_extended_dependencies\n[Role de Dependencias Extendidas]"]:::component
        B9["install_post_install\n[Role de Post-Instalación]"]:::component
        B11["install_fonts\n[Role de Instalación de Fuentes]"]:::component
        B12["dotfiles_management\n[Role de Gestión de Dotfiles]"]:::component
    end

    %% Deployment Targets with C4 styling
    subgraph boundary_deploy ["Destinos de Implementación"]
        C["Archivos de Configuración\n[Configuración del Sistema]"]:::container
        D["Dotfiles del Usuario\n[Entorno de Usuario]"]:::container
    end

    %% Update the flow based on the new playbook order
    B --> B1
    B1 --> B10
    B10 --> B2
    B2 --> B3
    B3 --> B4
    B4 --> B5
    B5 --> B6
    B6 --> B7
    B7 --> B8
    B8 --> B9
    B9 --> B11
    B11 --> B12

    B12 -->|"despliega"| C
    B12 -->|"copia a"| D

    %% Set boundary style
    style boundary_install fill:none,stroke:#777,stroke-width:2px,stroke-dasharray:7 5
    style boundary_config fill:none,stroke:#777,stroke-width:2px,stroke-dasharray:7 5
    style boundary_ansible fill:none,stroke:#777,stroke-width:2px,stroke-dasharray:7 5
    style boundary_deploy fill:none,stroke:#777,stroke-width:2px,stroke-dasharray:7 5

    %% Hyperlinks
    click A "https://github.com/sentustudio/dotfiles/blob/main/sentu_install.py"
    click B1 "https://github.com/sentustudio/dotfiles/blob/main/ansible/playbook.yml"
    click B2 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/test"
    click B3 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/base_system_configuration"
    click B4 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/add_repositories"
    click B5 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/install_core_dependencies"
    click B6 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/install_uv"
    click B7 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/install_rye"
    click B8 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/install_extended_dependencies"
    click B9 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/install_post_install"
    click B10 "https://github.com/sentustudio/dotfiles/blob/main/ansible/vars/installer_config.yaml"
    click B11 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/install_fonts"
    click B12 "https://github.com/sentustudio/dotfiles/tree/main/ansible/roles/dotfiles_management"
    click C "https://github.com/sentustudio/dotfiles/tree/main/config"
    click D "https://github.com/sentustudio/dotfiles/tree/main/home"
Loading