diff --git a/README.md b/README.md index f33328d..0267699 100755 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ If you add a new system you should add the relevant files to these paths. - `nconfig/nixos/hardware/`: Contains the hardware configurations for the different systems. - `config/ssh/authorized_keys`: Contains the public keys per hostname that will be symlinked to the `~/.ssh/authorized_keys` file. - `config/nixos/flake.nix`: Contains an array `nixosConfigurations` where you should be adding the new system hostname and relevant configuration. +- `config/home-manager/flake.nix`: Contains an array `homeConfigurations` where you should be adding the new system hostname and relevant configuration. ### Adding a new system diff --git a/bin/actions/update.sh b/bin/actions/update.sh index b5fb520..0a8f582 100755 --- a/bin/actions/update.sh +++ b/bin/actions/update.sh @@ -211,7 +211,7 @@ git_repos() { } homemanager() { - cd $HOME/dotfiles/config/home-manager && NIXPKGS_ALLOW_UNFREE=1 home-manager switch -b backup + cd $HOME/dotfiles/config/home-manager && NIXPKGS_ALLOW_UNFREE=1 home-manager switch -b backup --flake .#$DOTF_HOSTNAME } ensure_homemanager_installed() { diff --git a/config/home-manager/flake.lock b/config/home-manager/flake.lock new file mode 100644 index 0000000..1877c36 --- /dev/null +++ b/config/home-manager/flake.lock @@ -0,0 +1,100 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1726989464, + "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-24.05", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1730327045, + "narHash": "sha256-xKel5kd1AbExymxoIfQ7pgcX6hjw9jCgbiBjiUfSVJ8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "080166c15633801df010977d9d7474b4a6c549d7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-go": { + "locked": { + "lastModified": 1728863046, + "narHash": "sha256-DZBO2465PL5V89e8hFSJewyH4QbCPpW3ssws7ckT/0A=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d4f247e89f6e10120f911e2e2d2254a050d0f732", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d4f247e89f6e10120f911e2e2d2254a050d0f732", + "type": "github" + } + }, + "nixpkgs-vscode": { + "locked": { + "lastModified": 1728863046, + "narHash": "sha256-DZBO2465PL5V89e8hFSJewyH4QbCPpW3ssws7ckT/0A=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d4f247e89f6e10120f911e2e2d2254a050d0f732", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d4f247e89f6e10120f911e2e2d2254a050d0f732", + "type": "github" + } + }, + "nixpkgs-zed": { + "locked": { + "lastModified": 1729850857, + "narHash": "sha256-WvLXzNNnnw+qpFOmgaM3JUlNEH+T4s22b5i2oyyCpXE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "41dea55321e5a999b17033296ac05fe8a8b5a257", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "41dea55321e5a999b17033296ac05fe8a8b5a257", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixpkgs-go": "nixpkgs-go", + "nixpkgs-vscode": "nixpkgs-vscode", + "nixpkgs-zed": "nixpkgs-zed" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/config/home-manager/flake.nix b/config/home-manager/flake.nix new file mode 100644 index 0000000..cb53c15 --- /dev/null +++ b/config/home-manager/flake.nix @@ -0,0 +1,95 @@ +{ + description = "menno's dotfiles"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + + # Pinned versions for specific packages + nixpkgs-go.url = "github:nixos/nixpkgs/d4f247e89f6e10120f911e2e2d2254a050d0f732"; + nixpkgs-vscode.url = "github:nixos/nixpkgs/d4f247e89f6e10120f911e2e2d2254a050d0f732"; + nixpkgs-zed.url = "github:nixos/nixpkgs/41dea55321e5a999b17033296ac05fe8a8b5a257"; + + home-manager = { + url = "github:nix-community/home-manager/release-24.05"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = + { + self, + nixpkgs, + nixpkgs-go, + nixpkgs-vscode, + nixpkgs-zed, + home-manager, + }: + let + system = "x86_64-linux"; + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; + pkgs-go = import nixpkgs-go { + inherit system; + config.allowUnfree = true; + }; + pkgs-vscode = import nixpkgs-vscode { + inherit system; + config.allowUnfree = true; + }; + pkgs-zed = import nixpkgs-zed { + inherit system; + config.allowUnfree = true; + }; + in + { + homeConfigurations = { + "mennos-gamingpc" = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ ./home.nix ]; + extraSpecialArgs = { + inherit + pkgs + pkgs-go + pkgs-vscode + pkgs-zed + ; + isServer = false; + }; + }; + + "mennos-server" = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ ./home.nix ]; + extraSpecialArgs = { + inherit pkgs pkgs-go; + isServer = true; + }; + }; + + "mennos-laptop" = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ ./home.nix ]; + extraSpecialArgs = { + inherit + pkgs + pkgs-go + pkgs-vscode + pkgs-zed + ; + isServer = false; + }; + }; + + "homeserver-pc" = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ ./home.nix ]; + extraSpecialArgs = { + inherit pkgs pkgs-go; + isServer = true; + }; + }; + }; + }; +} diff --git a/config/home-manager/home.nix b/config/home-manager/home.nix index adea78c..e3e49f0 100644 --- a/config/home-manager/home.nix +++ b/config/home-manager/home.nix @@ -1,116 +1,40 @@ -{ config, pkgs, ... }: { - imports = [ - ./packages/default.nix - ./fonts.nix - ./gnome-extensions.nix - ./dconf.nix - ./keyboard-shortcuts.nix - ./virtualization.nix - ./packages.nix - ]; + config, + pkgs, + lib, + isServer ? false, + ... +}: + +{ + programs.home-manager.enable = true; nixpkgs.config = { allowUnfree = true; allowUnfreePredicate = pkg: true; }; - home.username = "menno"; - home.homeDirectory = "/home/menno"; - home.stateVersion = "24.05"; + imports = + [ ./packages/common/default.nix ] + ++ ( + if isServer then + [ + ./packages/server/default.nix + ./server/default.nix + ] + else + [ + ./packages/workstation/default.nix + ./workstation/default.nix + ] + ); - # Default applications - xdg.mimeApps = { - enable = true; - defaultApplications = { - # Zen Browser - "application/xhtml+xml" = [ "io.github.zen_browser.zen.desktop" ]; - "text/html" = [ "io.github.zen_browser.zen.desktop" ]; - "x-scheme-handler/http" = [ "io.github.zen_browser.zen.desktop" ]; - "x-scheme-handler/https" = [ "io.github.zen_browser.zen.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" ]; - "video/3gp" = [ "vlc.desktop" ]; - "video/3gpp" = [ "vlc.desktop" ]; - "video/3gpp2" = [ "vlc.desktop" ]; - "video/dv" = [ "vlc.desktop" ]; - "video/divx" = [ "vlc.desktop" ]; - "video/fli" = [ "vlc.desktop" ]; - "video/flv" = [ "vlc.desktop" ]; - "video/mp2t" = [ "vlc.desktop" ]; - "video/mp4" = [ "vlc.desktop" ]; - "video/mp4v-es" = [ "vlc.desktop" ]; - "video/mpeg" = [ "vlc.desktop" ]; - "video/mpeg-system" = [ "vlc.desktop" ]; - "video/msvideo" = [ "vlc.desktop" ]; - "video/ogg" = [ "vlc.desktop" ]; - "video/quicktime" = [ "vlc.desktop" ]; - "video/vnd.divx" = [ "vlc.desktop" ]; - "video/vnd.mpegurl" = [ "vlc.desktop" ]; - "video/vnd.rn-realvideo" = [ "vlc.desktop" ]; - "video/webm" = [ "vlc.desktop" ]; - "video/x-anim" = [ "vlc.desktop" ]; - "video/x-avi" = [ "vlc.desktop" ]; - "video/x-flc" = [ "vlc.desktop" ]; - "video/x-fli" = [ "vlc.desktop" ]; - "video/x-flv" = [ "vlc.desktop" ]; - "video/x-m4v" = [ "vlc.desktop" ]; - "video/x-matroska" = [ "vlc.desktop" ]; - "video/x-mpeg" = [ "vlc.desktop" ]; - "video/x-mpeg2" = [ "vlc.desktop" ]; - "video/x-ms-asf" = [ "vlc.desktop" ]; - "video/x-ms-asf-plugin" = [ "vlc.desktop" ]; - "video/x-ms-asx" = [ "vlc.desktop" ]; - "video/x-msvideo" = [ "vlc.desktop" ]; - "video/x-ms-wm" = [ "vlc.desktop" ]; - "video/x-ms-wmv" = [ "vlc.desktop" ]; - "video/x-ms-wmx" = [ "vlc.desktop" ]; - "video/x-ms-wvx" = [ "vlc.desktop" ]; - "video/x-nsv" = [ "vlc.desktop" ]; - "video/x-theora" = [ "vlc.desktop" ]; - "video/x-theora+ogg" = [ "vlc.desktop" ]; - "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" ]; + home = { + username = "menno"; + homeDirectory = "/home/menno"; + stateVersion = "24.05"; + sessionVariables = { + PATH = "${config.home.homeDirectory}/go/bin:$PATH"; # Removed extra asterisks }; }; - - home.sessionVariables = { - PATH = "${config.home.homeDirectory}/go/bin:$PATH"; - }; } diff --git a/config/home-manager/packages/default.nix b/config/home-manager/packages/common/default.nix similarity index 100% rename from config/home-manager/packages/default.nix rename to config/home-manager/packages/common/default.nix diff --git a/config/home-manager/packages/common/go.nix b/config/home-manager/packages/common/go.nix new file mode 100644 index 0000000..5c3aa65 --- /dev/null +++ b/config/home-manager/packages/common/go.nix @@ -0,0 +1,12 @@ +{ + config, + pkgs, + pkgs-go, + ... +}: +{ + programs.go = { + enable = true; + package = pkgs-go.go; + }; +} diff --git a/config/home-manager/packages.nix b/config/home-manager/packages/common/packages.nix similarity index 74% rename from config/home-manager/packages.nix rename to config/home-manager/packages/common/packages.nix index e55507f..40f4899 100644 --- a/config/home-manager/packages.nix +++ b/config/home-manager/packages/common/packages.nix @@ -86,46 +86,5 @@ cmatrix figlet lolcat - - # GUI Applications - ## Utilities - mission-center - flameshot - gnome.gnome-tweaks - pinta - bottles - trayscale - spacedrive - - ## Chat Apps - telegram-desktop - betterdiscordctl - vesktop - whatsapp-for-linux - signal-desktop - - ## Multimedia - spotify - plex-media-player - vlc - - ## Astronomy - stellarium - - ## Games - ### Open-source games - openra - xonotic - mindustry - wesnoth - shattered-pixel-dungeon - - ### Games launchers - lutris - heroic - - ### Game utilities - protonup-qt - protontricks ]; } diff --git a/config/home-manager/packages/go.nix b/config/home-manager/packages/go.nix deleted file mode 100644 index 081a142..0000000 --- a/config/home-manager/packages/go.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ config, pkgs, ... }: -let - pinnedPkgs = import (fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/d4f247e89f6e10120f911e2e2d2254a050d0f732.tar.gz"; - # Update this SHA256 when a new version is required ^^^ - # You can find them here: https://www.nixhub.io/packages/vscode - }) { }; -in -{ - # Use the pinned Go for the programs configuration - programs.go = { - enable = true; - package = pinnedPkgs.go; - }; -} \ No newline at end of file diff --git a/config/home-manager/packages/server/default.nix b/config/home-manager/packages/server/default.nix new file mode 100644 index 0000000..7ee986b --- /dev/null +++ b/config/home-manager/packages/server/default.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +let + files = builtins.removeAttrs (builtins.readDir ./.) [ "default.nix" ]; + + # Import all other .nix files as modules + moduleFiles = builtins.map (fname: ./. + "/${fname}") (builtins.attrNames files); +in +{ + # Import all the package modules + imports = moduleFiles; +} diff --git a/config/home-manager/packages/server/packages.nix b/config/home-manager/packages/server/packages.nix new file mode 100644 index 0000000..32297e4 --- /dev/null +++ b/config/home-manager/packages/server/packages.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ ]; +} diff --git a/config/home-manager/packages/workstation/default.nix b/config/home-manager/packages/workstation/default.nix new file mode 100644 index 0000000..7ee986b --- /dev/null +++ b/config/home-manager/packages/workstation/default.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +let + files = builtins.removeAttrs (builtins.readDir ./.) [ "default.nix" ]; + + # Import all other .nix files as modules + moduleFiles = builtins.map (fname: ./. + "/${fname}") (builtins.attrNames files); +in +{ + # Import all the package modules + imports = moduleFiles; +} diff --git a/config/home-manager/packages/kitty.nix b/config/home-manager/packages/workstation/kitty.nix similarity index 100% rename from config/home-manager/packages/kitty.nix rename to config/home-manager/packages/workstation/kitty.nix diff --git a/config/home-manager/packages/workstation/packages.nix b/config/home-manager/packages/workstation/packages.nix new file mode 100644 index 0000000..561b395 --- /dev/null +++ b/config/home-manager/packages/workstation/packages.nix @@ -0,0 +1,49 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + # GUI Applications + ## Utilities + mission-center + flameshot + gnome.gnome-tweaks + pinta + bottles + trayscale + spacedrive + + ## Chat Apps + telegram-desktop + betterdiscordctl + vesktop + whatsapp-for-linux + signal-desktop + + ## Multimedia + spotify + plex-media-player + vlc + + ## Astronomy + stellarium + + ## Games + ### Open-source games + openra + xonotic + mindustry + wesnoth + shattered-pixel-dungeon + + ### Games launchers + lutris + heroic + + ### Game utilities + protonup-qt + protontricks + + ### Virtualization + virt-manager + virt-viewer + ]; +} diff --git a/config/home-manager/packages/vscode.nix b/config/home-manager/packages/workstation/vscode.nix similarity index 57% rename from config/home-manager/packages/vscode.nix rename to config/home-manager/packages/workstation/vscode.nix index b7be894..1a69ac2 100644 --- a/config/home-manager/packages/vscode.nix +++ b/config/home-manager/packages/workstation/vscode.nix @@ -1,16 +1,13 @@ -{ pkgs, ... }: -let - pinnedPkgs = import (fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/d4f247e89f6e10120f911e2e2d2254a050d0f732.tar.gz"; - # Update this SHA256 when a new version is required ^^^ - # You can find them here: https://www.nixhub.io/packages/vscode - }) { }; -in { - # Use the pinned VSCode for the programs.vscode configuration + config, + pkgs, + pkgs-vscode, + ... +}: +{ programs.vscode = { enable = true; - package = pinnedPkgs.vscode; + package = pkgs-vscode.vscode; mutableExtensionsDir = true; extensions = with pkgs.vscode-extensions; [ ms-azuretools.vscode-docker @@ -42,17 +39,5 @@ in github.copilot github.copilot-chat ]; - # ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ - # { - # name = "warpnet.salt-lint"; - # publisher = "warpnet"; - # version = "latest"; - # } - # { - # name = "mguellsegarra.highlight-on-copy"; - # publisher = "mguellsegarra"; - # version = "latest"; - # } - # ]; }; } diff --git a/config/home-manager/packages/workstation/zed-editor.nix b/config/home-manager/packages/workstation/zed-editor.nix new file mode 100644 index 0000000..b3531e8 --- /dev/null +++ b/config/home-manager/packages/workstation/zed-editor.nix @@ -0,0 +1,9 @@ +{ + config, + pkgs, + pkgs-zed, + ... +}: +{ + home.packages = [ pkgs-zed.zed-editor ]; +} diff --git a/config/home-manager/packages/zed-editor.nix b/config/home-manager/packages/zed-editor.nix deleted file mode 100644 index 53bbf0b..0000000 --- a/config/home-manager/packages/zed-editor.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, pkgs, ... }: -let - pinnedPkgs = import (fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/41dea55321e5a999b17033296ac05fe8a8b5a257.tar.gz"; - # Update this SHA256 when a new version is required ^^^ - # You can find them here: https://www.nixhub.io/packages/zed-editor - }) { }; -in -{ - # Add zed-editor to your home packages - home.packages = [ - pinnedPkgs.zed-editor - ]; -} diff --git a/config/home-manager/server/default.nix b/config/home-manager/server/default.nix new file mode 100644 index 0000000..7ee986b --- /dev/null +++ b/config/home-manager/server/default.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +let + files = builtins.removeAttrs (builtins.readDir ./.) [ "default.nix" ]; + + # Import all other .nix files as modules + moduleFiles = builtins.map (fname: ./. + "/${fname}") (builtins.attrNames files); +in +{ + # Import all the package modules + imports = moduleFiles; +} diff --git a/config/home-manager/virtualization.nix b/config/home-manager/virtualization.nix deleted file mode 100644 index 0be8c9e..0000000 --- a/config/home-manager/virtualization.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - virt-manager - virt-viewer - qemu - OVMF - ]; -} \ No newline at end of file diff --git a/config/home-manager/dconf.nix b/config/home-manager/workstation/dconf.nix similarity index 100% rename from config/home-manager/dconf.nix rename to config/home-manager/workstation/dconf.nix diff --git a/config/home-manager/workstation/default-apps.nix b/config/home-manager/workstation/default-apps.nix new file mode 100644 index 0000000..7710d3f --- /dev/null +++ b/config/home-manager/workstation/default-apps.nix @@ -0,0 +1,93 @@ +{ config, pkgs, ... }: +{ + # Default applications + xdg.mimeApps = { + enable = true; + defaultApplications = { + # Zen Browser + "application/xhtml+xml" = [ "io.github.zen_browser.zen.desktop" ]; + "text/html" = [ "io.github.zen_browser.zen.desktop" ]; + "x-scheme-handler/http" = [ "io.github.zen_browser.zen.desktop" ]; + "x-scheme-handler/https" = [ "io.github.zen_browser.zen.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" ]; + "video/3gp" = [ "vlc.desktop" ]; + "video/3gpp" = [ "vlc.desktop" ]; + "video/3gpp2" = [ "vlc.desktop" ]; + "video/dv" = [ "vlc.desktop" ]; + "video/divx" = [ "vlc.desktop" ]; + "video/fli" = [ "vlc.desktop" ]; + "video/flv" = [ "vlc.desktop" ]; + "video/mp2t" = [ "vlc.desktop" ]; + "video/mp4" = [ "vlc.desktop" ]; + "video/mp4v-es" = [ "vlc.desktop" ]; + "video/mpeg" = [ "vlc.desktop" ]; + "video/mpeg-system" = [ "vlc.desktop" ]; + "video/msvideo" = [ "vlc.desktop" ]; + "video/ogg" = [ "vlc.desktop" ]; + "video/quicktime" = [ "vlc.desktop" ]; + "video/vnd.divx" = [ "vlc.desktop" ]; + "video/vnd.mpegurl" = [ "vlc.desktop" ]; + "video/vnd.rn-realvideo" = [ "vlc.desktop" ]; + "video/webm" = [ "vlc.desktop" ]; + "video/x-anim" = [ "vlc.desktop" ]; + "video/x-avi" = [ "vlc.desktop" ]; + "video/x-flc" = [ "vlc.desktop" ]; + "video/x-fli" = [ "vlc.desktop" ]; + "video/x-flv" = [ "vlc.desktop" ]; + "video/x-m4v" = [ "vlc.desktop" ]; + "video/x-matroska" = [ "vlc.desktop" ]; + "video/x-mpeg" = [ "vlc.desktop" ]; + "video/x-mpeg2" = [ "vlc.desktop" ]; + "video/x-ms-asf" = [ "vlc.desktop" ]; + "video/x-ms-asf-plugin" = [ "vlc.desktop" ]; + "video/x-ms-asx" = [ "vlc.desktop" ]; + "video/x-msvideo" = [ "vlc.desktop" ]; + "video/x-ms-wm" = [ "vlc.desktop" ]; + "video/x-ms-wmv" = [ "vlc.desktop" ]; + "video/x-ms-wmx" = [ "vlc.desktop" ]; + "video/x-ms-wvx" = [ "vlc.desktop" ]; + "video/x-nsv" = [ "vlc.desktop" ]; + "video/x-theora" = [ "vlc.desktop" ]; + "video/x-theora+ogg" = [ "vlc.desktop" ]; + "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/default.nix b/config/home-manager/workstation/default.nix new file mode 100644 index 0000000..7ee986b --- /dev/null +++ b/config/home-manager/workstation/default.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +let + files = builtins.removeAttrs (builtins.readDir ./.) [ "default.nix" ]; + + # Import all other .nix files as modules + moduleFiles = builtins.map (fname: ./. + "/${fname}") (builtins.attrNames files); +in +{ + # Import all the package modules + imports = moduleFiles; +} diff --git a/config/home-manager/fonts.nix b/config/home-manager/workstation/fonts.nix similarity index 100% rename from config/home-manager/fonts.nix rename to config/home-manager/workstation/fonts.nix diff --git a/config/home-manager/gnome-extensions.nix b/config/home-manager/workstation/gnome-extensions.nix similarity index 100% rename from config/home-manager/gnome-extensions.nix rename to config/home-manager/workstation/gnome-extensions.nix diff --git a/config/home-manager/keyboard-shortcuts.nix b/config/home-manager/workstation/keyboard-shortcuts.nix similarity index 100% rename from config/home-manager/keyboard-shortcuts.nix rename to config/home-manager/workstation/keyboard-shortcuts.nix diff --git a/config/nixos/packages/common/virtualization.nix b/config/nixos/packages/common/virtualization.nix index 6302fe2..6a98ed3 100644 --- a/config/nixos/packages/common/virtualization.nix +++ b/config/nixos/packages/common/virtualization.nix @@ -1,6 +1,12 @@ -{ config, pkgs, ... }: { +{ config, pkgs, ... }: +{ boot.kernelModules = [ "kvm-amd" ]; + environment.systemPackages = with pkgs; [ + qemu + OVMF + ]; + virtualisation = { docker = { enable = true; diff --git a/setup.sh b/setup.sh index 0e69123..4002437 100755 --- a/setup.sh +++ b/setup.sh @@ -8,8 +8,7 @@ if [ -f $HOME/.dotfiles-setup ]; then exit 0 fi -# Check if nixos-version is available -ensure_nixos() { +install_nix() { if [ -x "$(command -v nixos-version)" ]; then tput setaf 2 echo "Detected NixOS, skipping Nix setup." @@ -151,9 +150,9 @@ prepare_hostname() { } prepare_hostname -ensure_nixos -install_home_manager setup_symlinks +install_nix +install_home_manager # Rebuild NixOS cd $HOME/dotfiles/config/nixos && sudo nixos-rebuild switch --flake .#$DOTF_HOSTNAME --impure @@ -165,7 +164,7 @@ if [ $? -ne 0 ]; then fi # Rebuild Home Manager -cd $HOME/dotfiles/config/home-manager && NIXPKGS_ALLOW_UNFREE=1 home-manager switch +cd $HOME/dotfiles/config/home-manager && NIXPKGS_ALLOW_UNFREE=1 home-manager switch --flake .#$DOTF_HOSTNAME --impure if [ $? -ne 0 ]; then tput setaf 1 echo "Failed to rebuild Home Manager. Exiting..."