From 0bdff5ef5b81a8f5718c2221878b29de2135a6f6 Mon Sep 17 00:00:00 2001 From: unexplrd Date: Tue, 17 Jun 2025 12:45:52 +0300 Subject: [PATCH] restructure Signed-off-by: unexplrd --- .../dunamis/users/user/home-configuration.nix | 8 +- .../eldrid/users/user/home-configuration.nix | 8 +- .../legion/users/user/home-configuration.nix | 8 +- .../users/user/home-configuration.nix | 11 +- hosts/sarien/configuration.nix | 2 +- .../sarien/users/user/home-configuration.nix | 8 +- .../{cosmic.nix => cosmic/default.nix} | 0 modules/nixos/desktop/default.nix | 10 +- .../desktop/{gnome.nix => gnome/default.nix} | 0 .../{hyprland.nix => hyprland/default.nix} | 0 .../desktop/{niri.nix => niri/default.nix} | 0 .../{plasma.nix => plasma/default.nix} | 3 - modules/nixos/shared/security/default.nix | 119 ----------------- .../shared => shared/nixos}/boot/default.nix | 0 .../nixos}/boot/lanzaboote.nix | 0 .../shared => shared/nixos}/boot/loader.nix | 0 .../shared => shared/nixos}/default.nix | 21 +-- .../nixos}/hardware/default.nix | 0 .../nixos}/hardware/facter.nix | 0 .../shared => shared/nixos}/misc/default.nix | 0 .../shared => shared/nixos}/misc/slim.nix | 0 .../shared => shared/nixos}/misc/zram.nix | 0 .../nixos}/networking/default.nix | 0 .../nixos}/networking/hosts.nix | 0 .../shared => shared/nixos}/nix/common.nix | 0 .../shared => shared/nixos}/nix/default.nix | 0 .../nixos}/nix/distibuted-build.nix | 0 .../nixos}/nix/substituters.nix | 0 .../shared => shared/nixos}/programs.nix | 0 modules/shared/nixos/security/default.nix | 123 ++++++++++++++++++ .../shared => shared/nixos}/services.nix | 29 ++--- .../{nixos/shared => shared/nixos}/sops.nix | 0 .../{nixos/shared => shared/nixos}/users.nix | 4 +- .../users => modules/shared}/user/common.nix | 0 modules/shared/user/default.nix | 7 + .../users => modules/shared}/user/flatpak.nix | 0 .../shared}/user/programs.nix | 0 37 files changed, 167 insertions(+), 194 deletions(-) rename modules/nixos/desktop/{cosmic.nix => cosmic/default.nix} (100%) rename modules/nixos/desktop/{gnome.nix => gnome/default.nix} (100%) rename modules/nixos/desktop/{hyprland.nix => hyprland/default.nix} (100%) rename modules/nixos/desktop/{niri.nix => niri/default.nix} (100%) rename modules/nixos/desktop/{plasma.nix => plasma/default.nix} (89%) delete mode 100644 modules/nixos/shared/security/default.nix rename modules/{nixos/shared => shared/nixos}/boot/default.nix (100%) rename modules/{nixos/shared => shared/nixos}/boot/lanzaboote.nix (100%) rename modules/{nixos/shared => shared/nixos}/boot/loader.nix (100%) rename modules/{nixos/shared => shared/nixos}/default.nix (73%) rename modules/{nixos/shared => shared/nixos}/hardware/default.nix (100%) rename modules/{nixos/shared => shared/nixos}/hardware/facter.nix (100%) rename modules/{nixos/shared => shared/nixos}/misc/default.nix (100%) rename modules/{nixos/shared => shared/nixos}/misc/slim.nix (100%) rename modules/{nixos/shared => shared/nixos}/misc/zram.nix (100%) rename modules/{nixos/shared => shared/nixos}/networking/default.nix (100%) rename modules/{nixos/shared => shared/nixos}/networking/hosts.nix (100%) rename modules/{nixos/shared => shared/nixos}/nix/common.nix (100%) rename modules/{nixos/shared => shared/nixos}/nix/default.nix (100%) rename modules/{nixos/shared => shared/nixos}/nix/distibuted-build.nix (100%) rename modules/{nixos/shared => shared/nixos}/nix/substituters.nix (100%) rename modules/{nixos/shared => shared/nixos}/programs.nix (100%) create mode 100644 modules/shared/nixos/security/default.nix rename modules/{nixos/shared => shared/nixos}/services.nix (86%) rename modules/{nixos/shared => shared/nixos}/sops.nix (100%) rename modules/{nixos/shared => shared/nixos}/users.nix (94%) rename {hosts/dunamis/users => modules/shared}/user/common.nix (100%) create mode 100644 modules/shared/user/default.nix rename {hosts/dunamis/users => modules/shared}/user/flatpak.nix (100%) rename {hosts/dunamis/users => modules/shared}/user/programs.nix (100%) diff --git a/hosts/dunamis/users/user/home-configuration.nix b/hosts/dunamis/users/user/home-configuration.nix index 8499b4a..8f13934 100644 --- a/hosts/dunamis/users/user/home-configuration.nix +++ b/hosts/dunamis/users/user/home-configuration.nix @@ -1,7 +1 @@ -{ - imports = [ - ./common.nix - ./flatpak.nix - ./programs.nix - ]; -} +{flake, ...}: {imports = [flake.modules.shared.user];} diff --git a/hosts/eldrid/users/user/home-configuration.nix b/hosts/eldrid/users/user/home-configuration.nix index b9f1b07..8f13934 100644 --- a/hosts/eldrid/users/user/home-configuration.nix +++ b/hosts/eldrid/users/user/home-configuration.nix @@ -1,7 +1 @@ -{lib, ...}: { - imports = [ - ../../../dunamis/users/user/common.nix - ../../../dunamis/users/user/programs.nix - ../../../dunamis/users/user/flatpak.nix - ]; -} +{flake, ...}: {imports = [flake.modules.shared.user];} diff --git a/hosts/legion/users/user/home-configuration.nix b/hosts/legion/users/user/home-configuration.nix index 9d61093..8f13934 100644 --- a/hosts/legion/users/user/home-configuration.nix +++ b/hosts/legion/users/user/home-configuration.nix @@ -1,7 +1 @@ -{ - imports = [ - ../../../dunamis/users/user/common.nix - ../../../dunamis/users/user/flatpak.nix - ../../../dunamis/users/user/programs.nix - ]; -} +{flake, ...}: {imports = [flake.modules.shared.user];} diff --git a/hosts/morphius/users/user/home-configuration.nix b/hosts/morphius/users/user/home-configuration.nix index ef509bb..8f13934 100644 --- a/hosts/morphius/users/user/home-configuration.nix +++ b/hosts/morphius/users/user/home-configuration.nix @@ -1,10 +1 @@ -{lib, ...}: { - imports = [ - ../../../dunamis/users/user/common.nix - ../../../dunamis/users/user/programs.nix - ../../../dunamis/users/user/flatpak.nix - ]; - systemd.user.settings.Manager.DefaultEnvironment = { - TERMINAL = lib.mkForce "ghostty"; - }; -} +{flake, ...}: {imports = [flake.modules.shared.user];} diff --git a/hosts/sarien/configuration.nix b/hosts/sarien/configuration.nix index b67d010..dd45bef 100644 --- a/hosts/sarien/configuration.nix +++ b/hosts/sarien/configuration.nix @@ -7,7 +7,7 @@ imports = with inputs; [ self.nixosModules.desktop self.nixosModules.system - self.nixosModules.shared + self.modules.shared.nixos ./disko ./hardware ./misc diff --git a/hosts/sarien/users/user/home-configuration.nix b/hosts/sarien/users/user/home-configuration.nix index 93ccd24..8f13934 100644 --- a/hosts/sarien/users/user/home-configuration.nix +++ b/hosts/sarien/users/user/home-configuration.nix @@ -1,7 +1 @@ -{ - imports = [ - ../../../dunamis/users/user/common.nix - ../../../dunamis/users/user/programs.nix - ../../../dunamis/users/user/flatpak.nix - ]; -} +{flake, ...}: {imports = [flake.modules.shared.user];} diff --git a/modules/nixos/desktop/cosmic.nix b/modules/nixos/desktop/cosmic/default.nix similarity index 100% rename from modules/nixos/desktop/cosmic.nix rename to modules/nixos/desktop/cosmic/default.nix diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix index ca85196..17ea96f 100644 --- a/modules/nixos/desktop/default.nix +++ b/modules/nixos/desktop/default.nix @@ -1,10 +1,10 @@ { imports = [ ./common - ./cosmic.nix - ./gnome.nix - ./hyprland.nix - ./niri.nix - ./plasma.nix + ./cosmic + ./gnome + ./hyprland + ./niri + ./plasma ]; } diff --git a/modules/nixos/desktop/gnome.nix b/modules/nixos/desktop/gnome/default.nix similarity index 100% rename from modules/nixos/desktop/gnome.nix rename to modules/nixos/desktop/gnome/default.nix diff --git a/modules/nixos/desktop/hyprland.nix b/modules/nixos/desktop/hyprland/default.nix similarity index 100% rename from modules/nixos/desktop/hyprland.nix rename to modules/nixos/desktop/hyprland/default.nix diff --git a/modules/nixos/desktop/niri.nix b/modules/nixos/desktop/niri/default.nix similarity index 100% rename from modules/nixos/desktop/niri.nix rename to modules/nixos/desktop/niri/default.nix diff --git a/modules/nixos/desktop/plasma.nix b/modules/nixos/desktop/plasma/default.nix similarity index 89% rename from modules/nixos/desktop/plasma.nix rename to modules/nixos/desktop/plasma/default.nix index 9cc28bb..9e29323 100644 --- a/modules/nixos/desktop/plasma.nix +++ b/modules/nixos/desktop/plasma/default.nix @@ -7,9 +7,6 @@ with lib; let cfg = config.desktop.plasma; in { - imports = [ - ./common/pipewire.nix - ]; options = { desktop.plasma = { enable = mkEnableOption "enable plasma desktop"; diff --git a/modules/nixos/shared/security/default.nix b/modules/nixos/shared/security/default.nix deleted file mode 100644 index 2f8bcc8..0000000 --- a/modules/nixos/shared/security/default.nix +++ /dev/null @@ -1,119 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - inherit (lib) mkIf mkDefault; -in { - security = { - sudo.enable = false; - # doas.enable = true; - sudo-rs = { - enable = true; - execWheelOnly = true; - }; - polkit.enable = true; - polkit.extraConfig = '' - polkit.addRule(function(action, subject) { - if ( - subject.isInGroup("users") - && ( - action.id == "org.freedesktop.login1.reboot" || - action.id == "org.freedesktop.login1.reboot-multiple-sessions" || - action.id == "org.freedesktop.login1.power-off" || - action.id == "org.freedesktop.login1.power-off-multiple-sessions" - ) - ) - { - return polkit.Result.YES; - } - }); - ''; - apparmor.enable = mkDefault true; - pam.sshAgentAuth.enable = true; - }; - - environment.systemPackages = with pkgs; [ - (mkIf config.security.doas.enable doas-sudo-shim) # if doas install doas sudo shim - ]; - - services.dbus = { - apparmor = "enabled"; - implementation = "broker"; - }; - services.ntpd-rs = { - enable = true; - #settings = { - # server = { - # require-nts = true; - # }; - #}; - }; - - boot.kernel.sysctl = { - "dev.tty.ldisc_autoload" = 0; - "fs.protected_fifos" = 2; - "fs.protected_regular" = 2; - "fs.suid_dumpable" = 0; - "kernel.kptr_restrict" = 2; - "kernel_kexec_load_disabled" = 1; - # "kernel.modules_disabled" = 1; - "kernel.sysrq" = 0; - "kernel.unprivileged_bpf_disabled" = 1; - "net.ipv4.conf.all.forwarding" = 0; - "net.ipv4.conf.all.log_martians" = 1; - "net.ipv4.conf.all.rp_filter" = 1; - "net.ipv4.conf.all.send_redirects" = 0; - "net.ipv4.conf.default.accept_redirects" = 0; - "net.ipv4.conf.default.log_martians" = 1; - "net.ipv6.conf.all.accept_redirects" = 0; - "net.ipv6.conf.default.accept_redirects" = 0; - }; - boot.kernelParams = [ - "amd_iommu=force_isolation" - "debugfs=off" - "efi=disable_early_pci_dma" - "gather_data_sampling=force" - "intel_iommu=on" - "iommu.passthrough=0" - "iommu.strict=1" - "iommu=force" - "page_alloc.shuffle=1" - "vsyscall=none" - # "ia32_emulation=0" - # "lockdown=confidentiality" - # "module.sig_enforce=1" - ]; - - boot.blacklistedKernelModules = [ - # Obscure network protocols - "ax25" - "netrom" - "rose" - # Old or rare or insufficiently audited filesystems - "adfs" - "affs" - "bfs" - "befs" - "cramfs" - "efs" - "erofs" - "exofs" - "freevxfs" - "f2fs" - "hfs" - "hpfs" - "jfs" - "minix" - "nilfs2" - "ntfs" - "omfs" - "qnx4" - "qnx6" - "sysv" - "ufs" - ]; - - nix.settings.allowed-users = mkDefault ["@users"]; -} diff --git a/modules/nixos/shared/boot/default.nix b/modules/shared/nixos/boot/default.nix similarity index 100% rename from modules/nixos/shared/boot/default.nix rename to modules/shared/nixos/boot/default.nix diff --git a/modules/nixos/shared/boot/lanzaboote.nix b/modules/shared/nixos/boot/lanzaboote.nix similarity index 100% rename from modules/nixos/shared/boot/lanzaboote.nix rename to modules/shared/nixos/boot/lanzaboote.nix diff --git a/modules/nixos/shared/boot/loader.nix b/modules/shared/nixos/boot/loader.nix similarity index 100% rename from modules/nixos/shared/boot/loader.nix rename to modules/shared/nixos/boot/loader.nix diff --git a/modules/nixos/shared/default.nix b/modules/shared/nixos/default.nix similarity index 73% rename from modules/nixos/shared/default.nix rename to modules/shared/nixos/default.nix index b5a9712..bcff798 100644 --- a/modules/nixos/shared/default.nix +++ b/modules/shared/nixos/default.nix @@ -44,15 +44,18 @@ in { keyboards = { internal = { ids = ["0001:0001" "048d:c101"]; - settings.main = { - a = "lettermod(alt, a, 200, 150)"; - s = "lettermod(meta, s, 200, 150)"; - d = "lettermod(control, d, 200, 150)"; - f = "lettermod(shift, f, 200, 150)"; - j = "lettermod(shift, j, 200, 150)"; - k = "lettermod(control, k, 200, 150)"; - l = "lettermod(meta, l, 200, 150)"; - ";" = "lettermod(alt, ;, 200, 150)"; + settings.main = let + idleTimeout = toString 220; + holdTimeout = toString 170; + in { + a = "lettermod(alt, a, ${idleTimeout}, ${holdTimeout})"; + s = "lettermod(meta, s, ${idleTimeout}, ${holdTimeout})"; + d = "lettermod(control, d, ${idleTimeout}, ${holdTimeout})"; + f = "lettermod(shift, f, ${idleTimeout}, ${holdTimeout})"; + j = "lettermod(shift, j, ${idleTimeout}, ${holdTimeout})"; + k = "lettermod(control, k, ${idleTimeout}, ${holdTimeout})"; + l = "lettermod(meta, l, ${idleTimeout}, ${holdTimeout})"; + ";" = "lettermod(alt, ;, ${idleTimeout}, ${holdTimeout})"; }; }; }; diff --git a/modules/nixos/shared/hardware/default.nix b/modules/shared/nixos/hardware/default.nix similarity index 100% rename from modules/nixos/shared/hardware/default.nix rename to modules/shared/nixos/hardware/default.nix diff --git a/modules/nixos/shared/hardware/facter.nix b/modules/shared/nixos/hardware/facter.nix similarity index 100% rename from modules/nixos/shared/hardware/facter.nix rename to modules/shared/nixos/hardware/facter.nix diff --git a/modules/nixos/shared/misc/default.nix b/modules/shared/nixos/misc/default.nix similarity index 100% rename from modules/nixos/shared/misc/default.nix rename to modules/shared/nixos/misc/default.nix diff --git a/modules/nixos/shared/misc/slim.nix b/modules/shared/nixos/misc/slim.nix similarity index 100% rename from modules/nixos/shared/misc/slim.nix rename to modules/shared/nixos/misc/slim.nix diff --git a/modules/nixos/shared/misc/zram.nix b/modules/shared/nixos/misc/zram.nix similarity index 100% rename from modules/nixos/shared/misc/zram.nix rename to modules/shared/nixos/misc/zram.nix diff --git a/modules/nixos/shared/networking/default.nix b/modules/shared/nixos/networking/default.nix similarity index 100% rename from modules/nixos/shared/networking/default.nix rename to modules/shared/nixos/networking/default.nix diff --git a/modules/nixos/shared/networking/hosts.nix b/modules/shared/nixos/networking/hosts.nix similarity index 100% rename from modules/nixos/shared/networking/hosts.nix rename to modules/shared/nixos/networking/hosts.nix diff --git a/modules/nixos/shared/nix/common.nix b/modules/shared/nixos/nix/common.nix similarity index 100% rename from modules/nixos/shared/nix/common.nix rename to modules/shared/nixos/nix/common.nix diff --git a/modules/nixos/shared/nix/default.nix b/modules/shared/nixos/nix/default.nix similarity index 100% rename from modules/nixos/shared/nix/default.nix rename to modules/shared/nixos/nix/default.nix diff --git a/modules/nixos/shared/nix/distibuted-build.nix b/modules/shared/nixos/nix/distibuted-build.nix similarity index 100% rename from modules/nixos/shared/nix/distibuted-build.nix rename to modules/shared/nixos/nix/distibuted-build.nix diff --git a/modules/nixos/shared/nix/substituters.nix b/modules/shared/nixos/nix/substituters.nix similarity index 100% rename from modules/nixos/shared/nix/substituters.nix rename to modules/shared/nixos/nix/substituters.nix diff --git a/modules/nixos/shared/programs.nix b/modules/shared/nixos/programs.nix similarity index 100% rename from modules/nixos/shared/programs.nix rename to modules/shared/nixos/programs.nix diff --git a/modules/shared/nixos/security/default.nix b/modules/shared/nixos/security/default.nix new file mode 100644 index 0000000..9dfd561 --- /dev/null +++ b/modules/shared/nixos/security/default.nix @@ -0,0 +1,123 @@ +{ + config, + lib, + pkgs, + ... +}: let + inherit (lib) mkIf mkDefault; +in { + security = { + sudo.enable = false; + # doas.enable = true; + sudo-rs = { + enable = true; + execWheelOnly = true; + }; + polkit = { + enable = true; + extraConfig = '' + polkit.addRule(function(action, subject) { + if ( + subject.isInGroup("users") + && ( + action.id == "org.freedesktop.login1.reboot" || + action.id == "org.freedesktop.login1.reboot-multiple-sessions" || + action.id == "org.freedesktop.login1.power-off" || + action.id == "org.freedesktop.login1.power-off-multiple-sessions" + ) + ) + { + return polkit.Result.YES; + } + }); + ''; + }; + apparmor.enable = mkDefault true; + pam.sshAgentAuth.enable = true; + }; + + environment.systemPackages = with pkgs; [ + (mkIf config.security.doas.enable doas-sudo-shim) # if doas install doas sudo shim + ]; + services = { + dbus = { + apparmor = "enabled"; + implementation = "broker"; + }; + ntpd-rs = { + enable = true; + #settings = { + # server = { + # require-nts = true; + # }; + #}; + }; + }; + boot = { + kernel.sysctl = { + "dev.tty.ldisc_autoload" = 0; + "fs.protected_fifos" = 2; + "fs.protected_regular" = 2; + "fs.suid_dumpable" = 0; + "kernel.kptr_restrict" = 2; + "kernel_kexec_load_disabled" = 1; + # "kernel.modules_disabled" = 1; + "kernel.sysrq" = 0; + "kernel.unprivileged_bpf_disabled" = 1; + "net.ipv4.conf.all.forwarding" = 0; + "net.ipv4.conf.all.log_martians" = 1; + "net.ipv4.conf.all.rp_filter" = 1; + "net.ipv4.conf.all.send_redirects" = 0; + "net.ipv4.conf.default.accept_redirects" = 0; + "net.ipv4.conf.default.log_martians" = 1; + "net.ipv6.conf.all.accept_redirects" = 0; + "net.ipv6.conf.default.accept_redirects" = 0; + }; + kernelParams = [ + "amd_iommu=force_isolation" + "debugfs=off" + "efi=disable_early_pci_dma" + "gather_data_sampling=force" + "intel_iommu=on" + "iommu.passthrough=0" + "iommu.strict=1" + "iommu=force" + "page_alloc.shuffle=1" + "vsyscall=none" + # "ia32_emulation=0" + # "lockdown=confidentiality" + # "module.sig_enforce=1" + ]; + + blacklistedKernelModules = [ + # Obscure network protocols + "ax25" + "netrom" + "rose" + # Old or rare or insufficiently audited filesystems + "adfs" + "affs" + "bfs" + "befs" + "cramfs" + "efs" + "erofs" + "exofs" + "freevxfs" + "f2fs" + "hfs" + "hpfs" + "jfs" + "minix" + "nilfs2" + "ntfs" + "omfs" + "qnx4" + "qnx6" + "sysv" + "ufs" + ]; + }; + + nix.settings.allowed-users = mkDefault ["@users"]; +} diff --git a/modules/nixos/shared/services.nix b/modules/shared/nixos/services.nix similarity index 86% rename from modules/nixos/shared/services.nix rename to modules/shared/nixos/services.nix index 115ec2f..86fef1d 100644 --- a/modules/nixos/shared/services.nix +++ b/modules/shared/nixos/services.nix @@ -1,25 +1,25 @@ -{lib, ...}: { +{ services = { # hardware.openrgb.enable = true; avahi.enable = true; - flatpak.enable = true; - fwupd.enable = true; - openssh.enable = true; - speechd.enable = lib.mkForce false; - syncthing.openDefaultPorts = true; - userborn.enable = true; dnscrypt-proxy2 = { enable = true; settings = { + bootstrap_resolvers = ["9.9.9.11:53" "9.9.9.9:53"]; require_dnssec = true; server_names = ["mullvad-doh"]; - bootstrap_resolvers = ["9.9.9.11:53" "9.9.9.9:53"]; }; }; + flatpak.enable = true; fstrim = { enable = true; interval = "daily"; }; + fwupd.enable = true; + logind = { + lidSwitch = "ignore"; + powerKey = "suspend"; + }; opensnitch = { enable = false; settings = { @@ -29,13 +29,10 @@ ProcMonitorMethod = "ebpf"; }; }; - scx = { - enable = true; - scheduler = "scx_flash"; - }; - logind = { - lidSwitch = "ignore"; - powerKey = "suspend"; - }; + openssh.enable = true; + scx.enable = true; + scx.scheduler = "scx_flash"; + syncthing.openDefaultPorts = true; + userborn.enable = true; }; } diff --git a/modules/nixos/shared/sops.nix b/modules/shared/nixos/sops.nix similarity index 100% rename from modules/nixos/shared/sops.nix rename to modules/shared/nixos/sops.nix diff --git a/modules/nixos/shared/users.nix b/modules/shared/nixos/users.nix similarity index 94% rename from modules/nixos/shared/users.nix rename to modules/shared/nixos/users.nix index 7f5605b..b346816 100644 --- a/modules/nixos/shared/users.nix +++ b/modules/shared/nixos/users.nix @@ -17,9 +17,7 @@ in { hashedPasswordFile = secrets."user-password-hashed".path; extraGroups = ["wheel" "video" "libvirtd" "dialout"] - /* - for lisgd - */ + # for lisgd ++ lib.optional (hostName == "morphius" && config.desktop.niri.enable) "input"; isNormalUser = true; shell = pkgs.fish; diff --git a/hosts/dunamis/users/user/common.nix b/modules/shared/user/common.nix similarity index 100% rename from hosts/dunamis/users/user/common.nix rename to modules/shared/user/common.nix diff --git a/modules/shared/user/default.nix b/modules/shared/user/default.nix new file mode 100644 index 0000000..8499b4a --- /dev/null +++ b/modules/shared/user/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./common.nix + ./flatpak.nix + ./programs.nix + ]; +} diff --git a/hosts/dunamis/users/user/flatpak.nix b/modules/shared/user/flatpak.nix similarity index 100% rename from hosts/dunamis/users/user/flatpak.nix rename to modules/shared/user/flatpak.nix diff --git a/hosts/dunamis/users/user/programs.nix b/modules/shared/user/programs.nix similarity index 100% rename from hosts/dunamis/users/user/programs.nix rename to modules/shared/user/programs.nix