diff --git a/config/ansible/inventory.ini b/config/ansible/inventory.ini index 59a8bc3..95d64a3 100644 --- a/config/ansible/inventory.ini +++ b/config/ansible/inventory.ini @@ -1,5 +1,6 @@ [workstations] mennos-laptop ansible_connection=local +mennos-cosmic-laptop ansible_connection=local mennos-desktop ansible_connection=local [servers] diff --git a/config/ansible/playbook.yml b/config/ansible/playbook.yml index 1aeaf85..d85efba 100644 --- a/config/ansible/playbook.yml +++ b/config/ansible/playbook.yml @@ -12,7 +12,7 @@ - name: Include workstation tasks ansible.builtin.import_tasks: tasks/workstations/workstation.yml - when: hostname in ['mennos-laptop', 'mennos-desktop'] + when: hostname in ['mennos-laptop', 'mennos-cosmic-laptop', 'mennos-desktop'] - name: Include server tasks ansible.builtin.import_tasks: tasks/servers/server.yml diff --git a/config/ansible/tasks/global/symlinks.yml b/config/ansible/tasks/global/symlinks.yml index cd85c3e..de68da8 100644 --- a/config/ansible/tasks/global/symlinks.yml +++ b/config/ansible/tasks/global/symlinks.yml @@ -28,6 +28,7 @@ gitconfig_mapping: mennos-desktop: "$DOTFILES_PATH/config/git/gitconfig.linux" mennos-laptop: "$DOTFILES_PATH/config/git/gitconfig.linux" + mennos-cosmic-laptop: "$DOTFILES_PATH/config/git/gitconfig.linux" mennos-server: "$DOTFILES_PATH/config/git/gitconfig.mennos-server" mennos-cloud-server: "$DOTFILES_PATH/config/git/gitconfig.mennos-server" mennos-vm: "$DOTFILES_PATH/config/git/gitconfig.mennos-server" @@ -45,6 +46,7 @@ authorized_keys_mapping: mennos-desktop: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-desktop" mennos-laptop: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-laptop" + mennos-cosmic-laptop: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-laptop" mennos-server: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-server" mennos-cloud-server: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-server" mennos-vm: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-server" diff --git a/config/ansible/tasks/workstations/flatpaks.yml b/config/ansible/tasks/workstations/flatpaks.yml index 4e6b9ef..6737d89 100644 --- a/config/ansible/tasks/workstations/flatpaks.yml +++ b/config/ansible/tasks/workstations/flatpaks.yml @@ -32,9 +32,9 @@ ansible.builtin.set_fact: desired_system_flatpaks: # GNOME Software - - org.gnome.Extensions - - org.gnome.Weather - - org.gnome.Sudoku + - "{{ 'org.gnome.Extensions' if (ansible_facts.env.XDG_CURRENT_DESKTOP is defined and 'GNOME' in ansible_facts.env.XDG_CURRENT_DESKTOP) else omit }}" + - "{{ 'org.gnome.Weather' if (ansible_facts.env.XDG_CURRENT_DESKTOP is defined and 'GNOME' in ansible_facts.env.XDG_CURRENT_DESKTOP) else omit }}" + - "{{ 'org.gnome.Sudoku' if (ansible_facts.env.XDG_CURRENT_DESKTOP is defined and 'GNOME' in ansible_facts.env.XDG_CURRENT_DESKTOP) else omit }}" # Games - io.github.openhv.OpenHV @@ -50,6 +50,12 @@ - tv.plex.PlexDesktop - io.bassi.Amberol + # Messaging + - org.telegram.desktop + - org.signal.Signal + - com.rtosta.zapzap + - io.github.equicord.equibop + # Utilities - org.fkoehler.KTailctl - de.haeckerfelix.AudioSharing @@ -66,7 +72,6 @@ - io.github.nokse22.Exhibit - net.nokyan.Resources - dev.zed.Zed - - page.tesk.Refine - io.github.flattool.Ignition - io.github.bytezz.IPLookup - org.gaphor.Gaphor @@ -95,11 +100,11 @@ name: "{{ item }}" state: present method: system - loop: "{{ desired_system_flatpaks }}" + loop: "{{ desired_system_flatpaks | reject('equalto', omit) | list }}" - name: Remove undesired system Flatpaks community.general.flatpak: name: "{{ item }}" state: absent method: system - loop: "{{ installed_system_flatpaks.stdout_lines | difference(desired_system_flatpaks) }}" + loop: "{{ installed_system_flatpaks.stdout_lines | difference(desired_system_flatpaks | reject('equalto', omit) | list) }}" diff --git a/config/ansible/tasks/workstations/snaps.yml b/config/ansible/tasks/workstations/snaps.yml index db1bf00..4c5bc9f 100644 --- a/config/ansible/tasks/workstations/snaps.yml +++ b/config/ansible/tasks/workstations/snaps.yml @@ -43,12 +43,6 @@ - name: Define desired Snaps ansible.builtin.set_fact: desired_snaps: - - name: telegram-desktop - classic: false - - name: whatsapp-desktop-client - classic: false - - name: code - classic: true - name: beekeeper-studio classic: false - name: steam diff --git a/config/ansible/tasks/workstations/workstation.yml b/config/ansible/tasks/workstations/workstation.yml index 2d62afe..35ba9f9 100644 --- a/config/ansible/tasks/workstations/workstation.yml +++ b/config/ansible/tasks/workstations/workstation.yml @@ -6,16 +6,18 @@ - name: Include GNOME Extensions tasks ansible.builtin.import_tasks: tasks/workstations/gnome-extensions.yml + when: ansible_facts.env.XDG_CURRENT_DESKTOP is defined and 'GNOME' in ansible_facts.env.XDG_CURRENT_DESKTOP - name: Include Firefox APT installation tasks ansible.builtin.import_tasks: tasks/workstations/firefox-apt.yml - when: ansible_pkg_mgr == 'apt' + when: ansible_pkg_mgr == 'apt' and ansible_facts.packages.snapd is defined - name: Include flatpaks tasks ansible.builtin.import_tasks: tasks/workstations/flatpaks.yml - name: Include snaps tasks ansible.builtin.import_tasks: tasks/workstations/snaps.yml + when: ansible_facts.packages.snapd is defined - name: Include Zen browser tasks ansible.builtin.import_tasks: tasks/workstations/zen-browser.yml diff --git a/config/git/gitconfig.linux b/config/git/gitconfig.linux index 7e81001..befc56a 100644 --- a/config/git/gitconfig.linux +++ b/config/git/gitconfig.linux @@ -26,3 +26,9 @@ [init] defaultBranch = main +[credential "https://github.com"] + helper = + helper = !/home/menno/.nix-profile/bin/gh auth git-credential +[credential "https://gist.github.com"] + helper = + helper = !/home/menno/.nix-profile/bin/gh auth git-credential diff --git a/config/home-manager/flake.lock b/config/home-manager/flake.lock index ec1419d..5ff5d5b 100644 --- a/config/home-manager/flake.lock +++ b/config/home-manager/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1747020534, - "narHash": "sha256-D/6rkiC6w2p+4SwRiVKrWIeYzun8FBg7NlMKMwQMxO0=", + "lastModified": 1747331121, + "narHash": "sha256-3MmiUN/jOHBHQUnjqzg6qKArc17j2OS6jisEppDY4g8=", "owner": "nix-community", "repo": "home-manager", - "rev": "b4bbdc6fde16fc2051fcde232f6e288cd22007ca", + "rev": "1eec32f0efe3b830927989767a9e6ece0d82d608", "type": "github" }, "original": { @@ -23,11 +23,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746957726, - "narHash": "sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5+SHJkS5ID/Jo=", + "lastModified": 1747209494, + "narHash": "sha256-fLise+ys+bpyjuUUkbwqo5W/UyIELvRz9lPBPoB0fbM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a39ed32a651fdee6842ec930761e31d1f242cb94", + "rev": "5d736263df906c5da72ab0f372427814de2f52f8", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1746904237, - "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", + "lastModified": 1747179050, + "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", + "rev": "adaa24fbf46737f3f1b5497bf64bae750f82942e", "type": "github" }, "original": { diff --git a/config/home-manager/flake.nix b/config/home-manager/flake.nix index 49241bb..d74ca01 100644 --- a/config/home-manager/flake.nix +++ b/config/home-manager/flake.nix @@ -109,6 +109,19 @@ }; }; + "mennos-cosmic-laptop" = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ ./home.nix ]; + extraSpecialArgs = { + inherit + pkgs + pkgs-unstable + ; + isServer = false; + hostname = "mennos-cosmic-laptop"; + }; + }; + "mennos-hobbypc" = home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = [ ./home.nix ]; diff --git a/config/home-manager/packages/workstation/packages.nix b/config/home-manager/packages/workstation/packages.nix index e918b66..b9822b0 100644 --- a/config/home-manager/packages/workstation/packages.nix +++ b/config/home-manager/packages/workstation/packages.nix @@ -14,10 +14,8 @@ in ## Utilities tea # A Gitea official CLI client mission-center # Task Manager like Windows 11 - gnome-tweaks pinta # Paint.NET alternative smile # Emoji picker - gnome-boxes # Virtual machine manager deja-dup # Backup tool sqlitebrowser # SQLite database manager gparted # Used to nuke Windows off of my system @@ -31,10 +29,6 @@ in ## Dev tools vscodium - ## Chat Apps - vesktop - signal-desktop - ## Multimedia plex-media-player vlc diff --git a/config/home-manager/workstation/dconf.nix b/config/home-manager/workstation/dconf.nix index 1980a0d..75029bc 100644 --- a/config/home-manager/workstation/dconf.nix +++ b/config/home-manager/workstation/dconf.nix @@ -28,8 +28,8 @@ ''; }; }; - - dconf = { + # Only apply dconf settings if running GNOME + dconf = pkgs.lib.mkIf (builtins.getEnv "XDG_CURRENT_DESKTOP" == "GNOME") { enable = true; settings = { "org/gnome/desktop/background" = { @@ -53,7 +53,6 @@ }; # Pinned apps - # add more by listing them with `dconf read /org/gnome/shell/favorite-apps | sed "s/,//g; s/'/\"/g"` then copy pasting the output here "org/gnome/shell" = { favorite-apps = [ "firefox.desktop" diff --git a/config/home-manager/workstation/default-apps.nix b/config/home-manager/workstation/default-apps.nix index f6cacf8..ad9470d 100644 --- a/config/home-manager/workstation/default-apps.nix +++ b/config/home-manager/workstation/default-apps.nix @@ -12,34 +12,6 @@ # default file manager "inode/directory" = [ "nemo.desktop" ]; - "application/x-gnome-saved-search" = [ "nemo.desktop" ]; - - # Geary - "x-scheme-handler/mailto" = [ "org.gnome.Geary.desktop" ]; - - # Loupe (Image Viewer) - "image/jpeg" = [ "org.gnome.Loupe.desktop" ]; - "image/png" = [ "org.gnome.Loupe.desktop" ]; - "image/gif" = [ "org.gnome.Loupe.desktop" ]; - "image/webp" = [ "org.gnome.Loupe.desktop" ]; - "image/tiff" = [ "org.gnome.Loupe.desktop" ]; - "image/x-tga" = [ "org.gnome.Loupe.desktop" ]; - "image/vnd-ms.dds" = [ "org.gnome.Loupe.desktop" ]; - "image/x-dds" = [ "org.gnome.Loupe.desktop" ]; - "image/bmp" = [ "org.gnome.Loupe.desktop" ]; - "image/vnd.microsoft.icon" = [ "org.gnome.Loupe.desktop" ]; - "image/vnd.radiance" = [ "org.gnome.Loupe.desktop" ]; - "image/x-exr" = [ "org.gnome.Loupe.desktop" ]; - "image/x-portable-bitmap" = [ "org.gnome.Loupe.desktop" ]; - "image/x-portable-graymap" = [ "org.gnome.Loupe.desktop" ]; - "image/x-portable-pixmap" = [ "org.gnome.Loupe.desktop" ]; - "image/x-portable-anymap" = [ "org.gnome.Loupe.desktop" ]; - "image/x-qoi" = [ "org.gnome.Loupe.desktop" ]; - "image/svg+xml" = [ "org.gnome.Loupe.desktop" ]; - "image/svg+xml-compressed" = [ "org.gnome.Loupe.desktop" ]; - "image/avif" = [ "org.gnome.Loupe.desktop" ]; - "image/heic" = [ "org.gnome.Loupe.desktop" ]; - "image/jxl" = [ "org.gnome.Loupe.desktop" ]; # VLC (Video Player) "video/x-ogm+ogg" = [ "vlc.desktop" ]; @@ -85,13 +57,6 @@ "video/x-ogm" = [ "vlc.desktop" ]; "video/avi" = [ "vlc.desktop" ]; "video/x-mpeg-system" = [ "vlc.desktop" ]; - - # Totem (for those few formats that default to it) - "video/vivo" = [ "org.gnome.Totem.desktop" ]; - "video/vnd.vivo" = [ "org.gnome.Totem.desktop" ]; - "video/x-flic" = [ "org.gnome.Totem.desktop" ]; - "video/x-mjpeg" = [ "org.gnome.Totem.desktop" ]; - "video/x-totem-stream" = [ "org.gnome.Totem.desktop" ]; }; }; } diff --git a/config/home-manager/workstation/gnome-extensions.nix b/config/home-manager/workstation/gnome-extensions.nix index 8949c9d..4cb5bfe 100644 --- a/config/home-manager/workstation/gnome-extensions.nix +++ b/config/home-manager/workstation/gnome-extensions.nix @@ -1,10 +1,6 @@ -{ - config, - pkgs-unstable, - pkgs, - ... -}: -{ +{ config, pkgs-unstable, pkgs, lib, ... }: + +lib.mkIf (builtins.match ".*GNOME.*" (builtins.getEnv "XDG_CURRENT_DESKTOP") != null) { # We run most extensions from unstable because they are more up-to-date home.packages = with pkgs.gnomeExtensions; diff --git a/config/home-manager/workstation/keyboard-shortcuts.nix b/config/home-manager/workstation/keyboard-shortcuts.nix index 2025771..24639a0 100644 --- a/config/home-manager/workstation/keyboard-shortcuts.nix +++ b/config/home-manager/workstation/keyboard-shortcuts.nix @@ -1,5 +1,6 @@ -{ pkgs, ... }: -{ +{ pkgs, lib, ... }: + +lib.mkIf (builtins.match ".*GNOME.*" (builtins.getEnv "XDG_CURRENT_DESKTOP") != null) { dconf.settings = { "org/gnome/shell/keybindings" = { show-screenshot-ui = [ diff --git a/setup.sh b/setup.sh index a1de280..c84b62e 100755 --- a/setup.sh +++ b/setup.sh @@ -301,7 +301,7 @@ warning_prompt() { log_error "Please ensure you have a backup of your data before proceeding." log_error "This script will modify system files and may require sudo permissions." echo "" - log_info "This script has been tested on Ubuntu 22.04, 24.04, 24.10, Debian 12 and Fedora 41." + log_info "This script has been tested on Ubuntu 22.04, 24.04, 24.10, Pop!_OS 24.04 Alpha 7, Debian 12 and Fedora 41." log_info "Setup starts in 10 seconds, to abort use Ctrl+C to exit NOW." echo "" sleep 10 @@ -418,6 +418,13 @@ check_compatibility() { sleep 5 check_command_availibility "apt" ;; + Pop!_OS*) + log_success "Detected Pop!_OS. Proceeding with setup..." + log_warning "Only COSMIC alpha is supported, other versions are not tested." + log_warning "Continueing in 5 seconds..." + sleep 5 + check_command_availibility "apt" + ;; *) die "Unsupported distribution: $distro" ;; diff --git a/vscode/settings.json b/vscode/settings.json index 163f9d2..f09db13 100755 --- a/vscode/settings.json +++ b/vscode/settings.json @@ -1,6 +1,5 @@ { "security.workspace.trust.untrustedFiles": "open", - "window.zoomLevel": 0.8, "editor.fontFamily": "Hack Nerd Font", "terminal.integrated.fontFamily": "Hack Nerd Font", "github.copilot.enable": {