Compare commits
26 Commits
Author | SHA1 | Date |
---|---|---|
|
dee8b51814 | |
|
d6a1438d99 | |
|
1288e89929 | |
|
e76f0aa5d3 | |
|
37aa66a33b | |
|
835d0a2724 | |
|
1205261a7b | |
|
f22f5f4a74 | |
|
1b2195b156 | |
|
df25e8751e | |
|
b0701743eb | |
|
9a890b643f | |
|
08a4c5c9ea | |
|
a01d25c0bf | |
|
fb8e35e081 | |
|
3df188e5d5 | |
|
f2bebedd63 | |
|
45161926a6 | |
|
d7a279a2f2 | |
|
1593539fea | |
|
4fe890b0a3 | |
|
8907181209 | |
|
b0bd0f05a0 | |
|
bcdafb7994 | |
|
7fbdb29e10 | |
|
e0bffa4095 |
32
flake.lock
32
flake.lock
|
@ -23,11 +23,11 @@
|
||||||
"rotate-text": "rotate-text"
|
"rotate-text": "rotate-text"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1627398156,
|
"lastModified": 1666806097,
|
||||||
"narHash": "sha256-Ru1aV3NuIFXAsvUE3de8KR7xDZOo1GCBJdsWKJn+Ebw=",
|
"narHash": "sha256-4/QpDoyf2I7RvhbmK15PB+qPuLYU3Lm0woUChA1fn+k=",
|
||||||
"owner": "vlaci",
|
"owner": "vlaci",
|
||||||
"repo": "nix-doom-emacs",
|
"repo": "nix-doom-emacs",
|
||||||
"rev": "fee14d217b7a911aad507679dafbeaa8c1ebf5ff",
|
"rev": "cc495913aeb4212349392e1c68a62b8e63248123",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -187,16 +187,16 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1637019201,
|
"lastModified": 1695108154,
|
||||||
"narHash": "sha256-lq4gz51fx4m5FXfx1SCB444aEBeaYtLMVm3P18Wi9ls=",
|
"narHash": "sha256-gSg7UTVtls2yO9lKtP0yb66XBHT1Fx5qZSZbGMpSn2c=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "bcf03fa16a1f06b8a0abb27bf49afa8d6fffe8f1",
|
"rev": "07682fff75d41f18327a871088d20af2710d4744",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-21.05",
|
"ref": "release-23.05",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
@ -204,11 +204,11 @@
|
||||||
"niten-doom-config": {
|
"niten-doom-config": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1633712607,
|
"lastModified": 1684432992,
|
||||||
"narHash": "sha256-6PAw7Xvoj4JROeTqK1nhT2zv7bPpiQlm9t7H5HQ0f2k=",
|
"narHash": "sha256-ex/H6we7BLjidBxo0n5EZ9YUflLr03sLWdf5YGsF6jU=",
|
||||||
"ref": "master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "0a4f8ce4121ba3d64d29b0d52733c08febfb83d8",
|
"rev": "47773717b06d21004db3dea96f2329f912ef8dd3",
|
||||||
"revCount": 35,
|
"revCount": 64,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.fudo.org/niten/doom-emacs.git"
|
"url": "https://git.fudo.org/niten/doom-emacs.git"
|
||||||
},
|
},
|
||||||
|
@ -251,16 +251,16 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1636944046,
|
"lastModified": 1699169573,
|
||||||
"narHash": "sha256-74KLDsiWSBsYXKj/ql9EGbw1TbIJRE7clFkhl30HV/c=",
|
"narHash": "sha256-cvUb1xZkvOp3W2SzylStrTirhVd9zCeo5utJl9nSIhw=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "46251a79f752ae1d46ef733e8e9760b6d3429da4",
|
"rev": "aeefe2054617cae501809b82b44a8e8f7be7cc4b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"id": "nixpkgs",
|
||||||
"ref": "nixos-21.05",
|
"ref": "nixos-23.05",
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
description = "Fudo Home Manager Configuration";
|
description = "Fudo Home Manager Configuration";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-21.05";
|
nixpkgs.url = "nixpkgs/nixos-23.05";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-21.05";
|
url = "github:nix-community/home-manager/release-23.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
doom-emacs.url = "github:vlaci/nix-doom-emacs";
|
doom-emacs.url = "github:vlaci/nix-doom-emacs";
|
||||||
|
@ -24,5 +24,9 @@
|
||||||
(import ./module.nix { inherit doom-emacs niten-doom-config; })
|
(import ./module.nix { inherit doom-emacs niten-doom-config; })
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
mkModule = { username, user-email, home-dir, enable-gui ? false, ... }:
|
||||||
|
import ./niten.nix {
|
||||||
|
inherit username user-email home-dir enable-gui doom-emacs niten-doom-config;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
35
module.nix
35
module.nix
|
@ -6,7 +6,7 @@ with lib;
|
||||||
let
|
let
|
||||||
user-configs = {
|
user-configs = {
|
||||||
niten = ./niten.nix;
|
niten = ./niten.nix;
|
||||||
root = ./root.nix;
|
root = ./niten.nix;
|
||||||
viator = ./niten.nix;
|
viator = ./niten.nix;
|
||||||
xiaoxuan = ./xiaoxuan.nix;
|
xiaoxuan = ./xiaoxuan.nix;
|
||||||
};
|
};
|
||||||
|
@ -14,11 +14,19 @@ let
|
||||||
hostname = config.instance.hostname;
|
hostname = config.instance.hostname;
|
||||||
enable-gui = config.fudo.hosts.${hostname}.enable-gui;
|
enable-gui = config.fudo.hosts.${hostname}.enable-gui;
|
||||||
|
|
||||||
|
user-config-map = {
|
||||||
|
niten = ./niten.nix;
|
||||||
|
# FIXME: Root shouldn't have all this stuff installed!
|
||||||
|
root = ./niten.nix;
|
||||||
|
viator = ./niten.nix;
|
||||||
|
xiaoxuan = ./xiaoxuan.nix;
|
||||||
|
};
|
||||||
|
|
||||||
local-users = let
|
local-users = let
|
||||||
local-usernames = attrNames config.instance.local-users;
|
local-usernames = attrNames config.instance.local-users;
|
||||||
in filterAttrs
|
in filterAttrs
|
||||||
(username: userOpts: elem username local-usernames)
|
(username: userOpts: elem username local-usernames)
|
||||||
user-configs;
|
user-config-map;
|
||||||
|
|
||||||
in {
|
in {
|
||||||
config.home-manager = {
|
config.home-manager = {
|
||||||
|
@ -30,30 +38,15 @@ in {
|
||||||
user-email = if (user-cfg.email != null) then
|
user-email = if (user-cfg.email != null) then
|
||||||
user-cfg.email else "${username}@${config.instance.local-domain}";
|
user-cfg.email else "${username}@${config.instance.local-domain}";
|
||||||
home-dir = config.users.users.${username}.home;
|
home-dir = config.users.users.${username}.home;
|
||||||
in (import user-configs.${username} {
|
in ((import user-configs.${username} {
|
||||||
inherit
|
inherit
|
||||||
config
|
|
||||||
lib
|
|
||||||
pkgs
|
|
||||||
doom-emacs
|
doom-emacs
|
||||||
niten-doom-config
|
niten-doom-config
|
||||||
username
|
username
|
||||||
user-email
|
user-email
|
||||||
home-dir
|
home-dir
|
||||||
enable-gui;
|
enable-gui
|
||||||
});
|
}) { inherit pkgs; });
|
||||||
in (mapAttrs generate-config local-users) // {
|
in mapAttrs generate-config local-users;
|
||||||
root = import user-configs.root {
|
|
||||||
inherit
|
|
||||||
config
|
|
||||||
lib
|
|
||||||
pkgs
|
|
||||||
doom-emacs
|
|
||||||
niten-doom-config;
|
|
||||||
username = "root";
|
|
||||||
user-email = "root@${config.instance.local-domain}";
|
|
||||||
home-dir = "/root";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
132
niten.nix
132
niten.nix
|
@ -1,9 +1,6 @@
|
||||||
{
|
{
|
||||||
doom-emacs,
|
doom-emacs,
|
||||||
niten-doom-config,
|
niten-doom-config,
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
username,
|
username,
|
||||||
user-email,
|
user-email,
|
||||||
home-dir,
|
home-dir,
|
||||||
|
@ -11,64 +8,67 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with lib;
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
with pkgs.lib;
|
||||||
let
|
let
|
||||||
|
|
||||||
|
inherit (pkgs.stdenv) isLinux;
|
||||||
|
|
||||||
doom-emacs-package = pkgs.callPackage doom-emacs {
|
doom-emacs-package = pkgs.callPackage doom-emacs {
|
||||||
doomPrivateDir = niten-doom-config;
|
doomPrivateDir = niten-doom-config;
|
||||||
extraPackages = with pkgs.emacsPackages; [
|
extraPackages = with pkgs.emacsPackages; [
|
||||||
elpher
|
elpher
|
||||||
use-package
|
use-package
|
||||||
];
|
];
|
||||||
emacsPackagesOverlay = final: prev: {
|
# emacsPackagesOverlay = final: prev: {
|
||||||
irony = prev.irony.overrideAttrs (esuper: {
|
# irony = prev.irony.overrideAttrs (esuper: {
|
||||||
buildInputs = with pkgs;
|
# buildInputs = with pkgs;
|
||||||
esuper.buildInputs ++ [ clang libclang ];
|
# esuper.buildInputs ++
|
||||||
});
|
# [ cmake libclang clang ];
|
||||||
};
|
# });
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
|
|
||||||
gui-packages = with pkgs; [
|
gui-packages = with pkgs; [
|
||||||
element-desktop
|
exodus
|
||||||
exodus
|
firefox
|
||||||
faudio
|
imagemagick
|
||||||
gnome.gnome-tweaks
|
jq
|
||||||
google-chrome
|
minecraft
|
||||||
imagemagick
|
nyxt
|
||||||
jq
|
openttd
|
||||||
minecraft
|
pv
|
||||||
mplayer
|
signal-desktop
|
||||||
nyxt
|
spotify
|
||||||
openttd
|
] ++ (optionals isLinux [
|
||||||
pv
|
gnome.gnome-tweaks
|
||||||
redshift
|
google-chrome
|
||||||
signal-desktop
|
mplayer
|
||||||
spotify
|
redshift
|
||||||
xclip
|
xclip
|
||||||
];
|
]);
|
||||||
|
|
||||||
common-packages = with pkgs; [
|
common-packages = with pkgs; [
|
||||||
ant
|
ant
|
||||||
asdf
|
asdf
|
||||||
atop
|
|
||||||
binutils
|
binutils
|
||||||
btrfs-progs
|
|
||||||
bundix
|
bundix
|
||||||
byobu
|
byobu
|
||||||
cdrtools
|
cdrtools
|
||||||
cargo
|
cargo
|
||||||
clojure
|
clojure
|
||||||
clj2nix
|
|
||||||
cmake
|
cmake
|
||||||
curl
|
curl
|
||||||
doom-emacs-package
|
|
||||||
enca
|
enca
|
||||||
file
|
file
|
||||||
fortune
|
fortune
|
||||||
|
doom-emacs-package
|
||||||
git
|
git
|
||||||
gnutls
|
gnutls
|
||||||
gnupg
|
gnupg
|
||||||
guile
|
guile
|
||||||
|
inetutils
|
||||||
ipfs
|
ipfs
|
||||||
iptables
|
iptables
|
||||||
jdk
|
jdk
|
||||||
|
@ -77,14 +77,12 @@ let
|
||||||
lispPackages.quicklisp
|
lispPackages.quicklisp
|
||||||
lsof
|
lsof
|
||||||
lshw
|
lshw
|
||||||
manix
|
|
||||||
mkpasswd
|
mkpasswd
|
||||||
mtr
|
mtr
|
||||||
nixfmt
|
nixfmt
|
||||||
nix-index
|
nix-index
|
||||||
nix-prefetch-git
|
nix-prefetch-git
|
||||||
nmap
|
nmap
|
||||||
opencv-java
|
|
||||||
openldap
|
openldap
|
||||||
openssl
|
openssl
|
||||||
pciutils
|
pciutils
|
||||||
|
@ -94,11 +92,9 @@ let
|
||||||
rustc
|
rustc
|
||||||
sbcl
|
sbcl
|
||||||
stdenv
|
stdenv
|
||||||
telnet
|
|
||||||
texlive.combined.scheme-basic
|
texlive.combined.scheme-basic
|
||||||
tmux
|
tmux
|
||||||
unzip
|
unzip
|
||||||
winetricks
|
|
||||||
yubikey-manager
|
yubikey-manager
|
||||||
yubikey-personalization
|
yubikey-personalization
|
||||||
youtube-dl
|
youtube-dl
|
||||||
|
@ -110,18 +106,19 @@ let
|
||||||
asuka
|
asuka
|
||||||
kristall
|
kristall
|
||||||
castor
|
castor
|
||||||
];
|
] ++ (optionals isLinux [
|
||||||
|
atop
|
||||||
|
btrfs-progs
|
||||||
|
clj2nix
|
||||||
|
opencv-java
|
||||||
|
]);
|
||||||
|
|
||||||
ensure-directories = [ ".emacs.d/.local/etc/eshell" ];
|
ensure-directories = [ ".emacs.d/.local/etc/eshell" ];
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
bash = {
|
bash.enable = true;
|
||||||
enable = true;
|
|
||||||
enableVteIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
git = {
|
git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userName = username;
|
userName = username;
|
||||||
|
@ -129,16 +126,6 @@ in {
|
||||||
ignores = [ "*~" ];
|
ignores = [ "*~" ];
|
||||||
extraConfig.pull.rebase = false;
|
extraConfig.pull.rebase = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
firefox = {
|
|
||||||
enable = enable-gui;
|
|
||||||
## Some perm change error?
|
|
||||||
# package = (pkgs.firefox.override {
|
|
||||||
# cfg = {
|
|
||||||
# enableGnomeExtensions = true;
|
|
||||||
# };
|
|
||||||
# });
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
xresources.properties = mkIf enable-gui {
|
xresources.properties = mkIf enable-gui {
|
||||||
|
@ -150,7 +137,7 @@ in {
|
||||||
"Xft.lcdfilter" = "lcddefault";
|
"Xft.lcdfilter" = "lcddefault";
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = mkIf isLinux {
|
||||||
emacs = {
|
emacs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = doom-emacs-package;
|
package = doom-emacs-package;
|
||||||
|
@ -161,16 +148,49 @@ in {
|
||||||
|
|
||||||
gpg-agent.enable = true;
|
gpg-agent.enable = true;
|
||||||
|
|
||||||
gnome-keyring.enable = enable-gui;
|
gnome-keyring.enable = true;
|
||||||
|
|
||||||
gammastep = {
|
redshift = {
|
||||||
enable = true;
|
enable = true;
|
||||||
latitude = "47";
|
latitude = "47";
|
||||||
longitude = "122";
|
longitude = "122";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
accounts.email.accounts = {
|
||||||
|
Fudo = {
|
||||||
|
primary = true;
|
||||||
|
address = "niten@fudo.org";
|
||||||
|
aliases = [ "peter@selby.ca" ];
|
||||||
|
userName = "niten";
|
||||||
|
realName = "Niten";
|
||||||
|
imap = {
|
||||||
|
host = "mail.fudo.org";
|
||||||
|
port = 993;
|
||||||
|
tls.enable = true;
|
||||||
|
};
|
||||||
|
smtp = {
|
||||||
|
host = "mail.fudo.org";
|
||||||
|
port = 587;
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
useStartTls = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
GMail = {
|
||||||
|
address = "pselby@gmail.com";
|
||||||
|
flavor = "gmail.com";
|
||||||
|
realName = "Peter Selby";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
|
inherit username;
|
||||||
|
|
||||||
|
homeDirectory = home-dir;
|
||||||
|
|
||||||
packages = if enable-gui then (common-packages ++ gui-packages)
|
packages = if enable-gui then (common-packages ++ gui-packages)
|
||||||
else
|
else
|
||||||
common-packages;
|
common-packages;
|
||||||
|
@ -213,6 +233,6 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.tmpfiles.rules =
|
systemd.user.tmpfiles.rules = optionals isLinux
|
||||||
map (dir: "d ${home-dir}/${dir} 700 ${username} - - -") ensure-directories;
|
(map (dir: "d ${home-dir}/${dir} 700 niten - - -") ensure-directories);
|
||||||
}
|
}
|
||||||
|
|
107
root.nix
107
root.nix
|
@ -1,107 +0,0 @@
|
||||||
{
|
|
||||||
doom-emacs,
|
|
||||||
niten-doom-config,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
username,
|
|
||||||
user-email,
|
|
||||||
home-dir,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
doom-emacs-package = pkgs.callPackage doom-emacs {
|
|
||||||
doomPrivateDir = niten-doom-config;
|
|
||||||
extraPackages = with pkgs.emacsPackages; [
|
|
||||||
elpher
|
|
||||||
use-package
|
|
||||||
];
|
|
||||||
emacsPackagesOverlay = final: prev: {
|
|
||||||
irony = prev.irony.overrideAttrs (esuper: {
|
|
||||||
buildInputs = with pkgs;
|
|
||||||
esuper.buildInputs ++
|
|
||||||
[ cmake libclang clang ];
|
|
||||||
});
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
common-packages = with pkgs; [
|
|
||||||
atop
|
|
||||||
btrfs-progs
|
|
||||||
cdrtools
|
|
||||||
curl
|
|
||||||
doom-emacs-package
|
|
||||||
file
|
|
||||||
git
|
|
||||||
gnutls
|
|
||||||
gnupg
|
|
||||||
guile
|
|
||||||
iptables
|
|
||||||
lsof
|
|
||||||
lshw
|
|
||||||
mtr
|
|
||||||
nix-prefetch-git
|
|
||||||
nmap
|
|
||||||
pciutils
|
|
||||||
pwgen
|
|
||||||
tmux
|
|
||||||
unzip
|
|
||||||
];
|
|
||||||
|
|
||||||
ensure-directories = [ ".emacs.d/.local/etc/eshell" ];
|
|
||||||
|
|
||||||
in {
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
bash = {
|
|
||||||
enable = true;
|
|
||||||
enableVteIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
userName = username;
|
|
||||||
userEmail = user-email;
|
|
||||||
ignores = [ "*~" ];
|
|
||||||
extraConfig.pull.rebase = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
emacs = {
|
|
||||||
enable = true;
|
|
||||||
package = doom-emacs-package;
|
|
||||||
client = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
packages = common-packages;
|
|
||||||
|
|
||||||
file = {
|
|
||||||
# For nixified emacs
|
|
||||||
".emacs.d/init.el".text = ''
|
|
||||||
(load "default.el")
|
|
||||||
|
|
||||||
(setq package-archives nil)
|
|
||||||
(package-initialize)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
sessionVariables = {
|
|
||||||
# EDITOR = "${doom-emacs}/bin/emacsclient -t";
|
|
||||||
ALTERNATE_EDITOR = "";
|
|
||||||
|
|
||||||
DOOM_EMACS_SITE_PATH = "${niten-doom-config}/site.d";
|
|
||||||
|
|
||||||
HISTCONTROL = "ignoredups:ignorespace";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.tmpfiles.rules =
|
|
||||||
map (dir: "d ${home-dir}/${dir} 700 root - - -") ensure-directories;
|
|
||||||
}
|
|
|
@ -1,6 +1,7 @@
|
||||||
{ config, lib, pkgs, username, user-email, home-dir, enable-gui, ... }:
|
{ username, user-email, home-dir, enable-gui, ... }:
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
with lib; if !enable-gui then {} else {
|
with pkgs.lib; if !enable-gui then {} else {
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
fcitx5-configtool
|
fcitx5-configtool
|
||||||
|
|
Loading…
Reference in New Issue