From 6904cf1761334d033556f106c82d79b48e6657f4 Mon Sep 17 00:00:00 2001 From: Frantisek Bohacek Date: Sat, 6 Apr 2024 23:40:50 +0200 Subject: [PATCH] refactor: modularize the configuration --- flake.nix | 7 +- hosts/home.nix => home/default.nix | 52 ++-- home/laptop.nix | 24 ++ home/modules/default.nix | 7 + home/modules/home-config.nix | 32 +++ home/modules/profiles/base.nix | 235 ++++++++++++++++++ home/modules/profiles/default.nix | 8 + home/modules/profiles/desktop/default.nix | 18 ++ home/modules/profiles/desktop/gnome.nix | 140 +++++++++++ .../profiles/desktop/qtile/autorandr.nix | 104 ++++++++ .../profiles}/desktop/qtile/config/.envrc | 0 .../profiles}/desktop/qtile/config/.gitignore | 0 .../desktop/qtile/config/autostart.sh | 2 +- .../profiles}/desktop/qtile/config/bars.py | 0 .../desktop/qtile/config/brightness.sh | 0 .../profiles}/desktop/qtile/config/config.py | 0 .../profiles}/desktop/qtile/config/flake.lock | 0 .../profiles}/desktop/qtile/config/flake.nix | 0 .../desktop/qtile/config/functions.py | 0 .../profiles}/desktop/qtile/config/screens.py | 0 .../config/sequence-detector.config.json | 0 .../profiles}/desktop/qtile/config/styling.py | 0 .../desktop/qtile/config/tasklist.py | 0 .../profiles}/desktop/qtile/config/utils.py | 0 .../desktop/qtile/config/xmonadcustom.py | 0 .../profiles/desktop/qtile/default.nix | 46 ++++ .../profiles/desktop/qtile/launcher.nix | 126 ++++++++++ .../profiles}/desktop/qtile/scripts/xephyr | 0 .../profiles/desktop/qtile/services.nix | 222 +++++++++++++++++ home/modules/profiles/development/default.nix | 38 +++ .../profiles/development/emacs/default.nix | 78 ++++++ .../development}/emacs/doom.d/config.el | 0 .../development}/emacs/doom.d/custom.el | 0 .../development}/emacs/doom.d/init.el | 0 .../development}/emacs/doom.d/packages.el | 0 home/modules/profiles/development/nvim.nix | 56 +++++ .../modules/profiles/development/vscode.nix | 0 home/modules/profiles/matrix.nix | 44 ++++ home/modules/programs/default.nix | 5 + {modules => home/modules}/programs/iamb.nix | 0 hosts/laptop-phobos/home.nix | 62 ----- modules/desktop/default.nix | 18 -- modules/desktop/dm/gdm.nix | 7 - modules/desktop/dm/greetd.nix | 17 -- modules/desktop/dm/sddm-themes/sugar-dark.nix | 32 --- modules/desktop/dm/sddm.nix | 18 -- modules/desktop/gnome/default.nix | 60 ----- modules/desktop/gnome/home.nix | 140 ----------- modules/desktop/qtile/default.nix | 30 --- modules/desktop/qtile/home.nix | 38 --- modules/desktop/virtualisation/default.nix | 6 - modules/desktop/virtualisation/podman.nix | 19 -- modules/desktop/virtualisation/qemu.nix | 50 ---- modules/editors/emacs/home.nix | 76 ------ modules/editors/home.nix | 19 -- modules/editors/nvim/home.nix | 54 ---- modules/hardware/bluetooth.nix | 17 -- modules/hardware/default.nix | 17 -- modules/hardware/rocm/default.nix | 13 - modules/programs/alacritty.nix | 58 ----- modules/programs/clipmenu.nix | 10 - modules/programs/email.nix | 37 --- modules/programs/firefox.nix | 131 ---------- modules/programs/fpga/vivado/default.nix | 8 - modules/programs/fpga/vivado/fhs.nix | 29 --- modules/programs/fpga/vivado/home.nix | 10 - .../vivado/udev/52-xilinx-digilent-usb.rules | 54 ---- .../fpga/vivado/udev/52-xilinx-ftdi-usb.rules | 47 ---- .../fpga/vivado/udev/52-xilinx-pcusb.rules | 8 - modules/programs/fpga/vivado/vivado-pkg.nix | 21 -- modules/programs/games.nix | 35 --- modules/programs/home.nix | 22 -- modules/programs/rofi.nix | 130 ---------- modules/services/autorandr.nix | 99 -------- modules/services/default.nix | 19 -- modules/services/dunst.nix | 90 ------- modules/services/flameshot.nix | 40 --- modules/services/home.nix | 23 -- modules/services/mpris-ctl.nix | 29 --- modules/services/picom.nix | 63 ----- modules/services/redshift.nix | 24 -- modules/services/ssh.nix | 20 -- modules/services/syncthing.nix | 53 ---- modules/services/udiskie.nix | 15 -- modules/services/wg-options.nix | 9 - modules/services/wireguard.nix | 48 ---- modules/shell/direnv.nix | 20 -- modules/shell/git.nix | 22 -- modules/shell/home.nix | 19 -- modules/shell/zsh.nix | 36 --- {hosts => nixos}/default.nix | 16 +- {hosts => nixos/hosts}/configuration.nix | 48 ++-- .../hosts}/desktop-clotho/default.nix | 0 .../desktop-clotho/hardware-configuration.nix | 0 .../hosts}/desktop-clotho/home.nix | 0 .../hosts}/laptop-iapetus/default.nix | 0 .../laptop-iapetus/hardware-configuration.nix | 0 .../hosts}/laptop-iapetus/home.nix | 0 .../hosts}/laptop-phobos/default.nix | 28 ++- .../laptop-phobos/hardware-configuration.nix | 0 nixos/hosts/laptop-phobos/home.nix | 6 + {hosts => nixos/hosts}/vm/default.nix | 0 .../hosts}/vm/hardware-configuration.nix | 0 {hosts => nixos/hosts}/vm/home.nix | 0 nixos/modules/default.nix | 22 ++ .../modules/nixos-config.nix | 10 + nixos/modules/profiles/default.nix | 11 + nixos/modules/profiles/desktop/default.nix | 38 +++ nixos/modules/profiles/desktop/gnome.nix | 61 +++++ nixos/modules/profiles/desktop/qtile.nix | 31 +++ .../modules/profiles/development.nix | 34 ++- nixos/modules/profiles/sync.nix | 63 +++++ nixos/modules/profiles/virtualisation.nix | 81 ++++++ nixos/modules/profiles/vpn.nix | 65 +++++ {modules/themes => themes}/colors.nix | 0 115 files changed, 1660 insertions(+), 2020 deletions(-) rename hosts/home.nix => home/default.nix (82%) create mode 100644 home/laptop.nix create mode 100644 home/modules/default.nix create mode 100644 home/modules/home-config.nix create mode 100644 home/modules/profiles/base.nix create mode 100644 home/modules/profiles/default.nix create mode 100644 home/modules/profiles/desktop/default.nix create mode 100644 home/modules/profiles/desktop/gnome.nix create mode 100644 home/modules/profiles/desktop/qtile/autorandr.nix rename {modules => home/modules/profiles}/desktop/qtile/config/.envrc (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/.gitignore (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/autostart.sh (66%) mode change 100755 => 100644 rename {modules => home/modules/profiles}/desktop/qtile/config/bars.py (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/brightness.sh (100%) mode change 100755 => 100644 rename {modules => home/modules/profiles}/desktop/qtile/config/config.py (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/flake.lock (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/flake.nix (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/functions.py (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/screens.py (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/sequence-detector.config.json (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/styling.py (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/tasklist.py (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/utils.py (100%) rename {modules => home/modules/profiles}/desktop/qtile/config/xmonadcustom.py (100%) create mode 100644 home/modules/profiles/desktop/qtile/default.nix create mode 100644 home/modules/profiles/desktop/qtile/launcher.nix rename {modules => home/modules/profiles}/desktop/qtile/scripts/xephyr (100%) create mode 100644 home/modules/profiles/desktop/qtile/services.nix create mode 100644 home/modules/profiles/development/default.nix create mode 100644 home/modules/profiles/development/emacs/default.nix rename {modules/editors => home/modules/profiles/development}/emacs/doom.d/config.el (100%) rename {modules/editors => home/modules/profiles/development}/emacs/doom.d/custom.el (100%) rename {modules/editors => home/modules/profiles/development}/emacs/doom.d/init.el (100%) rename {modules/editors => home/modules/profiles/development}/emacs/doom.d/packages.el (100%) create mode 100644 home/modules/profiles/development/nvim.nix rename modules/editors/vscode/home.nix => home/modules/profiles/development/vscode.nix (100%) create mode 100644 home/modules/profiles/matrix.nix create mode 100644 home/modules/programs/default.nix rename {modules => home/modules}/programs/iamb.nix (100%) delete mode 100644 hosts/laptop-phobos/home.nix delete mode 100644 modules/desktop/default.nix delete mode 100644 modules/desktop/dm/gdm.nix delete mode 100644 modules/desktop/dm/greetd.nix delete mode 100644 modules/desktop/dm/sddm-themes/sugar-dark.nix delete mode 100644 modules/desktop/dm/sddm.nix delete mode 100644 modules/desktop/gnome/default.nix delete mode 100644 modules/desktop/gnome/home.nix delete mode 100644 modules/desktop/qtile/default.nix delete mode 100644 modules/desktop/qtile/home.nix delete mode 100644 modules/desktop/virtualisation/default.nix delete mode 100644 modules/desktop/virtualisation/podman.nix delete mode 100644 modules/desktop/virtualisation/qemu.nix delete mode 100644 modules/editors/emacs/home.nix delete mode 100644 modules/editors/home.nix delete mode 100644 modules/editors/nvim/home.nix delete mode 100644 modules/hardware/bluetooth.nix delete mode 100644 modules/hardware/default.nix delete mode 100644 modules/hardware/rocm/default.nix delete mode 100644 modules/programs/alacritty.nix delete mode 100644 modules/programs/clipmenu.nix delete mode 100644 modules/programs/email.nix delete mode 100644 modules/programs/firefox.nix delete mode 100644 modules/programs/fpga/vivado/default.nix delete mode 100644 modules/programs/fpga/vivado/fhs.nix delete mode 100644 modules/programs/fpga/vivado/home.nix delete mode 100644 modules/programs/fpga/vivado/udev/52-xilinx-digilent-usb.rules delete mode 100644 modules/programs/fpga/vivado/udev/52-xilinx-ftdi-usb.rules delete mode 100644 modules/programs/fpga/vivado/udev/52-xilinx-pcusb.rules delete mode 100644 modules/programs/fpga/vivado/vivado-pkg.nix delete mode 100644 modules/programs/games.nix delete mode 100644 modules/programs/home.nix delete mode 100644 modules/programs/rofi.nix delete mode 100644 modules/services/autorandr.nix delete mode 100644 modules/services/default.nix delete mode 100644 modules/services/dunst.nix delete mode 100644 modules/services/flameshot.nix delete mode 100644 modules/services/home.nix delete mode 100644 modules/services/mpris-ctl.nix delete mode 100644 modules/services/picom.nix delete mode 100644 modules/services/redshift.nix delete mode 100644 modules/services/ssh.nix delete mode 100644 modules/services/syncthing.nix delete mode 100644 modules/services/udiskie.nix delete mode 100644 modules/services/wg-options.nix delete mode 100644 modules/services/wireguard.nix delete mode 100644 modules/shell/direnv.nix delete mode 100644 modules/shell/git.nix delete mode 100644 modules/shell/home.nix delete mode 100644 modules/shell/zsh.nix rename {hosts => nixos}/default.nix (86%) rename {hosts => nixos/hosts}/configuration.nix (85%) rename {hosts => nixos/hosts}/desktop-clotho/default.nix (100%) rename {hosts => nixos/hosts}/desktop-clotho/hardware-configuration.nix (100%) rename {hosts => nixos/hosts}/desktop-clotho/home.nix (100%) rename {hosts => nixos/hosts}/laptop-iapetus/default.nix (100%) rename {hosts => nixos/hosts}/laptop-iapetus/hardware-configuration.nix (100%) rename {hosts => nixos/hosts}/laptop-iapetus/home.nix (100%) rename {hosts => nixos/hosts}/laptop-phobos/default.nix (84%) rename {hosts => nixos/hosts}/laptop-phobos/hardware-configuration.nix (100%) create mode 100644 nixos/hosts/laptop-phobos/home.nix rename {hosts => nixos/hosts}/vm/default.nix (100%) rename {hosts => nixos/hosts}/vm/hardware-configuration.nix (100%) rename {hosts => nixos/hosts}/vm/home.nix (100%) create mode 100644 nixos/modules/default.nix rename hosts/nixos-config-options.nix => nixos/modules/nixos-config.nix (57%) create mode 100644 nixos/modules/profiles/default.nix create mode 100644 nixos/modules/profiles/desktop/default.nix create mode 100644 nixos/modules/profiles/desktop/gnome.nix create mode 100644 nixos/modules/profiles/desktop/qtile.nix rename hosts/laptop-phobos/udev.nix => nixos/modules/profiles/development.nix (82%) create mode 100644 nixos/modules/profiles/sync.nix create mode 100644 nixos/modules/profiles/virtualisation.nix create mode 100644 nixos/modules/profiles/vpn.nix rename {modules/themes => themes}/colors.nix (100%) diff --git a/flake.nix b/flake.nix index 7476908..dc6b3a5 100644 --- a/flake.nix +++ b/flake.nix @@ -48,12 +48,17 @@ pkgs = nixpkgs.legacyPackages.x86_64-linux; in { nixosConfigurations = ( - import ./hosts { + import ./nixos { inherit (nixpkgs) lib; inherit inputs nixpkgs nixpkgs-stable nix-index-database nur; } ); + packages.x86_64-linux = { + mpris-ctl = pkgs.callPackage ./pkgs/rutherther/mpris-ctl.nix {}; + sequence-detector = pkgs.callPackage ./pkgs/rutherther/sequence-detector.nix {}; + }; + devShells.x86_64-linux.default = pkgs.mkShell { packages = [ pkgs.nil diff --git a/hosts/home.nix b/home/default.nix similarity index 82% rename from hosts/home.nix rename to home/default.nix index 47f6a53..446adc0 100644 --- a/hosts/home.nix +++ b/home/default.nix @@ -1,24 +1,10 @@ -# -# General Home-manager configuration -# -# flake.nix -# ├─ ./hosts -# │ └─ home.nix * -# └─ ./modules -# ├─ ./programs -# │ └─ default.nix -# └─ ./services -# └─ default.nix -# - { config, inputs, pkgs, ... }: { imports = [ - ../modules/programs/home.nix - ../modules/shell/home.nix - ../modules/editors/home.nix - ../modules/services/home.nix + ./modules + ../nixos/modules/nixos-config.nix + ./laptop.nix ]; nix = { @@ -133,17 +119,9 @@ wget # Downloader # # General home-manager - alacritty # Terminal Emulator - vim # Text Editor - # - # Xorg configuration - #xclip # Console Clipboard - #xorg.xev # Input Viewer - #xorg.xkill # Kill Applications - #xorg.xrandr # Screen Settings - # - # Xorg home-manager - # + alacritty + kitty + # Desktop discord # Chat telegram-desktop # Chat @@ -159,14 +137,10 @@ ripgrep pinta + + easyeffects ]; - pointerCursor = { # This will set cursor system-wide so applications can not choose their own - gtk.enable = true; - name = "Catppuccin-Frappe-Sapphire-Cursors"; - package = pkgs.catppuccin-cursors.frappeSapphire; - size = 16; - }; stateVersion = "23.05"; }; @@ -179,6 +153,16 @@ }; }; + services = { + easyeffects.enable = true; + }; + + home.pointerCursor = { + gtk.enable = true; + name = "Catppuccin-Frappe-Sapphire-Cursors"; + package = pkgs.catppuccin-cursors.frappeSapphire; + size = 16; + }; gtk = { # Theming enable = true; theme = { diff --git a/home/laptop.nix b/home/laptop.nix new file mode 100644 index 0000000..7ea5643 --- /dev/null +++ b/home/laptop.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, ... }: + +{ + config = lib.mkIf config.nixos-config.isLaptop { + home.packages = [ + pkgs.acpi + ]; + + services.cbatticon = { + enable = true; + criticalLevelPercent = 10; + lowLevelPercent = 20; + }; + + # TODO put to qtile under if isLaptop + systemd.user.services.cbatticon = lib.mkIf config.services.cbatticon.enable { + Unit = { + After = lib.mkForce []; + PartOf = lib.mkForce [ "wm-services.target" ]; + }; + Install.WantedBy = lib.mkForce [ "wm-services.target" ]; + }; + }; +} diff --git a/home/modules/default.nix b/home/modules/default.nix new file mode 100644 index 0000000..5358d82 --- /dev/null +++ b/home/modules/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./home-config.nix + ./profiles/default.nix + ./programs/default.nix + ]; +} diff --git a/home/modules/home-config.nix b/home/modules/home-config.nix new file mode 100644 index 0000000..7347e7c --- /dev/null +++ b/home/modules/home-config.nix @@ -0,0 +1,32 @@ +{ config, pkgs, lib, ... }: + +{ + options = { + home-config = { + defaultTerminal = lib.mkPackageOption pkgs "kitty" {}; + defaultTerminalExe = lib.mkOption { + type = lib.types.str; + readOnly = true; + }; + + defaultFont = lib.mkOption { + type = lib.types.str; + default = "FiraCode Nerd Font Mono"; + }; + + startup = { + apps = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = []; + description = '' + Which apps to start when entering GUI + ''; + }; + }; + }; + }; + + config = { + home-config.defaultTerminalExe = (lib.getExe config.home-config.defaultTerminal); + }; +} diff --git a/home/modules/profiles/base.nix b/home/modules/profiles/base.nix new file mode 100644 index 0000000..360867e --- /dev/null +++ b/home/modules/profiles/base.nix @@ -0,0 +1,235 @@ +{ inputs, config, lib, pkgs, ... }: + +let + nur = import inputs.nur { + nurpkgs = import inputs.nixpkgs { inherit (pkgs) system; }; + inherit pkgs; + }; +in { + options = { + profiles.base = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + }; + }; + }; + + config = lib.mkIf config.profiles.base.enable { + home-config.startup.apps = [ (lib.getExe pkgs.firefox) ]; + + programs = { + + dircolors = { + enable = true; + settings = { + OTHER_WRITABLE = "01;35"; # Make ntfs colors readable + }; + }; + + kitty = { + enable = true; + font = { + name = "FiraCode Nerd Font"; + size = 12; + }; + theme = "Chalk"; + }; + + alacritty = { + enable = true; + settings = { + font = { + normal.family = "FiraCode Nerd Font"; + bold = { style = "Bold"; }; + size = 12; + }; + # offset = { # Positioning + # x = -1; + # y = 0; + # }; + }; + }; + + starship = { + enable = true; + }; + + zsh = { + enable = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + enableCompletion = true; + history.size = 100000; + + oh-my-zsh = { # Extra plugins for zsh + enable = true; + plugins = [ "git" ]; + }; + + initExtra = '' + function loc { + nix-locate --top-level -w /bin/$1 + } + function exa-nixpkgs-derivation { + nix run nixpkgs#eza -- --tree $(nix build nixpkgs#$1 --print-out-paths --out-link /tmp/$1) + } + + # source /etc/set-environment + ''; + }; + + firefox = { + enable = true; + package = pkgs.firefox.override { + nativeMessagingHosts = [ + pkgs.tridactyl-native + ]; + }; + profiles = { + default = { + id = 0; + name = "Default"; + isDefault = true; + + userChrome = '' + #navigator-toolbox { font-family:Ubuntu !important } + ''; + + extensions = with nur.repos.rycee.firefox-addons; [ + # Basic + proton-pass # Password manager + darkreader # Dark pages + ublock-origin # Ad block + tridactyl # Vim-like keybindings + + # Containers + multi-account-containers + + # Site specific + # social fixer for facebook + + # UI + text-contrast-for-dark-themes + + # Utility + istilldontcareaboutcookies + h264ify + youtube-shorts-block + + # Privacy + link-cleaner + clearurls + decentraleyes + privacy-badger + skip-redirect + + # Paywalls + # bypass-paywalls-clean + ]; + + settings = { + "beacon.enabled" = false; + "browser.contentblocking.category" = "strict"; + + "browser.newtabpage.enabled" = false; # Blank new tab page. + "browser.startup.page" = 3; # Resume last session. + "browser.tabs.closeWindowWithLastTab" = false; + + "browser.download.dir" = "${config.home.homeDirectory}/download"; + "browser.toolbars.bookmarks.visibility" = "newtab"; + "signon.rememberSignons" = false; + "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false; + "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false; + + "layout.css.prefers-color-scheme.content-override" = 2; + "browser.uidensity" = 1; # Dense. + "extensions.unifiedExtensions.enabled" = false; # Disable extensions symbol in bar + "layout.css.devPixelsPerPx" = 1; # Default zoom? + + "media.ffmpeg.vaapi.enabled" = true; + "gfx.webrender.all" = true; + + "network.IDN_show_punycode" = true; + + "permissions.default.shortcuts" = 3; # Don't steal my shortcuts! + + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + + # Privacy + "browser.search.hiddenOneOffs" = + "Google,Yahoo,Bing,Amazon.com,Twitter"; + "browser.send_pings" = false; + "dom.battery.enabled" = false; + "dom.security.https_only_mode" = true; + "network.dns.disablePrefetch" = true; + "geo.enabled" = false; + "browser.urlbar.speculativeConnect.enabled" = false; # Do not resolve dns before clicking + "network.prefetch-next" = false; + "media.video_stats.enabled" = false; + + "network.http.referer.XOriginPolicy" = 2; + "network.http.referer.XOriginTrimmingPolicy" = 2; + "network.http.referer.trimmingPolicy" = 1; + + "privacy.donottrackheader.enabled" = true; + "privacy.donottrackheader.value" = 1; + "privacy.firstparty.isolate" = true; + + # Fully disable Pocket. See + # https://www.reddit.com/r/linux/comments/zabm2a. + "extensions.pocket.enabled" = false; + "extensions.pocket.api" = "0.0.0.0"; + "extensions.pocket.loggedOutVariant" = ""; + "extensions.pocket.oAuthConsumerKey" = ""; + "extensions.pocket.onSaveRecs" = false; + "extensions.pocket.onSaveRecs.locales" = ""; + "extensions.pocket.showHome" = false; + "extensions.pocket.site" = "0.0.0.0"; + "browser.newtabpage.activity-stream.pocketCta" = ""; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = + false; + "services.sync.prefs.sync.browser.newtabpage.activity-stream.section.highlights.includePocket" = + false; + }; + }; + }; + }; + + # Email + thunderbird = { + enable = true; + profiles = { + default = { + isDefault = true; + }; + }; + }; + }; + + accounts.email = { + accounts = { + ctu = { + primary = true; + thunderbird = { + enable = true; + }; + address = "bohacfr2@fel.cvut.cz"; + userName = "bohacfr2"; + realName = "František Boháček"; + imap = { + host = "imap.fel.cvut.cz"; + port = 993; + }; + smtp = { + host = "smtpx.fel.cvut.cz"; + port = 465; + tls = { + enable = true; + }; + }; + }; + }; + }; + }; +} diff --git a/home/modules/profiles/default.nix b/home/modules/profiles/default.nix new file mode 100644 index 0000000..3453b2a --- /dev/null +++ b/home/modules/profiles/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./desktop + ./development + ./base.nix + ./matrix.nix + ]; +} diff --git a/home/modules/profiles/desktop/default.nix b/home/modules/profiles/desktop/default.nix new file mode 100644 index 0000000..e0abfcf --- /dev/null +++ b/home/modules/profiles/desktop/default.nix @@ -0,0 +1,18 @@ +{ config, lib, ... }: + +{ + imports = [ + ./qtile + ./gnome.nix + ]; + + options = { + profiles.desktop = { + enable = lib.mkEnableOption "desktop"; + }; + }; + + config = lib.mkIf config.profiles.desktop.enable { + # TODO? + }; +} diff --git a/home/modules/profiles/desktop/gnome.nix b/home/modules/profiles/desktop/gnome.nix new file mode 100644 index 0000000..6800693 --- /dev/null +++ b/home/modules/profiles/desktop/gnome.nix @@ -0,0 +1,140 @@ +{ config, lib, ... }: + +{ + options = { + profiles.desktop.gnome = { + enable = lib.mkEnableOption "gnome"; + }; + }; + + config = lib.mkIf config.profiles.desktop.gnome.enable { + + dconf.settings = { + "org/gnome/shell" = { + favorite-apps = [ + "Alacritty.desktop" + "firefox.desktop" + "emacs.desktop" + "org.gnome.Nautilus.desktop" + "discord.desktop" + "telegram-desktop.desktop" + "blueman-manager.desktop" + "pavucontrol.desktop" + ]; + disable-user-extensions = false; + enabled-extensions = [ + "paperwm@paperwm.github.com" + "auto-move-windows@gnome-shell-extensions.gcampax.github.com" + "launch-new-instance@gnome-shell-extensions.gcampax.github.com" + "native-window-placement@gnome-shell-extensions.gcampax.github.com" + "places-menu@gnome-shell-extensions.gcampax.github.com" + "drive-menu@gnome-shell-extensions.gcampax.github.com" + "Vitals@CoreCoding.com" + "clipboard-history@alexsaveau.dev" + "switcher@landau.fi" + "fullscreen-avoider@noobsai.github.com" + "instantworkspaceswitcher@amalantony.net" + ]; + }; + + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + enable-hot-corners = false; + clock-show-weekday = true; + #gtk-theme = "Adwaita-dark"; + }; + "org/gnome/desktop/privacy" = { + report-technical-problems = "false"; + }; + "org/gnome/desktop/calendar" = { + show-weekdate = true; + }; + "org/gnome/desktop/wm/preferences" = { + action-right-click-titlebar = "toggle-maximize"; + action-middle-click-titlebar = "minimize"; + resize-with-right-button = true; + mouse-button-modifier = ""; + button-layout = ":minimize,close"; + num-workspaces = 9; + }; + + # "org/gnome/shell/keybindings" = builtins.listToAttrs (builtins.map (i: { name = "switch-to-application-${i}"; value = ["@as []"]; }) (builtins.genList (y: y + 1) 9)); + "org/gnome/shell/keybindings" = builtins.listToAttrs (builtins.map (i: { name = "switch-to-application-${builtins.toString i}"; value = ["@as []"]; }) (builtins.genList (y: y + 1) 9)); + "org/gnome/desktop/wm/keybindings" = + builtins.listToAttrs (builtins.map (i: { name = "switch-to-workspace-${builtins.toString i}"; value = ["${builtins.toString i}"]; }) (builtins.genList (y: y + 1) 9)) // + builtins.listToAttrs (builtins.map (i: { name = "move-to-workspace-${builtins.toString i}"; value = ["${builtins.toString i}"]; }) (builtins.genList (y: y + 1) 9)) // + { + move-to-workspace-left = ["a"]; + move-to-workspace-right = ["d"]; + + close = ["w" "F4"]; + toggle-fullscreen = ["f"]; + + panel-run-dialog = ["@as []"]; + }; + + "org/gnome/settings-daemon/plugins/power" = { + sleep-interactive-ac-type = "nothing"; + }; + + "org/gnome/settings-daemon/plugins/media-keys" = { + custom-keybindings = [ + "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" + "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/" + ]; + }; + "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { + binding = "Return"; + command = "alacritty"; + name = "open-terminal"; + }; + "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { + binding = "e"; + command = "emacs-client"; + name = "open-emacs"; + }; + + "org/gnome/shell/extensions/paperwm" = { + restore-workspaces-only-on-primary = false; + window-gap = 10; + winprops = [ "{\"wm_class\":\"Spotify\",\"scratch_layer\":true}" ]; + }; + + "org/gnome/shell/extensions/paperwm/keybindings" = { + move-left = ["k"]; + move-right = ["j"]; + + switch-previous = ["k"]; + switch-next = ["j"]; + + move-monitor-left = ["a"]; + move-monitor-below = ["s"]; + move-monitor-right = ["d"]; + move-monitor-above = ["w"]; + + swap-monitor-left = ["a"]; + swap-monitor-below = ["s"]; + swap-monitor-right = ["d"]; + swap-monitor-above = ["w"]; + + switch-monitor-left = ["a"]; + switch-monitor-below = ["s"]; + switch-monitor-right = ["d"]; + switch-monitor-above = ["w"]; + + new-window = ["n"]; + + paper-toggle-fullscreen = ["f"]; + + toggle-maximize-width = ["f"]; + + toggle-scratch = ["g"]; + toggle-scratch-layer = ["g"]; + }; + + "org/gnome/shell/extensions/switcher" = { + show-switcher = ["semicolon"]; + }; + }; + }; +} diff --git a/home/modules/profiles/desktop/qtile/autorandr.nix b/home/modules/profiles/desktop/qtile/autorandr.nix new file mode 100644 index 0000000..7dad484 --- /dev/null +++ b/home/modules/profiles/desktop/qtile/autorandr.nix @@ -0,0 +1,104 @@ +{ inputs, config, lib, pkgs, ... }: + +let + inherit (config.lib.formats.rasi) mkLiteral; # Theme.rasi alternative. Add Theme here + colors = import "${inputs.self}/themes/colors.nix"; + + themes-collection = pkgs.fetchFromGitHub { + owner = "newmanls"; + repo = "rofi-themes-collection"; + rev = "f87e08300cb1c984994efcaf7d8ae26f705226fd"; + hash = "sha256-A6zIAQvjfe/XB5GZefs4TWgD+eGICQP2Abz/sQynJPo="; + }; +in +{ + config = lib.mkIf config.profiles.desktop.qtile.enable { + programs.autorandr = { + + enable = true; + hooks = { + postswitch = { + # "notify-qtile" = "qtile cmd-obj -o cmd -f restart"; + # Looks to me like after restarting QTile, + # the system becomes slower until picom is restarted + # "restart-picom" = "systemctl restart --user picom"; + }; + }; + profiles = { + "home-docked" = { + fingerprint = { + "DP-7" = "00ffffffffffff0009d1e77801010101261e0104a5351e783a05f5a557529c270b5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff00455442394c3033373432534c30000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a2001e002031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d"; + "DP-8" = "00ffffffffffff0009d1e778455400000d1c0104a5351e783a0565a756529c270f5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff0058334a30303131303031510a20000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a20017d02031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d"; + "DP-9" = "00ffffffffffff0009d1d978455400002b1a010380351e782e6c40a755519f27145054a56b80d1c081c081008180a9c0b30001010101023a801871382d40582c45000f282100001e000000ff0054414730333931303031390a20000000fd00324c1e5311000a202020202020000000fc0042656e51204757323437300a200161020322f14f901f05140413031207161501061102230907078301000065030c001000023a801871382d40582c45000f282100001e011d8018711c1620582c25000f282100009e011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f282100001800000000000000000000000000000000000000000005"; + }; + config = { + DP-9 = { + enable = true; + position = "0x0"; + mode = "1920x1080"; + }; + DP-7 = { + enable = true; + primary = true; + position = "1920x0"; + mode = "1920x1080"; + }; + DP-8 = { + enable = true; + position = "3840x0"; + mode = "1920x1080"; + }; + eDP-1 = { + enable = false; + }; + }; + }; + "home-internal" = { + fingerprint = { + "DP-7" = "00ffffffffffff0009d1e77801010101261e0104a5351e783a05f5a557529c270b5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff00455442394c3033373432534c30000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a2001e002031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d"; + "DP-8" = "00ffffffffffff0009d1e778455400000d1c0104a5351e783a0565a756529c270f5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff0058334a30303131303031510a20000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a20017d02031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d"; + "DP-9" = "00ffffffffffff0009d1d978455400002b1a010380351e782e6c40a755519f27145054a56b80d1c081c081008180a9c0b30001010101023a801871382d40582c45000f282100001e000000ff0054414730333931303031390a20000000fd00324c1e5311000a202020202020000000fc0042656e51204757323437300a200161020322f14f901f05140413031207161501061102230907078301000065030c001000023a801871382d40582c45000f282100001e011d8018711c1620582c25000f282100009e011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f282100001800000000000000000000000000000000000000000005"; + "eDP-1" = "00ffffffffffff0009e5660b000000001a200104a51e137807e957a7544c9a26115457000000010101010101010101010101010101019c3e80c870b03c40302036002ebc1000001a163280c870b03c40302036002ebc1000001a000000fd001e3c4c4c10010a202020202020000000fe004e4531343057554d2d4e36470a00f7"; + }; + + config = { + DP-9 = { + enable = true; + position = "0x0"; + mode = "1920x1080"; + }; + DP-7 = { + enable = true; + position = "1920x0"; + mode = "1920x1080"; + }; + DP-8 = { + enable = true; + position = "3840x0"; + mode = "1920x1080"; + }; + eDP-1 = { + enable = true; + primary = true; + position = "1920x1080"; + mode = "1920x1200"; + }; + }; + }; + "notebook" = { + fingerprint = { + "eDP-1" = "00ffffffffffff0009e5660b000000001a200104a51e137807e957a7544c9a26115457000000010101010101010101010101010101019c3e80c870b03c40302036002ebc1000001a163280c870b03c40302036002ebc1000001a000000fd001e3c4c4c10010a202020202020000000fe004e4531343057554d2d4e36470a00f7"; + }; + config = { + eDP-1 = { + enable = true; + primary = true; + position = "0x0"; + mode = "1920x1200"; + }; + }; + }; + }; + }; + }; +} diff --git a/modules/desktop/qtile/config/.envrc b/home/modules/profiles/desktop/qtile/config/.envrc similarity index 100% rename from modules/desktop/qtile/config/.envrc rename to home/modules/profiles/desktop/qtile/config/.envrc diff --git a/modules/desktop/qtile/config/.gitignore b/home/modules/profiles/desktop/qtile/config/.gitignore similarity index 100% rename from modules/desktop/qtile/config/.gitignore rename to home/modules/profiles/desktop/qtile/config/.gitignore diff --git a/modules/desktop/qtile/config/autostart.sh b/home/modules/profiles/desktop/qtile/config/autostart.sh old mode 100755 new mode 100644 similarity index 66% rename from modules/desktop/qtile/config/autostart.sh rename to home/modules/profiles/desktop/qtile/config/autostart.sh index 576530d..94570af --- a/modules/desktop/qtile/config/autostart.sh +++ b/home/modules/profiles/desktop/qtile/config/autostart.sh @@ -1,6 +1,6 @@ #!/usr/bin/env sh -systemctl start --user qtile-services.target +systemctl start --user wm-services.target # Browser firefox & diff --git a/modules/desktop/qtile/config/bars.py b/home/modules/profiles/desktop/qtile/config/bars.py similarity index 100% rename from modules/desktop/qtile/config/bars.py rename to home/modules/profiles/desktop/qtile/config/bars.py diff --git a/modules/desktop/qtile/config/brightness.sh b/home/modules/profiles/desktop/qtile/config/brightness.sh old mode 100755 new mode 100644 similarity index 100% rename from modules/desktop/qtile/config/brightness.sh rename to home/modules/profiles/desktop/qtile/config/brightness.sh diff --git a/modules/desktop/qtile/config/config.py b/home/modules/profiles/desktop/qtile/config/config.py similarity index 100% rename from modules/desktop/qtile/config/config.py rename to home/modules/profiles/desktop/qtile/config/config.py diff --git a/modules/desktop/qtile/config/flake.lock b/home/modules/profiles/desktop/qtile/config/flake.lock similarity index 100% rename from modules/desktop/qtile/config/flake.lock rename to home/modules/profiles/desktop/qtile/config/flake.lock diff --git a/modules/desktop/qtile/config/flake.nix b/home/modules/profiles/desktop/qtile/config/flake.nix similarity index 100% rename from modules/desktop/qtile/config/flake.nix rename to home/modules/profiles/desktop/qtile/config/flake.nix diff --git a/modules/desktop/qtile/config/functions.py b/home/modules/profiles/desktop/qtile/config/functions.py similarity index 100% rename from modules/desktop/qtile/config/functions.py rename to home/modules/profiles/desktop/qtile/config/functions.py diff --git a/modules/desktop/qtile/config/screens.py b/home/modules/profiles/desktop/qtile/config/screens.py similarity index 100% rename from modules/desktop/qtile/config/screens.py rename to home/modules/profiles/desktop/qtile/config/screens.py diff --git a/modules/desktop/qtile/config/sequence-detector.config.json b/home/modules/profiles/desktop/qtile/config/sequence-detector.config.json similarity index 100% rename from modules/desktop/qtile/config/sequence-detector.config.json rename to home/modules/profiles/desktop/qtile/config/sequence-detector.config.json diff --git a/modules/desktop/qtile/config/styling.py b/home/modules/profiles/desktop/qtile/config/styling.py similarity index 100% rename from modules/desktop/qtile/config/styling.py rename to home/modules/profiles/desktop/qtile/config/styling.py diff --git a/modules/desktop/qtile/config/tasklist.py b/home/modules/profiles/desktop/qtile/config/tasklist.py similarity index 100% rename from modules/desktop/qtile/config/tasklist.py rename to home/modules/profiles/desktop/qtile/config/tasklist.py diff --git a/modules/desktop/qtile/config/utils.py b/home/modules/profiles/desktop/qtile/config/utils.py similarity index 100% rename from modules/desktop/qtile/config/utils.py rename to home/modules/profiles/desktop/qtile/config/utils.py diff --git a/modules/desktop/qtile/config/xmonadcustom.py b/home/modules/profiles/desktop/qtile/config/xmonadcustom.py similarity index 100% rename from modules/desktop/qtile/config/xmonadcustom.py rename to home/modules/profiles/desktop/qtile/config/xmonadcustom.py diff --git a/home/modules/profiles/desktop/qtile/default.nix b/home/modules/profiles/desktop/qtile/default.nix new file mode 100644 index 0000000..368dbbd --- /dev/null +++ b/home/modules/profiles/desktop/qtile/default.nix @@ -0,0 +1,46 @@ +{ lib, config, pkgs, ... }: + +{ + imports = [ + ./launcher.nix + ./services.nix + ./autorandr.nix + ]; + + options = { + profiles.desktop.qtile = { + enable = lib.mkEnableOption "qtile"; + }; + }; + + config = lib.mkIf config.profiles.desktop.qtile.enable { + + home.packages = [ + pkgs.ksnip + ]; + + xdg.configFile."qtile/config.py".source = ./config/config.py; + xdg.configFile."qtile/utils.py".source = ./config/utils.py; + xdg.configFile."qtile/functions.py".source = ./config/functions.py; + xdg.configFile."qtile/bars.py".source = ./config/bars.py; + xdg.configFile."qtile/screens.py".source = ./config/screens.py; + xdg.configFile."qtile/styling.py".source = ./config/styling.py; + + xdg.configFile."qtile/tasklist.py".source = ./config/tasklist.py; + xdg.configFile."qtile/xmonadcustom.py".source = ./config/xmonadcustom.py; + xdg.configFile."qtile/sequence-detector.config.json".source = ./config/sequence-detector.config.json; + + xdg.configFile."qtile/nixenvironment.py".text = '' + from string import Template + import os + + setupLocationRef = Template("${config.nixos-config.location}") + configLocationRef = Template("${config.nixos-config.location}/modules/desktop/qtile/config") + + setupLocation = setupLocationRef.substitute(os.environ) + configLocation = configLocationRef.substitute(os.environ) + + sequenceDetectorExec = "sequence_detector -c /home/${config.nixos-config.defaultUser}/.config/qtile/sequence-detector.config.json " + ''; + }; +} diff --git a/home/modules/profiles/desktop/qtile/launcher.nix b/home/modules/profiles/desktop/qtile/launcher.nix new file mode 100644 index 0000000..30825f7 --- /dev/null +++ b/home/modules/profiles/desktop/qtile/launcher.nix @@ -0,0 +1,126 @@ +{ inputs, config, lib, pkgs, ... }: + +let + inherit (config.lib.formats.rasi) mkLiteral; # Theme.rasi alternative. Add Theme here + colors = import "${inputs.self}/themes/colors.nix"; + + themes-collection = pkgs.fetchFromGitHub { + owner = "newmanls"; + repo = "rofi-themes-collection"; + rev = "f87e08300cb1c984994efcaf7d8ae26f705226fd"; + hash = "sha256-A6zIAQvjfe/XB5GZefs4TWgD+eGICQP2Abz/sQynJPo="; + }; +in +{ + config = lib.mkIf config.profiles.desktop.qtile.enable { + home.packages = [ + pkgs.rofi-power-menu + ]; + + xdg.dataFile."rofi/themes/launchpad.rasi".source = "${themes-collection}/themes/launchpad.rasi"; + xdg.dataFile."rofi/themes/spotlight.rasi".source = "${themes-collection}/themes/spotlight-dark.rasi"; + + programs = { + rofi = { + enable = true; + terminal = "${config.home-config.defaultTerminalExe}"; + location = "center"; + font = "${config.home-config.defaultFont} 11"; + theme = with colors.scheme.doom; { + # Based on spotlight theme + "*" = { + font = "Montserrat 12"; + + bg0 = mkLiteral "#222223e6"; + bg1 = mkLiteral "#44444480"; + bg2 = mkLiteral "#51afefe6"; + fg0 = mkLiteral "#${text}"; + fg1 = mkLiteral "#d5d5d5"; + fg2 = mkLiteral "#${fg}"; + + background-color = mkLiteral "transparent"; + text-color = mkLiteral "@fg0"; + + margin = mkLiteral "0"; + padding = mkLiteral "0"; + spacing = mkLiteral "0"; + }; + + "window" = { + background-color = mkLiteral "@bg0"; + + location = mkLiteral "center"; + width = mkLiteral "640"; + border-radius = mkLiteral "0"; + }; + + "inputbar" = { + font = "Montserrat 20"; + padding = mkLiteral "12px"; + spacing = mkLiteral "12px"; + children = mkLiteral "[ icon-search, entry ]"; + }; + + "icon-search" = { + expand = false; + filename = "search"; + size = mkLiteral "28px"; + }; + + "icon-search, entry, element-icon, element-text" = { + vertical-align = mkLiteral "0.5"; + }; + + "entry" = { + font = mkLiteral "inherit"; + + placeholder = "Search"; + placeholder-color = mkLiteral "@fg2"; + }; + + "message" = { + border = mkLiteral "2px 0 0"; + border-color = mkLiteral "@bg1"; + background-color = mkLiteral "@bg1"; + }; + + "textbox" = { + padding = mkLiteral "8px 24px"; + }; + + "listview" = { + lines = 10; + columns = mkLiteral "1"; + + fixed-height = false; + border = mkLiteral "1px 0 0"; + border-color = mkLiteral "@bg1"; + }; + + "element" = { + padding = mkLiteral "8px 16px"; + spacing = mkLiteral "16px"; + background-color = mkLiteral "transparent"; + }; + + "element normal active" = { + text-color = mkLiteral "@bg2"; + }; + + "element selected normal, element selected active" = { + background-color = mkLiteral "@bg2"; + text-color = mkLiteral "@fg1"; + }; + + "element-icon" = { + size = mkLiteral "1em"; + }; + + "element-text" = { + text-color = mkLiteral "inherit"; + }; + }; + }; + }; + }; +} diff --git a/modules/desktop/qtile/scripts/xephyr b/home/modules/profiles/desktop/qtile/scripts/xephyr similarity index 100% rename from modules/desktop/qtile/scripts/xephyr rename to home/modules/profiles/desktop/qtile/scripts/xephyr diff --git a/home/modules/profiles/desktop/qtile/services.nix b/home/modules/profiles/desktop/qtile/services.nix new file mode 100644 index 0000000..b1170ae --- /dev/null +++ b/home/modules/profiles/desktop/qtile/services.nix @@ -0,0 +1,222 @@ +{ inputs, config, lib, pkgs, ... }: + +let + colors = import "${inputs.self}/themes/colors.nix"; + mpris-ctl = inputs.self.packages.${pkgs.system}.mpris-ctl; + sequence-detector = inputs.self.packages.${pkgs.system}.sequence-detector; +in { + config = lib.mkIf config.profiles.desktop.qtile.enable { + + home.packages = lib.mkMerge [ + (lib.mkIf config.services.dunst.enable [ pkgs.libnotify ]) + [ + mpris-ctl + sequence-detector + ] + ]; + + services = { # Applets + network-manager-applet.enable = true; # Network + autorandr.enable = true; + + dunst = { + enable = true; + iconTheme = { # Icons + name = "Papirus Dark"; + package = pkgs.papirus-icon-theme; + size = "16x16"; + }; + settings = with colors.scheme.doom; { # Settings + global = { + monitor = 0; + follow = "keyboard"; + # geometry [{width}x{height}][+/-{x}+/-{y}] + # geometry = "600x50-50+65"; + width = 300; + height = 200; + origin = "top-right"; + offset = "50x50"; + shrink = "yes"; + transparency = 10; + padding = 16; + horizontal_padding = 16; + frame_width = 3; + frame_color = "#${bg}"; + separator_color = "frame"; + font = "FiraCode Nerd Font 10"; + line_height = 4; + idle_threshold = 120; + markup = "full"; + format = ''%s\n%b''; + alignment = "left"; + vertical_alignment = "center"; + icon_position = "left"; + word_wrap = "yes"; + ignore_newline = "no"; + show_indicators = "yes"; + sort = true; + stack_duplicates = true; + # startup_notification = false; + hide_duplicate_count = true; + }; + urgency_low = { # Colors + background = "#${bg}"; + foreground = "#${text}"; + timeout = 4; + }; + urgency_normal = { + background = "#${bg}"; + foreground = "#${text}"; + timeout = 4; + }; + urgency_critical = { + background = "#${bg}"; + foreground = "#${text}"; + frame_color = "#${red}"; + timeout = 10; + }; + }; + }; + + picom = { + enable = true; + package = pkgs.picom; + + backend = "glx"; # Rendering either with glx or xrender. You'll know if you need to switch this. + vSync = true; # Should fix screen tearing + + #activeOpacity = 0.93; # Node transparency + #inactiveOpacity = 0.93; + #menuOpacity = 0.93; + + shadow = false; # Shadows + shadowOpacity = 0.75; + fade = true; # Fade + fadeDelta = 10; + opacityRules = [ # Opacity rules if transparency is prefered + # "100:name = 'Picture in picture'" + # "100:name = 'Picture-in-Picture'" + # "85:class_i ?= 'rofi'" + # "90:class_i *= 'discord'" + # "90:class_i *= 'telegram-desktop'" + # "90:class_i *= 'emacs'" + # "90:class_i *= 'Alacritty'" + # "100:fullscreen" + ]; # Find with $ xprop | grep "WM_CLASS" + + settings = { + daemon = true; + use-damage = false; # Fixes flickering and visual bugs with borders + resize-damage = 1; + refresh-rate = 0; + corner-radius = 5; # Corners + round-borders = 5; + + # Extras + detect-rounded-corners = true; # Below should fix multiple issues + detect-client-opacity = false; + detect-transient = true; + detect-client-leader = false; + mark-wmwim-focused = true; + mark-ovredir-focues = true; + unredir-if-possible = true; + glx-no-stencil = true; + glx-no-rebind-pixmap = true; + }; # Extra options for picom.conf (mostly for pijulius fork) + }; + + redshift = { + enable = true; + temperature.night = 3000; + latitude = 50.2332933; + longitude = 14.3225926; + }; + + udiskie = { # Udiskie wil automatically mount storage devices + enable = true; + automount = true; + tray = "auto"; # Will only show up in systray when active + }; + }; + xdg.dataFile."dbus-1/services/org.knopwob.dunst.service".source = "${pkgs.dunst}/share/dbus-1/services/org.knopwob.dunst.service"; + + systemd.user.targets.wm-services = { + Unit = { + Description = "A target that is enabled when starting Qtile"; + Requires = [ "graphical-session.target" ]; + }; + }; + + systemd.user.services = { + mpris-ctld = { + Unit = { + Description = "Daemon for mpris-ctl cli, that will keep track of last playing media"; + PartOf = [ "wm-services.target" ]; + }; + + Install = { + WantedBy = [ "wm-services.target" ]; + }; + + Service = { + ExecStart = "${mpris-ctl}/bin/mpris-ctld"; + }; + }; + + network-manager-applet = lib.mkIf config.services.network-manager-applet.enable { + Unit = { + After = lib.mkForce []; + PartOf = lib.mkForce [ "wm-services.target" ]; + }; + Install.WantedBy = lib.mkForce [ "wm-services.target" ]; + }; + + autorandr = lib.mkIf config.services.autorandr.enable { + Unit.PartOf = lib.mkForce [ "wm-services.target" ]; + Install.WantedBy = lib.mkForce [ "wm-services.target" ]; + }; + + dunst = lib.mkIf config.services.dunst.enable { + Unit = { + PartOf = lib.mkForce [ "wm-services.target" ]; + After = lib.mkForce []; + }; + Service = { + # Remove reference to BusName so dunst is not started under Gnome! + Type = lib.mkForce "simple"; + BusName = lib.mkForce "empty.dbus.name.placeholder"; + }; + Install = { + WantedBy = lib.mkForce [ "wm-services.target" ]; + }; + }; + + flameshot = lib.mkIf config.services.flameshot.enable { + Unit = { + PartOf = lib.mkForce [ "wm-services.target" ]; + }; + Install = { + WantedBy = lib.mkForce [ "wm-services.target" ]; + }; + }; + + picom = lib.mkIf config.services.picom.enable { + Unit = { + PartOf = lib.mkForce [ "wm-services.target" ]; + }; + Install = { + WantedBy = lib.mkForce [ "wm-services.target" ]; + }; + }; + + redshift = lib.mkIf config.services.redshift.enable { + Unit = { + PartOf = lib.mkForce [ "wm-services.target" ]; + }; + Install = { + WantedBy = lib.mkForce [ "wm-services.target" ]; + }; + }; + }; + }; +} diff --git a/home/modules/profiles/development/default.nix b/home/modules/profiles/development/default.nix new file mode 100644 index 0000000..55a5914 --- /dev/null +++ b/home/modules/profiles/development/default.nix @@ -0,0 +1,38 @@ +{ config, lib, ... }: + +{ + options = { + profiles.development = { + enable = lib.mkEnableOption "Enable development profile (emacs, nvim)"; + }; + }; + + imports = [ + ./emacs + ./nvim.nix + ]; + + config = lib.mkIf config.profiles.development.enable { + programs = { + direnv = { + enable = true; + nix-direnv.enable = true; + }; + + git = { + enable = true; + includes = [{ + contents = { + user = { + email = "rutherther@proton.me"; + name = "Rutherther"; + }; + init = { + defaultBranch = "main"; + }; + }; + }]; + }; + }; + }; +} diff --git a/home/modules/profiles/development/emacs/default.nix b/home/modules/profiles/development/emacs/default.nix new file mode 100644 index 0000000..94191f5 --- /dev/null +++ b/home/modules/profiles/development/emacs/default.nix @@ -0,0 +1,78 @@ +# +# Personal Emacs config. Can be set up with vanilla nixos or with home-manager (see comments at bottom) +# +# flake.nix +# ├─ ./hosts +# │ └─ configuration.nix +# └─ ./modules +# └─ ./editors +# └─ ./emacs +# └─ default.nix * +# + + +{ config, lib, pkgs, ... }: + +let + doomRev = "5f5a163c49207a7083ab1ecc9e78d268fd6600b8"; +in { + config = lib.mkIf config.profiles.development.enable { + services.emacs = { + enable = true; + client = { + enable = true; + }; + startWithUserSession = "graphical"; + }; + + programs.emacs = { + enable = true; + package = pkgs.emacs29-gtk3; + extraPackages = epkgs: [ + epkgs.vterm + epkgs.sqlite + epkgs.treesit-grammars.with-all-grammars + ]; + }; + + home.activation = { + linkDoomConfig = { + after = [ "writeBoundary" "createXdgUserDirectories" ]; + before = [ ]; + data = + '' + EMACS=$HOME/.emacs.d + if [ ! -d "$EMACS" ]; then + ${pkgs.git}/bin/git clone https://github.com/doomemacs/doomemacs $EMACS + (cd $EMACS && ${pkgs.git}/bin/git checkout ${doomRev}) + else + curr_rev=$(cd $EMACS && ${lib.getExe pkgs.git} rev-parse HEAD) + if [[ "$curr_rev" != "${doomRev}" ]]; then + (cd $EMACS && ${lib.getExe pkgs.git} fetch --all && ${lib.getExe pkgs.git} checkout ${doomRev}) + fi + fi + if [ ! -d "$HOME/.doom.d" ]; then + ln -s ${config.nixos-config.location}/modules/editors/emacs/doom.d $HOME/.doom.d + fi + ''; + }; + }; + + home.packages = with pkgs; [ + emacs-all-the-icons-fonts + #binutils # for native comp + + ## Doom emacs dependencies + gnutls + fd + ripgrep + + delta + + ## Optional dependencies + fd + imagemagick + #zstd + ]; + }; +} diff --git a/modules/editors/emacs/doom.d/config.el b/home/modules/profiles/development/emacs/doom.d/config.el similarity index 100% rename from modules/editors/emacs/doom.d/config.el rename to home/modules/profiles/development/emacs/doom.d/config.el diff --git a/modules/editors/emacs/doom.d/custom.el b/home/modules/profiles/development/emacs/doom.d/custom.el similarity index 100% rename from modules/editors/emacs/doom.d/custom.el rename to home/modules/profiles/development/emacs/doom.d/custom.el diff --git a/modules/editors/emacs/doom.d/init.el b/home/modules/profiles/development/emacs/doom.d/init.el similarity index 100% rename from modules/editors/emacs/doom.d/init.el rename to home/modules/profiles/development/emacs/doom.d/init.el diff --git a/modules/editors/emacs/doom.d/packages.el b/home/modules/profiles/development/emacs/doom.d/packages.el similarity index 100% rename from modules/editors/emacs/doom.d/packages.el rename to home/modules/profiles/development/emacs/doom.d/packages.el diff --git a/home/modules/profiles/development/nvim.nix b/home/modules/profiles/development/nvim.nix new file mode 100644 index 0000000..7e81bec --- /dev/null +++ b/home/modules/profiles/development/nvim.nix @@ -0,0 +1,56 @@ +# +# Neovim +# + +{ config, pkgs, lib, ... }: + +{ + config = lib.mkIf config.profiles.development.enable { + programs = { + neovim = { + enable = true; + viAlias = true; + vimAlias = true; + + plugins = with pkgs.vimPlugins; [ + direnv-vim + + vim-nix + vim-markdown + + vim-lastplace + auto-pairs + vim-gitgutter + + wombat256-vim + srcery-vim + + lightline-vim + indent-blankline-nvim + + nvim-surround + vim-easymotion + vim-sneak + + vim-commentary + ]; + + extraConfig = '' + syntax enable " Syntax highlighting + colorscheme srcery " Color scheme text + + set iskeyword=!-~,^*,^45,^124,^34,192-255,^_,^.,^,,^/,^\ + + let g:lightline = { + \ 'colorscheme': 'wombat', + \ } " Color scheme lightline + + highlight Comment cterm=italic gui=italic " Comments become italic + hi Normal guibg=NONE ctermbg=NONE " Remove background, better for personal theme + + set number " Set numbers + ''; + }; + }; + }; +} diff --git a/modules/editors/vscode/home.nix b/home/modules/profiles/development/vscode.nix similarity index 100% rename from modules/editors/vscode/home.nix rename to home/modules/profiles/development/vscode.nix diff --git a/home/modules/profiles/matrix.nix b/home/modules/profiles/matrix.nix new file mode 100644 index 0000000..fb1b591 --- /dev/null +++ b/home/modules/profiles/matrix.nix @@ -0,0 +1,44 @@ +{ config, lib, pkgs, ... }: + +{ + options = { + profiles.matrix = { + enable = lib.mkEnableOption "Enable matrix client"; + }; + }; + + config = lib.mkIf config.profiles.matrix.enable { + home.packages = [ + pkgs.element + pkgs.cinny + ]; + + programs.iamb = { + enable = true; + settings = { + profiles = { + "ditigal.xyz" = { + user_id = "@ruther:ditigal.xyz"; + }; + }; + + settings = { + username_display = "displayname"; + image_preview = {}; + + sort.rooms = [ "favorite" "unread" "recent" "lowpriority" "name" ]; + + }; + + macros = { + normal = { + "" = "v50>l:dmsh"; + "V" = "m"; + }; + }; + }; + }; + + home-config.startup.apps = [ (lib.getExe pkgs.element) ]; + }; +} diff --git a/home/modules/programs/default.nix b/home/modules/programs/default.nix new file mode 100644 index 0000000..1c6e206 --- /dev/null +++ b/home/modules/programs/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./iamb.nix + ]; +} diff --git a/modules/programs/iamb.nix b/home/modules/programs/iamb.nix similarity index 100% rename from modules/programs/iamb.nix rename to home/modules/programs/iamb.nix diff --git a/hosts/laptop-phobos/home.nix b/hosts/laptop-phobos/home.nix deleted file mode 100644 index a00c03b..0000000 --- a/hosts/laptop-phobos/home.nix +++ /dev/null @@ -1,62 +0,0 @@ -# -# Home-manager configuration for laptop -# -# flake.nix -# ├─ ./hosts -# │ └─ ./laptop -# │ └─ home.nix * -# └─ ./modules -# └─ ./desktop -# └─ ./bspwm -# └─ home.nix -# - -{ pkgs, lib, config, ... }: - -{ - imports = - [ - ../../modules/desktop/qtile/home.nix # Window Manager - ../../modules/desktop/gnome/home.nix - ]; - - home = { # Specific packages for laptop - packages = [ - pkgs.distrobox - - # Power Management - pkgs.acpi - - pkgs.easyeffects - ]; - }; - - systemd.user.services.cbatticon = lib.mkIf config.services.cbatticon.enable { - Unit = { - After = lib.mkForce []; - PartOf = lib.mkForce [ "qtile-services.target" ]; - }; - Install.WantedBy = lib.mkForce [ "qtile-services.target" ]; - }; - - systemd.user.services.network-manager-applet = lib.mkIf config.services.network-manager-applet.enable { - Unit = { - After = lib.mkForce []; - PartOf = lib.mkForce [ "qtile-services.target" ]; - }; - Install.WantedBy = lib.mkForce [ "qtile-services.target" ]; - }; - - services = { # Applets - network-manager-applet.enable = true; # Network - cbatticon = { - enable = true; - criticalLevelPercent = 10; - lowLevelPercent = 20; - }; - - easyeffects = { - enable = true; - }; - }; -} diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix deleted file mode 100644 index 7422603..0000000 --- a/modules/desktop/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ pkgs, ... }: - -{ - services = { - xserver = { - enable = true; - - xkb = { - layout = "us,cz"; # Keyboard layout & €-sign - variant = ",qwerty"; - options = "grp:alt_shift_toggle, ctrl:nocaps"; - }; - libinput.enable = true; - modules = [ pkgs.xf86_input_wacom ]; # Both needed for wacom tablet usage - wacom.enable = true; - }; - }; -} diff --git a/modules/desktop/dm/gdm.nix b/modules/desktop/dm/gdm.nix deleted file mode 100644 index 3226fea..0000000 --- a/modules/desktop/dm/gdm.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - services = { - xserver.displayManager.gdm.enable = true; - }; -} diff --git a/modules/desktop/dm/greetd.nix b/modules/desktop/dm/greetd.nix deleted file mode 100644 index f92e091..0000000 --- a/modules/desktop/dm/greetd.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs, ... }: - -{ - services.greetd = { - enable = true; - settings = { - default_session = { - user = "ruther"; - command = "${pkgs.greetd.tuigreet}/bin/tuigreet --cmd '${pkgs.qtile}/bin/qtile start'"; - }; - gnome = { - user = "ruther"; - command = "${pkgs.greetd.tuigreet}/bin/tuigreet --cmd '${pkgs.gnome.gnome-session}/bin/gnome-session'"; - }; - }; - }; -} diff --git a/modules/desktop/dm/sddm-themes/sugar-dark.nix b/modules/desktop/dm/sddm-themes/sugar-dark.nix deleted file mode 100644 index 778d25a..0000000 --- a/modules/desktop/dm/sddm-themes/sugar-dark.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ stdenv, fetchFromGitHub, libsForQt5 }: - -{ - sddm-sugar-dark = stdenv.mkDerivation rec { - pname = "sddm-sugar-dark-theme"; - version = "1.2"; - dontBuild = true; - - propagatedBuildInputs = [ - libsForQt5.qt5.qtquickcontrols2 - libsForQt5.qt5.qtgraphicaleffects - libsForQt5.qt5.qtsvg - ]; - - installPhase = '' - mkdir -p $out/share/sddm/themes/sugar-dark - - cat << EOT >> theme.conf.user - ForceHideCompletePassword="true" - EOT - - cp -aR $src/* theme.conf.user $out/share/sddm/themes/sugar-dark/ - ''; - - src = fetchFromGitHub { - owner = "MarianArlt"; - repo = "sddm-sugar-dark"; - rev = "v${version}"; - sha256 = "0gx0am7vq1ywaw2rm1p015x90b75ccqxnb1sz3wy8yjl27v82yhb"; - }; - }; -} diff --git a/modules/desktop/dm/sddm.nix b/modules/desktop/dm/sddm.nix deleted file mode 100644 index d988e5a..0000000 --- a/modules/desktop/dm/sddm.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - themes = pkgs.callPackage ./sddm-themes/sugar-dark.nix {}; -in { - environment.systemPackages = [ - themes.sddm-sugar-dark - ]; - - services = { - xserver = { - displayManager.sddm = { - enable = true; - theme = "sugar-dark"; - }; - }; - }; -} diff --git a/modules/desktop/gnome/default.nix b/modules/desktop/gnome/default.nix deleted file mode 100644 index 1b7fad7..0000000 --- a/modules/desktop/gnome/default.nix +++ /dev/null @@ -1,60 +0,0 @@ -# -# Gnome configuration -# - -{ pkgs, ... }: - -{ - programs = { - zsh.enable = true; - dconf.enable = true; - kdeconnect = { # For GSConnect - enable = true; - package = pkgs.gnomeExtensions.gsconnect; - }; - }; - - services = { - xserver.desktopManager.gnome.enable = true; - udev.packages = with pkgs; [ - gnome.gnome-settings-daemon - ]; - }; - - environment = { - systemPackages = with pkgs; [ # Packages installed - gnome.dconf-editor - gnome.gnome-tweaks - gnome.adwaita-icon-theme - gnomeExtensions.fullscreen-avoider - gnomeExtensions.vitals - gnomeExtensions.openweather - gnomeExtensions.clipboard-history - gnomeExtensions.forge - gnomeExtensions.switcher - (gnomeExtensions.disable-workspace-switch-animation-for-gnome-40.overrideAttrs { - src = pkgs.fetchFromGitHub { - owner = "tmke8"; - repo = "gnome-shell-extension-instant-workspace-switcher"; - rev = "patch-1"; - hash = "sha256-Ual7kAOeGPe3DF5XHf5eziscYeMLUnDktEGU41Yl4E4="; - } + "/instantworkspaceswitcher@amalantony.net"; - }) - ]; - gnome.excludePackages = (with pkgs; [ # Gnome ignored packages - gnome-tour - ]) ++ (with pkgs.gnome; [ - pkgs.gedit - epiphany - geary - gnome-characters - tali - iagno - hitori - atomix - yelp - gnome-contacts - gnome-initial-setup - ]); - }; -} diff --git a/modules/desktop/gnome/home.nix b/modules/desktop/gnome/home.nix deleted file mode 100644 index 3a44650..0000000 --- a/modules/desktop/gnome/home.nix +++ /dev/null @@ -1,140 +0,0 @@ -# -# Gnome Home-Manager Configuration -# -# Dconf settings can be found by running "$ dconf watch /" -# - -{ config, lib, pkgs, ... }: - -{ - dconf.settings = { - "org/gnome/shell" = { - favorite-apps = [ - "Alacritty.desktop" - "firefox.desktop" - "emacs.desktop" - "org.gnome.Nautilus.desktop" - "discord.desktop" - "telegram-desktop.desktop" - "blueman-manager.desktop" - "pavucontrol.desktop" - ]; - disable-user-extensions = false; - enabled-extensions = [ - "paperwm@paperwm.github.com" - "auto-move-windows@gnome-shell-extensions.gcampax.github.com" - "launch-new-instance@gnome-shell-extensions.gcampax.github.com" - "native-window-placement@gnome-shell-extensions.gcampax.github.com" - "places-menu@gnome-shell-extensions.gcampax.github.com" - "drive-menu@gnome-shell-extensions.gcampax.github.com" - "Vitals@CoreCoding.com" - "clipboard-history@alexsaveau.dev" - "switcher@landau.fi" - "fullscreen-avoider@noobsai.github.com" - "instantworkspaceswitcher@amalantony.net" - ]; - }; - - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; - enable-hot-corners = false; - clock-show-weekday = true; - #gtk-theme = "Adwaita-dark"; - }; - "org/gnome/desktop/privacy" = { - report-technical-problems = "false"; - }; - "org/gnome/desktop/calendar" = { - show-weekdate = true; - }; - "org/gnome/desktop/wm/preferences" = { - action-right-click-titlebar = "toggle-maximize"; - action-middle-click-titlebar = "minimize"; - resize-with-right-button = true; - mouse-button-modifier = ""; - button-layout = ":minimize,close"; - num-workspaces = 9; - }; - - # "org/gnome/shell/keybindings" = builtins.listToAttrs (builtins.map (i: { name = "switch-to-application-${i}"; value = ["@as []"]; }) (builtins.genList (y: y + 1) 9)); - "org/gnome/shell/keybindings" = builtins.listToAttrs (builtins.map (i: { name = "switch-to-application-${builtins.toString i}"; value = ["@as []"]; }) (builtins.genList (y: y + 1) 9)); - "org/gnome/desktop/wm/keybindings" = - builtins.listToAttrs (builtins.map (i: { name = "switch-to-workspace-${builtins.toString i}"; value = ["${builtins.toString i}"]; }) (builtins.genList (y: y + 1) 9)) // - builtins.listToAttrs (builtins.map (i: { name = "move-to-workspace-${builtins.toString i}"; value = ["${builtins.toString i}"]; }) (builtins.genList (y: y + 1) 9)) // - { - move-to-workspace-left = ["a"]; - move-to-workspace-right = ["d"]; - - close = ["w" "F4"]; - toggle-fullscreen = ["f"]; - - panel-run-dialog = ["@as []"]; - }; - - "org/gnome/settings-daemon/plugins/power" = { - sleep-interactive-ac-type = "nothing"; - }; - - "org/gnome/settings-daemon/plugins/media-keys" = { - custom-keybindings = [ - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/" - ]; - }; - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { - binding = "Return"; - command = "alacritty"; - name = "open-terminal"; - }; - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { - binding = "e"; - command = "emacs-client"; - name = "open-emacs"; - }; - - "org/gnome/shell/extensions/paperwm" = { - restore-workspaces-only-on-primary = false; - window-gap = 10; - winprops = [ "{\"wm_class\":\"Spotify\",\"scratch_layer\":true}" ]; - }; - - "org/gnome/shell/extensions/paperwm/keybindings" = { - move-left = ["k"]; - move-right = ["j"]; - - switch-previous = ["k"]; - switch-next = ["j"]; - - move-monitor-left = ["a"]; - move-monitor-below = ["s"]; - move-monitor-right = ["d"]; - move-monitor-above = ["w"]; - - swap-monitor-left = ["a"]; - swap-monitor-below = ["s"]; - swap-monitor-right = ["d"]; - swap-monitor-above = ["w"]; - - switch-monitor-left = ["a"]; - switch-monitor-below = ["s"]; - switch-monitor-right = ["d"]; - switch-monitor-above = ["w"]; - - new-window = ["n"]; - - paper-toggle-fullscreen = ["f"]; - - toggle-maximize-width = ["f"]; - - toggle-scratch = ["g"]; - toggle-scratch-layer = ["g"]; - }; - - "org/gnome/shell/extensions/switcher" = { - show-switcher = ["semicolon"]; - }; - }; - - home.packages = with pkgs; [ - ]; -} diff --git a/modules/desktop/qtile/default.nix b/modules/desktop/qtile/default.nix deleted file mode 100644 index d5e4ad6..0000000 --- a/modules/desktop/qtile/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ config, lib, pkgs, nixpkgs, ... }: - -let - pythonEnvPackages = ppkgs: [ - ppkgs.qtile-extras - ppkgs.xlib - ppkgs.screeninfo - ppkgs.pyudev - ppkgs.pydbus - ]; -in { - environment.systemPackages = with pkgs; [ - xkblayout-state - ]; - - services = { - xserver = { - enable = true; - windowManager.qtile = { - enable = true; - - package = pkgs.qtile-unwrapped.overridePythonAttrs(oldAttrs: { - propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ pythonEnvPackages pkgs.python3Packages; - }); - - extraPackages = pythonEnvPackages; - }; - }; - }; -} diff --git a/modules/desktop/qtile/home.nix b/modules/desktop/qtile/home.nix deleted file mode 100644 index 67a84c7..0000000 --- a/modules/desktop/qtile/home.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ config, pkgs, ... }: - -{ - systemd.user.targets.qtile-services = { - Unit = { - Description = "A target that is enabled when starting Qtile"; - Requires = [ "graphical-session.target" ]; - }; - }; - - home.packages = [ - pkgs.ksnip - ]; - - xdg.configFile."qtile/config.py".source = ./config/config.py; - xdg.configFile."qtile/utils.py".source = ./config/utils.py; - xdg.configFile."qtile/functions.py".source = ./config/functions.py; - xdg.configFile."qtile/bars.py".source = ./config/bars.py; - xdg.configFile."qtile/screens.py".source = ./config/screens.py; - xdg.configFile."qtile/styling.py".source = ./config/styling.py; - - xdg.configFile."qtile/tasklist.py".source = ./config/tasklist.py; - xdg.configFile."qtile/xmonadcustom.py".source = ./config/xmonadcustom.py; - xdg.configFile."qtile/sequence-detector.config.json".source = ./config/sequence-detector.config.json; - - xdg.configFile."qtile/nixenvironment.py".text = '' - from string import Template - import os - - setupLocationRef = Template("${config.nixos-config.location}") - configLocationRef = Template("${config.nixos-config.location}/modules/desktop/qtile/config") - - setupLocation = setupLocationRef.substitute(os.environ) - configLocation = configLocationRef.substitute(os.environ) - - sequenceDetectorExec = "sequence_detector -c /home/${config.nixos-config.defaultUser}/.config/qtile/sequence-detector.config.json " - ''; -} diff --git a/modules/desktop/virtualisation/default.nix b/modules/desktop/virtualisation/default.nix deleted file mode 100644 index b37a8ac..0000000 --- a/modules/desktop/virtualisation/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./qemu.nix - ./podman.nix - ]; -} diff --git a/modules/desktop/virtualisation/podman.nix b/modules/desktop/virtualisation/podman.nix deleted file mode 100644 index 2f6da58..0000000 --- a/modules/desktop/virtualisation/podman.nix +++ /dev/null @@ -1,19 +0,0 @@ -# -# Docker -# - -{ config, pkgs, user, ... }: - -{ - users.groups.podman.members = [ "root" config.nixos-config.defaultUser ]; - - virtualisation.podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - - environment.systemPackages = with pkgs; [ - podman-compose - ]; -} diff --git a/modules/desktop/virtualisation/qemu.nix b/modules/desktop/virtualisation/qemu.nix deleted file mode 100644 index 6685520..0000000 --- a/modules/desktop/virtualisation/qemu.nix +++ /dev/null @@ -1,50 +0,0 @@ -# -# Qemu/KVM with virt-manager -# - -{ config, pkgs, ... }: - -{ - users.groups.libvirtd.members = [ "root" config.nixos-config.defaultUser ]; - users.groups.kvm.members = [ "root" config.nixos-config.defaultUser ]; - - virtualisation = { - libvirtd = { - enable = true; - qemu = { - ovmf.enable = true; - ovmf.packages = [ pkgs.OVMFFull.fd ]; - verbatimConfig = '' - nvram = [ "${pkgs.OVMF}/FV/OVMF.fd:${pkgs.OVMF}/FV/OVMF_VARS.fd" ] - ''; - swtpm.enable = true; - }; - }; - spiceUSBRedirection.enable = true; # USB passthrough - }; - - environment = { - etc = { - "ovmf/edk2-x86_64-secure-code.fd" = { - source = config.virtualisation.libvirtd.qemu.package + "/share/qemu/edk2-x86_64-secure-code.fd"; - }; - - "ovmf/edk2-i386-vars.fd" = { - source = config.virtualisation.libvirtd.qemu.package + "/share/qemu/edk2-i386-vars.fd"; - }; - }; - - systemPackages = with pkgs; [ - virt-manager - virt-viewer - qemu - OVMF - gvfs # Used for shared folders between Linux and Windows - swtpm - ]; - }; - - services = { # Enable file sharing between OS - gvfs.enable = true; - }; -} diff --git a/modules/editors/emacs/home.nix b/modules/editors/emacs/home.nix deleted file mode 100644 index d7c7fc7..0000000 --- a/modules/editors/emacs/home.nix +++ /dev/null @@ -1,76 +0,0 @@ -# -# Personal Emacs config. Can be set up with vanilla nixos or with home-manager (see comments at bottom) -# -# flake.nix -# ├─ ./hosts -# │ └─ configuration.nix -# └─ ./modules -# └─ ./editors -# └─ ./emacs -# └─ default.nix * -# - - -{ lib, pkgs, config, ... }: - -let - doomRev = "5f5a163c49207a7083ab1ecc9e78d268fd6600b8"; -in { - services.emacs = { - enable = true; - client = { - enable = true; - }; - startWithUserSession = "graphical"; - }; - - programs.emacs = { - enable = true; - package = pkgs.emacs29-gtk3; - extraPackages = epkgs: [ - epkgs.vterm - epkgs.sqlite - epkgs.treesit-grammars.with-all-grammars - ]; - }; - - home.activation = { - linkDoomConfig = { - after = [ "writeBoundary" "createXdgUserDirectories" ]; - before = [ ]; - data = - '' - EMACS=$HOME/.emacs.d - if [ ! -d "$EMACS" ]; then - ${pkgs.git}/bin/git clone https://github.com/doomemacs/doomemacs $EMACS - (cd $EMACS && ${pkgs.git}/bin/git checkout ${doomRev}) - else - curr_rev=$(cd $EMACS && ${lib.getExe pkgs.git} rev-parse HEAD) - if [[ "$curr_rev" != "${doomRev}" ]]; then - (cd $EMACS && ${lib.getExe pkgs.git} fetch --all && ${lib.getExe pkgs.git} checkout ${doomRev}) - fi - fi - if [ ! -d "$HOME/.doom.d" ]; then - ln -s ${config.nixos-config.location}/modules/editors/emacs/doom.d $HOME/.doom.d - fi - ''; - }; - }; - - home.packages = with pkgs; [ - emacs-all-the-icons-fonts - #binutils # for native comp - - ## Doom emacs dependencies - gnutls - fd - ripgrep - - delta - - ## Optional dependencies - fd - imagemagick - #zstd - ]; -} diff --git a/modules/editors/home.nix b/modules/editors/home.nix deleted file mode 100644 index 37cde6f..0000000 --- a/modules/editors/home.nix +++ /dev/null @@ -1,19 +0,0 @@ -# -# Editors -# -# flake.nix -# ├─ ./hosts -# │ └─ ./home.nix -# └─ ./modules -# └─ ./services -# └─ default.nix * -# └─ ... -# -{ - imports = [ - ./emacs/home.nix - ./nvim/home.nix - ]; -} - -# Comment out emacs if you are not using native doom emacs. (import from host configuration.nix) diff --git a/modules/editors/nvim/home.nix b/modules/editors/nvim/home.nix deleted file mode 100644 index f1e94cd..0000000 --- a/modules/editors/nvim/home.nix +++ /dev/null @@ -1,54 +0,0 @@ -# -# Neovim -# - -{ pkgs, ... }: - -{ - programs = { - neovim = { - enable = true; - viAlias = true; - vimAlias = true; - - plugins = with pkgs.vimPlugins; [ - direnv-vim - - vim-nix - vim-markdown - - vim-lastplace - auto-pairs - vim-gitgutter - - wombat256-vim - srcery-vim - - lightline-vim - indent-blankline-nvim - - nvim-surround - vim-easymotion - vim-sneak - - vim-commentary - ]; - - extraConfig = '' - syntax enable " Syntax highlighting - colorscheme srcery " Color scheme text - - set iskeyword=!-~,^*,^45,^124,^34,192-255,^_,^.,^,,^/,^\ - - let g:lightline = { - \ 'colorscheme': 'wombat', - \ } " Color scheme lightline - - highlight Comment cterm=italic gui=italic " Comments become italic - hi Normal guibg=NONE ctermbg=NONE " Remove background, better for personal theme - - set number " Set numbers - ''; - }; - }; -} diff --git a/modules/hardware/bluetooth.nix b/modules/hardware/bluetooth.nix deleted file mode 100644 index 8f55cef..0000000 --- a/modules/hardware/bluetooth.nix +++ /dev/null @@ -1,17 +0,0 @@ -# -# Bluetooth -# - -{ pkgs, ... }: - -{ - hardware.bluetooth = { - enable = true; - settings = { - General = { - Enable = "Source,Sink,Media,Socket"; - }; - }; - }; - services.blueman.enable = true; -} diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix deleted file mode 100644 index bfc65b0..0000000 --- a/modules/hardware/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -# -# Hardware -# -# flake.nix -# ├─ ./hosts -# │ └─ ./ -# │ └─ default.nix -# └─ ./modules -# └─ ./hardware -# └─ default.nix * -# └─ ... -# -{ - imports = [ - ./bluetooth.nix - ]; -} diff --git a/modules/hardware/rocm/default.nix b/modules/hardware/rocm/default.nix deleted file mode 100644 index ee12bfb..0000000 --- a/modules/hardware/rocm/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs }: - -{ - systemd.tmpfiles.rules = [ - "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}" - ]; - - # nixpkgs.config.rocmSupport = true; - - hardware.opengl.extraPackages = with pkgs; [ - rocmPackages.clr.icd - ]; -} diff --git a/modules/programs/alacritty.nix b/modules/programs/alacritty.nix deleted file mode 100644 index 2234aaa..0000000 --- a/modules/programs/alacritty.nix +++ /dev/null @@ -1,58 +0,0 @@ -# -# Terminal Emulator -# -# Hardcoded as terminal for rofi and doom emacs -# - -{ pkgs, lib, ... }: - -{ - - programs = { - dircolors = { - enable = true; - settings = { - OTHER_WRITABLE = "01;35"; # Make ntfs colors readable - }; - }; - - iamb = { - enable = true; - settings = { - profiles = { - "ditigal.xyz" = { - user_id = "@ruther:ditigal.xyz"; - }; - }; - settings = { - username_display = "displayname"; - image_preview = {}; - }; - }; - }; - - kitty = { - enable = true; - font = { - name = "FiraCode Nerd Font"; - size = 12; - }; - theme = "Chalk"; - }; - - alacritty = { - enable = true; - settings = { - font = rec { # Font - Laptop has size manually changed at home.nix - normal.family = "FiraCode Nerd Font"; - bold = { style = "Bold"; }; - size = 12; - }; - # offset = { # Positioning - # x = -1; - # y = 0; - # }; - }; - }; - }; -} diff --git a/modules/programs/clipmenu.nix b/modules/programs/clipmenu.nix deleted file mode 100644 index d02ca38..0000000 --- a/modules/programs/clipmenu.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - home.packages = with pkgs; [ - dmenu - clipmenu - ]; - - # services.clipmenu.enable = true; -} diff --git a/modules/programs/email.nix b/modules/programs/email.nix deleted file mode 100644 index 38a6734..0000000 --- a/modules/programs/email.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ config, lib, pkgs, location, ... }: - -{ - programs.thunderbird = { - enable = true; - profiles = { - default = { - isDefault = true; - }; - }; - }; - - accounts.email = { - accounts = { - ctu = { - primary = true; - thunderbird = { - enable = true; - }; - address = "bohacfr2@fel.cvut.cz"; - userName = "bohacfr2"; - realName = "František Boháček"; - imap = { - host = "imap.fel.cvut.cz"; - port = 993; - }; - smtp = { - host = "smtpx.fel.cvut.cz"; - port = 465; - tls = { - enable = true; - }; - }; - }; - }; - }; -} diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix deleted file mode 100644 index 306f350..0000000 --- a/modules/programs/firefox.nix +++ /dev/null @@ -1,131 +0,0 @@ -{ inputs, config, pkgs, ... }: - -let - nur = import inputs.nur { - # TODO replace this x86 64 linux with actual host system - # will have to be passed from nixos config probably - nurpkgs = import inputs.nixpkgs { system = "x86_64-linux"; }; - inherit pkgs; - }; -in { - home.packages = [ - # pkgs.firefoxpwa - ]; - - programs.firefox = { - enable = true; - package = pkgs.firefox.override { - nativeMessagingHosts = [ - pkgs.tridactyl-native - ]; - }; - profiles = { - default = { - id = 0; - name = "Default"; - isDefault = true; - - userChrome = '' - #navigator-toolbox { font-family:Ubuntu !important } - ''; - - extensions = with nur.repos.rycee.firefox-addons; [ - # Basic - proton-pass # Password manager - darkreader # Dark pages - ublock-origin # Ad block - tridactyl # Vim-like keybindings - - # Containers - multi-account-containers - - # Site specific - # social fixer for facebook - - # UI - text-contrast-for-dark-themes - - # Utility - istilldontcareaboutcookies - h264ify - youtube-shorts-block - - # Privacy - link-cleaner - clearurls - decentraleyes - privacy-badger - skip-redirect - - # Paywalls - # bypass-paywalls-clean - ]; - - settings = { - "beacon.enabled" = false; - "browser.contentblocking.category" = "strict"; - - "browser.newtabpage.enabled" = false; # Blank new tab page. - "browser.startup.page" = 3; # Resume last session. - "browser.tabs.closeWindowWithLastTab" = false; - - "browser.download.dir" = "${config.home.homeDirectory}/download"; - "browser.toolbars.bookmarks.visibility" = "newtab"; - "signon.rememberSignons" = false; - "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false; - "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false; - - "layout.css.prefers-color-scheme.content-override" = 2; - "browser.uidensity" = 1; # Dense. - "extensions.unifiedExtensions.enabled" = false; # Disable extensions symbol in bar - "layout.css.devPixelsPerPx" = 1; # Default zoom? - - "media.ffmpeg.vaapi.enabled" = true; - "gfx.webrender.all" = true; - - "network.IDN_show_punycode" = true; - - "permissions.default.shortcuts" = 3; # Don't steal my shortcuts! - - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - - # Privacy - "browser.search.hiddenOneOffs" = - "Google,Yahoo,Bing,Amazon.com,Twitter"; - "browser.send_pings" = false; - "dom.battery.enabled" = false; - "dom.security.https_only_mode" = true; - "network.dns.disablePrefetch" = true; - "geo.enabled" = false; - "browser.urlbar.speculativeConnect.enabled" = false; # Do not resolve dns before clicking - "network.prefetch-next" = false; - "media.video_stats.enabled" = false; - - "network.http.referer.XOriginPolicy" = 2; - "network.http.referer.XOriginTrimmingPolicy" = 2; - "network.http.referer.trimmingPolicy" = 1; - - "privacy.donottrackheader.enabled" = true; - "privacy.donottrackheader.value" = 1; - "privacy.firstparty.isolate" = true; - - # Fully disable Pocket. See - # https://www.reddit.com/r/linux/comments/zabm2a. - "extensions.pocket.enabled" = false; - "extensions.pocket.api" = "0.0.0.0"; - "extensions.pocket.loggedOutVariant" = ""; - "extensions.pocket.oAuthConsumerKey" = ""; - "extensions.pocket.onSaveRecs" = false; - "extensions.pocket.onSaveRecs.locales" = ""; - "extensions.pocket.showHome" = false; - "extensions.pocket.site" = "0.0.0.0"; - "browser.newtabpage.activity-stream.pocketCta" = ""; - "browser.newtabpage.activity-stream.section.highlights.includePocket" = - false; - "services.sync.prefs.sync.browser.newtabpage.activity-stream.section.highlights.includePocket" = - false; - }; - }; - }; - }; -} diff --git a/modules/programs/fpga/vivado/default.nix b/modules/programs/fpga/vivado/default.nix deleted file mode 100644 index dad2270..0000000 --- a/modules/programs/fpga/vivado/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ inputs, system, config, lib, pkgs, vivadoPath, ... }: - -{ - services.udev.packages = [ - inputs.nix-fpga-tools.packages.x86_64-linux.ise-udev-rules - inputs.nix-fpga-tools.packages.x86_64-linux.vivado-udev-rules - ]; -} diff --git a/modules/programs/fpga/vivado/fhs.nix b/modules/programs/fpga/vivado/fhs.nix deleted file mode 100644 index e183eb8..0000000 --- a/modules/programs/fpga/vivado/fhs.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ stdenv, config, lib, stable, pkgs, vivadoPath, ... }: - -stable.buildFHSEnv { - name = "vivado-wrapped"; - - targetPkgs = pkgs: with pkgs; [ - coreutils - stdenv.cc.cc - ncurses5 - ncurses - zlib - xorg.libX11 - xorg.libXrender - xorg.libxcb - xorg.libXext - xorg.libXtst - xorg.libXi - freetype - gtk2 - glib - libxcrypt-legacy - gperftools - glibc.dev - fontconfig - liberation_ttf - ]; - - runScript = "${vivadoPath}"; -} diff --git a/modules/programs/fpga/vivado/home.nix b/modules/programs/fpga/vivado/home.nix deleted file mode 100644 index 2ab2ced..0000000 --- a/modules/programs/fpga/vivado/home.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, lib, pkgs, vivadoPath, stable, ... }: - -let - vivadoPkg = pkgs.callPackage ./vivado-pkg.nix { inherit vivadoPath stable; }; - fhsPkg = pkgs.callPackage ./fhs.nix { inherit vivadoPath stable; }; -in { - home.packages = [ - fhsPkg - ]; -} diff --git a/modules/programs/fpga/vivado/udev/52-xilinx-digilent-usb.rules b/modules/programs/fpga/vivado/udev/52-xilinx-digilent-usb.rules deleted file mode 100644 index 2ef3019..0000000 --- a/modules/programs/fpga/vivado/udev/52-xilinx-digilent-usb.rules +++ /dev/null @@ -1,54 +0,0 @@ -########################################################################### -# # -# 52-digilent-usb.rules -- UDEV rules for Digilent USB Devices # -# # -########################################################################### -# Author: MTA # -# Copyright 2010 Digilent Inc. # -########################################################################### -# File Description: # -# # -# This file contains the rules used by UDEV when creating entries for # -# Digilent USB devices. In order for Digilent's shared libraries and # -# applications to access these devices without root privalages it is # -# necessary for UDEV to create entries for which all users have read # -# and write permission. # -# # -# Usage: # -# # -# Copy this file to "/etc/udev/rules.d/" and execute # -# "/censored/censored reload_rules" as root. This only needs to be done # -# immediately after installation. Each time you reboot your system the # -# rules are automatically loaded by UDEV. # -# # -########################################################################### -# Revision History: # -# # -# 04/15/2010(MTA): created # -# 02/28/2011(MTA): modified to support FTDI based devices # -# 07/10/2012(MTA): modified to work with UDEV versions 098 or newer # -# 04/19/2013(MTA): modified mode assignment to use ":=" insetead of "=" # -# so that our permission settings can't be overwritten by other # -# rules files # -# 07/28/2014(MTA): changed default application path # -# # -########################################################################### - -# Create "/dev" entries for Digilent device's with read and write -# permission granted to all users. -ATTR{idVendor}=="1443", MODE:="666" -ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Digilent", MODE:="666" - -# The following rules (if present) cause UDEV to ignore all UEVENTS for -# which the subsystem is "usb_endpoint" and the action is "add" or -# "remove". These rules are necessary to work around what appears to be a -# bug in the Kernel used by Red Hat Enterprise Linux 5/CentOS 5. The Kernel -# sends UEVENTS to remove and then add entries for the endpoints of a USB -# device in "/dev" each time a process releases an interface. This occurs -# each time a data transaction occurs. When an FPGA is configured or flash -# device is written a large number of transactions take place. If the -# following lines are commented out then UDEV will be overloaded for a long -# period of time while it tries to process the massive number of UEVENTS it -# receives from the kernel. Please note that this work around only applies -# to systems running RHEL5 or CentOS 5 and as a result the rules will only -# be present on those systems. diff --git a/modules/programs/fpga/vivado/udev/52-xilinx-ftdi-usb.rules b/modules/programs/fpga/vivado/udev/52-xilinx-ftdi-usb.rules deleted file mode 100644 index 3ff972c..0000000 --- a/modules/programs/fpga/vivado/udev/52-xilinx-ftdi-usb.rules +++ /dev/null @@ -1,47 +0,0 @@ -########################################################################### -# # -# 52-xilinx-ftdi-usb.rules -- UDEV rules for Xilinx USB Devices # -# # -########################################################################### -# Author: EST # -# Copyright 2016 Xilinx Inc. # -########################################################################### -# File Description: # -# # -# This file contains the rules used by UDEV when creating entries for # -# Xilinx USB devices. In order for Xilinx's shared libraries and # -# applications to access these devices without root privalages it is # -# necessary for UDEV to create entries for which all users have read # -# and write permission. # -# # -# Usage: # -# # -# Copy this file to "/etc/udev/rules.d/" and execute # -# "/censored/censored reload_rules" as root. This only needs to be done # -# immediately after installation. Each time you reboot your system the # -# rules are automatically loaded by UDEV. # -# # -########################################################################### -# Revision History: # -# # -# 10/18/2016(EST): created # -# # -########################################################################### -# version 0001 -# Create "/dev" entries for Xilinx device's with read and write -# permission granted to all users. -ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Xilinx", MODE:="666" - -# The following rules (if present) cause UDEV to ignore all UEVENTS for -# which the subsystem is "usb_endpoint" and the action is "add" or -# "remove". These rules are necessary to work around what appears to be a -# bug in the Kernel used by Red Hat Enterprise Linux 6/CentOS 5. The Kernel -# sends UEVENTS to remove and then add entries for the endpoints of a USB -# device in "/dev" each time a process releases an interface. This occurs -# each time a data transaction occurs. When an FPGA is configured or flash -# device is written a large number of transactions take place. If the -# following lines are commented out then UDEV will be overloaded for a long -# period of time while it tries to process the massive number of UEVENTS it -# receives from the kernel. Please note that this work around only applies -# to systems running RHEL6 or CentOS 5 and as a result the rules will only -# be present on those systems. diff --git a/modules/programs/fpga/vivado/udev/52-xilinx-pcusb.rules b/modules/programs/fpga/vivado/udev/52-xilinx-pcusb.rules deleted file mode 100644 index 6d552df..0000000 --- a/modules/programs/fpga/vivado/udev/52-xilinx-pcusb.rules +++ /dev/null @@ -1,8 +0,0 @@ -# version 0002 -ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE="666" -ATTR{idVendor}=="03fd", ATTR{idProduct}=="0007", MODE="666" -ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE="666" -ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE="666" -ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE="666" -ATTR{idVendor}=="03fd", ATTR{idProduct}=="0013", MODE="666" -ATTR{idVendor}=="03fd", ATTR{idProduct}=="0015", MODE="666" diff --git a/modules/programs/fpga/vivado/vivado-pkg.nix b/modules/programs/fpga/vivado/vivado-pkg.nix deleted file mode 100644 index b3da0b6..0000000 --- a/modules/programs/fpga/vivado/vivado-pkg.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ stdenv, config, lib, pkgs, ... }: - -# Only udev rules... - -stdenv.mkDerivation { - name = "vivado-2023.1"; - - nativeBuildInputs = [ pkgs.zlib ]; - buildInputs = [ pkgs.patchelf pkgs.procps pkgs.ncurses5 pkgs.makeWrapper ]; - - src = ./.; - - installPhase = '' - mkdir -p $out/lib/udev/rules.d/ - cp udev/* $out/lib/udev/rules.d/ - ''; - - dontPatch = true; - dontConfigure = true; - dontBuild = true; -} diff --git a/modules/programs/games.nix b/modules/programs/games.nix deleted file mode 100644 index 40a6b63..0000000 --- a/modules/programs/games.nix +++ /dev/null @@ -1,35 +0,0 @@ -# -# Gaming -# Steam + MC + Emulation -# -# Do not forget to enable Steam play for all title in the settings menu -# - -{ pkgs, lib, ... }: - -{ - environment.systemPackages = [ - pkgs.lunar-client - # pkgs.heroic - # pkgs.lutris - # pkgs.prismlauncher - # pkgs.retroarchFull - # pcsx2 - ]; - - programs = { # Needed to succesfully start Steam - steam = { - enable = true; - }; - gamemode.enable = true; # Better gaming performance - # Steam: Right-click game - Properties - Launch options: gamemoderun %command% - # Lutris: General Preferences - Enable Feral GameMode - # - Global options - Add Environment Variables: LD_PRELOAD=/nix/store/*-gamemode-*-lib/lib/libgamemodeauto.so - }; - - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ - "steam" - "steam-original" - "steam-runtime" - ]; # Use Steam for Linux libraries -} diff --git a/modules/programs/home.nix b/modules/programs/home.nix deleted file mode 100644 index 6f11a89..0000000 --- a/modules/programs/home.nix +++ /dev/null @@ -1,22 +0,0 @@ -# -# Apps -# -# flake.nix -# ├─ ./hosts -# │ └─ home.nix -# └─ ./modules -# └─ ./programs -# └─ default.nix * -# └─ ... -# - -{ - imports = [ - ./alacritty.nix - ./iamb.nix - ./rofi.nix - ./clipmenu.nix - ./firefox.nix - ./email.nix - ]; -} diff --git a/modules/programs/rofi.nix b/modules/programs/rofi.nix deleted file mode 100644 index 1e24c48..0000000 --- a/modules/programs/rofi.nix +++ /dev/null @@ -1,130 +0,0 @@ -# -# System Menu -# - -{ config, lib, pkgs, ... }: - -let - inherit (config.lib.formats.rasi) mkLiteral; # Theme.rasi alternative. Add Theme here - colors = import ../themes/colors.nix; - - themes-collection = pkgs.fetchFromGitHub { - owner = "newmanls"; - repo = "rofi-themes-collection"; - rev = "f87e08300cb1c984994efcaf7d8ae26f705226fd"; - hash = "sha256-A6zIAQvjfe/XB5GZefs4TWgD+eGICQP2Abz/sQynJPo="; - }; -in -{ - home = { - packages = with pkgs; [ - rofi-power-menu - ]; - }; - - xdg.dataFile."rofi/themes/launchpad.rasi".source = "${themes-collection}/themes/launchpad.rasi"; - xdg.dataFile."rofi/themes/spotlight.rasi".source = "${themes-collection}/themes/spotlight-dark.rasi"; - - programs = { - rofi = { - enable = true; - terminal = "${pkgs.alacritty}/bin/alacritty"; # Alacritty is default terminal emulator - location = "center"; - font = "FiraCode Nerd Font Mono 11"; - theme = with colors.scheme.doom; { - # Based on spotlight theme - "*" = { - font = "Montserrat 12"; - - bg0 = mkLiteral "#222223e6"; - bg1 = mkLiteral "#44444480"; - bg2 = mkLiteral "#51afefe6"; - fg0 = mkLiteral "#${text}"; - fg1 = mkLiteral "#d5d5d5"; - fg2 = mkLiteral "#${fg}"; - - background-color = mkLiteral "transparent"; - text-color = mkLiteral "@fg0"; - - margin = mkLiteral "0"; - padding = mkLiteral "0"; - spacing = mkLiteral "0"; - }; - - "window" = { - background-color = mkLiteral "@bg0"; - - location = mkLiteral "center"; - width = mkLiteral "640"; - border-radius = mkLiteral "0"; - }; - - "inputbar" = { - font = "Montserrat 20"; - padding = mkLiteral "12px"; - spacing = mkLiteral "12px"; - children = mkLiteral "[ icon-search, entry ]"; - }; - - "icon-search" = { - expand = false; - filename = "search"; - size = mkLiteral "28px"; - }; - - "icon-search, entry, element-icon, element-text" = { - vertical-align = mkLiteral "0.5"; - }; - - "entry" = { - font = mkLiteral "inherit"; - - placeholder = "Search"; - placeholder-color = mkLiteral "@fg2"; - }; - - "message" = { - border = mkLiteral "2px 0 0"; - border-color = mkLiteral "@bg1"; - background-color = mkLiteral "@bg1"; - }; - - "textbox" = { - padding = mkLiteral "8px 24px"; - }; - - "listview" = { - lines = 10; - columns = mkLiteral "1"; - - fixed-height = false; - border = mkLiteral "1px 0 0"; - border-color = mkLiteral "@bg1"; - }; - - "element" = { - padding = mkLiteral "8px 16px"; - spacing = mkLiteral "16px"; - background-color = mkLiteral "transparent"; - }; - - "element normal active" = { - text-color = mkLiteral "@bg2"; - }; - - "element selected normal, element selected active" = { - background-color = mkLiteral "@bg2"; - text-color = mkLiteral "@fg1"; - }; - - "element-icon" = { - size = mkLiteral "1em"; - }; - - "element-text" = { - text-color = mkLiteral "inherit"; - }; - }; - }; - }; -} diff --git a/modules/services/autorandr.nix b/modules/services/autorandr.nix deleted file mode 100644 index 1825dc6..0000000 --- a/modules/services/autorandr.nix +++ /dev/null @@ -1,99 +0,0 @@ -{ lib, config, ... }: - -{ - services.autorandr = { - enable = true; - }; - - systemd.user.services.autorandr = lib.mkIf config.services.autorandr.enable { - Unit.PartOf = lib.mkForce [ "qtile-services.target" ]; - Install.WantedBy = lib.mkForce [ "qtile-services.target" ]; - }; - - programs.autorandr = { - enable = true; - hooks = { - postswitch = { - # "notify-qtile" = "qtile cmd-obj -o cmd -f restart"; - # Looks to me like after restarting QTile, - # the system becomes slower until picom is restarted - # "restart-picom" = "systemctl restart --user picom"; - }; - }; - profiles = { - "home-docked" = { - fingerprint = { - "DP-7" = "00ffffffffffff0009d1e77801010101261e0104a5351e783a05f5a557529c270b5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff00455442394c3033373432534c30000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a2001e002031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d"; - "DP-8" = "00ffffffffffff0009d1e778455400000d1c0104a5351e783a0565a756529c270f5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff0058334a30303131303031510a20000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a20017d02031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d"; - "DP-9" = "00ffffffffffff0009d1d978455400002b1a010380351e782e6c40a755519f27145054a56b80d1c081c081008180a9c0b30001010101023a801871382d40582c45000f282100001e000000ff0054414730333931303031390a20000000fd00324c1e5311000a202020202020000000fc0042656e51204757323437300a200161020322f14f901f05140413031207161501061102230907078301000065030c001000023a801871382d40582c45000f282100001e011d8018711c1620582c25000f282100009e011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f282100001800000000000000000000000000000000000000000005"; - }; - config = { - DP-9 = { - enable = true; - position = "0x0"; - mode = "1920x1080"; - }; - DP-7 = { - enable = true; - primary = true; - position = "1920x0"; - mode = "1920x1080"; - }; - DP-8 = { - enable = true; - position = "3840x0"; - mode = "1920x1080"; - }; - eDP-1 = { - enable = false; - }; - }; - }; - "home-internal" = { - fingerprint = { - "DP-7" = "00ffffffffffff0009d1e77801010101261e0104a5351e783a05f5a557529c270b5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff00455442394c3033373432534c30000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a2001e002031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d"; - "DP-8" = "00ffffffffffff0009d1e778455400000d1c0104a5351e783a0565a756529c270f5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff0058334a30303131303031510a20000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a20017d02031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d"; - "DP-9" = "00ffffffffffff0009d1d978455400002b1a010380351e782e6c40a755519f27145054a56b80d1c081c081008180a9c0b30001010101023a801871382d40582c45000f282100001e000000ff0054414730333931303031390a20000000fd00324c1e5311000a202020202020000000fc0042656e51204757323437300a200161020322f14f901f05140413031207161501061102230907078301000065030c001000023a801871382d40582c45000f282100001e011d8018711c1620582c25000f282100009e011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f282100001800000000000000000000000000000000000000000005"; - "eDP-1" = "00ffffffffffff0009e5660b000000001a200104a51e137807e957a7544c9a26115457000000010101010101010101010101010101019c3e80c870b03c40302036002ebc1000001a163280c870b03c40302036002ebc1000001a000000fd001e3c4c4c10010a202020202020000000fe004e4531343057554d2d4e36470a00f7"; - }; - - config = { - DP-9 = { - enable = true; - position = "0x0"; - mode = "1920x1080"; - }; - DP-7 = { - enable = true; - position = "1920x0"; - mode = "1920x1080"; - }; - DP-8 = { - enable = true; - position = "3840x0"; - mode = "1920x1080"; - }; - eDP-1 = { - enable = true; - primary = true; - position = "1920x1080"; - mode = "1920x1200"; - }; - }; - }; - "notebook" = { - fingerprint = { - "eDP-1" = "00ffffffffffff0009e5660b000000001a200104a51e137807e957a7544c9a26115457000000010101010101010101010101010101019c3e80c870b03c40302036002ebc1000001a163280c870b03c40302036002ebc1000001a000000fd001e3c4c4c10010a202020202020000000fe004e4531343057554d2d4e36470a00f7"; - }; - config = { - eDP-1 = { - enable = true; - primary = true; - position = "0x0"; - mode = "1920x1200"; - }; - }; - }; - }; - }; -} diff --git a/modules/services/default.nix b/modules/services/default.nix deleted file mode 100644 index 2935245..0000000 --- a/modules/services/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -# -# Services -# -# flake.nix -# ├─ ./hosts -# │ └─ home.nix -# └─ ./modules -# └─ ./services -# └─ default.nix * -# └─ ... -# - -{ - imports = [ - ./syncthing.nix - ./wireguard.nix - ./ssh.nix - ]; -} diff --git a/modules/services/dunst.nix b/modules/services/dunst.nix deleted file mode 100644 index e17466c..0000000 --- a/modules/services/dunst.nix +++ /dev/null @@ -1,90 +0,0 @@ -# -# System notifications -# - -{ config, lib, pkgs, ... }: - -let - colors = import ../themes/colors.nix; # Import colors theme -in -{ - home.packages = lib.mkIf config.services.dunst.enable [ pkgs.libnotify ]; # Dependency - - # Remove dunst dbus Notification link so it's not started under Gnome! - xdg.dataFile."dbus-1/services/org.knopwob.dunst.service".enable = false; - - systemd.user.services.dunst = lib.mkIf config.services.dunst.enable { - Unit = { - PartOf = lib.mkForce [ "qtile-services.target" ]; - After = lib.mkForce []; - }; - Service = { - # Remove reference to BusName so dunst is not started under Gnome! - Type = lib.mkForce "simple"; - BusName = lib.mkForce "empty.dbus.name.placeholder"; - }; - Install = { - WantedBy = lib.mkForce [ "qtile-services.target" ]; - }; - }; - - services.dunst = { - enable = true; - iconTheme = { # Icons - name = "Papirus Dark"; - package = pkgs.papirus-icon-theme; - size = "16x16"; - }; - settings = with colors.scheme.doom; { # Settings - global = { - monitor = 0; - follow = "keyboard"; - # geometry [{width}x{height}][+/-{x}+/-{y}] - # geometry = "600x50-50+65"; - width = 300; - height = 200; - origin = "top-right"; - offset = "50x50"; - shrink = "yes"; - transparency = 10; - padding = 16; - horizontal_padding = 16; - frame_width = 3; - frame_color = "#${bg}"; - separator_color = "frame"; - font = "FiraCode Nerd Font 10"; - line_height = 4; - idle_threshold = 120; - markup = "full"; - format = ''%s\n%b''; - alignment = "left"; - vertical_alignment = "center"; - icon_position = "left"; - word_wrap = "yes"; - ignore_newline = "no"; - show_indicators = "yes"; - sort = true; - stack_duplicates = true; - # startup_notification = false; - hide_duplicate_count = true; - }; - urgency_low = { # Colors - background = "#${bg}"; - foreground = "#${text}"; - timeout = 4; - }; - urgency_normal = { - background = "#${bg}"; - foreground = "#${text}"; - timeout = 4; - }; - urgency_critical = { - background = "#${bg}"; - foreground = "#${text}"; - frame_color = "#${red}"; - timeout = 10; - }; - }; - }; - xdg.dataFile."dbus-1/services/org.knopwob.dunst.service".source = "${pkgs.dunst}/share/dbus-1/services/org.knopwob.dunst.service"; -} diff --git a/modules/services/flameshot.nix b/modules/services/flameshot.nix deleted file mode 100644 index 935871a..0000000 --- a/modules/services/flameshot.nix +++ /dev/null @@ -1,40 +0,0 @@ -# -# Screenshots -# - -{ config, lib, ... }: - -let - screensDir = "${config.home.homeDirectory}/screens"; -in { - - systemd.user.services.flameshot = lib.mkIf config.services.flameshot.enable { - Unit = { - PartOf = lib.mkForce [ "qtile-services.target" ]; - }; - Install = { - WantedBy = lib.mkForce [ "qtile-services.target" ]; - }; - }; - - services = { # sxhkd shortcut = Printscreen button (Print) - flameshot = { - enable = true; - settings = { - General = { # Settings - savePath = screensDir; - saveAsFileExtension = ".png"; - uiColor = "#2d0096"; - showHelp = "false"; - disabledTrayIcon = "true"; # Hide from systray - }; - }; - }; - }; - - home.activation = { - ensureScreensDirCreated = lib.hm.dag.entryAfter [ "writeBoundary" ] '' - mkdir -p ${screensDir} - ''; - }; -} diff --git a/modules/services/home.nix b/modules/services/home.nix deleted file mode 100644 index 868c99c..0000000 --- a/modules/services/home.nix +++ /dev/null @@ -1,23 +0,0 @@ -# -# Services -# -# flake.nix -# ├─ ./hosts -# │ └─ home.nix -# └─ ./modules -# └─ ./services -# └─ default.nix * -# └─ ... -# - -{ - imports = [ - ./dunst.nix - ./flameshot.nix - ./picom.nix - ./udiskie.nix - ./redshift.nix - ./mpris-ctl.nix - ./autorandr.nix - ]; -} diff --git a/modules/services/mpris-ctl.nix b/modules/services/mpris-ctl.nix deleted file mode 100644 index a1476ac..0000000 --- a/modules/services/mpris-ctl.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ pkgs, ... }: - -let - mpris-ctl = pkgs.callPackage ../../pkgs/rutherther/mpris-ctl.nix {}; - sequence-detector = pkgs.callPackage ../../pkgs/rutherther/sequence-detector.nix {}; -in { - home.packages = [ - sequence-detector - mpris-ctl - ]; - - systemd.user.services = { - mpris-ctld = { - Unit = { - Description = "Daemon for mpris-ctl cli, that will keep track of last playing media"; - PartOf = [ "qtile-services.target" ]; - }; - - Install = { - WantedBy = [ "qtile-services.target" ]; - }; - - Service = { - ExecStart = "${mpris-ctl}/bin/mpris-ctld"; - }; - }; - }; - -} diff --git a/modules/services/picom.nix b/modules/services/picom.nix deleted file mode 100644 index 818ae56..0000000 --- a/modules/services/picom.nix +++ /dev/null @@ -1,63 +0,0 @@ -# -# Compositor -# - -{ config, lib, pkgs, ... }: - -{ - systemd.user.services.picom = lib.mkIf config.services.picom.enable { - Unit = { - PartOf = lib.mkForce [ "qtile-services.target" ]; - }; - Install = { - WantedBy = lib.mkForce [ "qtile-services.target" ]; - }; - }; - - services.picom = { - enable = true; - package = pkgs.picom; - - backend = "glx"; # Rendering either with glx or xrender. You'll know if you need to switch this. - vSync = true; # Should fix screen tearing - - #activeOpacity = 0.93; # Node transparency - #inactiveOpacity = 0.93; - #menuOpacity = 0.93; - - shadow = false; # Shadows - shadowOpacity = 0.75; - fade = true; # Fade - fadeDelta = 10; - opacityRules = [ # Opacity rules if transparency is prefered - # "100:name = 'Picture in picture'" - # "100:name = 'Picture-in-Picture'" - # "85:class_i ?= 'rofi'" - # "90:class_i *= 'discord'" - # "90:class_i *= 'telegram-desktop'" - # "90:class_i *= 'emacs'" - # "90:class_i *= 'Alacritty'" - # "100:fullscreen" - ]; # Find with $ xprop | grep "WM_CLASS" - - settings = { - daemon = true; - use-damage = false; # Fixes flickering and visual bugs with borders - resize-damage = 1; - refresh-rate = 0; - corner-radius = 5; # Corners - round-borders = 5; - - # Extras - detect-rounded-corners = true; # Below should fix multiple issues - detect-client-opacity = false; - detect-transient = true; - detect-client-leader = false; - mark-wmwim-focused = true; - mark-ovredir-focues = true; - unredir-if-possible = true; - glx-no-stencil = true; - glx-no-rebind-pixmap = true; - }; # Extra options for picom.conf (mostly for pijulius fork) - }; -} diff --git a/modules/services/redshift.nix b/modules/services/redshift.nix deleted file mode 100644 index 098eaf3..0000000 --- a/modules/services/redshift.nix +++ /dev/null @@ -1,24 +0,0 @@ -# -# Screen color temperature changer -# -{ config, lib, pkgs, ...}: - -{ - systemd.user.services.redshift = lib.mkIf config.services.redshift.enable { - Unit = { - PartOf = lib.mkForce [ "qtile-services.target" ]; - }; - Install = { - WantedBy = lib.mkForce [ "qtile-services.target" ]; - }; - }; - - services = { - redshift = { - enable = true; - temperature.night = 3000; - latitude = 50.2332933; - longitude = 14.3225926; - }; - }; -} diff --git a/modules/services/ssh.nix b/modules/services/ssh.nix deleted file mode 100644 index 3601898..0000000 --- a/modules/services/ssh.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ config, ... }: - -{ - services.openssh = { - enable = true; - startWhenNeeded = true; - - settings = { - KbdInteractiveAuthentication = false; - PasswordAuthentication = false; - PermitRootLogin = "no"; - }; - }; - - users.users.${config.nixos-config.defaultUser}.openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCLdKvP+WQmsoJebj4x0o8k/RniDpYDv3H+b+PWByChKPq4ThEnpL6P4sr0dpZ4NbWmDT9YPGuDEyZRxhrIerUKw+z8Jm32b8FeeYcEdoBlZTBz4WuN7G9FkDIYdqBYdnUaWh8/KeuZbUp/jB/d1Uv8rBdPSML1JlUPg8U/Z5Oky68LYUO60DfLoQZ+qD5AeTw4zPRACA5OOJj20eIDhiXKyp60eTXAiwrfC2RZJWURc4i92Oforua3OZEZfL1Z+xOjAhbKymPZIzKuzIIIVP/abnWv3b/shCCrR70wuZZ6QleY+DTcNsburmDfUP+3f+C1fF3mg6loZaGokGMwKtNI/0UVWHQW5BPkWfvkQmsW4jl02P174IlAGwvEkhTfBzmuaPKuf+0D+rJH+1FengEFmAPhaN6WIMFYGTScbOn46BS8v3oWhW5A+CQ1pMA9myu1fDr7WKrNCDdW9X398ByKA88OpEOU+vQcwgg6EPb/SuAlFDYBSgz0TX6IGl4demc= ruther@ntb-nixos" - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD0mhvKW3dgLTGLGMgGdMgUFz14F16pRzSAH7IU/OssnYXmi+TlkXLakHtmNWLdb6IEEjS2od0iDW4I71awJjL/VqRSBBt/1t6ndM6M79pD6feU9uYaPMB20ORyZh5D+1zjWX4cFVlcfCQ2bUyV0D+VRoDrN/YWFhPU0XNMZjatqN8JNKljM0hwWt9OPuQdlwG5KnrbDPUn8gf6kZtfVWRamDrLLMKsGBeGw4oZVJLAPYJlaYps15VuySTw114n6/L16qpH/rUgDc5QFyrmtIE+l5wd5QteH489eG+8gAZfsbYj+pihek09rHch318ecsLYz/DxotB71BXsQH7nb0NPHk1VI8L6//meoCXNJc4Itbg7Jh2Oo/bDfYX9IyPEw2TRa3P+rbEO9N4vMxCgX+TuHNX/mTk0OFpJVu8AAwMlF2lalI8fpBKospP5PFoyIgrW7ab5dkQRGDTk+Bw1ed4KXMKl6RJejvDPuOAmpeOlosinz6OPj/rbR9hR48makxk= ruther@desktop-nixos" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbHBbRaxwfOIyYYL6caWx8Afre8R+GRIgbX/zSGNmMq ruther@nord2-phone" - ]; -} diff --git a/modules/services/syncthing.nix b/modules/services/syncthing.nix deleted file mode 100644 index 09a5e58..0000000 --- a/modules/services/syncthing.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ config, ... }: - -let - user = config.nixos-config.defaultUser; - homePath = config.home-manager.users.${user}.home.homeDirectory; -in { - networking.firewall = { - allowedTCPPorts = [ 22000 ]; - allowedUDPPorts = [ 22000 21027 ]; - }; - - services.syncthing = { - enable = true; - user = "${user}"; - dataDir = "/home/${user}"; - configDir = "/home/${user}/.config/syncthing"; - overrideDevices = true; - overrideFolders = true; - settings = { - - devices = { - phone = { id = "SRCBWOD-UBR76WT-ZB4OLV2-34U6TRL-YLVMSGQ-I5JYZP6-VD7XR6S-5732ZAZ"; }; - desktop = { id = "BVFWKZE-DWZTSJR-OHCLGY3-X2PU7F3-XMPMGEH-QONACL5-MMRJE5O-CHRY4Q5"; }; - laptop = { id = "3AGVM6S-RFTHVHR-OGK5RHI-YDEO6GN-RU4ZH77-VLBZAC7-JVHD6S6-VISXGQT"; }; - }; - - folders = { - "uni" = { - path = "${homePath}/doc/uni"; - devices = [ "phone" "desktop" "laptop" ]; - }; - "notes" = { - path = "${homePath}/doc/notes/obsidian/Notes"; - devices = [ "phone" "desktop" "laptop" ]; - }; - "camera" = { - path = "${homePath}/doc/camera"; - devices = [ "phone" "desktop" "laptop" ]; - }; - "study" = { - path = "${homePath}/doc/study"; - devices = [ "phone" "desktop" "laptop" ]; - }; - }; - options = { - natenabled = false; - relaysEnabled = false; - globalAnnounceEnabled = false; - localAnnounceEnabled = true; - }; - }; - }; -} diff --git a/modules/services/udiskie.nix b/modules/services/udiskie.nix deleted file mode 100644 index ca2e6ab..0000000 --- a/modules/services/udiskie.nix +++ /dev/null @@ -1,15 +0,0 @@ -# -# Mounting tool -# - -{ config, lib, nixpkgs, pkgs, ... }: - -{ - services = { - udiskie = { # Udiskie wil automatically mount storage devices - enable = true; - automount = true; - tray = "auto"; # Will only show up in systray when active - }; - }; -} diff --git a/modules/services/wg-options.nix b/modules/services/wg-options.nix deleted file mode 100644 index 6a0a811..0000000 --- a/modules/services/wg-options.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ lib, ... }: - -{ - options.wg = { - ip = lib.mkOption { - type = lib.types.str; - }; - }; -} diff --git a/modules/services/wireguard.nix b/modules/services/wireguard.nix deleted file mode 100644 index f3ca0f0..0000000 --- a/modules/services/wireguard.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ config, ... }: - -{ - imports = [ - ./wg-options.nix - ]; - - networking.firewall = { - allowedUDPPorts = [ 51820 ]; - }; - - networking = { - nameservers = [ - "1.1.1.1" - "1.0.0.1" - ]; - - # disable auto resolving - dhcpcd.extraConfig = "nohook resolv.conf"; - networkmanager.dns = "none"; - }; - - networking.resolvconf.extraOptions = [ - "timeout: 2" - ]; - - networking.wireguard.interfaces = { - wg0 = { - ips = [ "${config.wg.ip}/32" ]; - listenPort = 51820; - - generatePrivateKeyFile = true; - privateKeyFile = "/etc/wireguard/pk.pem"; - - peers = [ - { - publicKey = "ZOVjmgUak67kLhNVgZwyb0bro3Yi4vCJbGArv+35IWQ="; - endpoint = "78.46.201.50:51820"; - - # The ip is not refreshed, as the kernel cannot perform DNS resolution. Use dynamicEndpointRefreshSeconds, - # in case the ip is refreshed often. If not, sync after refresh should be alright. - allowedIPs = [ "192.168.32.0/24" ]; - persistentKeepalive = 25; - } - ]; - }; - }; -} diff --git a/modules/shell/direnv.nix b/modules/shell/direnv.nix deleted file mode 100644 index 9cc9336..0000000 --- a/modules/shell/direnv.nix +++ /dev/null @@ -1,20 +0,0 @@ -# -# Direnv -# -# create a shell.nix -# create a .envrc and add use nix shell.nix -# direnv allow -# add direnv package to emacs -# add 'eval "$(direnv hook zsh)"' to .zshrc (and same for bash) -# - -{ config, lib, pkgs, ... }: - -{ - programs = { - direnv = { - enable = true; - nix-direnv.enable = true; - }; - }; -} diff --git a/modules/shell/git.nix b/modules/shell/git.nix deleted file mode 100644 index 1fe97d5..0000000 --- a/modules/shell/git.nix +++ /dev/null @@ -1,22 +0,0 @@ -# -# Git -# - -{ - programs = { - git = { - enable = true; - includes = [{ - contents = { - user = { - email = "rutherther@proton.me"; - name = "Rutherther"; - }; - init = { - defaultBranch = "main"; - }; - }; - }]; - }; - }; -} diff --git a/modules/shell/home.nix b/modules/shell/home.nix deleted file mode 100644 index 2c245fc..0000000 --- a/modules/shell/home.nix +++ /dev/null @@ -1,19 +0,0 @@ -# -# Shell -# -# flake.nix -# ├─ ./hosts -# │ └─ home.nix -# └─ ./modules -# └─ ./shell -# └─ default.nix * -# └─ ... -# - -{ - imports = [ - ./git.nix - ./zsh.nix - ./direnv.nix - ]; -} diff --git a/modules/shell/zsh.nix b/modules/shell/zsh.nix deleted file mode 100644 index e7936f4..0000000 --- a/modules/shell/zsh.nix +++ /dev/null @@ -1,36 +0,0 @@ -# -# Shell -# - -{ pkgs, ... }: - -{ - programs = { - starship = { - enable = true; - }; - zsh = { - enable = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - enableCompletion = true; - history.size = 100000; - - oh-my-zsh = { # Extra plugins for zsh - enable = true; - plugins = [ "git" ]; - }; - - initExtra = '' - function loc { - nix-locate --top-level -w /bin/$1 - } - function exa-nixpkgs-derivation { - nix run nixpkgs#eza -- --tree $(nix build nixpkgs#$1 --print-out-paths --out-link /tmp/$1) - } - - # source /etc/set-environment - ''; - }; - }; -} diff --git a/hosts/default.nix b/nixos/default.nix similarity index 86% rename from hosts/default.nix rename to nixos/default.nix index a27142d..9ad1441 100644 --- a/hosts/default.nix +++ b/nixos/default.nix @@ -25,8 +25,8 @@ inputs.nixos-hardware.nixosModules.common-pc-laptop inputs.nixos-hardware.nixosModules.common-pc-laptop-acpi_call inputs.nixos-hardware.nixosModules.common-pc-laptop-ssd - ./laptop-iapetus - ./configuration.nix + ./hosts/laptop-iapetus + ./hosts/configuration.nix ]; }; @@ -38,8 +38,8 @@ modules = [ inputs.lanzaboote.nixosModules.lanzaboote inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t14s-amd-gen1 - ./laptop-phobos - ./configuration.nix + ./hosts/laptop-phobos + ./hosts/configuration.nix ]; }; @@ -48,8 +48,8 @@ inherit inputs; }; modules = [ - ./desktop-clotho - ./configuration.nix + ./hosts/desktop-clotho + ./hosts/configuration.nix ]; }; @@ -58,8 +58,8 @@ inherit inputs; }; modules = [ - ./vm - ./configuration.nix + ./hosts/vm + ./hosts/configuration.nix ]; }; } diff --git a/hosts/configuration.nix b/nixos/hosts/configuration.nix similarity index 85% rename from hosts/configuration.nix rename to nixos/hosts/configuration.nix index e6d41e0..fa15756 100644 --- a/hosts/configuration.nix +++ b/nixos/hosts/configuration.nix @@ -1,32 +1,11 @@ -# -# Main system configuration. More information available in configuration.nix(5) man page. -# -# flake.nix -# ├─ ./hosts -# │ └─ configuration.nix * -# └─ ./modules -# ├─ ./editors -# │ └─ default.nix -# └─ ./shell -# └─ default.nix -# - { stable, pkgs, inputs, config, ... }: { imports = [ - ../modules/desktop - ../modules/services - ./nixos-config-options.nix - inputs.home-manager.nixosModules.home-manager + ../modules ]; - boot.tmp = { - cleanOnBoot = true; - useTmpfs = true; - }; - home-manager.useUserPackages = true; home-manager.useGlobalPkgs = true; home-manager.extraSpecialArgs = { @@ -35,18 +14,19 @@ home-manager.users.${config.nixos-config.defaultUser} = { imports = [ inputs.nix-index-database.hmModules.nix-index - ./home.nix ./${config.networking.hostName}/home.nix - ./nixos-config-options.nix - + ../../home { - nixos-config = { - inherit (config.nixos-config) defaultUser location; - }; + inherit (config) nixos-config; } ]; }; + boot.tmp = { + cleanOnBoot = true; + useTmpfs = true; + }; + hardware.pulseaudio.enable = false; users.users.${config.nixos-config.defaultUser} = { @@ -86,6 +66,13 @@ }; }; + services.xserver.serverFlagsSection = '' + Option "BlankTime" "15" + Option "StandbyTime" "30" + Option "SuspendTime" "30" + Option "OffTime" "60" + ''; + security.polkit.enable = true; fonts.packages = with pkgs; [ # Fonts @@ -117,11 +104,6 @@ }; environment = { - variables = { - TERMINAL = "kitty"; - EDITOR = "emacsclient"; - VISUAL = "emacsclient"; - }; pathsToLink = [ "/share/zsh" ]; systemPackages = with pkgs; [ # Default packages installed system-wide alsa-utils diff --git a/hosts/desktop-clotho/default.nix b/nixos/hosts/desktop-clotho/default.nix similarity index 100% rename from hosts/desktop-clotho/default.nix rename to nixos/hosts/desktop-clotho/default.nix diff --git a/hosts/desktop-clotho/hardware-configuration.nix b/nixos/hosts/desktop-clotho/hardware-configuration.nix similarity index 100% rename from hosts/desktop-clotho/hardware-configuration.nix rename to nixos/hosts/desktop-clotho/hardware-configuration.nix diff --git a/hosts/desktop-clotho/home.nix b/nixos/hosts/desktop-clotho/home.nix similarity index 100% rename from hosts/desktop-clotho/home.nix rename to nixos/hosts/desktop-clotho/home.nix diff --git a/hosts/laptop-iapetus/default.nix b/nixos/hosts/laptop-iapetus/default.nix similarity index 100% rename from hosts/laptop-iapetus/default.nix rename to nixos/hosts/laptop-iapetus/default.nix diff --git a/hosts/laptop-iapetus/hardware-configuration.nix b/nixos/hosts/laptop-iapetus/hardware-configuration.nix similarity index 100% rename from hosts/laptop-iapetus/hardware-configuration.nix rename to nixos/hosts/laptop-iapetus/hardware-configuration.nix diff --git a/hosts/laptop-iapetus/home.nix b/nixos/hosts/laptop-iapetus/home.nix similarity index 100% rename from hosts/laptop-iapetus/home.nix rename to nixos/hosts/laptop-iapetus/home.nix diff --git a/hosts/laptop-phobos/default.nix b/nixos/hosts/laptop-phobos/default.nix similarity index 84% rename from hosts/laptop-phobos/default.nix rename to nixos/hosts/laptop-phobos/default.nix index 82dccee..401239d 100644 --- a/hosts/laptop-phobos/default.nix +++ b/nixos/hosts/laptop-phobos/default.nix @@ -21,14 +21,21 @@ { imports = [ ./hardware-configuration.nix - ../../modules/desktop/dm/gdm.nix - ../../modules/desktop/qtile/default.nix - ../../modules/desktop/gnome/default.nix - ../../modules/hardware - ../../modules/desktop/virtualisation - ./udev.nix ]; + nixos-config.isLaptop = true; + profiles.virtualisation.enable = true; + profiles.desktop.qtile.enable = true; + profiles.desktop.gnome.enable = true; + profiles.vpn.enable = true; + profiles.sync.enable = true; + profiles.development = { + enable = true; + + fpga.cables = [ "vivado" "ise" ]; + mcu.cables = [ "tiva-c" "st-link" "trezor" ]; + }; + networking.hostName = "laptop-phobos"; boot = { # Boot options @@ -65,15 +72,12 @@ }; }; - security.pam.services.login.fprintAuth = false; - security.pam.services.sddm.fprintAuth = false; - security.pam.services.sddm-greeter.fprintAuth = false; - # services.fprintd.enable = true; - + # TODO under qtile hardware = { # No xbacklight, this is the alterantive brillo.enable = true; }; + # TODO under qtile programs = { xss-lock = let xsecurelock = (pkgs.xsecurelock.overrideAttrs(attrs: { @@ -108,5 +112,5 @@ }; # Wireguard - wg.ip = "192.168.32.25"; + profiles.vpn.lanIp = "192.168.32.25"; } diff --git a/hosts/laptop-phobos/hardware-configuration.nix b/nixos/hosts/laptop-phobos/hardware-configuration.nix similarity index 100% rename from hosts/laptop-phobos/hardware-configuration.nix rename to nixos/hosts/laptop-phobos/hardware-configuration.nix diff --git a/nixos/hosts/laptop-phobos/home.nix b/nixos/hosts/laptop-phobos/home.nix new file mode 100644 index 0000000..dfae15a --- /dev/null +++ b/nixos/hosts/laptop-phobos/home.nix @@ -0,0 +1,6 @@ +{ + profiles.development.enable = true; + profiles.desktop.qtile.enable = true; + profiles.desktop.gnome.enable = true; + profiles.matrix.enable = true; +} diff --git a/hosts/vm/default.nix b/nixos/hosts/vm/default.nix similarity index 100% rename from hosts/vm/default.nix rename to nixos/hosts/vm/default.nix diff --git a/hosts/vm/hardware-configuration.nix b/nixos/hosts/vm/hardware-configuration.nix similarity index 100% rename from hosts/vm/hardware-configuration.nix rename to nixos/hosts/vm/hardware-configuration.nix diff --git a/hosts/vm/home.nix b/nixos/hosts/vm/home.nix similarity index 100% rename from hosts/vm/home.nix rename to nixos/hosts/vm/home.nix diff --git a/nixos/modules/default.nix b/nixos/modules/default.nix new file mode 100644 index 0000000..d43e1ba --- /dev/null +++ b/nixos/modules/default.nix @@ -0,0 +1,22 @@ +{ config, lib, ... }: + +{ + imports = [ + ./profiles + ./nixos-config.nix + ]; + + config = lib.mkMerge [ + (lib.mkIf config.nixos-config.useBluetooth { + hardware.bluetooth = { + enable = true; + settings = { + General = { + Enable = "Source,Sink,Media,Socket"; + }; + }; + }; + services.blueman.enable = true; + }) + ]; +} diff --git a/hosts/nixos-config-options.nix b/nixos/modules/nixos-config.nix similarity index 57% rename from hosts/nixos-config-options.nix rename to nixos/modules/nixos-config.nix index b2d00ff..3815936 100644 --- a/hosts/nixos-config-options.nix +++ b/nixos/modules/nixos-config.nix @@ -11,5 +11,15 @@ type = lib.types.str; default = "$HOME/.setup"; }; + + isLaptop = lib.mkOption { + type = lib.types.bool; + default = false; + }; + + useBluetooth = lib.mkOption { + type = lib.types.bool; + default = true; + }; }; } diff --git a/nixos/modules/profiles/default.nix b/nixos/modules/profiles/default.nix new file mode 100644 index 0000000..64028a8 --- /dev/null +++ b/nixos/modules/profiles/default.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + imports = [ + ./desktop + ./development.nix + ./vpn.nix + ./sync.nix + ./virtualisation.nix + ]; +} diff --git a/nixos/modules/profiles/desktop/default.nix b/nixos/modules/profiles/desktop/default.nix new file mode 100644 index 0000000..fec2571 --- /dev/null +++ b/nixos/modules/profiles/desktop/default.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./qtile.nix + ./gnome.nix + ]; + + options = { + profiles.desktop = { + enable = lib.mkEnableOption "desktop"; + }; + }; + + config = lib.mkIf config.profiles.desktop.enable { + + environment.systemPackages = [ + pkgs.xkblayout-state + ]; + + services = { + xserver = { + enable = true; + + displayManager.gdm.enable = true; + + xkb = { + layout = "us,cz"; # Keyboard layout & €-sign + variant = ",qwerty"; + options = "grp:alt_shift_toggle, ctrl:nocaps"; + }; + libinput.enable = true; + modules = [ pkgs.xf86_input_wacom ]; # Both needed for wacom tablet usage + wacom.enable = true; + }; + }; + }; +} diff --git a/nixos/modules/profiles/desktop/gnome.nix b/nixos/modules/profiles/desktop/gnome.nix new file mode 100644 index 0000000..970c896 --- /dev/null +++ b/nixos/modules/profiles/desktop/gnome.nix @@ -0,0 +1,61 @@ +{ config, lib, pkgs, ... }: + +{ + options = { + profiles.desktop.gnome = { + enable = lib.mkEnableOption "gnome"; + }; + }; + + config = lib.mkIf config.profiles.desktop.gnome.enable { + profiles.desktop.enable = lib.mkDefault true; + + programs = { + dconf.enable = true; + }; + + services = { + xserver.desktopManager.gnome.enable = true; + udev.packages = with pkgs; [ + gnome.gnome-settings-daemon + ]; + }; + + environment = { + systemPackages = with pkgs; [ # Packages installed + gnome.dconf-editor + gnome.gnome-tweaks + gnome.adwaita-icon-theme + gnomeExtensions.fullscreen-avoider + gnomeExtensions.vitals + gnomeExtensions.openweather + gnomeExtensions.clipboard-history + gnomeExtensions.forge + gnomeExtensions.switcher + (gnomeExtensions.disable-workspace-switch-animation-for-gnome-40.overrideAttrs { + src = pkgs.fetchFromGitHub { + owner = "tmke8"; + repo = "gnome-shell-extension-instant-workspace-switcher"; + rev = "patch-1"; + hash = "sha256-Ual7kAOeGPe3DF5XHf5eziscYeMLUnDktEGU41Yl4E4="; + } + "/instantworkspaceswitcher@amalantony.net"; + }) + ]; + gnome.excludePackages = (with pkgs; [ # Gnome ignored packages + gnome-tour + ]) ++ (with pkgs.gnome; [ + pkgs.gedit + epiphany + geary + gnome-characters + tali + iagno + hitori + atomix + yelp + gnome-contacts + gnome-initial-setup + ]); + }; + }; +} diff --git a/nixos/modules/profiles/desktop/qtile.nix b/nixos/modules/profiles/desktop/qtile.nix new file mode 100644 index 0000000..ea22fc7 --- /dev/null +++ b/nixos/modules/profiles/desktop/qtile.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, ... }: + +let + pythonEnvPackages = ppkgs: [ + ppkgs.qtile-extras + ppkgs.xlib + ppkgs.screeninfo + ppkgs.pyudev + ppkgs.pydbus + ]; +in { + options = { + profiles.desktop.qtile = { + enable = lib.mkEnableOption "gnome"; + }; + }; + + config = lib.mkIf config.profiles.desktop.qtile.enable { + profiles.desktop.enable = lib.mkDefault true; + + services.xserver.windowManager.qtile = { + enable = true; + + package = pkgs.qtile-unwrapped.overridePythonAttrs(oldAttrs: { + propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ pythonEnvPackages pkgs.python3Packages; + }); + + extraPackages = pythonEnvPackages; + }; + }; +} diff --git a/hosts/laptop-phobos/udev.nix b/nixos/modules/profiles/development.nix similarity index 82% rename from hosts/laptop-phobos/udev.nix rename to nixos/modules/profiles/development.nix index bc6fcf9..256a7e6 100644 --- a/hosts/laptop-phobos/udev.nix +++ b/nixos/modules/profiles/development.nix @@ -1,4 +1,4 @@ -{ inputs, config, pkgs, ... }: +{ config, inputs, lib, pkgs, ... }: let trezor-udev-rules = pkgs.writeTextFile { @@ -65,13 +65,29 @@ let SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" ''; }; -in { - services.udev.packages = [ - trezor-udev-rules - ti-udev-rules - stlink-udev-rules - inputs.nix-fpga-tools.packages.${config.nixpkgs.hostPlatform.system}.ise-udev-rules - inputs.nix-fpga-tools.packages.${config.nixpkgs.hostPlatform.system}.vivado-udev-rules - ]; + cfg = config.profiles.development; +in +{ + options = { + profiles.development = { + enable = lib.mkEnableOption "development"; + + fpga.cables = lib.mkOption { + type = lib.types.listOf lib.types.str; + }; + mcu.cables = lib.mkOption { + type = lib.types.listOf lib.types.str; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services.udev.packages = + lib.lists.optional (builtins.elem "st-link" cfg.mcu.cables) stlink-udev-rules ++ + lib.lists.optional (builtins.elem "tiva-c" cfg.mcu.cables) ti-udev-rules ++ + lib.lists.optional (builtins.elem "trezor" cfg.mcu.cables) trezor-udev-rules ++ + lib.lists.optional (builtins.elem "ise" cfg.fpga.cables) inputs.nix-fpga-tools.packages.${pkgs.system}.ise-udev-rules ++ + lib.lists.optional (builtins.elem "ise" cfg.fpga.cables) inputs.nix-fpga-tools.packages.${pkgs.system}.vivado-udev-rules; + }; } diff --git a/nixos/modules/profiles/sync.nix b/nixos/modules/profiles/sync.nix new file mode 100644 index 0000000..4127886 --- /dev/null +++ b/nixos/modules/profiles/sync.nix @@ -0,0 +1,63 @@ +{ config, lib, ... }: + +let + user = config.nixos-config.defaultUser; + homePath = config.home-manager.users.${user}.home.homeDirectory; +in { + + options = { + profiles.sync = { + enable = lib.mkEnableOption "sync"; + }; + }; + + config = lib.mkIf config.profiles.sync.enable { + + networking.firewall = { + allowedTCPPorts = [ 22000 ]; + allowedUDPPorts = [ 22000 21027 ]; + }; + + services.syncthing = { + enable = true; + user = "${user}"; + dataDir = "${homePath}"; + configDir = "${homePath}/.config/syncthing"; + overrideDevices = true; + overrideFolders = true; + settings = { + + devices = { + phone = { id = "SRCBWOD-UBR76WT-ZB4OLV2-34U6TRL-YLVMSGQ-I5JYZP6-VD7XR6S-5732ZAZ"; }; + desktop = { id = "BVFWKZE-DWZTSJR-OHCLGY3-X2PU7F3-XMPMGEH-QONACL5-MMRJE5O-CHRY4Q5"; }; + laptop = { id = "3AGVM6S-RFTHVHR-OGK5RHI-YDEO6GN-RU4ZH77-VLBZAC7-JVHD6S6-VISXGQT"; }; + }; + + folders = { + "uni" = { + path = "${homePath}/doc/uni"; + devices = [ "phone" "desktop" "laptop" ]; + }; + "notes" = { + path = "${homePath}/doc/notes/obsidian/Notes"; + devices = [ "phone" "desktop" "laptop" ]; + }; + "camera" = { + path = "${homePath}/doc/camera"; + devices = [ "phone" "desktop" "laptop" ]; + }; + "study" = { + path = "${homePath}/doc/study"; + devices = [ "phone" "desktop" "laptop" ]; + }; + }; + options = { + natenabled = false; + relaysEnabled = false; + globalAnnounceEnabled = false; + localAnnounceEnabled = true; + }; + }; + }; + }; +} diff --git a/nixos/modules/profiles/virtualisation.nix b/nixos/modules/profiles/virtualisation.nix new file mode 100644 index 0000000..c230904 --- /dev/null +++ b/nixos/modules/profiles/virtualisation.nix @@ -0,0 +1,81 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.profiles.virtualisation; +in { + options = { + profiles.virtualisation = { + enable = lib.mkEnableOption "virtualisation"; + + qemu.enable = lib.mkOption { + type = lib.types.bool; + default = true; + }; + podman.enable = lib.mkOption { + type = lib.types.bool; + default = true; + }; + }; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + (lib.mkIf cfg.podman.enable { + users.groups.podman.members = [ config.nixos-config.defaultUser ]; + + virtualisation.podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + + environment.systemPackages = with pkgs; [ + podman-compose + ]; + }) + (lib.mkIf cfg.qemu.enable { + users.groups.libvirtd.members = [ "root" config.nixos-config.defaultUser ]; + users.groups.kvm.members = [ "root" config.nixos-config.defaultUser ]; + + virtualisation = { + libvirtd = { + enable = true; + qemu = { + ovmf.enable = true; + ovmf.packages = [ pkgs.OVMFFull.fd ]; + verbatimConfig = '' + nvram = [ "${pkgs.OVMF}/FV/OVMF.fd:${pkgs.OVMF}/FV/OVMF_VARS.fd" ] + ''; + swtpm.enable = true; + }; + }; + spiceUSBRedirection.enable = true; # USB passthrough + }; + + environment = { + etc = { + "ovmf/edk2-x86_64-secure-code.fd" = { + source = config.virtualisation.libvirtd.qemu.package + "/share/qemu/edk2-x86_64-secure-code.fd"; + }; + + "ovmf/edk2-i386-vars.fd" = { + source = config.virtualisation.libvirtd.qemu.package + "/share/qemu/edk2-i386-vars.fd"; + }; + }; + + systemPackages = with pkgs; [ + virt-manager + virt-viewer + qemu + OVMF + gvfs # Used for shared folders between Linux and Windows + swtpm + ]; + }; + + services = { # Enable file sharing between OS + gvfs.enable = true; + }; + }) + ]); + +} diff --git a/nixos/modules/profiles/vpn.nix b/nixos/modules/profiles/vpn.nix new file mode 100644 index 0000000..d830167 --- /dev/null +++ b/nixos/modules/profiles/vpn.nix @@ -0,0 +1,65 @@ +{ config, lib, ... }: + +{ + options = { + profiles.vpn = { + enable = lib.mkEnableOption "vpn"; + lanIp = lib.mkOption { + type = lib.types.str; + }; + + server = lib.mkOption { + type = lib.types.str; + default = "78.46.201.50:51820"; + }; + + serverLanIp = lib.mkOption { + type = lib.types.str; + default = "192.168.32.0/24"; + }; + }; + }; + + config = lib.mkIf config.profiles.vpn.enable { + networking.firewall = { + allowedUDPPorts = [ 51820 ]; + }; + + networking = { + nameservers = [ + "1.1.1.1" + "1.0.0.1" + ]; + + # disable auto resolving + dhcpcd.extraConfig = "nohook resolv.conf"; + networkmanager.dns = "none"; + }; + + networking.resolvconf.extraOptions = [ + "timeout: 2" + ]; + + networking.wireguard.interfaces = { + wg0 = { + ips = [ "${config.profiles.vpn.lanIp}/32" ]; + listenPort = 51820; + + generatePrivateKeyFile = true; + privateKeyFile = "/etc/wireguard/pk.pem"; + + peers = [ + { + publicKey = "ZOVjmgUak67kLhNVgZwyb0bro3Yi4vCJbGArv+35IWQ="; + endpoint = config.profiles.vpn.server; + + # The ip is not refreshed, as the kernel cannot perform DNS resolution. Use dynamicEndpointRefreshSeconds, + # in case the ip is refreshed often. If not, sync after refresh should be alright. + allowedIPs = [ config.profiles.vpn.serverLanIp ]; + persistentKeepalive = 25; + } + ]; + }; + }; + }; +} diff --git a/modules/themes/colors.nix b/themes/colors.nix similarity index 100% rename from modules/themes/colors.nix rename to themes/colors.nix -- 2.48.1