diff --git a/common.nix b/common.nix index c015ae7..8f3c5e8 100644 --- a/common.nix +++ b/common.nix @@ -1,18 +1,14 @@ { inputs, config, lib, pkgs, ... }: with lib; -with lib.my; -{ - imports = - [ inputs.home-manager.nixosModules.home-manager ] +with lib.my; { + imports = [ inputs.home-manager.nixosModules.home-manager ] ++ (mapModulesRec' (toString ./modules) import); nix = { package = pkgs.nixFlakes; extraOptions = "experimental-features = nix-command flakes"; - nixPath = [ - "nixpkgs=${inputs.nixpkgs-unstable}" - ]; + nixPath = [ "nixpkgs=${inputs.nixpkgs-unstable}" ]; settings = { substituters = [ "https://nix-community.cachix.org" @@ -29,17 +25,32 @@ with lib.my; system.configurationRevision = with inputs; mkIf (self ? rev) self.rev; - time.timeZone = lib.mkDefault "Europe/Amsterdam"; i18n.defaultLocale = lib.mkDefault "en_US.UTF-8"; - console = { - keyMap = lib.mkDefault "fr"; - }; + console = { keyMap = lib.mkDefault "fr"; }; environment.systemPackages = with pkgs; [ git vim + + wget + inetutils + man + + htop + ncdu + nload + pciutils + lsof + dnsutils + + unzip ]; + + networking.hosts = { + "127.0.0.1" = [ "localhost" "membres.yourcoop.local" ]; + }; + services.resolved.dnssec = "false"; } diff --git a/hosts/nixos-desktop/default.nix b/hosts/nixos-desktop/default.nix index 0f174a9..fba23cf 100644 --- a/hosts/nixos-desktop/default.nix +++ b/hosts/nixos-desktop/default.nix @@ -1,13 +1,9 @@ -{ pkgs, config, lib, ... }: -{ - imports = [ - ./hardware-configuration.nix - ]; +{ pkgs, config, lib, ... }: { + imports = [ ./hardware-configuration.nix ]; modules = { desktop = { xmonad.enable = true; - neovim.enable = true; alacritty.enable = true; zsh.enable = true; vscode.enable = true; @@ -15,8 +11,21 @@ htop.enable = true; mpd.enable = true; }; + editor = { + vim.enable = true; + emacs.enable = true; + }; + services = { + flatpak.enable = true; + belgian-eid.enable = true; + docker.enable = true; + libvirt.enable = true; + }; + apps = { newsboat.enable = true; }; }; + boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; + # Allow to externally control MPD networking.firewall.allowedTCPPorts = [ 6600 ]; diff --git a/modules/apps/newsboat.nix b/modules/apps/newsboat.nix new file mode 100644 index 0000000..9dd688d --- /dev/null +++ b/modules/apps/newsboat.nix @@ -0,0 +1,316 @@ +{ inputs, config, lib, pkgs, ... }: + +with lib; +with lib.my; +let cfg = config.modules.apps.newsboat; +in { + options.modules.apps.newsboat = { enable = mkBoolOpt false; }; + + config = mkIf cfg.enable { + home-manager.users.${config.user.name} = { + + programs.newsboat = { + enable = true; + autoReload = true; + urls = [ + { + title = "Happy Path Programming"; + tags = [ "podcast" "programming" ]; + url = "https://anchor.fm/s/2ed56aa0/podcast/rss"; + } + { + title = "Antoine Goya"; + tags = [ "video" "culture" "cinema" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC2qlgiYCCtaYpn2_blX01xg"; + } + { + title = "Berd"; + tags = [ "video" "humor" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCRei8TBpt4r0WPZ7MkiKmVg"; + } + { + title = "Berm Peak"; + tags = [ "video" "MTB" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCu8YylsPiu9XfaQC74Hr_Gw"; + } + { + title = "Berm Peak Express"; + tags = [ "video" "MTB" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCOpP5PqrzODWpFU961acUbg"; + } + { + title = "code- Reinho"; + tags = [ "video" "guns" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCNWs0QTTHm7yiPMwl0aynsg"; + } + { + title = "Computerphile"; + tags = [ "video" "programming" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA"; + } + { + title = "Chronik Fiction"; + tags = [ "video" "cinema" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCeah3nqu_v6KfpXrCzEARQw"; + } + { + title = "Domain of Science"; + tags = [ "video" "science" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCxqAWLTk1CmBvZFPzeZMd9A"; + } + { + title = "Forged Alliance Forever"; + tags = [ "video" "gaming" "faf" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCkAWiUu4QE172kv-ZuyR42w"; + } + { + title = "Grand Angle"; + tags = [ "video" "finance" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCWtD8JN9hkxL5TJL_ktaNZA"; + } + { + title = "Gyle"; + tags = [ "video" "gaming" "cast" "faf" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCzY7MBSgNLZOMxMIFwtf2bw"; + } + { + title = "Hygiène Mentale"; + tags = [ "video" "philosophy" "zetetic" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCMFcMhePnH4onVHt2-ItPZw"; + } + { + title = "Institut des Libertés"; + tags = [ "video" "finance" "politics" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCaqUCTIgFDtMhBeKeeejrkA"; + } + { + title = "Juste Milieu"; + tags = [ "video" "politics" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCXh5HwvbyfD-GUVHLng9aGQ"; + } + { + title = "J'suis pas content TV"; + tags = [ "video" "politics" "humor" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC9NB2nXjNtRabu3YLPB16Hg"; + } + { + title = "Kriss Papillon"; + tags = [ "video" "culture" "philosophy" ]; + url = "https://odysee.com/$/rss/@Kriss-Papillon:c"; + } + { + title = "Kruggsmash"; + tags = [ "video" "storytelling" "gaming" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCaifrB5IrvGNPJmPeVOcqBA"; + } + { + title = "Kurzgesagt"; + tags = [ "video" "science" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCsXVk37bltHxD1rDPwtNM8Q"; + } + { + title = "La Gauloiserie"; + tags = [ "video" "guns" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC5Ph48LXovwS2hyAGfWwE9A"; + } + { + title = "La Pistolerie"; + tags = [ "video" "guns" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCvAZXkucE9CVVxb5K8xTjPA"; + } + { + title = "Le Précepteur"; + tags = [ "video" "philosophy" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCvRgiAmogg7a_BgQ_Ftm6fA"; + } + { + title = "La Tronche en Biais"; + tags = [ "video" "philosophy" "zetetic" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCq-8pBMM3I40QlrhM9ExXJQ"; + } + { + title = "Luke Smith"; + tags = [ "video" "linux" "philosophy" ]; + url = "https://videos.lukesmith.xyz/feeds/videos.atom"; + } + { + title = "Maitre Luger"; + tags = [ "video" "guns" "history" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC570onl32MV5vjAnmnjeycg"; + } + { + title = "Mental Outlaw"; + tags = [ "video" "linux" ]; + url = "https://odysee.com/$/rss/@AlphaNerd:8"; + } + { + title = "mozinor"; + tags = [ "video" "humor" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCTIiKt_Bp4gKlFPtHeB3qGw"; + } + { + title = "NixOS"; + tags = [ "video" "linux" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC3vIimi9q4AT8EgxYp_dWIw"; + } + { + title = "Numberphile"; + tags = [ "video" "math" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCoxcjq-8xIDTYp3uz647V5A"; + } + { + title = "PostmodernJukebox"; + tags = [ "video" "music" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCORIeT1hk6tYBuntEXsguLg"; + } + { + title = "r/NixOS"; + tags = [ "video" "linux" "reddit" ]; + url = "https://www.reddit.com/r/NixOS.rss"; + } + { + title = "r/Scala"; + tags = [ "video" "linux" "programming" ]; + url = "https://www.reddit.com/r/Scala.rss"; + } + { + title = "Real Engineering"; + tags = [ "video" "science" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCR1IuLEqb6UEA_zQ81kwXfg"; + } + { + title = "Real Science"; + tags = [ "video" "science" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC176GAQozKKjhz62H8u9vQQ"; + } + { + title = "Richard sur Terre"; + tags = [ "video" "politics" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCZIR19yr81nmaP0pMfiMwxw"; + } + { + title = "Stevius"; + tags = [ "video" "history" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCkWzOALDNDee3t9IfYoB2uQ"; + } + { + title = "TheDuelist"; + tags = [ "video" "gaming" "cast" "faf" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCDDNS1XW0-o1FRPvaR9-pKA"; + } + { + title = "Tom Scott"; + tags = [ "video" "science" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCBa659QWEk1AI4Tg--mrJ2A"; + } + { + title = "Victor Ferry"; + tags = [ "video" "rhetoric" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCcueC-4NWGuPFQKzQWn5heA"; + } + { + title = "videogamedunkey"; + tags = [ "video" "humor" "gaming" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCsvn_Po0SmunchJYOWpOxMg"; + } + { + title = "Vilebrequin"; + tags = [ "video" "humor" "cars" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCC9mlCpyisiIpp9YA9xV-QA"; + } + { + title = "Vsauce"; + tags = [ "video" "science" "philosophy" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC6nSFpj9HTCZ5t-N3Rm3-HA"; + } + { + title = "Wendover Productions"; + tags = [ "video" "finance" "logistics" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC9RM-iSvTu1uPJb8X5yp3EQ"; + } + { + title = "Willow's Duality"; + tags = [ "video" "gaming" "cast" "faf" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UC8lU7OuwPGDQibMhnvSvf1w"; + } + { + title = "ScienceEtonnante"; + tags = [ "video" "science" ]; + url = + "https://www.youtube.com/feeds/videos.xml?channel_id=UCaNlbnghtwlsGF-KzAFThqA"; + } + ]; + extraConfig = '' + macro v set browser "setsid -f ${pkgs.mpv}/bin/mpv --really-quiet --no-terminal" ; open-in-browser ; set browser brave + + # unbind keys + unbind-key ENTER + unbind-key j + unbind-key k + unbind-key J + unbind-key K + + # bind keys - vim style + bind-key j down + bind-key k up + bind-key l open + bind-key h quit + + color background color223 color0 + color listnormal color223 color0 + color listnormal_unread color2 color0 + color listfocus color223 color237 + color listfocus_unread color223 color237 + color info color8 color0 + color article color223 color0 + + # highlights + highlight article "^(Feed|Link):.*$" color11 default bold + highlight article "^(Title|Date|Author):.*$" color11 default bold + highlight article "https?://[^ ]+" color2 default underline + highlight article "\\[[0-9]+\\]" color2 default bold + highlight article "\\[image\\ [0-9]+\\]" color2 default bold + highlight feedlist "^─.*$" color6 color6 bold + ''; + }; + }; + }; +} diff --git a/modules/belgian-eid.nix b/modules/belgian-eid.nix deleted file mode 100644 index 9a138e9..0000000 --- a/modules/belgian-eid.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - services.pcscd.enable = true; - environment.systemPackages = with pkgs.unstable; [ - eid-mw - ]; -} diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index 15a8624..ba61170 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -1,4 +1,4 @@ -{ inputs, config, options, lib, pkgs, ... }: +{ config, options, lib, pkgs, ... }: with lib; with lib.my; @@ -11,16 +11,21 @@ in { corefonts # Microsoft free fonts meslo-lgs-nf ]; - fontconfig.defaultFonts = { - monospace = [ "MesloLGS NF" ]; - }; + fontconfig.defaultFonts = { monospace = [ "MesloLGS NF" ]; }; }; - home-manager.users.${config.user.name} = { + programs.adb.enable = true; - imports = [ - inputs.nix-doom-emacs.hmModule - ]; + programs.ssh.startAgent = true; + + services.udisks2.enable = true; + + systemd.packages = [ pkgs.dconf ]; + + # Required for custom GTK themes + services.dbus.packages = with pkgs; [ dconf ]; + + home-manager.users.${config.user.name} = { xsession = { enable = true; @@ -55,11 +60,8 @@ in { screen-locker = { enable = false; inactiveInterval = 5; - lockCmd = "${pkgs.i3lock}/bin/i3lock -e -f -c 000000 -i ~/.wallpaper.png"; - }; - emacs = { - enable = true; - client.enable = true; + lockCmd = + "${pkgs.i3lock}/bin/i3lock -e -f -c 000000 -i ~/.wallpaper.png"; }; }; @@ -73,9 +75,7 @@ in { key = lib.mkDefault "3AC6F170F01133CE393BCD94BE948AFD7E7873BE"; signByDefault = true; }; - extraConfig = { - init.defaultBranch = "master"; - }; + extraConfig = { init.defaultBranch = "master"; }; }; ssh = { enable = true; @@ -106,105 +106,6 @@ in { enableZshIntegration = true; nix-direnv.enable = true; }; - doom-emacs = { - enable = true; - doomPrivateDir = ./files/doom.d; - emacsPackagesOverlay = final: prev: { - ob-ammonite = with final; (trivialBuild { - src = pkgs.fetchFromGitHub { - owner = "zwild"; - repo = "ob-ammonite"; - rev = "39937dff395e70aff76a4224fa49cf2ec6c57cca"; - sha256 = pkgs.lib.fakeSha256; - }; - pname = "ob-ammonite"; - packageRequires = [ s dash editorconfig ]; - }); - }; - }; - newsboat = { - enable = true; - autoReload = true; - urls = [ - { title = "Happy Path Programming"; tags = [ "podcast" "programming" ]; url = "https://anchor.fm/s/2ed56aa0/podcast/rss"; } - { title = "Antoine Goya"; tags = [ "video" "culture" "cinema" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC2qlgiYCCtaYpn2_blX01xg"; } - { title = "Berd"; tags = [ "video" "humor" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCRei8TBpt4r0WPZ7MkiKmVg"; } - { title = "Berm Peak"; tags = [ "video" "MTB" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCu8YylsPiu9XfaQC74Hr_Gw"; } - { title = "Berm Peak Express"; tags = [ "video" "MTB" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCOpP5PqrzODWpFU961acUbg"; } - { title = "code- Reinho"; tags = [ "video" "guns" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCNWs0QTTHm7yiPMwl0aynsg"; } - { title = "Computerphile"; tags = [ "video" "programming" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA"; } - { title = "Chronik Fiction"; tags = [ "video" "cinema" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCeah3nqu_v6KfpXrCzEARQw"; } - { title = "Domain of Science"; tags = [ "video" "science" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCxqAWLTk1CmBvZFPzeZMd9A"; } - { title = "Forged Alliance Forever"; tags = [ "video" "gaming" "faf" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCkAWiUu4QE172kv"; } - { title = "Grand Angle"; tags = [ "video" "finance" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCWtD8JN9hkxL5TJL_ktaNZA"; } - { title = "Gyle"; tags = [ "video" "gaming" "cast" "faf" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCzY7MBSgNLZOMxMIFwtf2bw"; } - { title = "Hygiène Mentale"; tags = [ "video" "philosophy" "zetetic" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCMFcMhePnH4onVHt2-ItPZw"; } - { title = "Institut des Libertés"; tags = [ "video" "finance" "politics" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCaqUCTIgFDtMhBeKeeejrkA"; } - { title = "Juste Milieu"; tags = [ "video" "politics" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCXh5HwvbyfD-GUVHLng9aGQ"; } - { title = "J'suis pas content TV"; tags = [ "video" "politics" "humor" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC9NB2nXjNtRabu3YLPB16Hg"; } - { title = "Kriss Papillon"; tags = [ "video" "culture" "philosophy" ]; url = "https://odysee.com/$/rss/@Kriss-Papillon:c"; } - { title = "Kruggsmash"; tags = [ "video" "storytelling" "gaming" ]; url = "https://www.youtube.com/@kruggsmash"; } - { title = "Kurzgesagt"; tags = [ "video" "science" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCsXVk37bltHxD1rDPwtNM8Q"; } - { title = "La Gauloiserie"; tags = [ "video" "guns" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC5Ph48LXovwS2hyAGfWwE9A"; } - { title = "La Pistolerie"; tags = [ "video" "guns" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCvAZXkucE9CVVxb5K8xTjPA"; } - { title = "Le Précepteur"; tags = [ "video" "philosophy" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCvRgiAmogg7a_BgQ_Ftm6fA"; } - { title = "La Tronche en Biais"; tags = [ "video" "philosophy" "zetetic" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCq-8pBMM3I40QlrhM9ExXJQ"; } - { title = "Luke Smith"; tags = [ "video" "linux" "philosophy" ]; url = "https://videos.lukesmith.xyz/feeds/videos.atom"; } - { title = "Maitre Luger"; tags = [ "video" "guns" "history" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC570onl32MV5vjAnmnjeycg"; } - { title = "Mental Outlaw"; tags = [ "video" "linux" ]; url = "https://odysee.com/$/rss/@AlphaNerd:8"; } - { title = "mozinor"; tags = [ "video" "humor" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCTIiKt_Bp4gKlFPtHeB3qGw"; } - { title = "NixOS"; tags = [ "video" "linux" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC3vIimi9q4AT8EgxYp_dWIw"; } - { title = "Numberphile"; tags = [ "video" "math" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCoxcjq-8xIDTYp3uz647V5A"; } - { title = "PostmodernJukebox"; tags = [ "video" "music" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCORIeT1hk6tYBuntEXsguLg"; } - { title = "r/NixOS"; tags = [ "video" "linux" "reddit" ]; url = "https://www.reddit.com/r/NixOS.rss"; } - { title = "r/Scala"; tags = [ "video" "linux" "programming" ]; url = "https://www.reddit.com/r/Scala.rss"; } - { title = "Real Engineering"; tags = [ "video" "science" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCR1IuLEqb6UEA_zQ81kwXfg"; } - { title = "Real Science"; tags = [ "video" "science" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC176GAQozKKjhz62H8u9vQQ"; } - { title = "Richard sur Terre"; tags = [ "video" "politics" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCZIR19yr81nmaP0pMfiMwxw"; } - { title = "Stevius"; tags = [ "video" "history" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCkWzOALDNDee3t9IfYoB2uQ"; } - { title = "TheDuelist"; tags = [ "video" "gaming" "cast" "faf" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCDDNS1XW0-o1FRPvaR9-pKA"; } - { title = "Tom Scott"; tags = [ "video" "science" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCBa659QWEk1AI4Tg--mrJ2A"; } - { title = "Victor Ferry"; tags = [ "video" "rhetoric" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCcueC-4NWGuPFQKzQWn5heA"; } - { title = "videogamedunkey"; tags = [ "video" "humor" "gaming" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCsvn_Po0SmunchJYOWpOxMg"; } - { title = "Vilebrequin"; tags = [ "video" "humor" "cars" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCC9mlCpyisiIpp9YA9xV-QA"; } - { title = "Vsauce"; tags = [ "video" "science" "philosophy" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC6nSFpj9HTCZ5t-N3Rm3-HA"; } - { title = "Wendover Productions"; tags = [ "video" "finance" "logistics" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC9RM-iSvTu1uPJb8X5yp3EQ"; } - { title = "Willow's Duality"; tags = [ "video" "gaming" "cast" "faf" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC8lU7OuwPGDQibMhnvSvf1w"; } - { title = "ScienceEtonnante"; tags = [ "video" "science" ]; url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCaNlbnghtwlsGF-KzAFThqA"; } - ]; - extraConfig = '' - macro v set browser "setsid -f ${pkgs.mpv}/bin/mpv --really-quiet --no-terminal" ; open-in-browser ; set browser brave - - # unbind keys - unbind-key ENTER - unbind-key j - unbind-key k - unbind-key J - unbind-key K - - # bind keys - vim style - bind-key j down - bind-key k up - bind-key l open - bind-key h quit - - color background color223 color0 - color listnormal color223 color0 - color listnormal_unread color2 color0 - color listfocus color223 color237 - color listfocus_unread color223 color237 - color info color8 color0 - color article color223 color0 - - # highlights - highlight article "^(Feed|Link):.*$" color11 default bold - highlight article "^(Title|Date|Author):.*$" color11 default bold - highlight article "https?://[^ ]+" color2 default underline - highlight article "\\[[0-9]+\\]" color2 default bold - highlight article "\\[image\\ [0-9]+\\]" color2 default bold - highlight feedlist "^─.*$" color6 color6 bold - ''; - }; }; gtk = { @@ -218,9 +119,7 @@ in { }; home = { - sessionVariables = { - QT_AUTO_SCREEN_SCALE_FACTOR = "0"; - }; + sessionVariables = { QT_AUTO_SCREEN_SCALE_FACTOR = "0"; }; keyboard = { layout = "fr"; @@ -256,17 +155,13 @@ in { }; packages = with pkgs.unstable; [ - haskellPackages.xmobar - i3lock - feh xorg.xbacklight xorg.xinit xorg.xwininfo xorg.xkill - scrot numix-gtk-theme - ncmpcpp + (ncmpcpp.override { visualizerSupport = true; }) mpc_cli pulsemixer @@ -294,10 +189,6 @@ in { jetbrains.idea-community httpie - rnix-lsp - metals - nixpkgs-fmt - zsh-syntax-highlighting ranger R @@ -314,7 +205,6 @@ in { ]; }; - systemd.user.services.activitywatch = { Unit.Description = "Start ActivityWatch"; Service.Type = "simple"; @@ -326,7 +216,8 @@ in { systemd.user.services.activitywatch-afk = { Unit.Description = "Start ActivityWatch AFK"; Service.Type = "simple"; - Service.ExecStart = "${pkgs.unstable.activitywatch-bin}/bin/aw-watcher-afk"; + Service.ExecStart = + "${pkgs.unstable.activitywatch-bin}/bin/aw-watcher-afk"; Install.WantedBy = [ "default.target" ]; Service.Restart = "on-failure"; Service.RestartSec = 5; @@ -334,7 +225,8 @@ in { systemd.user.services.activitywatch-window = { Unit.Description = "Start ActivityWatch Window"; Service.Type = "simple"; - Service.ExecStart = "${pkgs.unstable.activitywatch-bin}/bin/aw-watcher-window"; + Service.ExecStart = + "${pkgs.unstable.activitywatch-bin}/bin/aw-watcher-window"; Install.WantedBy = [ "default.target" ]; Service.Restart = "on-failure"; Service.RestartSec = 5; diff --git a/modules/desktop/xmonad.nix b/modules/desktop/xmonad.nix index ef852b7..e2fc234 100644 --- a/modules/desktop/xmonad.nix +++ b/modules/desktop/xmonad.nix @@ -5,9 +5,7 @@ with lib.my; let cfg = config.modules.desktop.xmonad; in { - options.modules.desktop.xmonad = { - enable = mkBoolOpt false; - }; + options.modules.desktop.xmonad = { enable = mkBoolOpt false; }; config = mkIf cfg.enable { @@ -18,7 +16,7 @@ in { windowManager.xmonad.enable = true; displayManager.lightdm = { enable = true; - background = "/etc/nixos/configs/files/wallpaper.png"; + background = ./files/wallpaper.png; greeters.mini.enable = true; }; }; @@ -31,6 +29,13 @@ in { config = ./files/xmonad.hs; }; }; + home.packages = with pkgs.unstable; [ + haskellPackages.xmobar + i3lock + + feh + scrot + ]; }; }; diff --git a/modules/desktop/zsh.nix b/modules/desktop/zsh.nix index 0ef7c14..a2d7866 100644 --- a/modules/desktop/zsh.nix +++ b/modules/desktop/zsh.nix @@ -11,6 +11,11 @@ in { environment.pathsToLink = [ "/share/zsh" ]; + + users.users.${config.user.name} = { + shell = pkgs.zsh; + }; + home-manager.users.${config.user.name} = { programs.zsh = { diff --git a/modules/desktop/files/doom.d/config.el b/modules/editor/emacs/doom.d/config.el similarity index 100% rename from modules/desktop/files/doom.d/config.el rename to modules/editor/emacs/doom.d/config.el diff --git a/modules/desktop/files/doom.d/init.el b/modules/editor/emacs/doom.d/init.el similarity index 99% rename from modules/desktop/files/doom.d/init.el rename to modules/editor/emacs/doom.d/init.el index 15ce4b8..929013f 100644 --- a/modules/desktop/files/doom.d/init.el +++ b/modules/editor/emacs/doom.d/init.el @@ -21,7 +21,7 @@ :completion company ; the ultimate code completion backend - ;;helm ; the *other* search engine for love and life + helm ; the *other* search engine for love and life ;;ido ; the other *other* search engine... ;;ivy ; a search engine for love and life vertico ; the search engine of the future diff --git a/modules/desktop/files/doom.d/packages.el b/modules/editor/emacs/doom.d/packages.el similarity index 100% rename from modules/desktop/files/doom.d/packages.el rename to modules/editor/emacs/doom.d/packages.el diff --git a/modules/editor/emacs/emacs.nix b/modules/editor/emacs/emacs.nix new file mode 100644 index 0000000..6cf2863 --- /dev/null +++ b/modules/editor/emacs/emacs.nix @@ -0,0 +1,48 @@ +{ inputs, config, lib, pkgs, ... }: + +with lib; +with lib.my; +let cfg = config.modules.editor.emacs; +in { + options.modules.editor.emacs = { enable = mkBoolOpt false; }; + + config = mkIf cfg.enable { + home-manager.users.${config.user.name} = { + + imports = [ inputs.nix-doom-emacs.hmModule ]; + + home.packages = with pkgs.unstable; [ + ripgrep + fd + findutils.locate + + metals + rnix-lsp + nixfmt + ]; + + services.emacs = { + enable = true; + client.enable = true; + }; + + programs.doom-emacs = { + enable = true; + doomPrivateDir = ./doom.d; + emacsPackagesOverlay = final: prev: { + ob-ammonite = with final; + (trivialBuild { + src = pkgs.fetchFromGitHub { + owner = "zwild"; + repo = "ob-ammonite"; + rev = "39937dff395e70aff76a4224fa49cf2ec6c57cca"; + sha256 = pkgs.lib.fakeSha256; + }; + pname = "ob-ammonite"; + packageRequires = [ s dash editorconfig ]; + }); + }; + }; + }; + }; +} diff --git a/modules/desktop/neovim.nix b/modules/editor/vim.nix similarity index 90% rename from modules/desktop/neovim.nix rename to modules/editor/vim.nix index 2837412..04f25a5 100644 --- a/modules/desktop/neovim.nix +++ b/modules/editor/vim.nix @@ -2,11 +2,11 @@ with lib; with lib.my; -let cfg = config.modules.desktop.neovim; + +let cfg = config.modules.editor.vim; in { - options.modules.desktop.neovim = { - enable = mkBoolOpt false; - }; + options.modules.editor.vim = { enable = mkBoolOpt false; }; + config = mkIf cfg.enable { home-manager.users.${config.user.name} = { programs.neovim = { diff --git a/modules/hardware/audio.nix b/modules/hardware/audio.nix new file mode 100644 index 0000000..5158e4d --- /dev/null +++ b/modules/hardware/audio.nix @@ -0,0 +1,14 @@ +{ options, config, lib, pkgs, ... }: + +with lib; +with lib.my; +let cfg = config.modules.hardware.audio; +in { + options.modules.hardware.audio = { enable = mkBoolOpt false; }; + + config = mkIf cfg.enable { + sound.enable = true; + hardware.pulseaudio.enable = true; + hardware.pulseaudio.support32Bit = true; + }; +} diff --git a/modules/network.nix b/modules/network.nix deleted file mode 100644 index ac0f9fd..0000000 --- a/modules/network.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - networking.hosts = { - "127.0.0.1" = [ "localhost" "membres.yourcoop.local" ]; - }; - services.resolved.dnssec = "false"; -} diff --git a/modules/services/belgian-eid.nix b/modules/services/belgian-eid.nix new file mode 100644 index 0000000..7c71851 --- /dev/null +++ b/modules/services/belgian-eid.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: + +with lib; +with lib.my; + +let cfg = config.modules.services.belgian-eid; +in { + options.modules.services.belgian-eid = { enable = mkBoolOpt false; }; + + config = mkIf cfg.enable { + + nixpkgs.overlays = [ + (final: prev: { + firefox = prev.firefox.override { pkcs11Modules = [ prev.eid-mw ]; }; + }) + ]; + + services.pcscd.enable = true; + + environment.systemPackages = with pkgs.unstable; [ eid-mw ]; + }; +} diff --git a/modules/services/docker.nix b/modules/services/docker.nix new file mode 100644 index 0000000..f4960c1 --- /dev/null +++ b/modules/services/docker.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: + +with lib; +with lib.my; + +let cfg = config.modules.services.docker; +in { + options.modules.services.docker = { enable = mkBoolOpt false; }; + + config = mkIf cfg.enable { + + virtualisation.docker.enable = true; + users.users.froidmpa.extraGroups = [ "docker" ]; + + environment.systemPackages = with pkgs; [ docker-compose ]; + + }; +} diff --git a/modules/services/flatpak.nix b/modules/services/flatpak.nix new file mode 100644 index 0000000..ae7e240 --- /dev/null +++ b/modules/services/flatpak.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: + +with lib; +with lib.my; + +let cfg = config.modules.services.flatpak; +in { + options.modules.services.flatpak = { enable = mkBoolOpt false; }; + + config = mkIf cfg.enable { + services.flatpak.enable = true; + + xdg.portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + }; + + }; +} diff --git a/modules/services/libvirt.nix b/modules/services/libvirt.nix new file mode 100644 index 0000000..3c7007d --- /dev/null +++ b/modules/services/libvirt.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +with lib; +with lib.my; + +let cfg = config.modules.services.libvirt; +in { + options.modules.services.libvirt = { enable = mkBoolOpt false; }; + + config = mkIf cfg.enable { + + virtualisation = { + libvirtd.enable = true; + spiceUSBRedirection.enable = true; + }; + users.users.froidmpa.extraGroups = [ "libvirtd" ]; + + environment.systemPackages = with pkgs; [ virt-manager ]; + }; +} diff --git a/modules/system.nix b/modules/system.nix deleted file mode 100644 index 5b03957..0000000 --- a/modules/system.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ config, lib, pkgs, nixpkgs, ... }: -{ - - environment.systemPackages = with pkgs.unstable; [ - wget - inetutils - man - - zip - unzip - - ripgrep - fd - findutils.locate - - htop - ncdu - nload - pciutils - lsof - dnsutils - ]; - - sound.enable = true; - hardware.pulseaudio.enable = true; - hardware.pulseaudio.support32Bit = true; - - programs.adb.enable = true; - - users.users.froidmpa = { - isNormalUser = true; - extraGroups = [ "wheel" "adbusers" ]; - shell = pkgs.zsh; - }; - - programs.ssh.startAgent = true; - - services.udisks2.enable = true; - - systemd.packages = [ pkgs.dconf ]; - - # Required for custom GTK themes - services.dbus.packages = with pkgs; [ dconf ]; - - boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; - - services.flatpak.enable = true; - xdg.portal = { - enable = true; - extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; - }; -} diff --git a/modules/virtualisation.nix b/modules/virtualisation.nix deleted file mode 100644 index 3e421bf..0000000 --- a/modules/virtualisation.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - virtualisation = { - libvirtd.enable = true; - spiceUSBRedirection.enable = true; - docker.enable = true; - }; - users.users.froidmpa.extraGroups = [ "docker" "libvirtd" ]; - - environment.systemPackages = with pkgs; [ - docker-compose - virt-manager - ]; -} diff --git a/overlay.nix b/overlay.nix index 0c8894e..54f3c62 100644 --- a/overlay.nix +++ b/overlay.nix @@ -1,6 +1,3 @@ -final: prev: -{ - ncmpcpp = prev.ncmpcpp.override { visualizerSupport = true; }; - firefox = prev.firefox.override { pkcs11Modules = [ prev.eid-mw ]; }; +final: prev: { activitywatch-bin = prev.callPackage ./packages/activitywatch.nix { }; }