Skip to content

Instantly share code, notes, and snippets.

@aleksasiriski
Last active April 23, 2024 12:09
Show Gist options
  • Save aleksasiriski/238e38360ba9389cc5d39e8b208e34db to your computer and use it in GitHub Desktop.
Save aleksasiriski/238e38360ba9389cc5d39e8b208e34db to your computer and use it in GitHub Desktop.
My ideal Fedora Atomic Desktop setup

My ideal Fedora Atomic Desktop setup

System

Set keyboard layout

localectl set-keymap us-colemak && \
localectl set-x11-keymap us "" colemak

Update the freshly installed system

rpm-ostree upgrade && \
flatpak update

Reboot

Apps

CLI / devbox / nix

If on openSUSE MicroOS you may need to run this first and reboot:

sudo transactional-update run mksubvolume /nix

Install nix package manager:

curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

Reboot

Install devbox wrapper for nix:

curl -fsSL https://get.jetpack.io/devbox | bash

Install fish & cli tools via devbox:

devbox global add fish carapace atuin starship pfetch-rs zoxide eza bat ripgrep btop chezmoi neovim

Optional cli tools I use:

devbox global add go k9s podman-compose kubectl kubernetes-helm awscli packer hcloud nodejs nodePackages.pnpm pre-commit tflint minio-client opentofu kind

Flatpak / GUI

Install Flathub:

flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Install these essential GUI apps:

flatpak install \
	org.freedesktop.Platform.ffmpeg-full \
	com.github.wwmm.easyeffects \
	org.pipewire.Helvum

Install Steam and OBS:

flatpak install \
	com.valvesoftware.Steam \
	org.freedesktop.Platform.VulkanLayer.gamescope \
	org.freedesktop.Platform.VulkanLayer.MangoHud \
	org.freedesktop.Platform.VulkanLayer.OBSVkCapture \
	com.obsproject.Studio \
	com.obsproject.Studio.Plugin.OBSVkCapture \
	com.obsproject.Studio.Plugin.Gstreamer

KDE Plasma config

Switch Meta/Super key to open the Overview:

kwriteconfig5 --file ~/.config/kwinrc --group ModifierOnlyShortcuts --key Meta "org.kde.kglobalaccel,/component/kwin,org.kde.kglobalaccel.Component,invokeShortcut,Overview" && \
qdbus-qt6 org.kde.KWin /KWin reconfigure

Shell config (fish)

Inside ~/.config/fish/config.fish:

if status is-interactive
    PF_INFO="ascii title os host kernel uptime pkgs cpu memory wm de" pfetch
end

Inside ~/.config/fish/conf.d/aliases.fish:

if status is-interactive
    alias ls='eza -l'
    alias ll='eza -la'
    alias cat='bat'
    alias grep='rg'
    alias cd..='cd ..'
    alias ..='cd ..'
    alias dbox='distrobox'
    alias dboxc='distrobox create -i archlinux --init-hooks "sudo chsh -s /bin/fish $USER" --name'
    alias code='flatpak run com.vscodium.codium --ozone-platform=wayland'
end

Inside ~/.config/fish/conf.d/path.fish:

set PATH $PATH $HOME/.local/bin $HOME/go/bin

Inside ~/.config/fish/conf.d/sources.fish:

devbox global shellenv | source
zoxide init fish | source
carapace init fish | source
atuin init fish | source
starship init fish | source

Inside ~/.config/fish/conf.d/variables.fish:

if status is-interactive
    set -x fish_greeting
    set -x NAME     'FirstN LastN'
    set -x EMAIL    'email'
    set -x EDITOR   'nvim'
end

And disable the welcome banner:

set -U fish_greeting ""

Enable fish

Set your shell to /var/home/<username>/.local/share/devbox/global/default/.devbox/nix/profile/default/bin/fish

sudo chsh $USER

or if that doesn't work

sudo lchsh $USER

VSCodium Flatpak setup

To enable devbox global packages inside the flatpak VSCodium, using Flatseal or KDE Flatpak permissions set this in env:

PATH=/app/bin:/usr/bin:/var/home/<username>/.local/bin:/var/home/<username>/.local/share/devbox/global/default/.devbox/nix/profile/default/bin:/var/home/<username>/go/bin

And configure some preferences:

{
  "explorer.confirmDragAndDrop": false,
  "window.zoomLevel": 1,
  "terminal.integrated.defaultProfile.linux": "fish",
  "terminal.integrated.profiles.linux": {
    "bash": {
      "path": "bash",
      "icon": "terminal-bash"
    },
    "fish": {
      "path": "fish",
      "icon": "terminal"
    }
  },
  "editor.formatOnSave": true,
  "editor.indentSize": "tabSize",
  "go.toolsManagement.autoUpdate": true,
  "go.lintTool": "golangci-lint",
  "go.lintFlags": ["--fast"],
  "[go]": {
    "editor.defaultFormatter": "golang.go"
  },
  "terraform.experimentalFeatures.validateOnSave": true,
  "[terraform]": {
    "editor.defaultFormatter": "hashicorp.terraform"
  },
  "css.lint.unknownAtRules": "ignore",
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment